Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
137 commits
Select commit Hold shift + click to select a range
f2ad711
Implement unconditional constant_folding rewrite
ricardoV94 Nov 4, 2024
c2e88c6
Don't raise raw Exception in eval
ricardoV94 Nov 11, 2024
fdbf3aa
Fix bug in local_div_switch_sink rewrite
ricardoV94 Nov 11, 2024
fe5d98c
Use ld64 linker on Mac OS
lucianopaz Nov 11, 2024
d9d8dba
Run MacOS tests on version 15
lucianopaz Nov 11, 2024
2315e69
support `on_unused_input` for string parameter names in `eval` (#1085)
tvwenger Nov 12, 2024
3f93eed
Bump pypa/gh-action-pypi-publish from 1.10.3 to 1.12.2
dependabot[bot] Nov 11, 2024
fbb73eb
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Nov 11, 2024
3523bfa
Bump pypa/cibuildwheel from 2.21.2 to 2.21.3
dependabot[bot] Oct 14, 2024
133abe8
Implement Kve Op and Kv helper
ricardoV94 Nov 11, 2024
33a4d48
Add stabilization rewrite for log of kv
ricardoV94 Nov 12, 2024
bad8d20
Slogdet returns naive expression and is optimized later (#1041)
tanish1729 Nov 17, 2024
0ba554b
Do not require RNG in 'verify_grad' (#1093)
t3chw Nov 18, 2024
6de3151
Improve torch elemwise operator
Ch0ronomato Oct 12, 2024
19dafe4
Add a strict argument to all zips
Armavica Jun 24, 2024
e44ab01
Enable the ruff rule ensuring explicit strictness for zips
Armavica Jun 24, 2024
47c0943
Make non-strict zips strict in tests/scan
Armavica Jun 29, 2024
c15e7aa
Make non-strict zips strict in tensor/elemwise_cgen
Armavica Jun 29, 2024
70e4e57
Make non-strict zip strict in scalar/loop.py
Armavica Jun 29, 2024
fdeabc1
Make non-strict zip strict in printing.py
Armavica Jun 29, 2024
4a3d8c7
Make non-strict zip strict in test_abstract_conv
Armavica Jul 3, 2024
e200cb5
Rewrite local_merge_alloc to remove a non-strict zip
Armavica Jul 3, 2024
69037db
Make non-strict zip strict in tensor/random/utils
Armavica Jul 3, 2024
a2bb4db
Make non-strict zip strict in local_subtensor_of_alloc
Armavica Jul 3, 2024
e8db716
Make non-strict zip strict in tensor/subtensor.py
Armavica Jul 7, 2024
54fba94
Make non-strict zip strict in tensor/shape.py
Armavica Jul 7, 2024
4b41e09
Add exceptions for hot loops
Armavica Nov 19, 2024
7300a68
Track generated torch files for torch compiler
Nov 17, 2024
ae66e82
Fix test warning
Nov 25, 2024
c477732
Torch dispatch for scipy-like functions and Softplus (#1066)
Ch0ronomato Nov 27, 2024
b8356ff
Cross link random variable docs
ricardoV94 Nov 15, 2024
bd281be
Support consecutive integer vector indexing in Numba backend
ricardoV94 Nov 26, 2024
c84efa9
Bump pypa/cibuildwheel from 2.21.3 to 2.22.0
dependabot[bot] Nov 25, 2024
4852503
Bump codecov/codecov-action from 4 to 5
dependabot[bot] Nov 25, 2024
73b9ed7
Bump actions/setup-python from 4 to 5
dependabot[bot] Aug 19, 2024
9dad122
Bump mamba-org/setup-micromamba from 1 to 2
dependabot[bot] Nov 28, 2024
0824dba
Support multidimensional boolean set/inc_subtensor in Numba via rewri…
ricardoV94 Nov 28, 2024
58840ba
Fix JAX test check
ricardoV94 Nov 23, 2024
d1c5ae2
Constants are not inputs
ricardoV94 Nov 21, 2024
a0c64b5
Reduce overhead of JITLinker
ricardoV94 Nov 21, 2024
1a3af4b
Reduce overhead of Function call
ricardoV94 Nov 21, 2024
9e24b10
Remove Mean Op
ricardoV94 Nov 29, 2024
ef97287
Improve CAReduce Numba implementation
ricardoV94 Nov 29, 2024
18ba52c
Use infer_shape of core_op to infer Blockwise core shapes
ricardoV94 Oct 6, 2024
c715295
Add Numba implementation of Blockwise
ricardoV94 Oct 4, 2024
07bd48d
Conditionally disable caching of `to_tuple` helper due to failure in …
ricardoV94 Nov 27, 2024
9858b33
Implement ScalarLoop in torch backend (#958)
Ch0ronomato Dec 8, 2024
231a977
Make OpFromGraph available at root scope (#1113)
ricardoV94 Dec 9, 2024
83c6b44
Add slowest test issue CI/CD (#1125)
williambdean Dec 26, 2024
4e85676
Pytensor-native interpolation functions (#1141)
jessegrabowski Dec 30, 2024
8267d0e
More robust check for multiple integer indices in numba ravel_multidi…
ricardoV94 Dec 26, 2024
8cc489b
Use scalar variables on Numba Elemwise dispatch
ricardoV94 Dec 26, 2024
ab3704b
Remove unused numba dispatch function
ricardoV94 Jan 3, 2025
1fc678c
Use more specific Numba fastmath flags everywhere
ricardoV94 Jan 2, 2025
2b57f74
Add example gallery to docs (#1150)
jessegrabowski Jan 13, 2025
a120dc2
Cache unique value of TensorConstants and deprecate `get_unique_const…
ricardoV94 Oct 21, 2024
aad6fb7
Deprecate `pytensor.get_underlying_scalar_constant`
ricardoV94 Oct 21, 2024
32aadc8
Deprecate `extract_constant`
ricardoV94 Oct 21, 2024
55f3cd0
Use more strict `get_scalar_constant_value` when the input must be a …
ricardoV94 Oct 21, 2024
04ce1c6
Remove internal `get_constant helper`
ricardoV94 Oct 21, 2024
cff058c
Do not apply `local_add_neg_to_sub` rewrite if negative variabe is a …
ricardoV94 Dec 3, 2024
581f65a
Adapt to Solve changes in Scipy 1.15
ricardoV94 Jan 10, 2025
091b664
Audit GHA workflows with zizmor (#1136)
maresb Jan 16, 2025
d4a2b2b
Add trusted publishing (OIDC) (#1135)
maresb Jan 16, 2025
a0fe30d
Update actions/attest-build-provenance to v2
maresb Jan 21, 2025
35e87e0
Remove duplicated BLAS rewriting code
ricardoV94 Jan 23, 2025
6bdfbae
Don't attest from forks
maresb Jan 23, 2025
79eee67
Scipy blas is no longer optional
ricardoV94 Jan 21, 2025
3409264
Lazy setuptools imports
ricardoV94 Jan 21, 2025
175b67b
Lazy pydot import
ricardoV94 Jan 21, 2025
8c276ac
Lazy filelock import
ricardoV94 Jan 21, 2025
0a7c60f
Lazy pdb import
ricardoV94 Jan 21, 2025
3599257
Replace socket.gethostname by platform.node
ricardoV94 Jan 21, 2025
450efff
Use more specialized imports in config utils
ricardoV94 Jan 21, 2025
cddf588
Respect predefined modes in `get_default_mode`
ricardoV94 Jan 23, 2025
4ea4259
Use latest platforms to build wheels
lucianopaz Jan 24, 2025
ffe1a5e
Replace np.cast with np.asarray
Armavica Apr 3, 2024
637892d
Replace np.sctype2char
Armavica Apr 3, 2024
9500049
Remove np.obj2sctype
Armavica Apr 3, 2024
426ceb4
Replace np.find_common_type with np.result_type
Armavica Apr 3, 2024
6ee0a74
Add ruff numpy2 transition rule
Armavica Apr 3, 2024
4761bf5
Update numpy deprecated imports
ricardoV94 Apr 5, 2024
8df23c0
Handle change in behavior np.dtype
ricardoV94 Apr 5, 2024
534a608
Update access to `_get_ndarray_c_version`
ricardoV94 Apr 5, 2024
0c084d3
Replace `->elsize` by `PyArray_ITEMSIZE`
ricardoV94 Apr 5, 2024
529a6bb
Don't use deprecated PyArray_MoveInto
ricardoV94 Apr 5, 2024
61f24e9
Added missing header file
brendan-m-murphy Jul 8, 2024
e2200b9
Make C++ generic get/set real/imag function
brendan-m-murphy Jul 29, 2024
eb70f5f
Updated pytensor_complex struct to uses get/set
brendan-m-murphy Jul 8, 2024
136301f
Updated assignment and operations +, -, *
brendan-m-murphy Jul 8, 2024
2169028
Ruff formatting
brendan-m-murphy Jul 9, 2024
30f0fa3
Pinned numpy to < 2.1
brendan-m-murphy Aug 27, 2024
8143fb8
Updated Abs Op to use get_real, get_imag
brendan-m-murphy Jul 9, 2024
3219100
Raise NotImplementedError for c code if numpy>=2.0
brendan-m-murphy Jul 29, 2024
6b44a34
Update test to remove numpy TypeError
brendan-m-murphy Aug 5, 2024
16bb9bd
Fixed new TypeError
brendan-m-murphy Aug 5, 2024
618e4ec
Fixed casting in test_jacobian_scalar
brendan-m-murphy Aug 5, 2024
3b4d8bb
Fixed casting in typed_list/test_basic.py
brendan-m-murphy Aug 5, 2024
d235173
Removed "mode" argument from test_inner_graph_...
brendan-m-murphy Aug 6, 2024
2bb53a4
Changed copy to deepcopy for rng
brendan-m-murphy Aug 6, 2024
2aee8ee
Added npy_2_compat code and updated np.MAXDIMS
brendan-m-murphy Aug 7, 2024
bec52c1
Updated MAXDIMS to RAVEL_AXIS in c code
brendan-m-murphy Aug 7, 2024
d75bb39
Updated axis rel'd code for CumSum
brendan-m-murphy Aug 13, 2024
42706c4
Fixes to SoftMax re: NPY_RAVEL_AXIS
brendan-m-murphy Aug 27, 2024
f7fb21a
Fixed AxisError related bugs in elemwise.py
brendan-m-murphy Aug 27, 2024
a3ee7b0
Fixed failed test due to uint8 overflow
brendan-m-murphy Aug 27, 2024
d71861e
Moved `format` to cover "axis_code"
brendan-m-murphy Aug 27, 2024
15e1f9b
replaced np.AxisError with np.exceptions.AxisError
brendan-m-murphy Aug 27, 2024
888530a
Changed test to match new numpy promotion rules
brendan-m-murphy Aug 29, 2024
2d031f4
Changed test to use higher precision
brendan-m-murphy Aug 29, 2024
5c5880c
Changed autocaster due to new promotion rules
brendan-m-murphy Aug 30, 2024
18d3e9b
Removed use of _asarray from scalar/basic.py
brendan-m-murphy Nov 10, 2024
7fb2534
Fixed "amb" vs. "amd" typo
brendan-m-murphy Nov 10, 2024
06399f8
Fixes missed in rebase
brendan-m-murphy Nov 10, 2024
a8f2802
Restored complex type code lost in rebase
brendan-m-murphy Nov 10, 2024
37790e8
Fixed namespace for AxisError
brendan-m-murphy Nov 10, 2024
24a0a35
Replaced eval with mapping to functions
brendan-m-murphy Nov 10, 2024
3b4edc5
Updated environment.yml to match pyproject.toml
brendan-m-murphy Nov 10, 2024
6540596
Formatting/fix error from rebase
brendan-m-murphy Nov 10, 2024
9fd607e
Fixed format/f-string conflict from rebase
brendan-m-murphy Nov 11, 2024
fed9771
Fixed missed conflict from rebase
brendan-m-murphy Jan 24, 2025
d845542
Changed numpy pin for osx from <2 to <2.1
brendan-m-murphy Jan 24, 2025
d87bb11
Fixed numpy imports
brendan-m-murphy Jan 24, 2025
465ba53
Updated doctests
brendan-m-murphy Jan 24, 2025
1a5eff7
Updates due to new numpy conversion rules
brendan-m-murphy Jan 24, 2025
1a5b97b
fixup! Updates due to new numpy conversion rules
brendan-m-murphy Jan 24, 2025
014e437
Changed copy to deepcopy for rng
brendan-m-murphy Jan 28, 2025
abbda9c
Fixed doctest formatting
brendan-m-murphy Jan 28, 2025
138e84f
Fixed RNG related tests
brendan-m-murphy Jan 29, 2025
70337bb
Updated imports cond'l on numpy version
brendan-m-murphy Jan 29, 2025
ff6346a
Fixed jax random tests
brendan-m-murphy Jan 30, 2025
14ebb2c
Updated Unique inverse output shape
brendan-m-murphy Jan 30, 2025
c587db2
Made numba numpy imports backward compat
brendan-m-murphy Jan 30, 2025
0479af5
Fix test for neg on unsigned
brendan-m-murphy Jan 30, 2025
6570f55
Suppress mypy re-import warning
brendan-m-murphy Jan 30, 2025
c597aa6
Fixed new option in `makeTester`
brendan-m-murphy Jan 30, 2025
bbcf7ff
Updated numba rng copy to deepcopy
brendan-m-murphy Jan 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/mypy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ jobs:
shell: bash -leo pipefail {0}
steps:
- uses: actions/checkout@v4
- uses: mamba-org/setup-micromamba@v1
with:
persist-credentials: false
- uses: mamba-org/setup-micromamba@v2
with:
micromamba-version: "1.5.10-0" # until https://github.com/mamba-org/setup-micromamba/issues/225 is resolved
environment-file: environment.yml
Expand Down
62 changes: 52 additions & 10 deletions .github/workflows/pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,27 @@ jobs:
make_sdist:
name: Make SDist
runs-on: ubuntu-latest
permissions:
# write id-token and attestations are required to attest build provenance
id-token: write
attestations: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
persist-credentials: false

- name: Build SDist
run: pipx run build --sdist

- name: Attest GitHub build provenance
uses: actions/attest-build-provenance@v2
# Don't attest from forks
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
with:
subject-path: dist/*.tar.gz

- uses: actions/upload-artifact@v4
with:
name: sdist
Expand All @@ -45,24 +57,37 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false
- uses: hynek/build-and-inspect-python-package@v2

build_wheels:
name: Build wheels for ${{ matrix.platform }}
runs-on: ${{ matrix.platform }}
permissions:
# write id-token and attestations are required to attest build provenance
id-token: write
attestations: write
strategy:
matrix:
platform:
- macos-12
- windows-2022
- ubuntu-20.04
- macos-latest
- windows-latest
- ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false

- name: Build wheels
uses: pypa/[email protected]
uses: pypa/[email protected]

- name: Attest GitHub build provenance
uses: actions/attest-build-provenance@v2
# Don't attest from forks
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
with:
subject-path: ./wheelhouse/*.whl

- uses: actions/upload-artifact@v4
with:
Expand All @@ -72,13 +97,18 @@ jobs:
build_universal_wheel:
name: Build universal wheel for Pyodide
runs-on: ubuntu-latest
permissions:
# write id-token and attestations are required to attest build provenance
id-token: write
attestations: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false

- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: '3.11'

Expand All @@ -89,6 +119,13 @@ jobs:
run: |
PYODIDE=1 python setup.py bdist_wheel --universal

- name: Attest GitHub build provenance
uses: actions/attest-build-provenance@v2
# Don't attest from forks
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
with:
subject-path: dist/*.whl

- uses: actions/upload-artifact@v4
with:
name: universal_wheel
Expand Down Expand Up @@ -125,9 +162,16 @@ jobs:

upload_pypi:
name: Upload to PyPI on release
# Use the `release` GitHub environment to protect the Trusted Publishing (OIDC)
# workflow by requiring signoff from a maintainer.
environment: release
permissions:
# write id-token is required for trusted publishing (OIDC)
id-token: write
needs: [check_dist]
runs-on: ubuntu-latest
if: github.event_name == 'release' && github.event.action == 'published'
# Don't publish from forks
if: github.repository_owner == 'pymc-devs' && github.event_name == 'release' && github.event.action == 'published'
steps:
- uses: actions/download-artifact@v4
with:
Expand All @@ -145,7 +189,5 @@ jobs:
name: universal_wheel
path: dist

- uses: pypa/[email protected]
with:
user: __token__
password: ${{ secrets.pypi_password }}
- uses: pypa/[email protected]
# Implicitly attests that the packages were uploaded in the context of this workflow.
8 changes: 4 additions & 4 deletions .github/workflows/rtd-link-preview.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
name: Read the Docs Pull Request Preview
on:
pull_request_target:
# See <https://github.com/readthedocs/actions/issues/45>
pull_request_target: # zizmor: ignore[dangerous-triggers]
types:
- opened

permissions:
pull-requests: write

jobs:
documentation-links:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: readthedocs/actions/preview@v1
with:
Expand Down
31 changes: 31 additions & 0 deletions .github/workflows/slow-tests-issue.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Taken from https://github.com/pymc-labs/pymc-marketing/tree/main/.github/workflows/slow-tests-issue.yml
# See the scripts in the `scripts/slowest_tests` directory for more information
---
name: Slow Tests Issue Body

on:
workflow_dispatch:
schedule:
- cron: '0 */6 * * *'

permissions:
issues: write

jobs:
update-comment:
runs-on: ubuntu-latest
steps:
- name: Install ZSH
run: sudo apt-get update && sudo apt-get install -y zsh
- name: Checkout code
uses: actions/checkout@v4
Comment on lines +20 to +21

Check warning

Code scanning / zizmor

credential persistence through GitHub Actions artifacts Warning

credential persistence through GitHub Actions artifacts
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Trigger the script
working-directory: scripts/slowest_tests
shell: zsh {0}
run: source update-slowest-times-issue.sh
env:
GITHUB_TOKEN: ${{ github.token }}
19 changes: 13 additions & 6 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false
- uses: dorny/paths-filter@v3
id: changes
with:
Expand Down Expand Up @@ -56,6 +57,8 @@ jobs:
python-version: ["3.10", "3.12"]
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
Expand Down Expand Up @@ -133,7 +136,7 @@ jobs:
fast-compile: 0
float32: 0
part: "tests/link/pytorch"
- os: macos-latest
- os: macos-15
python-version: "3.12"
fast-compile: 0
float32: 0
Expand All @@ -146,8 +149,9 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false
- name: Set up Python ${{ matrix.python-version }}
uses: mamba-org/setup-micromamba@v1
uses: mamba-org/setup-micromamba@v2
with:
environment-name: pytensor-test
micromamba-version: "1.5.10-0" # until https://github.com/mamba-org/setup-micromamba/issues/225 is resolved
Expand All @@ -169,7 +173,7 @@ jobs:
shell: micromamba-shell {0}
run: |

if [[ $OS == "macos-latest" ]]; then
if [[ $OS == "macos-15" ]]; then
micromamba install --yes -q "python~=${PYTHON_VERSION}=*_cpython" numpy scipy pip graphviz cython pytest coverage pytest-cov pytest-benchmark pytest-mock libblas=*=*accelerate;
else
micromamba install --yes -q "python~=${PYTHON_VERSION}=*_cpython" mkl numpy scipy pip mkl-service graphviz cython pytest coverage pytest-cov pytest-benchmark pytest-mock;
Expand All @@ -182,7 +186,7 @@ jobs:
pip install -e ./
micromamba list && pip freeze
python -c 'import pytensor; print(pytensor.config.__str__(print_doc=False))'
if [[ $OS == "macos-latest" ]]; then
if [[ $OS == "macos-15" ]]; then
python -c 'import pytensor; assert pytensor.config.blas__ldflags.startswith("-framework Accelerate"), "Blas flags are not set to MacOS Accelerate"';
else
python -c 'import pytensor; assert pytensor.config.blas__ldflags != "", "Blas flags are empty"';
Expand Down Expand Up @@ -229,8 +233,9 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false
- name: Set up Python 3.10
uses: mamba-org/setup-micromamba@v1
uses: mamba-org/setup-micromamba@v2
with:
environment-name: pytensor-test
micromamba-version: "1.5.10-0" # until https://github.com/mamba-org/setup-micromamba/issues/225 is resolved
Expand Down Expand Up @@ -286,6 +291,8 @@ jobs:
if: ${{ needs.changes.outputs.changes == 'true' && needs.all-checks.result == 'success' }}
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false

- name: Set up Python
uses: actions/setup-python@v5
Expand All @@ -304,7 +311,7 @@ jobs:
merge-multiple: true

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
uses: codecov/codecov-action@v5
with:
directory: ./coverage/
fail_ci_if_error: true
Expand Down
36 changes: 36 additions & 0 deletions .github/workflows/zizmor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# https://github.com/woodruffw/zizmor
name: zizmor GHA analysis

on:
push:
branches: ["main"]
pull_request:
branches: ["**"]

jobs:
zizmor:
name: zizmor latest via PyPI
runs-on: ubuntu-latest
permissions:
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false

- uses: hynek/setup-cached-uv@v2

- name: Run zizmor 🌈
run: uvx zizmor --format sarif . > results.sarif
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@v3
with:
# Path to SARIF file relative to the root of the repository
sarif_file: results.sarif
# Optional category for the results
# Used to differentiate multiple results for one commit
category: zizmor
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ repos:
- id: sphinx-lint
args: ["."]
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.7.1
rev: v0.7.3
hooks:
- id: ruff
args: ["--fix", "--output-format=full"]
Expand Down
24 changes: 24 additions & 0 deletions doc/.templates/nb-badges.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{% if pagename in ablog %}

<!-- Generate correct links and render github/binder/colab badges -->
{% set gh_basepath = github_user + '/' + github_repo + '/blob/' + github_version + '/' %}
{% set encoded_base = github_user + '%252F' + github_repo %}
{% set gh_binder = github_user + '/' + github_repo + '/' + github_version %}
{% set doc_path_aux = doc_path | trim('/') %}
{% set file_path = doc_path_aux + '/' + pagename + ".ipynb" %}
{% set encoded_path = file_path | replace("/", "%252F") %}


<div class="sd-text-right">
<p>
<a href="{{ github_url + '/' + gh_basepath + file_path }}", role="button" target="_blank">
<img src="{{ pathto('_static/github.svg', 1) }}" alt="View On GitHub"></a>

<a href="{{ 'https://mybinder.org/v2/gh/' + sandbox_repo + '?urlpath=git-pull%3Frepo%3Dhttps%253A%252F%252Fgithub.com%252F' + encoded_base + '%26urlpath%3Dtree%252F' + github_repo + '%252F' + encoded_path + '%26branch%3D' + github_version }}" target="_blank">
<img src="{{ pathto('_static/binder.svg', 1) }}" alt="Open In Binder"></a>

<a href="{{ 'https://colab.research.google.com/github/' + gh_basepath + file_path }}" target="_blank">
<img src="{{ pathto('_static/colab.svg', 1) }}" alt="Open In Colab"/></a>
</p>
</div>
{% endif %}
13 changes: 13 additions & 0 deletions doc/.templates/rendered_citation.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- continuation of examples/page_footer.md -->
{% if pagename in ablog %}
{% set post = ablog[pagename] %}
{% for coll in post.author %}
{% if coll|length %}
{{ coll }}
{% if loop.index < post.author | length %},{% endif %}
{% else %}
{{ coll }}
{% if loop.index < post.author | length %},{% endif %}
{% endif %}
{% endfor %}. "{{ title.split(' — ')[0] }}". In: <i>Pytensor Examples</i>. Ed. by Pytensor Team. <!-- DOI: <a href={{ doi_url }}>{{ doi_code }}</a> -->
{% endif %}
7 changes: 7 additions & 0 deletions doc/blog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
orphan: true
---

# Recent updates

<!-- auto generated by ablog so it's empty -->
Loading
Loading