diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index e5a6f3457b..0000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,36 +0,0 @@ -## Description of your problem or feature request - -First, carefully read the following to determine whether or not you have a valid Aesara issue: - -- Does your issue only arise in a library that uses Aesara (e.g. PyMC)? If so, submit your issue to that library's issue tracker. From there, the Aesara-specific details can be worked out and a valid Aesara issue can be identified. **Issues framed primarily in third-party libraries are liable to being marked as invalid and closed.** -- Does your issue involve OS and/or environment-specific settings (e.g. installation and/or compilation issues)? If so, create a [Discussion](https://github.com/aesara-devs/aesara/discussions) instead. From there, we can help determine whether or not the issue is due to faulty logic in Aesara (i.e. a valid issue) or something specific to your local setup. - - -If the above does not apply, and you have an issue or feature request that's specific to Aesara, provide a minimal, self-contained, and reproducible example (i.e. an [MWE](https://en.wikipedia.org/wiki/Minimal_reproducible_example)): - -```python -[Your code here] -``` - -**Please provide the full tracebacks for any relevant errors and/or warning messages.** - - -```python -[The error output here] -``` - -**Please provide any additional information below.** - - -## Versions and main components - -* Aesara version: -* Python version: -* Operating system: -* How did you install Aesara: (conda/pip) - -
Aesara config: - -Place the results of `python -c "import aesara; print(aesara.config)"` here. - -
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000000..ffc06ca873 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,117 @@ +--- +# Inspired by https://github.com/doomemacs/doomemacs/blob/master/.github/ISSUE_TEMPLATE/bug_report.yml +name: 📝 Bug Report +description: Report something that isn't working as intended +labels: ["bug"] +body: +- type: markdown + attributes: + value: | + First, carefully read [CONTRIBUTING.md](https://github.com/aesara-devs/aesara/blob/main/.github/CONTRIBUTING.md) and the following to determine whether or not you have a valid Aesara issue: + + - Is there already a GitHub Issue or Discussion for this issue? + + If so, please expand upon any specifics of your issue in the existing Issue/Discussion. + + - Does your issue only arise in a library that uses Aesara? + + If so, please submit your issue to that library's issue tracker first. From there, the Aesara-specific details can be worked out and a valid Aesara issue can be identified. **Issues framed primarily in third-party libraries are liable to being marked as invalid and closed.** + + - Does your issue involve OS and/or environment-specific settings (e.g. installation and/or compilation issues)? + + If so, please create a [Discussion](https://github.com/aesara-devs/aesara/discussions) instead. From there, we can help determine whether or not the issue is due to faulty logic in Aesara (i.e. a valid issue) or something specific to your local setup. + +- type: markdown + attributes: + value: "-----" +- type: textarea + attributes: + label: Expected behavior + description: | + A concise description of what you're trying to do and what you expect to see. + + Try to include: + + - Minimal, self-contained, and reproducible examples (i.e. an [MWE](https://en.wikipedia.org/wiki/Minimal_reproducible_example)). + - Precise details about the expected output/results (e.g. "The output should consist of the values..."). + + placeholder: | + I'm trying to compute the ... of ... as follows: + + ```python + import aesara + import aesara.tensor as at + + x = at.vector("x") + ... + + fn = aesara.function([x], ...) + + fn(...) + ``` + + The results should be the value... + validations: + required: true +- type: textarea + attributes: + label: Current behavior + description: | + A concise description of the issue(s) you're observing. + + Try to include: + + - Any associated output and/or error messages. + - Any attempts you made to resolve the issue yourself, and their result. + placeholder: | + The example above does not return a value and instead raises a `ValueError` error. + + Here is the backtrace: + + ``` + ValueError: ... + ``` + validations: + required: true +- type: input + id: aesara-version + attributes: + label: Aesara Version + description: | + Provide the version of Aesara obtained from `pip show aesara`. + placeholder: 2.x.x + validations: + required: true +- type: input + id: python-version + attributes: + label: Python Version + description: | + Provide the version of Python obtained from `python --version`. + placeholder: 3.8.x + validations: + required: true +- type: input + id: os + attributes: + label: Operating System + description: | + Provide the name of your operating system (e.g. Ubuntu, OSX, Windows). + placeholder: Ubuntu + validations: + required: true +- type: checkboxes + attributes: + label: In which type of virtual environment is Aesara installed? + options: + - label: conda + - label: pip +- type: input + id: aesara-config + attributes: + label: Aesara Config + description: | + Upload the contents of `python -c "import aesara; print(aesara.config)"` to [pastebin](https://pastebin.com), [gist](https://gist.github.com), or a similar service, then provide the link to it here. + placeholder: https://pastebin.com/fakeurl + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..4de643d27e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,11 @@ +blank_issues_enabled: false +contact_links: + - name: Official Documentation + url: https://aesara.readthedocs.io/en/latest/ + about: "Provides basic Aesara setup and usage information, as well as design and development outlines" + - name: Visit our Gitter/Matrix Chat + url: https://gitter.im/aesara-devs/aesara + about: "Discuss Aesara in real-time with community members via Gitter/Matrix" + - name: Visit our Discord + url: https://discord.gg/h3sjmPYuGJ + about: "Discuss Aesara in real-time with community members via Discord" diff --git a/.github/ISSUE_TEMPLATE/jax_op_implementation.yml b/.github/ISSUE_TEMPLATE/jax_op_implementation.yml new file mode 100644 index 0000000000..6dc0439a8d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/jax_op_implementation.yml @@ -0,0 +1,28 @@ +--- +name: JAX Op Implementation +description: Propose a Numba Op implementation +labels: ["enhancement", "JAX", "Op implementation"] +body: +- type: markdown + attributes: + value: | + First, carefully read [CONTRIBUTING.md](https://github.com/aesara-devs/aesara/blob/main/.github/CONTRIBUTING.md) and the following: + + - Is there already a GitHub Issue requesting this feature? + + If so, please contribute to the existing Issue. + +- type: markdown + attributes: + value: "-----" +- type: textarea + attributes: + label: Expected behavior + description: | + A concise description of the new/missing JAX `Op` implementation. + + placeholder: | + Aesara is missing support for the `Op` ... in JAX. + + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/new_feature_request.yml b/.github/ISSUE_TEMPLATE/new_feature_request.yml new file mode 100644 index 0000000000..5ab6bdf4d6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/new_feature_request.yml @@ -0,0 +1,52 @@ +--- +name: New Feature Request +description: Propose a new feature +labels: ["enhancement"] +body: +- type: markdown + attributes: + value: | + First, carefully read [CONTRIBUTING.md](https://github.com/aesara-devs/aesara/blob/main/.github/CONTRIBUTING.md) and the following to determine whether or not you have a valid Aesara feature proposal: + + - Is there already a GitHub Issue/Discussion requesting this feature? + + If so, please contribute to the existing Issue/Discussion. + + - Does the proposed feature involve large-scale, core, and/or design changes to Aesara? + + If so, please open a Discussion first so that the Aesara team can provide advice on how to proceed. + +- type: markdown + attributes: + value: "-----" +- type: textarea + attributes: + label: Expected behavior + description: | + A concise description of the feature. + + Try to include: + + - Minimal, self-contained, and reproducible pseudocode examples (i.e. an [MWE](https://en.wikipedia.org/wiki/Minimal_reproducible_example)). + - Precise details about the expected output/results (e.g. "The output should consist of the values..."). + + placeholder: | + An Aesara function that performs ... would be useful for ... + + Here's some pseudocode illustrating the proposed function: + ```python + import aesara + import aesara.tensor as at + + x = at.vector("x") + ... + + + fn = aesara.function([x], ...) + + fn(...) + ``` + + The results should be the value... + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/numba_op_implementation.yml b/.github/ISSUE_TEMPLATE/numba_op_implementation.yml new file mode 100644 index 0000000000..f7f492aa65 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/numba_op_implementation.yml @@ -0,0 +1,28 @@ +--- +name: Numba Op Implementation +description: Propose a Numba Op implementation +labels: ["enhancement", "Numba", "Op implementation"] +body: +- type: markdown + attributes: + value: | + First, carefully read [CONTRIBUTING.md](https://github.com/aesara-devs/aesara/blob/main/.github/CONTRIBUTING.md) and the following: + + - Is there already a GitHub Issue requesting this feature? + + If so, please contribute to the existing Issue. + +- type: markdown + attributes: + value: "-----" +- type: textarea + attributes: + label: Expected behavior + description: | + A concise description of the new/missing Numba `Op` implementation. + + placeholder: | + Aesara is missing support for the `Op` ... in Numba. + + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/numpy_compatibility.yml b/.github/ISSUE_TEMPLATE/numpy_compatibility.yml new file mode 100644 index 0000000000..eb64e4a42f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/numpy_compatibility.yml @@ -0,0 +1,33 @@ +--- +name: NumPy API Enhancement +description: Propose changes to Aesara's NumPy support +labels: ["enhancement", "NumPy compatibility"] +body: +- type: markdown + attributes: + value: | + First, carefully read [CONTRIBUTING.md](https://github.com/aesara-devs/aesara/blob/main/.github/CONTRIBUTING.md) and the following: + + - Is there already a GitHub Issue requesting this feature? + + If so, please contribute to the existing Issue. + +- type: markdown + attributes: + value: "-----" +- type: textarea + attributes: + label: Expected behavior + description: | + A concise description of the new/missing NumPy compatibility feature. + + Try to include: + + - Minimal and self-contained pseudocode examples. + - Precise details about the expected output/results (e.g. "The output should consist of the values..."). + + placeholder: | + Aesara is missing support for the NumPy function `numpy...`. + + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/scipy_compatibility.yml b/.github/ISSUE_TEMPLATE/scipy_compatibility.yml new file mode 100644 index 0000000000..b7d2603356 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/scipy_compatibility.yml @@ -0,0 +1,33 @@ +--- +name: SciPy API Enhancement +description: Propose changes to Aesara's SciPy support +labels: ["enhancement", "SciPy compatibility"] +body: +- type: markdown + attributes: + value: | + First, carefully read [CONTRIBUTING.md](https://github.com/aesara-devs/aesara/blob/main/.github/CONTRIBUTING.md) and the following: + + - Is there already a GitHub Issue requesting this feature? + + If so, please contribute to the existing Issue. + +- type: markdown + attributes: + value: "-----" +- type: textarea + attributes: + label: Expected behavior + description: | + A concise description of the new/missing SciPy compatibility feature. + + Try to include: + + - Minimal and self-contained pseudocode examples. + - Precise details about the expected output/results (e.g. "The output should consist of the values..."). + + placeholder: | + Aesara is missing support for the SciPy function `scipy...`. + + validations: + required: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index c06f05e753..98c601d21a 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,14 +1,23 @@ + -**Thank you for opening a PR!** +## Description -Here are a few important guidelines and requirements to check before your PR can be merged: + + +This PR closes #(issue number goes here). + +## Checklist + + + ++ [ ] You have read [CONTRIBUTING.md](https://github.com/aesara-devs/aesara/blob/main/.github/CONTRIBUTING.md), the [developer start guide](https://aesara.readthedocs.io/en/latest/dev_start_guide.html), and any documentation relevant to the proposed changes (e.g. [Creating a new `Op`](https://aesara.readthedocs.io/en/latest/extend/op/creating_an_op.html) when proposing a new `Op`). + [ ] There is an informative high-level description of the changes. + [ ] The description and/or commit message(s) references the relevant GitHub issue(s). + [ ] [`pre-commit`](https://pre-commit.com/#installation) is installed and [set up](https://pre-commit.com/#3-install-the-git-hook-scripts). -+ [ ] The commit messages follow [these guidelines](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). -+ [ ] The commits correspond to [_relevant logical changes_](https://wiki.openstack.org/wiki/GitCommitMessages#Structural_split_of_changes), and there are **no commits that fix changes introduced by other commits in the same branch/BR**. ++ [ ] The PR title and commit messages follow [these guidelines](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) with **no** tags (e.g. "[draft]...", "docs:...", etc.) ++ [ ] The commits correspond to [_relevant logical changes_](https://wiki.openstack.org/wiki/GitCommitMessages#Structural_split_of_changes), and there are **no commits that fix changes introduced by other commits in the same branch/PR**. + [ ] There are tests covering the changes introduced in the PR. -Don't worry, your PR doesn't need to be in perfect order to submit it. As development progresses and/or reviewers request changes, you can always [rewrite the history](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History#_rewriting_history) of your feature/PR branches. + diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f6a332f13a..1d390bef20 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,6 +3,8 @@ exclude: | doc/.*| bin/.* )$ +default_language_version: + python: python3.8 repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 @@ -21,12 +23,11 @@ repos: rev: v3.3.1 hooks: - id: pyupgrade - args: ["--py38-plus"] + args: ["--py38-plus"] - repo: https://github.com/psf/black rev: 23.3.0 hooks: - id: black - language_version: python3 - repo: https://github.com/pycqa/flake8 rev: 6.0.0 hooks: