Porównaj commity

...

708 Commity

Autor SHA1 Wiadomość Data
Erik Sundell af6d3e8448
Merge pull request #1344 from jupyterhub/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2024-05-07 07:39:29 +02:00
pre-commit-ci[bot] 3c204f3b08
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/psf/black: 24.3.0 → 24.4.2](https://github.com/psf/black/compare/24.3.0...24.4.2)
2024-05-06 22:03:34 +00:00
Erik Sundell d2f467cef6
Merge pull request #1342 from jupyterhub/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2024-04-02 09:54:26 +02:00
pre-commit-ci[bot] 0e7907f86b
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/asottile/pyupgrade: v3.15.0 → v3.15.2](https://github.com/asottile/pyupgrade/compare/v3.15.0...v3.15.2)
- [github.com/psf/black: 24.1.1 → 24.3.0](https://github.com/psf/black/compare/24.1.1...24.3.0)
2024-04-01 22:10:42 +00:00
Simon Li 243669b928
Merge pull request #1341 from manics/changelog-2024.03.0
Changelog for 2024.03.0
2024-03-31 20:43:31 +02:00
Simon Li d4bb9c14da Changelog for 2024.03.0 2024-03-28 19:13:23 +00:00
Erik Sundell f667caf49c
Merge pull request #1332 from yuvipanda/bump-alpine
Dockerfile: bump alpine from 3.17 to 3.19 and Python 3.10 to 3.11
2024-03-24 23:08:31 +01:00
Erik Sundell 755a32bc2a
Merge pull request #1337 from SylvainCorlay/mamba-1.5.7
Update mamba to 1.5.7 from 1.5.1, and conda to 24.3.0 from 23.7.4
2024-03-24 22:50:58 +01:00
Erik Sundell 91d3f150e5
Use ARG instead of ENV for build time only environment variable 2024-03-24 22:35:15 +01:00
Erik Sundell f121a0d481
Use modern ENV syntax in Dockerfile
The use of `ENV key value` is an old alternative syntax still around for backward compatibility, but may be removed according to https://docs.docker.com/reference/dockerfile/#env.
2024-03-24 22:22:47 +01:00
Erik Sundell 57e4b3f687
Fix unrelated comment 2024-03-24 22:18:23 +01:00
Erik Sundell 920ddd86ac
Update conda from 23.7.4 to 24.3.0 2024-03-24 22:16:05 +01:00
YuviPanda 601fa25291 Don't use --user to install anything 2024-03-22 19:40:41 -07:00
YuviPanda 756e7d1a98 Put everything inside a venv 2024-03-22 19:40:41 -07:00
YuviPanda dd9f6ad2de Bump alpine version used in Dockerfile
Brings us to latest alpine, and to a newer python
2024-03-22 19:40:41 -07:00
Sylvain Corlay 01d818b974 Update to mamba 1.5.7 2024-03-22 21:34:50 +01:00
Erik Sundell a20dd1cf97
Merge pull request #1333 from jupyterhub/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2024-02-06 08:22:46 +01:00
pre-commit-ci[bot] f2c1cb7a8c [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2024-02-05 20:28:56 +00:00
pre-commit-ci[bot] 625b296773
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/psf/black: 23.12.1 → 24.1.1](https://github.com/psf/black/compare/23.12.1...24.1.1)
2024-02-05 20:26:53 +00:00
Yuvi Panda 3221560bb1
Merge pull request #1330 from manics/pin-pytest
Support pytest=8
2024-02-01 16:41:55 -08:00
Simon Li 56299a2312
Don't pin upper pytest version 2024-02-01 22:39:08 +00:00
Erik Sundell c806c1c1c2
Merge pull request #1331 from jupyterhub/dependabot/github_actions/codecov/codecov-action-4
build(deps): bump codecov/codecov-action from 3 to 4
2024-02-01 10:29:49 +01:00
dependabot[bot] 767047c84c
build(deps): bump codecov/codecov-action from 3 to 4
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3 to 4.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-01 05:06:50 +00:00
Simon Li 237375f3a4 pytest >=7,<9 2024-01-28 19:26:24 +00:00
Simon Li 6fe9ee6763 pytest: replace fspath with path 2024-01-28 18:04:51 +00:00
Simon Li 6f92fa0e84
Merge pull request #1329 from TimoRoth/update_versioneer
Update versioneer
2024-01-28 17:07:02 +00:00
Simon Li 3505ad7c8b
Pin pytest<8 2024-01-28 17:00:51 +00:00
pre-commit-ci[bot] 089e919e19 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2024-01-28 14:02:27 +00:00
Timo Rothenpieler fa8394b09b Run pre-commit 2024-01-28 15:02:03 +01:00
Timo Rothenpieler 2eac520042 Update versioneer 2024-01-27 15:36:11 +01:00
Min RK 6aad2bcce2
Merge pull request #1205 from sgaist/implement_dockerignore_support
Implement support for dockerignore and containerignore
2024-01-24 11:39:22 +01:00
Yuvi Panda b3b8db7954
Merge pull request #1326 from twtw/addnycu
Add NYCU Dataverse
2024-01-19 19:44:36 -08:00
Yuvi Panda 8f0d9aaf9e
Merge pull request #1318 from hiroyuki-sato/topic/add-example
[MRG] docs: Add base_image parameter example.
2024-01-19 18:51:34 -08:00
Yuvi Panda abe7c15b3a
Merge branch 'main' into addnycu 2024-01-19 18:50:35 -08:00
Samuel Gaist 77df191536 test(venv): add ignore files above binderdir
This ensures that the ignore files are retrieved from the proper folder.
If they weren't the build would not succeed as the binder folder is
ignored.
2024-01-19 08:45:06 +00:00
Samuel Gaist 09e503c4e6 feat: respect the root folder configured when looking for ignore files
See the design chapter for more details.
2024-01-19 08:45:06 +00:00
Samuel Gaist a51235f9a5 fix: remove the ignore .git folder default when no exclude files are present 2024-01-19 08:45:06 +00:00
Samuel Gaist d6670f4378 refactor: use list comprehension rather filter+lambda 2024-01-19 08:45:06 +00:00
Samuel Gaist 3028d07182 fix: create src directory in any case
The original behavior was to create an src directory with the content of the
repository. The creation would happen in any case (remote or local repository).
With the filtering in place and the default to remove the .git folder, it breaks
the build as the src folder can be missing.

This patch ensures that the directory is present in the tar so the build can
continue as it did until now.
2024-01-19 08:45:06 +00:00
Samuel Gaist 6b8b2334e7 feat: implement support for dockerignore and containerignore
Currently repo2docker creates a context object that includes the whole content
of the repository it builds an image for. Thus it includes folders like .git
which is usually something that has no interest in the final image, can take
quite a lot of space and most importantly, kills the caching of that layer.

This patch adds support for reading dockerignore and containerignore files that
are used to ensure only the relevant data are used to build the image.

By default it also excludes the .git folder if neither of these files are
provided.
2024-01-19 08:45:06 +00:00
Simon Li 0e02889faf
Merge pull request #1321 from MPDL/MPDL_Dataverse
New domain for Edmond MPG repository
2024-01-18 20:56:57 +00:00
Erik Sundell 7713f2a82f
Merge pull request #1327 from jupyterhub/dependabot/github_actions/actions/upload-artifact-4
build(deps): bump actions/upload-artifact from 3 to 4
2024-01-04 01:15:54 +01:00
Erik Sundell 40682d762a
Merge pull request #1322 from jupyterhub/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2024-01-04 01:04:55 +01:00
Erik Sundell 809f511799
Merge pull request #1328 from jupyterhub/dependabot/github_actions/actions/setup-python-5
build(deps): bump actions/setup-python from 4 to 5
2024-01-04 00:50:08 +01:00
pre-commit-ci[bot] 97ce87c079
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/psf/black: 23.10.1 → 23.12.1](https://github.com/psf/black/compare/23.10.1...23.12.1)
- [github.com/pycqa/isort: 5.12.0 → 5.13.2](https://github.com/pycqa/isort/compare/5.12.0...5.13.2)
- [github.com/pre-commit/mirrors-prettier: v3.0.3 → v4.0.0-alpha.8](https://github.com/pre-commit/mirrors-prettier/compare/v3.0.3...v4.0.0-alpha.8)
2024-01-01 20:22:43 +00:00
dependabot[bot] 6dc8dee823
build(deps): bump actions/setup-python from 4 to 5
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 05:09:55 +00:00
dependabot[bot] 766f4b8eb4
build(deps): bump actions/upload-artifact from 3 to 4
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 05:09:51 +00:00
Cheng-Yen Liu 066e951a7d
Add NYCU Dataverse 2023-12-27 03:28:08 +08:00
haarli 38f6e0acd1
Logo URL 2023-11-10 10:47:13 +01:00
haarli 24fa50118e
New domain for Edmond MPG repository 2023-11-10 09:56:57 +01:00
Min RK c6f97e55c1
Merge pull request #1319 from jupyterhub/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2023-11-07 10:03:02 +01:00
pre-commit-ci[bot] 42ffce107d
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/asottile/pyupgrade: v3.14.0 → v3.15.0](https://github.com/asottile/pyupgrade/compare/v3.14.0...v3.15.0)
- [github.com/psf/black: 23.9.1 → 23.10.1](https://github.com/psf/black/compare/23.9.1...23.10.1)
2023-11-06 20:27:49 +00:00
Hiroyuki Sato 570c11769b docs: Add base_image parameter example.
Some users don't know how to set base_image.
Add an example of how to set it.
2023-10-24 21:45:01 +09:00
Erik Sundell 57d229eb19
Merge pull request #1317 from manics/rstudio-logging
rstudio: log-level info to stderr
2023-10-23 00:21:44 +02:00
Simon Li 72cfc12a8d rstudio: log-level info to stderr 2023-10-22 19:20:16 +01:00
Yuvi Panda 8bdf681a4a
Merge pull request #1313 from manics/upgrade-mamba
Upgrade mamba and refreeze
2023-10-19 12:19:26 +05:30
Simon Li f4591425b4 Fix mamba/conda version test 2023-10-19 10:46:13 +05:30
Simon Li 4b0c7d9bfd conda 23.7.4
error    libmamba Could not solve for environment specs
    The following packages are incompatible
    ├─ conda 23.9.0**  is requested and can be installed;
    └─ mamba 1.5.1**  is not installable because it requires
       └─ conda >=4.14,<23.9.0a0 , which conflicts with any installable versions previously reported.
2023-10-19 10:46:13 +05:30
Simon Li 2e26e773b7 ./freeze.py 2023-10-19 10:46:13 +05:30
Simon Li 3ec7d41bce mamba 1.5.1 conda 23.9.0 2023-10-19 10:46:13 +05:30
Yuvi Panda aa57e01d24
Merge pull request #1315 from manics/zenodo
Get Zenodo working again
2023-10-19 10:45:09 +05:30
Simon Li fc7de2768b Zenodo DOI now returning https://zenodo.org/records/ instead of https://zenodo.org/record/ 2023-10-15 21:17:51 +01:00
Simon Li 1fc8f192ee doi2url: Don't ignore non-404 errors 2023-10-15 17:17:59 +01:00
Simon Li ebdd121b05 Update zenodo mocks 2023-10-15 17:17:59 +01:00
Simon Li 74a94cf2b0 Test resolving DOI
This helps distinguish temporary(?) errors in the DOI resolution from errors in the content provider
2023-10-15 17:17:55 +01:00
Simon Li efb4cd3bbc Attempt to fix Zenodo
Done by inspecting API responses
- https://zenodo.org/api/records/3242074
- https://zenodo.org/api/records/3242074/files
2023-10-15 13:43:15 +01:00
Yuvi Panda de496f893b
Merge pull request #1309 from manics/upgrade-guide-ubuntu2204
Add Ubuntu 22.04 upgrade guide
2023-10-15 10:08:39 +05:30
Simon Li 2ad8eebd41 ubuntu 18.04: warn about r2d build being frozen in time 2023-10-13 00:14:25 +01:00
Yuvi Panda 8c32db9987
Merge pull request #1310 from yuvipanda/rsession
r: Bump version of rsession-proxy
2023-10-12 15:29:19 +00:00
YuviPanda 18ab230b0c Bump rsession-proxy pin instead
We can move to a proper pinning setup later
2023-10-12 07:49:13 -07:00
YuviPanda 654199c705 r: Don't strictly pin version of rsession-proxy
If memory serves me right, the specific version semantics
were here because at some point we were installing different
versions of rsession-proxy for different versions of R. We
don't do that anymore, so we should just unpin it and let the
pip solver install the appropriate version.

Hopefully fixes https://discourse.jupyter.org/t/r-conda-example-repo-isnt-working-any-more/21739/3
2023-10-12 06:59:45 -07:00
Simon Li 94a0043883 upgrade: Link dockerfile 2023-10-08 15:52:46 +01:00
Simon Li 8f0d763ec4 Add Ubuntu 22.04 upgrade guide 2023-10-08 15:46:22 +01:00
Erik Sundell d0ad8d3715
Merge pull request #1291 from jupyterhub/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2023-10-03 12:41:11 +02:00
pre-commit-ci[bot] 714a26e11d
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/asottile/pyupgrade: v3.4.0 → v3.14.0](https://github.com/asottile/pyupgrade/compare/v3.4.0...v3.14.0)
- [github.com/psf/black: 23.3.0 → 23.9.1](https://github.com/psf/black/compare/23.3.0...23.9.1)
- [github.com/pre-commit/mirrors-prettier: v3.0.0-alpha.9-for-vscode → v3.0.3](https://github.com/pre-commit/mirrors-prettier/compare/v3.0.0-alpha.9-for-vscode...v3.0.3)
2023-10-03 10:35:34 +00:00
Erik Sundell 129f624120
Merge pull request #1307 from jupyterhub/dependabot/github_actions/docker/build-push-action-5
build(deps): bump docker/build-push-action from 4 to 5
2023-10-02 12:18:48 +02:00
dependabot[bot] 77289c4719
build(deps): bump docker/build-push-action from 4 to 5
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4 to 5.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 08:52:37 +00:00
Erik Sundell 4cd89f5328
Merge pull request #1306 from jupyterhub/dependabot/github_actions/docker/setup-qemu-action-3
build(deps): bump docker/setup-qemu-action from 2 to 3
2023-10-01 10:52:04 +02:00
dependabot[bot] 8ee344ef30
build(deps): bump docker/setup-qemu-action from 2 to 3
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 08:26:04 +00:00
Erik Sundell 580101abd9
Merge pull request #1305 from jupyterhub/dependabot/github_actions/docker/setup-buildx-action-3
build(deps): bump docker/setup-buildx-action from 2 to 3
2023-10-01 10:25:21 +02:00
Erik Sundell 2d82547742
Merge pull request #1308 from jupyterhub/dependabot/github_actions/actions/checkout-4
build(deps): bump actions/checkout from 3 to 4
2023-10-01 10:20:21 +02:00
dependabot[bot] c7d5094e06
build(deps): bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 05:27:30 +00:00
dependabot[bot] df22b13f94
build(deps): bump docker/setup-buildx-action from 2 to 3
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 05:27:20 +00:00
Erik Sundell 3fe6c75a88
Merge pull request #1287 from yuvipanda/bump
Upgrade base image from to Ubuntu 22.04 from 18.04
2023-09-18 11:53:35 +02:00
Erik Sundell c53971b1b5
docs: fix outdated reference to ubuntu:bionic 2023-08-08 12:24:41 +02:00
Simon Li d414e994fc
Merge pull request #1299 from SylvainCorlay/update-mamba-1.4.9
Update conda and mamba
2023-07-18 16:12:28 +01:00
Sylvain Corlay fbe7ebad53 Update conda and mamba 2023-07-18 12:06:16 +01:00
Yuvi Panda df111a06ee
Merge pull request #1293 from yamaton/fix-install-rstudio
Fix rstudio-build selection
2023-07-14 09:34:10 -07:00
Simon Li e0609adca8
Merge pull request #1294 from fcollonval/patch-2
Point to official documentation for handling JupyterLab workspace
2023-07-12 18:45:05 +01:00
Frédéric Collonval e231c1a619
Point to official documentation for handling JupyterLab workspace 2023-07-11 13:16:17 +02:00
Yamato Matsuoka 6a0d76a308 Fix rstudio-build selection 2023-07-08 12:50:12 -04:00
Min RK 247e9535b1
Merge pull request #1288 from yuvipanda/r-docs
Update version of R available
2023-06-13 13:49:38 +02:00
YuviPanda 0205c112b9 Update version of R available
Fixes https://github.com/jupyterhub/repo2docker/issues/1278
2023-06-13 10:40:48 +02:00
YuviPanda e586b26110 Upgrade base image to Ubuntu 22.04
18.04 was EOL May 2023, with only paid support now available
(https://ubuntu.com/blog/18-04-end-of-standard-support).

Let's bump the default base image to 22.04. This might break
some repos that have apt.txt based packages, but I don't
really think there's a way around that. If specific package pinning
is needed, users unfortunately need to use a Dockerfile.

Ref https://github.com/jupyterhub/repo2docker/issues/1258
2023-06-13 13:03:05 +05:30
Yuvi Panda fd22a4f49c
Merge pull request #1286 from yuvipanda/clog-
Add changelog for 2023.06.0
2023-06-13 12:51:59 +05:30
Yuvi Panda 5f12217705
Use correct tag
Co-authored-by: Erik Sundell <erik.i.sundell@gmail.com>
2023-06-13 12:51:33 +05:30
pre-commit-ci[bot] fcdf7c424e [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2023-06-13 05:51:13 +00:00
YuviPanda 119cff990f Add changelog for 2023.06.0 2023-06-13 11:20:18 +05:30
Min RK 0ea6f7d85e
Merge pull request #1285 from minrk/rmmran
Microsoft killed MRAN, stop relying on it
2023-06-12 10:20:18 +02:00
pre-commit-ci[bot] 18e76f9d38 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2023-06-11 07:40:57 +00:00
YuviPanda 49bdc6c048 Add unit test for MRAN death 2023-06-11 13:10:02 +05:30
YuviPanda 5947b756ba Use correct method to format datetime 2023-06-11 13:09:48 +05:30
YuviPanda 9f1a6406b6 Use correct type to represent cutoff date 2023-06-11 13:09:40 +05:30
YuviPanda 0dfce76775 Throw a useful error message when snapshot is too old 2023-06-11 13:04:28 +05:30
YuviPanda a0fd8743b2 Remove mentions of MRAN 2023-06-11 12:56:53 +05:30
YuviPanda 6c719bd671 Remove unnecessary method call 2023-06-11 12:55:34 +05:30
YuviPanda 3fb91c7f56 Try a slightly newer date 2023-06-09 23:44:54 +05:30
YuviPanda 0a756e72dd Try a slightly older snapshot date 2023-06-09 19:54:19 +05:30
YuviPanda 5572e37a7d Bump up the R snapshot date some more 2023-06-09 18:27:37 +05:30
YuviPanda 1224084345 Bump 3.6-rspm snapshot to after IRkernel was introduced 2023-06-09 17:56:42 +05:30
Min RK 8500d479a5
Stop using MRAN
- remove cutoff for picking RSPM, always use it
- remove now-redundant r4.0-mran test
- shift base R 3.6 snapshot date to after October 2017, when rspm snapshots seem to have started
- update docs to point to RSPM
2023-06-09 13:19:59 +02:00
Min RK e8eab153e7
Merge pull request #909 from yuvipanda/feat/new-base
Let `FROM <base_image>` in the Dockerfile template be configurable
2023-06-09 13:15:14 +02:00
Yuvi Panda 671c423421
Merge pull request #1283 from consideRatio/pr/relax-pinning-and-refreeze
Relax pins to major versions and refreeze, introduce explicit jupyter_server v1 pin
2023-06-09 15:59:48 +05:30
Min RK e1051c3cb8
Merge branch 'main' into feat/new-base 2023-06-09 12:24:20 +02:00
Erik Sundell 8bb242d40c Refreeze conda buildpack's dependencies 2023-06-08 11:36:22 +02:00
Erik Sundell 90252fd30d Pin jupyter-server, previously held back to v1 by jupyterlab 3.4.* 2023-06-08 11:33:29 +02:00
Simon Li f2247b8814
Merge pull request #1282 from fcollonval/patch-1
Fix links to jupyterlab-demo postBuild file
2023-06-08 09:03:06 +01:00
Erik Sundell 07be88950b Only pin to major versions as input to freeze 2023-06-08 09:16:21 +02:00
Frédéric Collonval 1e31b117d8
Fix links to jupyterlab-demo postBuild file 2023-06-08 09:00:03 +02:00
Erik Sundell 05ac1ec274
Merge pull request #1279 from jupyterhub/dependabot/github_actions/pypa/gh-action-pypi-publish-1.8.6
build(deps): bump pypa/gh-action-pypi-publish from 1.8.5 to 1.8.6
2023-06-08 07:21:32 +02:00
Erik Sundell 2775e14161
Pin action to vX instead of vX.Y.Z to reduce automation noise 2023-06-08 07:20:42 +02:00
Yuvi Panda 6d3b80cbdd
Merge pull request #1281 from yuvipanda/cl-md
Recreate changelog as markdown
2023-06-06 17:44:04 +05:30
Min RK be74e4ae42
use rst2myst to migrate changelog to .md
no content change, only syntax
2023-06-06 13:26:54 +02:00
Min RK deaaeb2ef7
Merge pull request #1270 from jupyterhub/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2023-06-06 09:04:28 +02:00
pre-commit-ci[bot] 8efd8c5b26
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/asottile/pyupgrade: v3.3.1 → v3.4.0](https://github.com/asottile/pyupgrade/compare/v3.3.1...v3.4.0)
- [github.com/pre-commit/mirrors-prettier: v3.0.0-alpha.6 → v3.0.0-alpha.9-for-vscode](https://github.com/pre-commit/mirrors-prettier/compare/v3.0.0-alpha.6...v3.0.0-alpha.9-for-vscode)
2023-06-06 04:13:40 +00:00
pre-commit-ci[bot] ad028f665f [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2023-06-05 19:52:46 +00:00
YuviPanda f13d80e51d Recreate changelog as markdown
github-activity, used for other JupyterHub release processes,
now outputs markdown. This PR moves the existing changelog
to use markdown, and provides a more complete list of
changes too.

Ref https://github.com/jupyterhub/repo2docker/issues/1280
2023-06-06 01:21:40 +05:30
dependabot[bot] 44e4697caf
build(deps): bump pypa/gh-action-pypi-publish from 1.8.5 to 1.8.6
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.5 to 1.8.6.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.5...v1.8.6)

---
updated-dependencies:
- dependency-name: pypa/gh-action-pypi-publish
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-01 05:57:45 +00:00
Simon Li 6250c069a8
Merge pull request #1245 from manics/registry-credentials
Add optional registry credentials to push()
2023-05-31 17:36:59 +01:00
Simon Li 4ae9cfa5bf
Merge pull request #1276 from minrk/extlinks
fix github link templates
2023-05-24 12:54:10 +01:00
Min RK 2f46bccb7b
fix github link templates
missing `%s` raises error on sphinx 6
2023-05-24 13:06:00 +02:00
Simon Li 7112d178c0
Merge pull request #1273 from Xarthisius/issue_1272
Update the location of R packagemanager
2023-05-24 10:17:38 +01:00
Kacper Kowalik (Xarthisius) 7bf02d8101
Update the location of R packagemanager
Fixes #1272
2023-05-23 18:47:32 -05:00
Erik Sundell d3c74414cf
Merge pull request #1264 from minrk/julia-error
missing `f` in julia fetch error f-string
2023-04-11 13:00:10 +02:00
Min RK 39d203cc80
missing `f` in julia fetch error f-string 2023-04-11 12:02:00 +02:00
Erik Sundell c5be2a7e3a
Merge pull request #1259 from yuvipanda/nomointeract
Remove deprecated nteract_on_jupyter
2023-04-10 11:20:11 +02:00
Erik Sundell 3068954c4d conda buildpack: accept that refreeze brought in npm 9 2023-04-09 17:52:21 +02:00
Erik Sundell f87c86c625 conda buildpack: refreeze environments 2023-04-09 17:26:53 +02:00
YuviPanda 5f383fd8cd Remove deprecated nteract_on_jupyter
Last release was in 2019, and it has been explicilty
deprecated for a while
https://github.com/nteract/nteract/issues/5554#issuecomment-852434391

TLJH plans to remove it in https://github.com/jupyterhub/the-littlest-jupyterhub/pull/869
2023-04-09 17:26:31 +02:00
Erik Sundell 1bb1d8f87c
Merge pull request #1263 from jupyterhub/dependabot/github_actions/pypa/gh-action-pypi-publish-1.8.5
build(deps): bump pypa/gh-action-pypi-publish from 1.8.4 to 1.8.5
2023-04-07 16:06:55 +02:00
dependabot[bot] 30f3cb368d
build(deps): bump pypa/gh-action-pypi-publish from 1.8.4 to 1.8.5
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.4 to 1.8.5.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.4...v1.8.5)

---
updated-dependencies:
- dependency-name: pypa/gh-action-pypi-publish
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-07 13:58:14 +00:00
Erik Sundell 2c6d20c3c7
Merge pull request #1262 from consideRatio/pr/dependabot-monthly
dependabot: monthly updates of github actions
2023-04-07 15:57:57 +02:00
Erik Sundell 1e7cd82722 dependabot: rename to .yaml 2023-04-05 10:17:58 +02:00
Erik Sundell 7e1c89fde7 dependabot: monthly updates of github actions 2023-04-04 22:57:33 +02:00
Min RK 333ec83f3e
Merge pull request #1260 from jupyterhub/dependabot/github_actions/pypa/gh-action-pypi-publish-1.8.4
build(deps): bump pypa/gh-action-pypi-publish from 1.8.3 to 1.8.4
2023-04-04 13:05:52 +02:00
Min RK e52f9b4965
Merge pull request #1261 from jupyterhub/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2023-04-04 13:05:25 +02:00
pre-commit-ci[bot] 438e696c80
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/psf/black: 23.1.0 → 23.3.0](https://github.com/psf/black/compare/23.1.0...23.3.0)
2023-04-04 06:23:02 +00:00
dependabot[bot] b4b8629a45
build(deps): bump pypa/gh-action-pypi-publish from 1.8.3 to 1.8.4
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.3 to 1.8.4.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.3...v1.8.4)

---
updated-dependencies:
- dependency-name: pypa/gh-action-pypi-publish
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 06:00:35 +00:00
Min RK 43ff7bbc4d
Merge pull request #1253 from IQSS/1242-dataverse-original-file-format
[MRG] download original file formats from Dataverse #1242
2023-03-29 12:29:54 +02:00
Philip Durbin 48f4cc630e make isort happy with pre-commit run --all-files #1242 2023-03-29 05:35:08 -04:00
Min RK 0d84b9e1c4
Merge pull request #1073 from jgarte/add_more_engine_cli_options
Set default, type, and help method for engine in argparse
2023-03-29 10:12:58 +02:00
Min RK f9b912c7a6
Merge pull request #1257 from jupyterhub/dependabot/github_actions/pypa/gh-action-pypi-publish-1.8.3
build(deps): bump pypa/gh-action-pypi-publish from 1.6.4 to 1.8.3
2023-03-29 10:09:03 +02:00
Yuvi Panda ebc7816e5b
Merge pull request #1241 from jupyterhub/dependabot/github_actions/docker/build-push-action-4
build(deps): bump docker/build-push-action from 3 to 4
2023-03-28 20:50:04 +05:30
Yuvi Panda 049320301c
Merge pull request #1256 from SylvainCorlay/mamba-1-4
Update to mamba 1.4.0
2023-03-28 20:49:45 +05:30
Yuvi Panda b52ea663ac
Merge pull request #1248 from minrk/memoize-getters
avoid duplicate log statements by memoizing getters
2023-03-28 20:49:13 +05:30
Yuvi Panda 5bcbe9b453
Merge pull request #1249 from minrk/never-empty-python
Ensure `BuildPack.python_version` is specified
2023-03-28 20:15:23 +05:30
dependabot[bot] 6b68e5aaf9
build(deps): bump pypa/gh-action-pypi-publish from 1.6.4 to 1.8.3
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.6.4 to 1.8.3.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.6.4...v1.8.3)

---
updated-dependencies:
- dependency-name: pypa/gh-action-pypi-publish
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 06:05:59 +00:00
YuviPanda 5894f63b87 Merge remote-tracking branch 'upstream/main' into feat/new-base 2023-03-23 22:21:02 +05:30
Sylvain Corlay de908c9213 Update to mamba 1.4.0 and conda 23.1.0 2023-03-23 16:45:57 +01:00
Min RK 70a2de4e12
@lru_cache requires Python 3.8, use older @lru_cache() 2023-03-23 16:00:23 +01:00
Min RK 1e1d6ac20f
memoize all getters explicitly
rather than automatically
2023-03-23 15:58:27 +01:00
YuviPanda f848c81073 Install libssl-dev unconditionally for R 2023-03-23 20:02:49 +05:30
Philip Durbin 938d91c9ca download original file formats from Dataverse #1242
Dataverse creates plain-text, preservation-friendly copies of certain
file formats (some of which are proprietary, such as Stata or SPSS) and
this .tab (tab-separated) file is downloaded unless you supply
`format=original`, which is what this pull request does.

The original filename (e.g. foo.dta, a Stata file) comes from
`originalFileName`, which is only populated when the preservation copy
(e.g. foo.tab) has been successfully created.

Additional variables were created to distinguish between `filename`,
`original_filename`, and `filename_with_path`. If `original_filename`
is available, it's the right one to use.

To allow the tests to continue passing, the query parameters are now
removed so just the file id can be cast as an int.
2023-03-10 16:46:05 -05:00
Min RK 21fa80fad6
Merge pull request #1252 from jupyterhub/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2023-03-08 09:34:58 +01:00
pre-commit-ci[bot] 39b563c47d
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pre-commit/mirrors-prettier: v3.0.0-alpha.4 → v3.0.0-alpha.6](https://github.com/pre-commit/mirrors-prettier/compare/v3.0.0-alpha.4...v3.0.0-alpha.6)
2023-03-07 03:45:48 +00:00
Simon Li 4c6b5bc7f8
Merge pull request #1251 from minrk/rm-codecov-status
disable codecov failures
2023-02-21 19:43:07 +00:00
Min RK 1faf4b88fc
disable codecov status
it's unreliable, and we don't want to waste time with incorrect failed status checks

the links in the checks are the main value, not the pass/fail
2023-02-21 09:32:02 +01:00
Min RK e57bd23950
Merge pull request #1250 from minrk/doc-default
update docs for default and supported Python versions
2023-02-21 09:30:29 +01:00
Min RK 66b8765c69
Remove unspecified Python version case
- removes lockfile copies without version
- enforces that `buildpack.python_version` is always specified (major_pythons['3'] in cases where it could have been falsy before)
- warns when Python version is unspecified, which ensures future reproducibility failures
2023-02-17 13:00:27 +01:00
Min RK c1d12ad06d
update docs for default and supported Python versions 2023-02-17 10:09:21 +01:00
Min RK 0a4cd197e5
Merge pull request #1219 from yuvipanda/new-default
Switch default python to 3.10
2023-02-17 09:39:24 +01:00
Min RK 847fdffe01
update default env expectations in seperate kernel envs 2023-02-16 14:50:57 +01:00
Min RK 52be2d3d64
memoize getters
ensures `get_` functions are called only once,
avoiding duplicate log statements
2023-02-16 13:13:17 +01:00
Min RK 1a2438d34e
default env is 3.10 2023-02-16 12:44:18 +01:00
Min RK ceb25f85f2
Merge remote-tracking branch 'origin/main' into new-default 2023-02-16 12:41:48 +01:00
Yuvi Panda 8c0f49ed89
Merge pull request #1237 from TimStewartJ/tim/rsession-library-path
Add Conda env library path to RStudio configuration
2023-02-15 11:00:07 -08:00
Erik Sundell 6d6e5ffd1b
Merge pull request #1239 from minrk/3.11
Support Python 3.11 and upgrade jupyterhub from 1.5.0 to 3.1.1
2023-02-15 19:28:29 +01:00
Min RK 5f6d76764b
update test expectations in py35/py36 tests
`/usr/bin/env python` is no longer the kernel python
2023-02-15 15:24:16 +01:00
Min RK 0f328e67e7
Julia 0.6 needs Jupyter from py35 environment 2023-02-15 15:24:15 +01:00
Simon Li 5e8ee1ca7d Add registry optional credentials to push() 2023-02-12 00:16:14 +00:00
Simon Li 1e61d4f1ae
Merge pull request #1244 from robertodr/patch-1
Update install-nix.bash
2023-02-11 17:14:28 +00:00
Roberto Di Remigio Eikås b84abf3b77
Update install-nix.bash 2023-02-11 11:34:32 +01:00
Min RK 62f5dbfe4e
update binder-examples/requirements tag test to one with specified Python version 2023-02-08 14:26:12 +01:00
Min RK abe2cc8598
import downgrade test
rather than building old xeus-cling, which requires a downgrade of Python from 3.10 to 3.9,
which is _not_ supported,
run the build with a 3.9 pin.

This still results in patch-level downgrade of Python, major downgrade of openssl, etc.
2023-02-08 13:51:04 +01:00
Min RK fbab2cd330
actually change the default Python version to 3.10
this default lives too many places!
2023-02-08 13:25:45 +01:00
dependabot[bot] 6e92cdd05b
build(deps): bump docker/build-push-action from 3 to 4
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3 to 4.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 05:10:11 +00:00
Min RK 738a56dcd5
refreeze after merge 2023-02-03 16:08:40 +01:00
Min RK 957a4db136
sync with main 2023-02-03 16:04:36 +01:00
Min RK 12f94dc69e
Merge pull request #1235 from jtpio/gitpod-dev-requirements
Also install dev requirements on Gitpod
2023-02-03 16:02:26 +01:00
Min RK 18cbf55b90
test postBuild behavior with legacy Python 3.6 2023-02-03 15:53:05 +01:00
Min RK a9d77e21f1
No longer install notebook/jupyterhub packages on Python 3.5
now that it's a kernel-only environment
2023-02-03 15:27:32 +01:00
Min RK b8c76448a3
generalize separate kernel environment from server for old Python
replaces `.py2` special-case with a general `separate_kernel_env` flag,
currently triggered by requesting Python < 3.7.

Python 3.6 and 3.5 are now treated as Python 2.7
2023-02-03 15:27:07 +01:00
Min RK ca51f8fc00
add Python 3.11, jupyterhub 3.1.1 2023-02-03 15:24:39 +01:00
Min RK 13ee5f4075
Merge pull request #1238 from minrk/main
pre-commit update to fix ci
2023-02-03 15:23:46 +01:00
pre-commit-ci[bot] 3e6951c02e [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2023-02-03 14:22:06 +00:00
Min RK 4bffe3df6a
ignore pre-commit changes in github workflows 2023-02-03 15:21:07 +01:00
Min RK fc2ce1f3aa
pre-commit update
fixes isort crash
2023-02-03 15:19:33 +01:00
Min RK 45b5080f88
Merge pull request #1232 from SylvainCorlay/experimentat-sat-error-messages
Upgrade to mamba 1.1 and enable rich SAT error messages
2023-02-02 10:09:30 +01:00
Simon Li c45374d74a
Merge pull request #1234 from jtpio/node-18
Bump to Node 18
2023-01-23 13:44:14 +00:00
Jeremy Tuloup 32fada9b0e Refreeze 2023-01-23 12:13:34 +00:00
Jeremy Tuloup 971caee73f Bump to Node 18 2023-01-23 11:53:45 +00:00
Simon Li 326dc92d6b
Merge pull request #1236 from jtpio/update-resource-usage
Update to `jupyter-resource-usage==0.7.0`
2023-01-22 22:12:52 +00:00
Jeremy Tuloup 498cb68210 Update to `jupyter-resource-usage==0.7.0` 2023-01-20 15:52:19 +00:00
Jeremy Tuloup 6e508d2b23
Also install dev requirements on Gitpod 2023-01-20 16:37:44 +01:00
Tim 348efa2efe
add conda env lib path to r config 2023-01-15 15:29:03 -08:00
Sylvain Corlay 75a8bd74b2 Upgrade to mamba 1.1 and enable rich SAT error messages 2023-01-11 07:49:42 +01:00
YuviPanda a6ccf815cc Fix mismatched quotes 2023-01-07 01:55:06 -08:00
pre-commit-ci[bot] 01c142b8c2 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2023-01-07 09:12:39 +00:00
YuviPanda 0a3846f5d9 Support installing RStudio on distros without openssl1.1 2023-01-07 01:12:15 -08:00
Yuvi Panda 99125ab179
Merge branch 'main' into feat/new-base 2023-01-06 22:28:27 -08:00
Erik Sundell 49162fc11a
Merge pull request #1228 from manics/arm64
Add ARM64 support where possible
2023-01-04 17:35:05 +01:00
Simon Li 8f818645f9 Raise error if Python 2.7 is used on arm64 2023-01-04 15:08:26 +00:00
Simon Li cdd0d56342 OSX reports arm64 (Linux reports aarch64) 2023-01-04 15:04:49 +00:00
Erik Sundell cde0126de0
Merge pull request #1229 from jupyterhub/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2023-01-03 14:06:51 +01:00
pre-commit-ci[bot] 2308cfe232
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pycqa/isort: v5.11.3 → 5.11.4](https://github.com/pycqa/isort/compare/v5.11.3...5.11.4)
2023-01-03 01:51:52 +00:00
Simon Li 8f3f57ada7 Make platform configurable instead of only auto-detecting 2023-01-02 19:51:51 +00:00
Simon Li 064d91ae22 BuildPacks: support arm64 where possible (i.e. not R) 2023-01-02 19:51:51 +00:00
Simon Li 33eee4a440 refreeze 2023-01-02 19:51:51 +00:00
Simon Li e774709744 Update freeze.py to handle linux-aarch64 2023-01-02 19:51:51 +00:00
Simon Li d0d55c07ba Rename `environment*.lock` ➡️ `environment*-linux-64.lock` 2023-01-02 19:51:51 +00:00
Simon Li 268e86b0f7 Docker release: add `linux/arm64` 2023-01-02 19:51:51 +00:00
Yuvi Panda c6318105d2
Merge pull request #1226 from manics/fix-test-reproductions
Fix tests/external/reproductions.repos.yaml
2023-01-02 11:15:48 -08:00
Yuvi Panda a123586f15
Merge pull request #1227 from manics/quickfix-docker-build
Quick-fix for Docker image build
2023-01-02 11:15:34 -08:00
Simon Li e498f1df47 Update tests/external/reproductions.repos.yaml 2023-01-02 16:03:40 +00:00
Simon Li 0fffbf8873 Revert "mount wheels from build stage instead of copying them"
This reverts commit ed82b83eba.
2023-01-01 11:32:50 +00:00
Erik Sundell fabf178d0b
Merge pull request #1223 from jupyterhub/dependabot/github_actions/pypa/gh-action-pypi-publish-1.6.4
build(deps): bump pypa/gh-action-pypi-publish from 1.5.1 to 1.6.4
2022-12-20 11:17:47 +01:00
Erik Sundell fb6a2d5297
Merge pull request #1222 from jupyterhub/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2022-12-20 10:19:17 +01:00
Erik Sundell ec6f28408b pre-commit.ci: update monthly 2022-12-20 10:17:04 +01:00
pre-commit-ci[bot] aa07af045c
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/asottile/pyupgrade: v3.2.2 → v3.3.1](https://github.com/asottile/pyupgrade/compare/v3.2.2...v3.3.1)
- [github.com/psf/black: 22.10.0 → 22.12.0](https://github.com/psf/black/compare/22.10.0...22.12.0)
- [github.com/pycqa/isort: 5.10.1 → v5.11.3](https://github.com/pycqa/isort/compare/5.10.1...v5.11.3)
2022-12-20 01:20:51 +00:00
Simon Li 364bf2eae3
Merge pull request #1224 from fkohrt/patch-2
Fix typo
2022-12-15 17:53:43 +00:00
Florian Kohrt b72fde0732
Fix typo 2022-12-15 18:34:06 +01:00
pre-commit-ci[bot] e956501d67 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2022-12-13 10:32:43 +00:00
Chris Holdgraf 4a5ff3c37e
Add note on reproducibility 2022-12-13 11:32:00 +01:00
pre-commit-ci[bot] 4eaf096bf9 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2022-12-13 09:50:17 +00:00
Chris Holdgraf 5e75258f2f
Document base image 2022-12-13 10:50:03 +01:00
Yuvi Panda 2b17eca207
Merge pull request #6 from kardasbart/feat/new-base
Tests fix
2022-12-12 09:43:46 -08:00
dependabot[bot] dc337e9e36
build(deps): bump pypa/gh-action-pypi-publish from 1.5.1 to 1.6.4
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.5.1 to 1.6.4.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.5.1...v1.6.4)

---
updated-dependencies:
- dependency-name: pypa/gh-action-pypi-publish
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-12 05:10:38 +00:00
Bartosz Kardas 0b9154ae2b Updated master/main branches error info 2022-12-12 00:04:09 +01:00
Bartosz Kardas b85df8f993 Refactored R command 2022-12-11 23:38:27 +01:00
Bartosz Kardas 52e80769b0 Renamed branch to main 2022-12-11 23:26:24 +01:00
Bartosz Kardas 21ad4cac54 Bump linux alpine to 3.17 due to setuptools bug 2022-12-11 23:04:03 +01:00
Bartosz Kardas 76731c885b Added setuptools 2022-12-11 22:08:18 +01:00
Bartosz Kardas c3d257519b Fixd shell command for buildpacks/r 2022-12-11 22:00:41 +01:00
Bartosz Kardas 8a359f9c00 Readded setuptools 2022-12-11 01:34:05 +01:00
YuviPanda aae6a71621 Try using py3-pip when installing in Alpine
Seems to be perhaps different than py-pip
2022-12-10 13:29:44 -08:00
YuviPanda 90c375c5f7 Add setuptools to built image
hg-evolve seems to need it, as otherwise it is failing
with:

16 4.520   Downloading hg-evolve-10.5.3.tar.gz (847 kB)
2022-12-10 13:24:09 -08:00
Bartosz Kardas 389334a4a3 Added missing base_image argument 2022-12-10 13:18:16 -08:00
YuviPanda 4d83abc2df Add note about what base images are supported 2022-12-10 13:18:16 -08:00
Yuvi Panda f776d8efcb Use full image tag
Fixes #1146

Co-authored-by: Simon Li <orpheus+devel@gmail.com>
2022-12-10 13:17:49 -08:00
Yuvi Panda c21374d305 Fix typo
Co-authored-by: Simon Li <orpheus+devel@gmail.com>
2022-12-10 13:17:49 -08:00
YuviPanda 7eb143eab0 Set base_image in a few more places 2022-12-10 13:17:49 -08:00
YuviPanda b58fd1508d Fix rspm test for VERSION_CODENAME 2022-12-10 13:17:49 -08:00
YuviPanda 9ff14c1907 Remove accidental import vscode inserted 2022-12-10 13:17:49 -08:00
YuviPanda 446e67820e Add test fixture for setting base image 2022-12-10 13:17:48 -08:00
YuviPanda f35a948e75 Set base image for default buildpack too 2022-12-10 13:17:16 -08:00
YuviPanda 20b0815257 Make base_image configurable
Fixes https://github.com/jupyterhub/repo2docker/issues/487
2022-12-10 13:17:16 -08:00
YuviPanda 8086937445 Don't hardcode ubuntu codename when getting r packages 2022-12-10 13:17:12 -08:00
YuviPanda b724c02c6a Switch RSPM to use focal, not bionic 2022-12-10 13:15:16 -08:00
YuviPanda 592ccb7596 Set ubuntu 20.04 as new base image
We would at some point need to set this as the default.
To prepare for that, I think we should make this an option
that is available, and run our tests on this too.

The R stack seems possibly currently unavailable for 20.04
(see https://community.rstudio.com/t/rstudio-server-ubuntu-20-04/64188)
but I'll try it out
2022-12-10 13:15:07 -08:00
YuviPanda 5058eca99f Fix a couple of failing tests 2022-11-18 15:07:57 -08:00
YuviPanda ad5ecaa865 Switch default python to 3.10
3.7 is *quite* old, and folks get caught up in it because
it also sometimes forces much older versions of packages - and
it can be quite confusing to debug (see
https://github.com/2i2c-org/infrastructure/issues/1934)
for example.
2022-11-18 14:36:05 -08:00
Min RK ab4c4f2a19
Merge pull request #1217 from jupyterhub/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2022-11-17 13:09:03 +01:00
pre-commit-ci[bot] 485a8ad097
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/asottile/pyupgrade: v3.2.0 → v3.2.2](https://github.com/asottile/pyupgrade/compare/v3.2.0...v3.2.2)
- [github.com/pre-commit/mirrors-prettier: v2.7.1 → v3.0.0-alpha.4](https://github.com/pre-commit/mirrors-prettier/compare/v2.7.1...v3.0.0-alpha.4)
2022-11-15 00:13:39 +00:00
Yuvi Panda d8942c47fa
Merge pull request #1218 from consideRatio/pr/test-cleanup
ci: cleanup no longer used test logic related to memlimit
2022-11-10 23:43:30 -08:00
Erik Sundell 98aceac76d tests: cleanup legacy logic
These files are no longer used as of repo2docker PR 912
2022-11-11 07:55:45 +01:00
Erik Sundell e6a66316ab ci: update outdated comment in node test 2022-11-11 07:55:12 +01:00
Erik Sundell 9be3ac697c
Merge pull request #1216 from frankier/julia-binder-dir-project-toml
Create Julia projects based on binder/Project.toml when found
2022-11-09 17:40:10 +01:00
Erik Sundell 37ce79a5d4
Merge pull request #1211 from minrk/cli-defaults
reconcile CLI/config priority
2022-11-09 17:26:00 +01:00
Erik Sundell 430565faf7 ci: coalesce tests to avoid increasing test durations 2022-11-09 17:13:12 +01:00
Min RK 31e9722c82
add --clean
for consistency with other both-ways boolean flags
2022-11-09 16:31:20 +01:00
Min RK 8802ca2a30
update test expectations of log messages 2022-11-08 16:28:01 +01:00
Min RK d5f291bec1
move cleanup_checkout / local repo, dry_run/push/run relationships to app
so app behaves more consistently when run without cli
2022-11-08 16:27:45 +01:00
Min RK 2a9dab13f8
test some cli > config > defaults priority
not full coverage, but covers some important cases
2022-11-08 16:01:31 +01:00
Min RK 98724fb255
handle more options from config
- warn if repo is specified in config, because it doesn't make sense and will be ignored
- only override config for ref/image/run/build if specified on the cli

requires both-directions config for run and build, to handle the default being inverted in a config file
2022-11-08 15:40:23 +01:00
Min RK b841dea4ac
reconcile CLI/config priority
- avoid CLI defaults clobbering values from config.
  Mostly by using `default=None`, and adding `if args.name is not None` checks
  before assigning attributes
2022-11-08 15:25:27 +01:00
Frankie Robertson e99a106171 Add test for Julia project.toml in binder subdirectory 2022-11-08 15:13:39 +02:00
Frankie Robertson 61b76f622d Create Julia projects based on binder/Project.toml when found 2022-11-08 14:48:47 +02:00
Simon Li b4fee8e3a7
Merge pull request #1213 from SylvainCorlay/upgrade-mamba
Upgrade to mamba 1.0
2022-11-03 08:54:06 +00:00
Sylvain Corlay 3e5a64f82f Upgrade to mamba 1.0 2022-11-03 00:50:34 +01:00
Simon Li ecd7c5d1c0
Merge pull request #1212 from consideRatio/pr/update-to-alpine3.16
docker image: update alpine to 3.16
2022-11-02 18:07:15 +00:00
Erik Sundell ff586d0e10 docker image: update alpine to 3.16 2022-11-02 16:42:29 +01:00
Yuvi Panda b6098c02f3
Merge pull request #1202 from consideRatio/pr/enable-pyupgrade
pre-commit: add pyupgrade, isort, and prettier for .md files
2022-11-01 07:39:14 -07:00
pre-commit-ci[bot] ae3aeb6dc5 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2022-10-31 22:40:52 +00:00
Erik Sundell 94bd21e16e pre-commit: enable prettier for markdown 2022-10-31 23:40:34 +01:00
pre-commit-ci[bot] 27c2b403db [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2022-10-31 22:32:14 +00:00
Erik Sundell 1926795c8c pre-commit: enable isort 2022-10-31 23:29:57 +01:00
Erik Sundell 15a1fb6e2d refactor: manually add transitions to f-strings 2022-10-31 21:22:32 +01:00
pre-commit-ci[bot] 5a93542321 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2022-10-31 21:22:32 +01:00
Erik Sundell ce44f98c9a pre-commit: enable pyupgrade 2022-10-31 21:22:32 +01:00
Erik Sundell eab0b50fc4
Merge pull request #1209 from consideRatio/pr/fix-codecov-deprecation
ci: use non-deprecated codecov uploader
2022-10-31 20:17:40 +01:00
Erik Sundell 89f2b61db6 ci: use non-deprecated codecov uploader 2022-10-31 19:26:55 +01:00
Erik Sundell 3d05b32dee
Merge pull request #1126 from minrk/test-tmp
Add check-tmp step to local repo tests
2022-10-31 17:41:44 +01:00
Min RK e7c93b0fc8
update pipenv to 2022.1.8
pipenv 2018 doesn't actually clear its cache when asked to

2021.5.29 is the last to support 2.7, 3.5
2022-10-31 15:23:35 +01:00
Min RK 757799516d
ensure some cache files are cleaned up 2022-10-31 15:23:35 +01:00
Min RK bd02e2e997
run check-tmp as root
- avoids permission errors
- lets us check /root/ where we've left files in the past
2022-10-31 15:22:56 +01:00
Min RK 6b0291551d
Make sure we delete /tmp/shiny.deb
revealed by check-tmp
2022-10-31 15:22:55 +01:00
Min RK 2da784ca21
check-tmp needs to run on Python 3.5 2022-10-31 15:22:55 +01:00
Min RK 38f5aceb45
Add check-tmp step to local repo tests
- check-tmp checks disk usage in a collection of directories,
  and fails if they exceed a certain size, reporting on contents
- re-use images and skip build stage in verify/check-tmp tests.
  Should save some time,
  even though the build cache would have been used.
  This way, we don't even check.
2022-10-31 15:22:52 +01:00
Min RK f6ecb28e5e
Merge pull request #1208 from consideRatio/pr/fix-pipfile-clear
pipfile: pass --clear flag, and do it separetely to not be ignored
2022-10-31 15:21:22 +01:00
Erik Sundell 9a80e95600 pipfile: pass --clear flag, and do it separetely to not be ignored
Maybe --clear flag works as part of `pipenv install` now, but code
inspection indicates to me it still don't. This resolves the issue with
the pipenv versions we currently use in tests at least.
2022-10-31 14:54:54 +01:00
Erik Sundell 442951d010
Merge pull request #1200 from consideRatio/pr/rely-on-pre-commit.ci
ci: stop running pre-commit in gha, rely on pre-commit.ci
2022-10-31 14:23:41 +01:00
Erik Sundell ea1fbcd440 ci: stop populating pip cache in a pre-requisite test job 2022-10-31 13:59:58 +01:00
Erik Sundell 8a28264b97 ci: stop running pre-commit in gha, rely on pre-commit.ci 2022-10-31 13:54:34 +01:00
Erik Sundell 4a5b8541e7
Merge pull request #1199 from consideRatio/pr/switch-to-build-package
Create wheels with the build package, stop calling setup.py directly
2022-10-31 13:50:23 +01:00
Erik Sundell f3284bfcd1
Apply suggestions from code review 2022-10-31 13:48:33 +01:00
Erik Sundell 224633af93 ci: upload built wheels as an artifact for ease of inspection 2022-10-31 13:37:48 +01:00
Erik Sundell 55a9cd81f8 Create wheels with the build package 2022-10-31 13:37:48 +01:00
Erik Sundell 84408ef12b
Merge pull request #976 from bollwyvl/add-target-repo-dir-perms
Allow REPO_DIR to be a non-existing folder by creating it and providing the user with permissions
2022-10-31 13:09:44 +01:00
Erik Sundell 2f13af8a29 Apply suggestions from code review 2022-10-31 13:09:17 +01:00
Nicholas Bollweg 23e195f363 add path check in conda/repo-dir, more docs in conftest.py 2022-10-31 13:09:17 +01:00
Nicholas Bollweg df733fc81b normalize ENV syntax, combine more layers 2022-10-31 13:09:17 +01:00
Nicholas Bollweg 803a1c223b ensure existence/permissions on custom target dir, if doesn't exist, repo copy slash 2022-10-31 13:09:17 +01:00
Erik Sundell be7fc8a11a
Merge pull request #918 from minrk/allow-one-port
allow user to specify a single port with default command
2022-10-31 12:58:00 +01:00
Erik Sundell b3234b54f0 Refactor to f-strings to comply with pyupgrade 2022-10-31 12:57:23 +01:00
Min RK b314ba90cd test new port argument possibilities 2022-10-31 12:57:23 +01:00
Min RK 6826d72aa2 allow user to specify a single port with default command
Allows specifying `-p9999` or `-p5555:9999` without also needing to override the default command

app retrieves port arguments from length-1 port mapping for default command,
instead of requiring random port OR overriding the whole command
2022-10-31 12:57:23 +01:00
Erik Sundell 0f5ee7049a
Merge pull request #1197 from consideRatio/pr/docs-refresh
docs: add devenv, linkcheck, and refresh misc config etc
2022-10-31 12:33:45 +01:00
pre-commit-ci[bot] 5f5e3bbbb4 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2022-10-31 08:56:58 +00:00
Erik Sundell 2dba862d5b
Apply suggestions from code review
Co-authored-by: Simon Li <orpheus+devel@gmail.com>
2022-10-25 19:43:20 +02:00
Erik Sundell 59a9663fbd docs: fix link warnings 2022-10-24 15:11:02 +02:00
Erik Sundell 7ffeae734a docs: add copybutton, opengraph, rediraffe 2022-10-24 15:11:02 +02:00
Erik Sundell 7ea7454049 docs: update conf.py 2022-10-24 15:11:02 +02:00
Erik Sundell 8b9b05b32c docs: update readthedocs config 2022-10-24 15:11:02 +02:00
Erik Sundell 85919afa99 docs: update and relax pinned requirements 2022-10-24 15:11:02 +02:00
Erik Sundell 9559cf2517 docs: add devenv and linkcheck 2022-10-24 15:11:02 +02:00
Erik Sundell b4a1b50984 Update .gitignore 2022-10-24 15:11:02 +02:00
Erik Sundell 0b53691786 refactor: rename docs/doc-requirements.txt to docs/requirements.txt 2022-10-24 15:11:02 +02:00
Erik Sundell 68a0331ea2
Merge pull request #1204 from minrk/submodule-https
run submodule test over https
2022-10-24 15:06:35 +02:00
Min RK e9ad8fdb41
run submodule test over https
avoids assertion with file-based submodules
2022-10-24 14:30:08 +02:00
Simon Li e0d5b9bb63
Merge pull request #1194 from manics/release-2022.10.0
Initial changelog for 2022.10.0
2022-10-18 19:55:02 +01:00
Simon Li d4567417ea
Add #1188 to changelog 2022-10-18 18:48:52 +01:00
Yuvi Panda 380f8177d0
Merge pull request #1188 from consideRatio/pr/ci-speedup
ci: refactor julia/r/conda tests - now ~25 min instead of ~50 min
2022-10-17 22:09:35 -07:00
Erik Sundell 1e4bc50a77 refactor readme files: in julia tests 2022-10-16 11:04:10 +02:00
Erik Sundell af076ca7de refactor readme files: in r tests 2022-10-16 11:03:48 +02:00
Erik Sundell 3ea45d1258 refactor readme files: in conda tests 2022-10-16 11:03:24 +02:00
Erik Sundell 6e89647dbc docs: a DESCRIBE file doesn't require a runtime.txt file 2022-10-16 11:02:03 +02:00
Erik Sundell 42bb1b384a ci: adjust to and rename extra-args.yaml to test-extra-args.yaml
I misunderstood extra-args.yaml to be a file that was recognized by
repo2docker's CLI, but in reality it was just a file recognized by the
repo2docker test suite. Following that, I renamed this testing specific
file to test-extra-args.yaml to help others avoid making that mistake
and added comments to clarify that.

This commit also gathers the conda buildpacks separate readme files into
a single readme file.
2022-10-15 15:42:35 +02:00
Simon Li 6acab5d1f9 Initial changelog for 2022.10.0 2022-10-14 20:29:22 +01:00
Simon Li d7be04efb5
Merge pull request #1193 from jtpio/update-deps
[MRG] Update Jupyter dependencies
2022-10-14 12:27:54 +01:00
Jeremy Tuloup f572c3a9de Update Jupyter dependencies 2022-10-13 14:43:36 +00:00
Erik Sundell a6af244605 ci: refactor julia tests, from 5 to 4 (~5 min saved) 2022-10-10 11:15:56 +02:00
Erik Sundell f1b1339507 ci: refactor conda tests, from 6 to 5 (~5 min saved)
With this commit, we combine testing the default python version
installation into the default R version installation test.
2022-10-10 09:15:17 +02:00
Erik Sundell f69d65feb9 ci: refactor conda tests, from 11 to 6 (~20 min saved) 2022-10-10 09:15:17 +02:00
Erik Sundell 2c0b14c7da ci: refactor r tests, from 8 to 5 (~15 min saved) 2022-10-10 09:15:17 +02:00
Erik Sundell f8d0efe490 ci: delete julia/julialegacy_version-[1|1.1] tests (~10 min saved) 2022-10-10 09:15:17 +02:00
Erik Sundell 5ffbe65bec ci: delete conda/channel-dep test of a mamba 0.6+ feature (~5 min saved) 2022-10-10 09:15:17 +02:00
Erik Sundell 87dd7e1283 ci: delete conda/r4.0 test, where r3.6 and r4.2 remains (~5 min saved) 2022-10-10 09:15:17 +02:00
Erik Sundell b18adce53f ci: test conda/py310 instead of conda/py38 2022-10-10 09:15:17 +02:00
Erik Sundell 3034a09a91 ci: test conda/r4.2 instead of conda/r4.1 2022-10-10 09:15:17 +02:00
Yuvi Panda 27fbab66c0
Merge pull request #1191 from consideRatio/pr/unpin-r-irkernel
Remove conda buildpacks pin of r-irkernel to 1.2
2022-10-09 21:41:55 -07:00
Erik Sundell 4540bf1cc9 Remove conda buildpacks pin of r-irkernel to 1.2
If r-base is pinned, r-irkernel will resolve to a version that is
compatible with it. But if we pin r-irkernel and not r-base, the
opposite will happen and we will end up with an older version of r-base
than is supported by r-irkernel's modern versions.

I find debugging how versions resolve with conda is really tricky, so
unless we have clear principles of what the pin should be and why, I
strongly advocate we don't have it pinned here.

In this case, having r-irkernel pinned to 1.2 caused us to get stuck at
R version 4.1 instead of going to R 4.2 that is now available.
2022-10-10 01:56:16 +02:00
Erik Sundell c981b3baa7
Merge pull request #1186 from consideRatio/pr/ci-refresh
ci: general refresh of github workflows, update gha versions and let dependabot do it, etc.
2022-10-09 13:12:09 +02:00
Erik Sundell 11f2d2dc02 ci: fix typo 2022-10-09 12:58:39 +02:00
Erik Sundell f62d4e0f58 ci: simplify logic to run codecov like in jupyterhub 2022-10-09 12:58:39 +02:00
Erik Sundell d29af17b2e ci: rely on setuptools/pip already installed in github environment 2022-10-09 12:58:39 +02:00
Erik Sundell 55f4663329 ci: add color to pytest 2022-10-09 12:58:39 +02:00
Erik Sundell b927ebdf13 ci: add codecov to dev-requirements.txt 2022-10-09 12:58:39 +02:00
Erik Sundell f65776b2f3 refactor: sort dev-requirements 2022-10-09 12:58:39 +02:00
Erik Sundell f3b0e18c0b ci: fix pip cache issue caused by mixing python versions 2022-10-09 12:58:39 +02:00
Erik Sundell 77c8ef4adb ci: update to run test from python 3.9 2022-10-09 12:58:39 +02:00
Erik Sundell de4b71ea37 ci: update to ubuntu 22.04 runners 2022-10-09 12:58:39 +02:00
Erik Sundell e31e33544a ci: add dependabot for gha version bumping 2022-10-09 12:58:39 +02:00
Erik Sundell 313d495f32 ci: trim away some comments now common knowledge 2022-10-09 12:58:39 +02:00
Erik Sundell 67f77f028c ci: ensure pip cache is reliable and robust
Previously we had cache keys that could cause issues if the python
version changed etc, and if we re-run something weekly we couldn't say
if we used a new or old version because the cache.
2022-10-09 12:58:39 +02:00
Erik Sundell a568c3b8e4 ci: update comments in pre-commit to look like most projects 2022-10-09 12:58:39 +02:00
Erik Sundell d1a4f43b08 ci: update github actions 2022-10-09 12:58:39 +02:00
Erik Sundell 2cc0ea6a16 ci: tune workflow triggers 2022-10-09 12:58:39 +02:00
Erik Sundell b3de499659
Merge pull request #1165 from yuvipanda/bump
Bump default R version to 4.2 from 4.1, and let R 3.4 go from 3.4.0 to 3.4.4
2022-10-09 10:06:36 +02:00
Erik Sundell 7e517cfb0a Update R 3.4 from 3.4.0 to 3.4.4 2022-10-08 14:07:00 +02:00
Erik Sundell fc08ee1c58 Update R 4.2 from 4.2.0 to 4.2.1 and fix tests 2022-10-08 14:06:29 +02:00
Erik Sundell bdec455ec3
Merge pull request #1185 from manics/r2dstate-enum
Use enum to standardise `phase`
2022-10-08 13:02:21 +02:00
Simon Li 1735925116 Use enum to standardise `phase` 2022-10-03 22:49:22 +01:00
Tim Head 0345a86143
Merge pull request #1184 from minrk/unsupported-python 2022-09-08 08:54:36 +02:00
Min RK 1841bf7130
fail on unsupported Python
rather than warning (which users won't see) and building with the wrong version of Python
2022-09-06 10:22:27 +02:00
Yuvi Panda 7580a30314
Merge pull request #1182 from minrk/mount-wheels
mount wheels from build stage instead of copying them
2022-09-02 14:42:32 -07:00
Min RK ed82b83eba
mount wheels from build stage instead of copying them
avoids extra layer of unused wheel files

use mounted pip cache instead of disabling cache - all the benefits of no cache (size), and all the benefits of cache (local rebuild time)
2022-09-02 14:08:13 +02:00
Simon Li 0f52247b93
Merge pull request #1177 from minrk/logs
consistent log handling when not using JSON loggers
2022-08-24 14:37:02 +01:00
Min RK 996beea228
missing f in the f-string
Co-authored-by: Simon Li <orpheus+devel@gmail.com>
2022-08-24 13:06:42 +02:00
Simon Li c5246cd963
Merge pull request #1175 from minrk/3.10
add Python 3.10 base environment
2022-08-23 23:47:54 +01:00
Simon Li 2d9c31ac19
Merge pull request #1176 from minrk/docker-platform
explicitly build linux/amd64 images
2022-08-23 23:39:57 +01:00
Min RK a8735e9c07
Merge pull request #1178 from minrk/ignore-installed
get CI working again
2022-08-23 13:15:16 +02:00
Min RK 0693fae442
install latest mercurial for tests 2022-08-22 15:36:23 +02:00
Min RK a74369c5c7
update ubuntu runner to 20.04
ubuntu:18.04 runner is shutting down
2022-08-22 15:27:53 +02:00
Min RK 88acca0e8a
avoid re-resolving dependencies in Dockerfile
dependencies are resolved during `pip wheel` in the build stage

avoids errors about removing the apk-installed python-packaging
2022-08-22 15:23:53 +02:00
Min RK 8bf808bd4c
consistent log handling when not using JSON loggers
our logger was never being quite hooked up when not using JSON loggers,
meaning that log messages (such as those fixed here to include newlines) were never shown.
2022-08-22 15:16:40 +02:00
Min RK 2af4d3d46b
explicitly build linux/amd64 images
our base-env setup assumes amd64, so avoid platform issues on e.g. ARM
2022-08-22 15:12:53 +02:00
Min RK cac960d10d
add Python 3.10 base environment 2022-08-22 15:09:02 +02:00
Simon Li d415115b66
Merge pull request #1172 from yuvipanda/bump-nodejs
Bump version of nodejs
2022-08-02 21:04:22 +01:00
YuviPanda d695b3dcdf Bump npm version too 2022-08-01 19:51:31 -07:00
YuviPanda be39a1a3f2 Bump up test for nodejs version 2022-08-01 19:51:31 -07:00
YuviPanda d6f5c95e52 bump lock files 2022-08-01 19:51:31 -07:00
YuviPanda 5738d4161c Bump version of nodejs
16 is also an LTS, and is the current active LTS.

Triggered by code-server package needing a newer version of nodejs!
2022-08-01 19:51:31 -07:00
Yuvi Panda e725b079da
Merge pull request #1173 from manics/freezepy-update
Freeze.py update
2022-08-01 16:58:52 -07:00
Yuvi Panda 42bb1a0383
Merge pull request #1171 from SylvainCorlay/update-mamba
Update mamba
2022-08-01 16:48:25 -07:00
Simon Li 7eff2e6c6c freeze.py: Remove `3.6`
The 3.6 lockfile was removed in https://github.com/jupyterhub/repo2docker/pull/1149 but freeze.py wasn't updated
2022-08-02 00:04:53 +01:00
Simon Li 671636b9f1 `freeze.py`: needs `--kind=explicit`
See https://github.com/conda-incubator/conda-lock#pre-10-compatible-usage-explicit-per-platform-locks
2022-08-02 00:04:11 +01:00
Sylvain Corlay 8a4c48e88f Update mamba 2022-08-01 23:03:15 +02:00
Min RK 18512fe6d9
Merge pull request #1169 from yuvipanda/zenodo-sandbox
Support pulling from zenodo sandbox too
2022-08-01 09:40:12 +02:00
YuviPanda b97db1066d Fix indexes in tests that look for staging zenodo 2022-07-28 10:02:10 -07:00
YuviPanda ffdf544ee4 Support pulling from zenodo sandbox too
Test uploads should go to the sandbox, rather than to
main zenodo. The installation is exactly the same.
2022-07-27 17:40:14 -07:00
Yuvi Panda 484b29b6c4
Merge pull request #1167 from MPDL/MPDL_Dataverse
Add MPDL Dataverse
2022-07-27 17:35:17 -07:00
wilhelmfrank d97e32b433 Add MPDL Dataverse 2022-07-20 08:48:17 +02:00
Yuvi Panda 5b688f48a1
Merge pull request #1166 from consideRatio/pr/use-jupyterhub-bot-accounts-pypi-token
ci: switch to using a 2fa enabled accounts pypi api-token
2022-07-08 11:52:29 -07:00
Erik Sundell b1bcbc0f99 ci: switch to using a 2fa enabled accounts pypi api-token 2022-07-08 19:51:17 +02:00
YuviPanda 0b76608208 Bump default R version to 4.2
Been out for a bit now
2022-07-06 16:39:15 -07:00
Erik Sundell ae8ed290b9
Merge pull request #1161 from yuvipanda/another-r
Get R from RStudio provided apt packages (.deb files)
2022-07-01 07:27:19 +02:00
Yuvi Panda 57a95a3614
Merge pull request #1163 from foobarbecue/patch-1
Add JPL Dataverse
2022-06-30 16:09:28 -07:00
Aaron Curtis cae431d115
Add JPL Dataverse
NASA's Jet Propulsion Laboratory recently implemented a dataverse installation and would like to be able to use it with repo2docker / binderhub
2022-06-28 17:56:55 -07:00
YuviPanda 8af47e9985 Add comment about how r_version is determined 2022-06-23 12:34:48 -07:00
YuviPanda 28035d6426 Make sure our default R version is valid semver 2022-06-23 09:14:34 -07:00
YuviPanda e51eae9287 Don't specify older patchlevel as default R 2022-06-23 03:23:47 -07:00
Yuvi Panda a098f95dc4
Point to a tagged version of rstudio
Co-authored-by: Simon Li <orpheus+devel@gmail.com>
2022-06-22 23:37:42 -07:00
YuviPanda 8ed4c96a8e Put simple test date back to where it was
Let's remove unnecessary changes
2022-06-22 16:20:58 -07:00
Yuvi Panda 232dddac50
Fix typo
Co-authored-by: Simon Li <orpheus+devel@gmail.com>
2022-06-22 13:40:04 -07:00
YuviPanda dfa23f6306 Set custom env vars required for RStudio to work 2022-06-22 08:49:28 -07:00
YuviPanda 9d89d6bd69 Use . instead of source
As Dockerfile executes with /bin/sh, not /bin/bash
2022-06-22 08:49:28 -07:00
YuviPanda a9443f04fe Don't hardcode Ubuntu version when fetching R
This allows us to dynamically change the base image
without having to manually change the version string here
2022-06-22 08:49:28 -07:00
YuviPanda 2819a6d1b4 Upgrade simple to a newer r snapshot
2020 had an older version of testthat that ran into issues

> # Error in get(genname, envir = envir) : object 'testthat_print' not found
2022-06-22 08:49:28 -07:00
YuviPanda 9fa096d0f6 Don't specify distro specific build number 2022-06-22 08:49:28 -07:00
YuviPanda def4009a6b Remove another unneeded R unit test
We want users to be able to install new versions of R
as soon as they are out, without us having to do anything
special in repo2docker. So we can't actually check for 'invalid'
R versions. This is ok, as we don't have to special case apt repos
or similar when installing R from rstudio's debs
2022-06-22 08:49:28 -07:00
YuviPanda 9c335a5e9e Cleanup apt-update files after installation 2022-06-22 08:49:28 -07:00
YuviPanda ba82209e67 Remove tests that checked if specific R packages were installed 2022-06-22 08:49:28 -07:00
YuviPanda c1ce8fd189 Use apt rather than debi to install packages
apt also seems to fetch dependencies when needed
2022-06-22 08:49:28 -07:00
YuviPanda d72ac15037 Set CRAN mirror URL for R 2022-06-22 08:49:28 -07:00
YuviPanda c123d7bf32 Use new path for Renviron 2022-06-22 08:49:28 -07:00
YuviPanda 4ccbdddeb5 Install package with gdebi
It fetches dependencies and installs them too, unlike dpkg
2022-06-22 08:49:28 -07:00
YuviPanda 13250c73d1 Always provide full semver for R version
Other wise our semver package cries
2022-06-22 08:49:28 -07:00
YuviPanda 22167c35f0 Actually install the downloaded deb 2022-06-22 08:49:28 -07:00
YuviPanda 965cb15b99 Get R from RStudio managed apt packages
Might be simpler than getting it from R project managed
apt packages
2022-06-22 08:49:27 -07:00
Yuvi Panda 0f0fca19a0
Merge pull request #1148 from aplamada/upgrade_rstudio_server_to_2022_02_1
[MRG] upgrade RStudio Server to v2022.02.1
2022-06-22 08:36:30 -07:00
Min RK e7524a7b4b
Merge pull request #1156 from CLIP-HPC/fix_server_log
Fix Read-Only filesystem permission issue for log file
2022-06-08 11:15:55 +02:00
Yuvi Panda c4e01b3a8d
Merge pull request #1160 from daradib/shallowhead
[MRG] Shallow clone HEAD
2022-06-03 22:34:49 +05:30
Dara Adib 56bf03811e Add test for shallow clone HEAD 2022-06-02 20:54:43 -04:00
Dara Adib 991c249141 Remove unused sys import 2022-06-02 20:54:43 -04:00
Dara Adib 49d47b855e Shallow clone HEAD
Previously repo2docker only performed shallow clones when refspec
was not provided. We now also perform shallow clones if refspec is
explicitly set to HEAD. Binder always specifies a refspec, often
HEAD, so this should improve some build times.
2022-06-02 20:54:43 -04:00
Ümit Seren 3ee04e34a3 Fix Read-Only filesystem permission issue for log file 2022-05-03 16:05:55 +02:00
Min RK 61247bec16
Merge pull request #1151 from pymonger/handle-logfile-permission-error
handle permission issue writing .jupyter-server-log.txt in REPO_DIR
2022-05-02 09:27:54 +02:00
Min RK 5df775aac6
keep server log name 2022-04-28 13:07:11 +02:00
Gerald Manipon c09d66fea6 better comment 2022-04-24 17:19:24 -07:00
Gerald Manipon e75c664edb fix join() call 2022-04-19 07:57:58 -07:00
Gerald Manipon 304b1430a5 fix insert call 2022-04-19 05:46:20 -07:00
Gerald Manipon 051c9d36a3 iterate through different log locations 2022-04-18 17:24:49 -07:00
Gerald Manipon 723e5b6907 handle permission issue 2022-04-15 13:26:04 -07:00
Min RK 1d218afd38
Merge pull request #1149 from yuvipanda/bumpies
Update base notebook packages
2022-04-13 10:01:47 +02:00
YuviPanda 76aacbf3ab Update py3.6 environment one last time
Updated with previous contents of environment.yml file.
From now on, 3.6 will only get security updates
2022-04-11 12:31:56 -07:00
YuviPanda 5444850bc4 Update base notebook packages
- We should stop auto updating 3.6 now, so we can move on to
  newer notebook packages - a new notebook version ought to fix
  issues like https://github.com/2i2c-org/infrastructure/issues/1170
  for example.
- No longer explicitly pin nbconvert, as whatever version notebook
  brings in should be sufficient.
- Bump up ipywidgets and jupyterlab while we're at it.
- No longer pin jupyterhub-singleuser either, as that too works
  properly with 3.7
2022-04-11 12:31:56 -07:00
Min RK 5f86ef6269
Merge pull request #1147 from yuvipanda/r-doc
Update 'how to get R' section
2022-04-11 13:46:28 +02:00
Min RK ddcb532a56
Merge pull request #1150 from yuvipanda/moblack
Update black version
2022-04-11 13:46:08 +02:00
YuviPanda 672c21ff82 Make black happy 2022-04-08 13:55:06 -07:00
YuviPanda 34a7e33148 Update black version
Fixes error with click causing current CI failures
2022-04-08 13:44:55 -07:00
Andrei Plamada 190f4cfba8 upgrade RStudio Server to v2022.02.1 2022-03-28 10:01:55 +02:00
YuviPanda f5759cbdac Update 'how to get R' section
- Explains https://github.com/jupyterhub/repo2docker/pull/1104
- Advertises that we get RStudio 'for free' when R is installed
2022-03-25 13:16:00 -07:00
Yuvi Panda 66f608e207
Merge pull request #1133 from manics/post-release-fixes
Post release fixes
2022-03-15 00:28:49 -07:00
Simon Li ec993498ab
Merge pull request #1141 from minrk/r-version
handle r version being unspecified in environment.yml
2022-03-06 15:35:02 +00:00
Min RK 5cfd798008 handle r version unspecified in environment.yml 2022-02-25 12:03:40 +01:00
Simon Li d8c1978134
Merge pull request #1135 from yoogottamk/dry-run-build-args
[MRG] Pass build_args to `render()` during `--no-build` for consistency with regular builds
2022-02-14 20:52:59 +00:00
yoogottamk c8d86b9b3d
Pass build_args to `render()` during `--no-build` for consistency with regular builds 2022-02-13 12:50:08 +05:30
Simon Li c83efb0427
Merge pull request #1130 from minrk/bump-python-docker
update Python in some dockerfile tests
2022-02-12 14:58:44 +00:00
Simon Li 46441c0ec4
Merge pull request #1136 from holzman/alpine-3.15
[MRG] Update Dockerfile to current Alpine (ALPINE_VERSION=3.15.0)
2022-02-11 23:35:35 +00:00
Burt Holzman 41f3478331 Update Dockerfile to current Alpine (ALPINE_VERSION=3.15.0)
In order to use podman as a backend for repo2docker (a la https://github.com/manics/repo2podman),
a minimum version of Alpine 3.14 is needed.
2022-02-10 09:44:26 -06:00
Simon Li 5cee982971 Add RELEASE.md
This is just a link to the actual instructions, but RELEASE.md is more or less standard in jupyterhub repos
2022-02-06 15:16:12 +00:00
Simon Li 29e7f56118 fix full changelog link 2022-02-06 15:16:07 +00:00
Simon Li e40242c067
Merge pull request #1113 from manics/release
Update Changelog for release 2022.02.0
2022-02-06 14:12:35 +00:00
Simon Li 753af0ea1c
Last few changelog additions 2022-02-02 17:07:31 +00:00
Min RK 47ea95a743
Merge pull request #1128 from minrk/micromamba-usr-local
put micromamba in /usr/local/bin and use mamba for installs
2022-02-01 09:07:09 +01:00
Min RK 42f83f0af4 use mamba for installs once available
MAMBA_EXE is mamba itself, not micromamba
use variable everywhere, so switching fully to micromamba can happen in once place,
assuming they are fully compatible (they _almost_ are, except for `env update` vs `install` in a couple places)
2022-01-28 21:17:09 +01:00
Min RK 84220028bd put micromamba in /usr/local/bin
instead of tmp, since we want it to stick around.
2022-01-28 15:58:36 +01:00
Min RK f2f8bb666e update Python in dockerfile tests
installing with Python 3.5 is starting to fail
2022-01-28 15:48:55 +01:00
Simon Li 8c21b96401
Merge pull request #1123 from yuvipanda/commandline-args
Allow passing in traitlets via commandline
2022-01-27 16:50:47 +00:00
Min RK b8a2c88501
Merge pull request #1124 from yuvipanda/extra-args
Allow passing in extra args to Docker initialization
2022-01-27 15:49:06 +01:00
Min RK 710d533f75 add `--help-all` support
a bit funky, since we are combining two separate parsers
2022-01-27 14:01:45 +01:00
Min RK 7f89926e51
Merge pull request #1062 from wolfv/micromamba
bootstrap base env with micromamba
2022-01-27 09:42:53 +01:00
Sylvain Corlay 25bc273a17 Remove -f command-line argument 2022-01-27 01:02:12 +01:00
Yuvi Panda cbc7699cd8
Merge pull request #1127 from manics/update-refreeze
Update ipywidgets jupyter-offlinenotebook jupyterlab
2022-01-27 04:30:01 +05:30
Simon Li fd7597c50e Update Changelog for release 2022.01.0 2022-01-26 22:03:36 +00:00
Simon Li a856862ead Update ipywidgets jupyter-offlinenotebook jupyterlab
- ipywidgets==7.6.5
- jupyter-offlinenotebook==0.2.2
- jupyterlab==3.2.8
2022-01-26 18:40:59 +00:00
Yuvi Panda 2c27b09a46
Merge pull request #1122 from minrk/rm-distutils
Remove deprecated calls to distutils
2022-01-26 23:59:23 +05:30
Yuvi Panda a5df995532
Clarify how kwargs is set
Co-authored-by: Min RK <benjaminrk@gmail.com>
2022-01-26 21:32:24 +05:30
Min RK d728a64dd9 get version comparison from semver
since Python is removing version string parsing from the standard library

moves Julia-specific semver utilities to top-level
2022-01-26 15:52:09 +01:00
YuviPanda 3af38557ad Allow passing in extra args to Docker initialization
Puts it in the ContainerEngine interface specific to Docker,
so PodMan can implement its own when necessary.

Fixes https://github.com/jupyterhub/repo2docker/issues/711
2022-01-26 16:16:46 +05:30
YuviPanda 885cb464b6 Allow passing in traitlets via commandline
Without this, you *always* needed a repo2docker_config.py
file to configure anything. This PR makes r2d match the
behavior of most traitlets based applications (like jupyter_server,
jupyterhub, nbconvert, etc)

Fixes https://github.com/jupyterhub/repo2docker/issues/1112
2022-01-26 14:48:11 +05:30
Min RK 8ab5c81245 remove deprecated call to distutils strtobool 2022-01-26 09:56:15 +01:00
Min RK e3d0a9ae8e
Merge pull request #1119 from yuvipanda/delete-tmp
Delete /tmp/downloaded_packages after running install.R
2022-01-26 09:02:27 +01:00
Sylvain Corlay a0f83c012d Re-add call to clean 2022-01-25 23:58:54 +01:00
YuviPanda 6ab41efd4d Delete /tmp/downloaded_packages after running install.R
This can often leave ~100-200MB in /tmp that isn't re-used
after the image is set up.
2022-01-25 21:26:16 +05:30
Simon Li 813d28bfdb
Merge pull request #1115 from minrk/set-user-root
set USER root after each directive block
2022-01-25 14:55:11 +00:00
Min RK 3f07830957
Merge pull request #1118 from yuvipanda/no-ggplot2
Use a smaller R library in our tests
2022-01-25 15:53:33 +01:00
YuviPanda 9066d079d0 Use testthat, rather than tinytest
tinytest doesn't exist in older MRAN snapshots
2022-01-25 19:38:47 +05:30
Min RK 945c45299f set USER root after each directive block
matches expectations in the directive sequences

not strictly required after preassemble because we have no root steps between preassemble and assemble,
so we could remove the `last_user = "root"` there instead

includes regression test
2022-01-25 14:48:37 +01:00
YuviPanda f6737cfff5 Use a smaller R library in our tests
ggplot2 is a big library with a bunch of dependencies,
making our already slow R tests even slower. This PR
switches them to using the tinytest library, which has
no dependencies and is much smaller.
2022-01-25 18:58:58 +05:30
Yuvi Panda bf99b93dae
Merge pull request #1117 from minrk/r-base-core
Only get R itself (r-base-core) from apt, not CRAN packages
2022-01-25 18:39:45 +05:30
Min RK ad0034cb2f note why --no-install-recommends is important for r packages 2022-01-25 13:29:15 +01:00
Min RK 19acf46392 remove r-recommended package
r-recommended is a collection of common CRAN packages,
which cause conflicts when trying to install older R.

These same packages can be regular dependencies retrieved from CRAN.
2022-01-25 11:38:35 +01:00
Sylvain Corlay 65a36cc3f7 PR review comments: update micromamba, use MAMBA_EXE environment variable 2022-01-21 13:16:33 +01:00
Sylvain Corlay 374efff3dc Fix CI by calling shell init 2022-01-21 11:21:00 +01:00
Sylvain Corlay 5f82b2c8b0 Update micromamba installation 2022-01-21 11:21:00 +01:00
Wolf Vollprecht 7d4ac3b960 Use micromamba 0.17 and install conda & mamba into base env 2022-01-21 11:21:00 +01:00
Wolf Vollprecht e12ffc4a99 use mamba with fixed zstd linkage 2022-01-21 11:21:00 +01:00
Wolf Vollprecht b6091c9265 use wget better 2022-01-21 11:21:00 +01:00
Wolf Vollprecht c96a230962 try nightly 2022-01-21 11:21:00 +01:00
Wolf Vollprecht 245fc1b939 use 0.16.0 2022-01-21 11:21:00 +01:00
Sylvain Corlay 089f6a87a5 Use micromamba 0.15.2 2022-01-21 11:21:00 +01:00
Wolf Vollprecht 3c2ded30be fix rm targets 2022-01-21 11:21:00 +01:00
Wolf Vollprecht 7c4f2a5b4f fix up urls 2022-01-21 11:21:00 +01:00
Wolf Vollprecht 7ad3c177d2 trigger 2022-01-21 11:21:00 +01:00
Wolf Vollprecht abc1fe98c8 trigger 2022-01-21 11:21:00 +01:00
Madhur Tandon 22d4781809 use strict channel priority 2022-01-21 11:21:00 +01:00
Madhur Tandon 2d27bb2af6 revert back to using install 2022-01-21 11:21:00 +01:00
Madhur Tandon d2a2c070e7 use experimental build of micromamba 2022-01-21 11:21:00 +01:00
Madhur Tandon b08c7dc3b6 use env update instead of install 2022-01-21 11:21:00 +01:00
Madhur Tandon e12c436af2 add MAMBA_EXE environment variable 2022-01-21 11:21:00 +01:00
Madhur Tandon 8926cdc968 minor fixes 2022-01-21 11:21:00 +01:00
Madhur Tandon 9c109f95b4 use latest micromamba and fix MAMBA_ROOT_PREFIX 2022-01-21 11:21:00 +01:00
Madhur Tandon 2e702f0248 rename file and add conda-forge channel to .condarc 2022-01-21 11:21:00 +01:00
Madhur Tandon 3288bca6a4 fix tests + change name of script 2022-01-21 11:21:00 +01:00
Madhur Tandon 6cc7567f2e use micromamba 0.12.2 2022-01-21 11:21:00 +01:00
Madhur Tandon f9388c3200 use latest micromamba 2022-01-21 11:21:00 +01:00
Madhur Tandon 2bfbf44efa adhere to lint 2022-01-21 11:21:00 +01:00
Madhur Tandon f508bf167e replace mamba & conda with micromamba 2022-01-21 11:20:58 +01:00
Simon Li a37a205c0e
Merge pull request #1108 from aplamada/test_R_conda
[MRG] add tests for R conda
2022-01-11 10:39:22 +00:00
Simon Li aa17545a9b
Merge pull request #1111 from yuvipanda/no-ppa
Say 'apt repository' rather than PPA
2022-01-10 19:02:01 +00:00
YuviPanda c04fff30cd Say 'apt repository' rather than PPA
PPA is a specific kind of apt repository, hosted on
launchpad.net. We use https://cran.r-project.org/bin/linux/ubuntu/,
which is just a regular apt repository. The PPA terminology
always confused me, so this just clears that up
2022-01-10 17:43:09 +05:30
Andrei V. Plamada b2b0f758ff
Merge branch 'jupyterhub:main' into test_R_conda 2022-01-08 18:33:59 +01:00
Simon Li 43525352a7
Merge pull request #1107 from yuvipanda/new-r
Bump default R version to 4.1
2022-01-08 14:44:37 +00:00
Simon Li 457f718386
Merge pull request #1104 from yuvipanda/rspm
Get binary R packages from packagemanager.rstudio.com
2022-01-08 14:43:48 +00:00
Andrei Plamada 8a817eba97 add tests for R conda 2022-01-07 13:37:43 +01:00
YuviPanda 7fd9a3d25f Move 3.6.1 back to 3.6.1-3bionic
Was accidentally included along with the 3.6.3-1biocnic
upgrade for 3.6
2022-01-07 11:23:47 +05:30
YuviPanda 3cb3fbf853 Remove unnecessary print() 2022-01-07 11:18:09 +05:30
YuviPanda 05e504a7ce Cleanup some comments 2022-01-07 11:18:02 +05:30
YuviPanda ceb4f8ac4f Hardcode rspm URL as snapshot for IRKernel 2022-01-07 11:17:46 +05:30
YuviPanda e2aefcfbdd Update test to match new default R version 2022-01-05 22:51:27 +05:30
YuviPanda 54636c6ecf Bump default R version to 4.1
3.6 is almost 4 years old now.
2022-01-05 22:32:07 +05:30
YuviPanda dbb5ff7c7d Clarify when mran raises valueerror 2022-01-05 21:35:07 +05:30
YuviPanda 8d194b2d1a Remove unused constants 2022-01-05 18:01:15 +05:30
YuviPanda 7c36566bf2 Fix test for particular version of R 3.6 2022-01-05 01:24:10 +05:30
YuviPanda c398de3d88 Update r 3.6 package version pins
Based on output of apt-cache madison r-base-core
2022-01-05 01:00:47 +05:30
YuviPanda 0b76e9ea44 Always install IRKernel as a binary package
And add another R test for R4.0 + rspm
2022-01-05 00:12:24 +05:30
YuviPanda 5246a0e7c2 Explicitly install r-base-core
Otherwise latest version was being installed, giving us
R 4.1 even when we ask for 4.0
2022-01-04 23:51:15 +05:30
YuviPanda ffbace3b38 Check for MRAN differently 2022-01-04 21:50:36 +05:30
YuviPanda d75c0079ad Test that older r snapshots get MRAN 2022-01-04 19:17:06 +05:30
YuviPanda 3ea55e9205 Fix call to rstudio_base_scripts 2022-01-04 19:01:26 +05:30
YuviPanda 685c8a0544 Satisfy black 2022-01-04 18:34:33 +05:30
YuviPanda fd6314d07d Solidify logic for picking rspm vs mran
- MRAN doesn't seem to have R 4.1 specific snapshots, so let's
  default to RSPM for anything 4.1+.
- Otherwise, snapshot dates in 2022 will result in using rspm
2022-01-04 18:30:39 +05:30
Tim Head d688997aee
Merge pull request #1105 from manics/update-jupyterlab 2022-01-03 17:52:36 +01:00
Tim Head 020160baf0
Merge pull request #1106 from manics/freeze.py--help 2021-12-28 11:50:35 +01:00
Simon Li 62c0de2282 Add help message to freeze.py 2021-12-23 14:45:41 +00:00
Simon Li da20e9f421 refreeze! 2021-12-23 13:57:27 +00:00
Simon Li 006b0179bf Update jupyterlab 3.2.5 jupyter-resource-usage 0.6.1 2021-12-23 13:55:47 +00:00
YuviPanda 054b602b13 Add test for r3.6 2021-12-20 18:24:15 +05:30
YuviPanda bca7d849bd Cleanupg RStudio & Shiny server install
- Install a different version of RStudio for R < 4.1,
  as latest RStudio doesn't seem to support those. And
  newer RStudio isn't supported on these older R versions.
- Cleanup how Shiny is installed - install it with the same
  apt invocation as rstudio (saves time), and install shiny-proxy
  from PyPI instead or GitHub. The release on PyPI is the same
  as our previous GitHub pin.
- Remove outdated comment about different behavior for R 3.6 - I
  think now we get all our R versions from the same apt repo. Plus,
  the conditional was adding more scripts than just adding extra apt
  package repos
2021-12-20 18:09:24 +05:30
YuviPanda 5d173a349d Make black happy 2021-12-17 15:56:00 +05:30
YuviPanda 1ed05b59c6 Install devtools, shiny & irkernel from a pin
We were doing this from an old MRAN snapshot. I moved the pin
a little ahead, so IRKernel can also be installed from CRAN
instead of from GitHub. R <= 4.0 gets the old version, and anything
newer gets a more recent version of devtools. This gives us
fast installs for IRkernel with binary packages.

Also add a R 4.0 and R 4.1 test
2021-12-17 15:52:27 +05:30
YuviPanda 290b008ac5 Fix some code comment references to MRAN 2021-12-17 15:17:44 +05:30
Yuvi Panda 4aa1d154a1
Merge pull request #1100 from TimoRoth/extra_bargs
Add command line option to pass extra build args
2021-12-17 14:52:06 +05:30
YuviPanda 476a25998b Get binary R packages from packagemanager.rstudio.com
packagemanager.rstudio.com is a CRAN mirror provided
by rstudio, with *binary packages* prebuilt for many Linux
Distributions! https://www.rstudio.com/blog/announcing-public-package-manager/
has more excellent detail. It cuts down install times for R packages
by almost 90% in some cases!

Like MRAN (which we use now), they also provide a daily snapshot
of CRAN at that date
(https://docs.rstudio.com/rspm/news/#rstudio-package-manager-2021090).
The URL for CRAN for a particular date can be fetched via an API
call. We call that API, and if there is no snapshot for that date
(anything before Oct 2017), we fall back on to MRAN. Adds a test
to test this fallback.

One possible issue about changing existing binder repos to use binary
builds rather than source builds is that the binary builds sometimes
require you have an apt package installed, and will fail if it is
not. We had to install the zmq library apt package for example -
source installs compile zmq from source, which is where the speedup
comes from. But unlike python wheels or conda packages, these binary
builds are not self-contained - they are linked to apt packages from
the specific distros. So some repos that worked before might fail now.
We can choose a more recent cut-off date to prevent this from happening.
2021-12-17 14:50:46 +05:30
Timo Rothenpieler ad1dea14ba Use str.partition() for --label argument parsing 2021-12-16 13:38:56 +01:00
Timo Rothenpieler 9f4827132f Add command line option to pass extra build args 2021-12-16 13:35:58 +01:00
Tim Head 1146d4fbde
Merge pull request #1103 from yuvipanda/quieter-r 2021-12-16 12:14:33 +01:00
Tim Head 540001edd8
Merge pull request #1102 from yuvipanda/more-r 2021-12-16 12:09:23 +01:00
YuviPanda e5e00bd1bf Clarify what version of R we are testing for 2021-12-16 15:39:28 +05:30
YuviPanda 0ba4c6851d Fix R syntax error 2021-12-16 14:25:07 +05:30
Min RK 4d6dd532ab
Merge pull request #1097 from TimoRoth/docker_build
Set labels when building image from Dockerfile
2021-12-16 09:29:18 +01:00
YuviPanda 2f1fc81dff Quieter R builds
We redirect stdout (not stderr) of apt-get update and install
in most other places (check out base.py) to not clutter the
output
2021-12-16 12:29:27 +05:30
YuviPanda 730e622e3f Support R 4.1 2021-12-16 12:16:52 +05:30
Timo Rothenpieler 86df151414 Add --label command line option 2021-11-24 13:22:33 +01:00
Timo Rothenpieler fa512e76bd Set labels in Dockerfile BuildPack 2021-11-24 13:22:33 +01:00
Timo Rothenpieler cf8f3b9195 Add explicit support for labels build parameter 2021-11-24 13:22:33 +01:00
Min RK 00769c0fb2
Merge pull request #847 from yuvipanda/no-node
Remove nodesource' nodejs
2021-11-23 13:58:38 +01:00
Min RK 7aee21fd05 add nodejs to locked py35 env
updates a bit more than I'd like, but this is the minimum I could find to get node 14 in
2021-11-23 11:43:57 +01:00
Simon Li 3b02cc4702 Run freeze.py 2021-11-19 16:49:45 +00:00
YuviPanda 27399081ff Merge remote-tracking branch 'upstream/main' into no-node 2021-11-19 22:00:10 +05:30
YuviPanda 6db7273423 Revert "Freeze new environment.yaml files"
This just causes a lot of merge conflicts

This reverts commit 6d1dc4a77b.
2021-11-19 21:58:17 +05:30
Simon Li 4da2e1e715
Merge pull request #1092 from minrk/lab-bump
jupyterlab 3.1.17
2021-10-06 09:22:59 +01:00
Min RK 6d37487e0a refreeze with jupyterlab 3.1.17 2021-10-06 09:36:04 +02:00
Min RK 06c23b83a2 bump jupyterlab to 3.1.17 2021-10-06 09:35:52 +02:00
Chris Holdgraf 3eef69f745
Merge pull request #1085 from minrk/lab-ui
update user_interface doc to reflect that lab is default
2021-09-16 12:48:21 -07:00
Min RK f77e6ee916
classic notebook interface
Co-authored-by: Chris Holdgraf <choldgraf@berkeley.edu>
2021-09-16 20:16:41 +02:00
Min RK 0308f79f98 update user_interface doc to reflect that lab is default 2021-09-16 10:35:35 +02:00
Tim Head a07fe38f77
Merge pull request #1082 from choldgraf/docs-dev 2021-09-14 07:53:46 +02:00
Chris Holdgraf d2bdb90786
Update docs/source/contributing/tasks.md
Co-authored-by: Simon Li <orpheus+devel@gmail.com>
2021-09-13 11:28:57 -07:00
Chris Holdgraf b83ebe9920
Update docs/source/contributing/tasks.md
Co-authored-by: Simon Li <orpheus+devel@gmail.com>
2021-09-13 11:28:46 -07:00
Chris Holdgraf 7376dfcd80 Clarify conda package update instructions in dev docs 2021-09-13 09:26:04 -07:00
Chris Holdgraf 1ffb05f02e Recommonmark -> MyST Parser 2021-09-13 09:23:27 -07:00
Simon Li 4f3b0d050f
Merge pull request #1081 from jupyterhub/lab3.1.11
Bump JupyterLab to 3.1.11
2021-09-13 16:16:21 +01:00
Chris Holdgraf ce898da03c Bump environment lock files 2021-09-12 05:44:08 -07:00
Chris Holdgraf d9dbd2b08a Bump JupyterLab to 3.1.11 2021-09-11 17:10:13 -07:00
Min RK 5b5b759a4e
Merge pull request #1035 from SylvainCorlay/default-to-lab-single-document-mode
Default UI to JupyterLab
2021-09-06 14:10:09 +02:00
Sylvain Corlay 92999d64aa Default to JupyterLab 2021-09-06 11:58:58 +02:00
Min RK f1d01b6b67
Merge pull request #1078 from manics/fix-docker-build
Fix Docker build (again)
2021-09-06 11:14:45 +02:00
Min RK 90c0e8958c
Merge pull request #1061 from manics/freeze-no-dependabot
Rename requirements.py-3.5.txt to requirements.py-3.5.pip
2021-09-06 09:19:03 +02:00
Simon Li f7cadcd5f0 Revert "fix: Dockerfile issue regarding six"
This reverts commit f3906be35b.
2021-09-03 17:05:12 +01:00
Yuvi Panda 92a00b2c18
Merge pull request #1072 from jgarte/jgarte-patch-1
Typo fix in utils docstring
2021-09-03 18:35:07 +05:30
Yuvi Panda 6e2a6af959
Merge pull request #1074 from magnush0lm/patch-1
[mrg] __init__.py: r_version: fixed description
2021-08-26 02:09:47 +05:30
Erik Sundell c73321cfda
Merge pull request #1067 from manics/release-2021080
[MRG] Release 2021.08.0
2021-08-24 18:40:50 +02:00
Simon Li 2ea48cbaca Container registry PRs (quay.io) 2021-08-24 17:01:03 +01:00
Erik Sundell aaf5f5d75f
Merge pull request #1075 from manics/github-workflow-docker-push
Update README quay.io URL, Add docker latest tag
2021-08-23 23:23:58 +02:00
Simon Li 57466d5c95 Use static badge for quay.io container 2021-08-23 21:30:20 +01:00
Simon Li 4c89e51d7a Add docker latest tag for tagged releases 2021-08-21 21:02:34 +01:00
Simon Li 9703a12e6d Link to tags page on quay.io 2021-08-21 20:17:09 +01:00
Simon Li b3fb4cccaa
Merge pull request #1071 from manics/github-workflow-docker-push
GitHub workflow build and push to Docker hub
2021-08-21 20:05:38 +01:00
Simon Li 3ce97e207d docker workflow: Ensure $REGISTRY is printed
GITHUB_ENV only takes effect on following actions
2021-08-21 18:01:33 +01:00
Simon Li b209342356 Remove environment requirement from docker publish workflow
This seems to prevent the workflow running in PRs
2021-08-21 17:52:05 +01:00
Simon Li bd58a4a7d4 Add Docker image quay.io to README 2021-08-21 17:50:03 +01:00
Simon Li b45db5acf9 Update release workflow for quay.io jupyterhub/repo2docker 2021-08-21 17:48:45 +01:00
magnush0lm 72ebf8acf1
__init__.py: r_version: fixed description 2021-08-18 23:11:04 +02:00
jgart 2c81b6059b Set default, type, and help method for engine in argparse
Fixes --engine cli option not showing up
2021-08-15 02:24:47 -04:00
jgart 13976264ee
Typo fix utils docstring 2021-08-14 11:37:02 -04:00
Simon Li ca769b373c release.yml workflow name: Publish 2021-08-13 11:09:31 +01:00
Simon Li c6f09ea2e4 Switch to main 2021-08-12 23:17:10 +01:00
Simon Li e6f4966881 Remove arm64 for now 2021-08-12 20:50:31 +01:00
Simon Li 0468715500 Build docker images for amd64 arm64 2021-08-12 20:50:31 +01:00
Simon Li 97ca881a01 Remove automated docker cloud hooks 2021-08-12 20:50:29 +01:00
Simon Li 7fecae7763 changelog #1066 #1068 2021-08-06 20:38:09 +01:00
Erik Sundell 297c7955d2
Merge pull request #1068 from manics/master-main
Rename master branch to main
2021-08-06 14:55:23 +02:00
Yuvi Panda a9b6fbe7b2
Merge pull request #1069 from manics/bump-environment
Bump environment
2021-08-03 09:30:56 +05:30
Simon Li db3ba82e88 refreeze! 2021-08-02 20:29:32 +01:00
Simon Li 805eddd91a jupyterlab==3.1.1 2021-08-02 20:29:03 +01:00
Simon Li 0d20a9f7e2 sphinx conf.py: root_doc 2021-07-28 23:48:58 +01:00
Simon Li 7d682f7576 refreeze! 2021-07-28 23:05:12 +01:00
Simon Li 0c1fdeb15e environment.yml: packages must support py3.6 2021-07-28 23:04:25 +01:00
Simon Li 06ecc5e9ed bump environment.yml
- jupyter-resource-usage==0.6.0
- jupyterlab==3.1.0
- jupyterhub-singleuser==1.4.2
- nbconvert==6.1.0
- notebook==6.4.0
2021-07-28 22:41:20 +01:00
Simon Li efc37c4c5b
Merge pull request #1066 from consideRatio/pr/fix-depdency-issues
Workaround docker-py dependency's failure to import six
2021-07-28 21:46:49 +01:00
Erik Sundell f3906be35b fix: Dockerfile issue regarding six 2021-07-28 14:01:32 +02:00
Erik Sundell d1bbffac30 fix: avoid docker 5.0.0 2021-07-28 13:58:08 +02:00
Simon Li e7f4667aec Attempt to arrange PRs into categories 2021-07-24 12:02:39 +01:00
Simon Li c62ae8076f Remove travis from README (mentions master) 2021-07-24 11:36:13 +01:00
Simon Li afd64f8bf2 Remove remaining `master` from docs 2021-07-24 11:33:21 +01:00
Simon Li 4ab4b17ef7 Regex: https://github.com/(.+)/(.+)/(.+)/master/ ➡️ https://github.com/$1/$2/$3/HEAD/
For `binder-examples/*`, `jupyterlab/jupyterlab-demo`, `norvig/pytudes`
2021-07-24 11:14:36 +01:00
Simon Li f8a16d42ef Regex https://github.com/jupyterhub/(.+)/(.+)/master/ ➡️ https://github.com/jupyterhub/$1/$2/HEAD/ 2021-07-24 11:09:43 +01:00
Simon Li 1541ae6ca9 Changelog for 2021.01.0 2021.03.0 2021.08.0 2021-07-24 10:59:52 +01:00
Erik Sundell 231cf1cb13 fix: workaround docker==5.0.0 not importing its dependencies 2021-07-15 22:22:00 +02:00
Erik Sundell 43891a6f60
Merge pull request #1064 from johnhoman/missing-chardet-dep
fix: add chardet, a not explicitly declared dependency
2021-07-15 22:21:14 +02:00
Jack Homan e783a9aef5 adding missing dependency 2021-07-14 13:18:23 -04:00
Simon Li df65135795
Merge pull request #1016 from minrk/refine-test-env
Refine buffered output debugging
2021-07-09 18:38:14 +01:00
Simon Li 470443cc39 Rename requirements.py-3.5.txt to requirements.py-3.5.pip
This is an attempt to have this file ignored by dependabot since it contains frozen dependencies
2021-07-09 18:23:18 +01:00
Simon Li dc03809fa2
Merge pull request #1024 from minrk/conda-lock
Refreeze with conda-lock
2021-07-09 18:03:19 +01:00
Min RK ab1e33bc4c move docker timestamp-parsing quirk to docker itself
our Container API can be more sensible and symmetrical than docker itself
2021-07-09 10:24:09 +02:00
Min RK 6966847bf9 Expose `timestamps`, `since` args in Container.logs
Behavior is defined as what docker does

needed for avoiding duplicate log statements
2021-07-07 14:03:10 +02:00
Yuvi Panda f07111c4a5
Merge pull request #1043 from akhmerov/patch-1
always unpack a single zenodo zip
2021-07-06 19:40:00 +05:30
Anton Akhmerov 8db656d1ce
always unpack a single zenodo zip 2021-07-06 15:18:42 +02:00
Min RK e9c22422f6 fix side-effect method name and add fixme note 2021-07-06 09:54:09 +02:00
Min RK 164efd31ab reduce redundant output when capturing late logs
it's unclear if late logs ever captures logs not already echoed,
but this at least eliminates the redundant output
2021-07-06 09:45:16 +02:00
Simon Li eb75209019
Merge pull request #1053 from yuvipanda/no-circle
Remove CircleCI docs build
2021-07-04 17:05:36 +01:00
Simon Li cbab82b7ce
Merge pull request #1054 from yuvipanda/no-pipfile
Remove Pipfile & Pipfile.lock
2021-07-04 13:18:03 +01:00
YuviPanda 6d1dc4a77b Freeze new environment.yaml files 2021-07-03 16:58:26 +05:30
YuviPanda e7e4dd9ee3 Remove Pipfile & Pipfile.lock
- Seem unused - definitely not updated.
- I think pipenv has also lost a lot of its popularity
  over the last year or two
- This does not affect the Pipfile *buildpack*, so repos we
  build that have a Pipfile will not see any difference

Fixes https://github.com/jupyterhub/repo2docker/issues/1032
2021-07-03 13:30:03 +05:30
YuviPanda 072d706eb6 Explicitly install nodejs
Earlier, we were depending on it being a dependency
of jupyterlab - I don't think that works anymore.
2021-07-03 09:37:07 +05:30
YuviPanda 54f2e51058 Remove CircleCI docs build
Same as our RTD build, and the previews there are
nicer
2021-07-03 09:28:16 +05:30
Yuvi Panda de7468d78f
Merge pull request #1052 from manics/circleci-doc-fix
Pin doc requirements to avoid CI breakages
2021-07-03 09:27:27 +05:30
Simon Li 2e4140cd6f Pin doc-requirements.txt versions
Hopefully dependabot can take care of them
2021-07-02 22:57:13 +01:00
Simon Li 38e7e7b92e
Merge pull request #1050 from jupyterhub/yuvipanda-patch-1
Stop using deprecated add_stylesheet in sphinx
2021-07-02 22:38:13 +01:00
YuviPanda df92b99cdb Move where npm config is set 2021-07-03 02:09:46 +05:30
YuviPanda ef1497dddf Explicitly specify where npm is
PATH doesn't seem to be set at this point to include
the conda environment we just installed?
2021-07-03 02:09:46 +05:30
YuviPanda cbda2eba2b Move npm config setting to the conda buildpack
Since everything is based off the conda buildpack now,
and that is where we get npm from
2021-07-03 02:09:46 +05:30
YuviPanda 1d53990f34 Remove nodesource' nodejs
We get node from the default JupyterLab install, since that
comes from conda-forge. This was not the case when we started -
we installed JupyterLab with pip. We no longer need the nodesource
node.

All the env vars, etc should still work!
2021-07-03 02:09:46 +05:30
Yuvi Panda 520c7add7d
Merge pull request #848 from manics/abstractengine
[MRG] Define an interface for Container engines
2021-07-02 18:14:26 +05:30
Simon Li d47b74492f Add Container.wait() 2021-07-02 12:43:58 +01:00
Simon Li 5778ed0381 docker.py: remove workaround for old black 2021-07-02 12:43:58 +01:00
Simon Li e32c7b02df describe ContainerEngine volume and port formats 2021-07-02 12:43:58 +01:00
Simon Li 0e7e0f003e Use standard-ish image_inspect format 2021-07-02 12:43:58 +01:00
Simon Li 4ed6685dc9 Fix unit tests 2021-07-02 12:43:58 +01:00
Simon Li 5c2c8f7385 Python 3.5: can't have trailing , in function arg list (again) 2021-07-02 12:43:52 +01:00
Simon Li 52b672a17a Docker: print helpful message if daemon not running 2021-07-02 12:43:18 +01:00
Simon Li 4647dd0702 Container .build .run need to support **kwargs 2021-07-02 12:43:18 +01:00
Simon Li ad5701dd3a Remove unnecessary import 2021-07-02 12:43:18 +01:00
Simon Li 00df21069e ContainerEngine .build .push default to returning strings (stream) 2021-07-02 12:43:18 +01:00
Simon Li 8215f0b065 Remove commented engine.py code 2021-07-02 12:43:18 +01:00
Simon Li 17af0c7293 BuildError only takes positional params 2021-07-02 12:43:18 +01:00
Simon Li 4a06ef19d9 ContainerEngine is now LoggingConfigurable 2021-07-02 12:43:18 +01:00
Simon Li a73595ce4c Require image info in a fixed format 2021-07-02 12:43:18 +01:00
Simon Li 787d1d3aeb Container engine is an entrypoint: repo2docker.engines 2021-07-02 12:43:15 +01:00
Simon Li b6bead74cd Python 3.5: can't have trailing , in function arg list 2021-07-02 12:42:12 +01:00
Simon Li c521c3c950 Remove constant docker args 2021-07-02 12:42:12 +01:00
Simon Li 9ac8a8314c Handle attrs["State"]["ExitCode"] 2021-07-02 12:42:10 +01:00
Simon Li 2864b692ef app: use DockerEngine 2021-07-02 12:39:42 +01:00
Simon Li 0610edfc20 Add docker implementation of abstract engine 2021-07-02 12:39:42 +01:00
Simon Li cf35f51a38 Add abstract interface for container engines 2021-07-02 12:39:42 +01:00
Yuvi Panda 76f55c5a25 Stop using deprecated add_stylesheet in sphinx
add_stylesheet has been deprecated for a while.

This should hopefully fix the CI failures in circleci
2021-06-30 15:31:57 +05:30
Min RK ea90ae23d3
Merge pull request #1051 from yuvipanda/fix-docker
Add build-base to build stage of docker image
2021-06-30 08:40:43 +00:00
Yuvi Panda bbb88aceb8
Merge pull request #1046 from jupyterhub/sgibson91-patch-1
Add study participation notice to readme
2021-06-29 16:41:09 +05:30
YuviPanda b18188d5ed Add build-base to build stage of docker image
ruamel.yaml depends on ruamel.yaml.clib, which requires
compilation on alpine. It did not seem to require the
packages in build-base before, but it does now.
2021-06-29 15:29:32 +05:30
Yuvi Panda bf35a5cfc2
Merge pull request #1045 from jupyterhub/dependabot/pip/urllib3-1.26.5
Bump urllib3 from 1.26.4 to 1.26.5
2021-06-29 15:15:46 +05:30
Yuvi Panda 99eb8819b9
Merge pull request #1040 from fkohrt/patch-1
State newly used installation command
2021-06-29 15:03:22 +05:30
Sarah Gibson 767f95fa06
Add study participation notice to readme 2021-06-11 12:01:24 +01:00
dependabot[bot] cf6c35afd7
Bump urllib3 from 1.26.4 to 1.26.5
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.4 to 1.26.5.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.4...1.26.5)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-01 22:58:54 +00:00
Florian Kohrt f8d1a19fee
State newly used installation command
`install_local` is used since 1f5469f
2021-05-21 11:26:53 +02:00
Tim Head 73ab48a42d
Merge pull request #1034 from MridulS/hydroshare_break 2021-04-20 09:27:39 +02:00
Mridul Seth a833c3949b
install setup-tools for hg 2021-04-03 12:09:13 +02:00
Mridul Seth 3112a56f37 install latest hg and hg evolve in CI 2021-04-01 17:37:34 +02:00
Mridul Seth 3edc76342c Fix regression in hydroshare introduced after moving to requests 2021-04-01 15:31:19 +02:00
Tim Head 0eb7260f47
Merge pull request #1029 from jupyterhub/dependabot/pip/pyyaml-5.4
Bump pyyaml from 5.1.1 to 5.4
2021-03-30 07:54:55 +02:00
Tim Head 1d07b643dc
Merge pull request #1028 from tomyun/patch-1
Set default Julia version to 1.6
2021-03-29 08:28:29 +02:00
dependabot[bot] 033c02d07b
Bump pyyaml from 5.1.1 to 5.4
Bumps [pyyaml](https://github.com/yaml/pyyaml) from 5.1.1 to 5.4.
- [Release notes](https://github.com/yaml/pyyaml/releases)
- [Changelog](https://github.com/yaml/pyyaml/blob/master/CHANGES)
- [Commits](https://github.com/yaml/pyyaml/compare/5.1.1...5.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-25 22:17:24 +00:00
Kyungdahm Yun ebbb83b665
Set default Julia version to 1.6 2021-03-25 09:22:59 -07:00
Simon Li a5f5bbbb75
Merge pull request #1027 from jupyterhub/betatim-patch-1
Fix logo URL in README
2021-03-23 09:35:04 +00:00
Tim Head 4590e2c498
Fix logo URL in README 2021-03-23 07:28:39 +01:00
Tim Head 8731ecf096
Merge pull request #1014 from minrk/flush-buffers 2021-03-23 07:21:00 +01:00
Min RK b36a6a75f5 simplify python entrypoint
- remove redundant monitor sibling process
- use python3-login executable instead of login shell subprocess
  (same effect, but in more natural order)
- use non-blocking binary IO in tee instead of readline
  (switch to binary mode, as text wrappers don't support non-blocking mode
   see https://bugs.python.org/issue13322)
2021-03-09 10:45:47 +01:00
Min RK 03d673b096 support separate pip requirements.txt in base env
- require base env to be a lockfile, environment.yml no longer allowed
- separate `requirements.py-x.y.txt` can be processed post-install, if present
- use this for Python 3.5 env, which has some dependencies only from pip (newer versions than the last py35 build on conda-forge)
2021-03-08 12:58:14 +01:00
Min RK 789a3a23c3 lockfiles need to be installed with `conda create` not `conda env create`
use different .lock filename extension, following conda-lock precedent

Could also follow .txt in conda docs!

conda env create -p prefix -f lock.txt *should* work,
but fails with errors about name being required,
but also fails if name is given due to conflict with `-p`
2021-03-03 16:03:52 +01:00
Min RK d7c26b7a79 use mamba create instead of mamba env create
I'm never sure what the difference is,
but mamba env create doesn't accept explicit dependency format
2021-03-03 13:17:46 +01:00
Min RK 93de3872a4 refreeze after adding pip 2021-03-03 12:09:13 +01:00
Min RK a2d0329b15 explicitly put pip in the base env
instead of depending on conda's automatic pip dependency for Python,
which is sensitive to configuation
2021-03-03 12:09:13 +01:00
Min RK 1e240efc96 refreeze with conda-lock 2021-03-03 11:18:47 +01:00
Min RK a49d260ac9 Freeze enviornment with conda-lock
approximately one million times faster than running a full install

installation time should be faster, too, as there is no solve
2021-03-03 11:18:27 +01:00
Min RK 0f848f7855 handle $R2D_ENTRYPOINT in new entrypoint 2021-02-18 14:34:07 +01:00
Min RK a06991de50 entrypoint needs to run on py35 2021-02-18 09:46:42 +01:00
Min RK ebf640cb84 implement entrypoint in Python
- make sure to set PYTHONUNBUFFERED
- implement tee with subprocess readlines
- forward all relevant signals from entrypoint to 'true' command
- add monitor process to ensure child shuts down if parent does (maybe not useful in docker?)
2021-02-17 16:13:42 +01:00
273 zmienionych plików z 8166 dodań i 4480 usunięć

Wyświetl plik

@ -1,43 +0,0 @@
version: 2
jobs:
# Define a "build_docs" job to be run with Circle
build_docs:
# This is the base environment that Circle will use
docker:
- image: circleci/python:3.8-buster
steps:
# Get our data and merge with upstream
- run: sudo apt-get update
- checkout
# Update our path
- run: echo "export PATH=~/.local/bin:$PATH" >> $BASH_ENV
# Restore cached files to speed things up
- restore_cache:
keys:
- cache-pip
- run: pip install --user -e .
# Install the packages needed to build our documentation
# This will depend on your particular package!
- run: pip install --user -r docs/doc-requirements.txt
# Cache some files for a speedup in subsequent builds
- save_cache:
key: cache-pip
paths:
- ~/.cache/pip
# Build the docs
- run:
name: Build docs to store
command: |
cd docs
make html
# Tell Circle to store the documentation output in a folder that we can access later
- store_artifacts:
path: docs/build/html/
destination: html
# Tell CircleCI to use this workflow when it builds the site
workflows:
version: 2
default:
jobs:
- build_docs

Wyświetl plik

@ -6,7 +6,7 @@ coverage:
status:
project:
default:
target: auto
target: "0%"
patch:
default:
target: 20%
target: "0%"

Wyświetl plik

@ -1,23 +1,27 @@
---
name: Bug report
about: Create a report to help us repair something that is currently broken
title: ''
labels: ''
assignees: ''
title: ""
labels: ""
assignees: ""
---
<!-- Thank you for contributing. These HTML commments will not render in the issue, but you can delete them once you've read them if you prefer! -->
### Bug description
<!-- Use this section to clearly and concisely describe the bug. -->
#### Expected behaviour
<!-- Tell us what you thought would happen. -->
#### Actual behaviour
<!-- Tell us what you actually happens. -->
### How to reproduce
<!-- Use this section to describe the steps that a user would take to experience this bug. -->
1. Go to '...'
@ -26,9 +30,9 @@ assignees: ''
4. See error
### Your personal set up
<!-- Tell us a little about the system you're using. You can see the guidelines for setting up and reporting this information at https://repo2docker.readthedocs.io/en/latest/contributing/contributing.html#setting-up-for-local-development. -->
- OS: [e.g. linux, OSX]
- Docker version: `docker version` <!-- Run this command to get your version. -->
- repo2docker version `repo2docker --version` <!-- Run this command to get your version. -->
- OS: [e.g. linux, OSX]
- Docker version: `docker version` <!-- Run this command to get your version. -->
- repo2docker version `repo2docker --version` <!-- Run this command to get your version. -->

Wyświetl plik

@ -1,29 +1,29 @@
---
name: Feature request
about: Suggest a new feature or a big change to repo2docker
title: ''
labels: 'needs: discussion'
assignees: ''
title: ""
labels: "needs: discussion"
assignees: ""
---
<!-- Thank you for contributing. These HTML commments will not render in the issue, but you can delete them once you've read them if you prefer! -->
### Proposed change
<!-- Use this section to describe the feature you'd like to be added. -->
### Alternative options
<!-- Use this section to describe alternative options and why you've decided on the proposed feature above. -->
### Who would use this feature?
<!-- Describe the audience for this feature. This information will affect who chooses to work on the feature with you. -->
### How much effort will adding it take?
<!-- Try to estimate how much work adding this feature will require. This information will affect who chooses to work on the feature with you. -->
### Who can do this work?
<!-- What skills are needed? Who can be recruited to add this feature? This information will affect who chooses to work on the feature with you. -->
<!-- What skills are needed? Who can be recruited to add this feature? This information will affect who chooses to work on the feature with you. -->

Wyświetl plik

@ -1,10 +1,9 @@
---
name: Support question
about: Ask a question about using repo2docker
title: ''
labels: ''
assignees: ''
title: ""
labels: ""
assignees: ""
---
🚨 Please do **not** open an issue for support questions. Instead please search for similar issues or post on http://discourse.jupyter.org/c/questions. 🚨

17
.github/dependabot.yaml vendored 100644
Wyświetl plik

@ -0,0 +1,17 @@
# dependabot.yaml reference: https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
#
# Notes:
# - Status and logs from dependabot are provided at
# https://github.com/jupyterhub/repo2docker/network/updates.
# - YAML anchors are not supported here or in GitHub Workflows.
#
version: 2
updates:
# Maintain dependencies in our GitHub Workflows
- package-ecosystem: github-actions
directory: /
labels: [ci]
schedule:
interval: monthly
time: "05:00"
timezone: Etc/UTC

Wyświetl plik

@ -1,21 +1,44 @@
# This is a GitHub workflow defining a set of jobs with a set of steps.
# ref: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
#
name: Docker build
on:
- push
- pull_request
pull_request:
paths-ignore:
- "docs/**"
- "**.md"
- "**.rst"
- ".github/workflows/*"
- "!.github/workflows/docker.yml"
- ".pre-commit-config.yaml"
push:
paths-ignore:
- "docs/**"
- "**.md"
- "**.rst"
- ".github/workflows/*"
- "!.github/workflows/docker.yml"
- ".pre-commit-config.yaml"
branches-ignore:
- "dependabot/**"
- "pre-commit-ci-update-config"
tags:
- "**"
workflow_dispatch:
jobs:
docker:
runs-on: ubuntu-18.04
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
fetch-depth: 0
# https://github.com/docker/build-push-action
- name: Build Docker image
uses: docker/build-push-action@v2
uses: docker/build-push-action@v5
with:
context: .
tags: jupyter/repo2docker:pr

Wyświetl plik

@ -1,34 +1,132 @@
name: Create a release on pypi.org
# This is a GitHub workflow defining a set of jobs with a set of steps.
# ref: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
#
name: Publish
on:
push:
pull_request:
paths-ignore:
- "docs/**"
- "**.md"
- "**.rst"
- ".github/workflows/*"
- "!.github/workflows/release.yml"
- ".pre-commit-config.yaml"
push:
paths-ignore:
- "docs/**"
- "**.md"
- "**.rst"
- ".github/workflows/*"
- "!.github/workflows/release.yml"
- ".pre-commit-config.yaml"
branches-ignore:
- "dependabot/**"
- "pre-commit-ci-update-config"
tags:
- "**"
workflow_dispatch:
jobs:
build-n-publish:
runs-on: ubuntu-18.04
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- name: "Setup Python 3.8"
uses: actions/setup-python@v2
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.8"
python-version: "3.9"
- name: "Install dependencies"
- name: install build requirements
run: |
pip install --upgrade setuptools pip
pip install --upgrade -r dev-requirements.txt
pip install build
pip freeze
- name: "Build distribution archives"
- name: build release
run: |
python setup.py sdist bdist_wheel
python -m build --sdist --wheel .
ls -l dist
# ref: https://github.com/actions/upload-artifact#readme
- uses: actions/upload-artifact@v4
with:
name: repo2docker-${{ github.sha }}
path: "dist/*"
if-no-files-found: error
# This step is only run when a new tag is pushed
# all previous steps always run in order to exercise them
- name: Publish distribution to PyPI
if: startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@master
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}
password: ${{ secrets.PYPI_PASSWORD }}
publish-docker:
runs-on: ubuntu-22.04
env:
DEFAULT_REGISTRY: quay.io
IMAGE_NAME: jupyterhub/repo2docker
services:
# So that we can test this in PRs/branches
local-registry:
image: registry:2
ports:
- 5000:5000
steps:
- name: Should we push this image to a public registry?
run: |
if [ "${{ startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/main') }}" = "true" ]; then
REGISTRY=$DEFAULT_REGISTRY
else
REGISTRY=localhost:5000
fi
echo "REGISTRY=$REGISTRY" >> $GITHUB_ENV
echo "Publishing to $REGISTRY"
# versioneer requires the full git history for non-tags
- uses: actions/checkout@v4
with:
fetch-depth: 0
# Setup docker to build for multiple platforms, see:
# https://github.com/docker/build-push-action/tree/v2.4.0#usage
# https://github.com/docker/build-push-action/blob/v2.4.0/docs/advanced/multi-platform.md
- name: Set up QEMU (for docker buildx)
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx (for multi-arch builds)
uses: docker/setup-buildx-action@v3
with:
# Allows pushing to registry on localhost:5000
driver-opts: network=host
- name: Setup push rights to Docker registry
if: env.REGISTRY != 'localhost:5000'
run: |
docker login -u "${{ secrets.DOCKER_REGISTRY_USERNAME }}" -p "${{ secrets.DOCKER_REGISTRY_TOKEN }}" "${{ env.REGISTRY }}"
# when building jupyter/repo2docker:master
# also push jupyter/repo2docker:1.2.3-3.abcd1234 (replace + with -)
- name: Get list of repo2docker docker tags
run: |
VERSION=$(python3 -c 'import versioneer; print(versioneer.get_version().replace("+", "-"))')
TAGS="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:$VERSION"
if [ "${{ github.ref }}" == "refs/heads/main" ]; then
TAGS="$TAGS,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:main"
fi
if [ "${{ startsWith(github.ref, 'refs/tags/') }}" = "true" ]; then
TAGS="$TAGS,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest"
fi
echo "TAGS=$TAGS"
echo "TAGS=$TAGS" >> $GITHUB_ENV
- name: Build and push repo2docker
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ env.TAGS }}

Wyświetl plik

@ -1,19 +1,37 @@
# Useful GitHub Actions docs:
# This is a GitHub workflow defining a set of jobs with a set of steps.
# ref: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
#
# - https://help.github.com/en/actions
# - https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
# - https://help.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow
# - https://help.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions
name: Continuous Integration
name: Test
on:
push:
pull_request:
paths-ignore:
- "docs/**"
- "**.md"
- "**.rst"
- ".github/workflows/*"
- "!.github/workflows/test.yml"
- ".pre-commit-config.yaml"
push:
paths-ignore:
- "docs/**"
- "**.md"
- "**.rst"
- ".github/workflows/*"
- "!.github/workflows/test.yml"
- ".pre-commit-config.yaml"
branches-ignore:
- "dependabot/**"
- "pre-commit-ci-update-config"
tags:
- "**"
schedule:
# Weekly test so we know if tests break for external reasons
# https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows#scheduled-events
# Run weekly test so we know if tests break for external reasons
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#scheduled-events
#
# At 10:36 on Sunday (https://crontab.guru)
- cron: '36 10 * * 0'
workflow_dispatch:
# Global environment variables
env:
@ -23,51 +41,14 @@ env:
GIT_AUTHOR_NAME: CI User
jobs:
# Job to run linter / autoformat
lint:
runs-on: ubuntu-18.04
steps:
# Action Repo: https://github.com/actions/checkout
- name: "Checkout repo"
uses: actions/checkout@v2
with:
fetch-depth: 0
# Action Repo: https://github.com/actions/setup-python
- name: "Setup Python"
uses: actions/setup-python@v2
with:
python-version: "3.8"
# Action Repo: https://github.com/actions/cache
- name: "Cache pip dependencies"
uses: actions/cache@v2
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('dev-requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: "Install dependencies"
run: |
pip install --upgrade setuptools pip
pip install --upgrade -r dev-requirements.txt
pip freeze
- name: "Run linter"
run: |
pre-commit run --all-files
test:
# Previous job must have successfully completed for this job to execute
# - https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idneeds
needs: lint
runs-on: ubuntu-18.04
# - https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstrategy
runs-on: ubuntu-${{ matrix.ubuntu_version }}
strategy:
fail-fast: false # Do not cancel all jobs if one fails
fail-fast: false
matrix:
python_version: ["3.8"]
ubuntu_version: ["22.04"]
python_version: ["3.9"]
repo_type:
- base
- conda
@ -80,45 +61,36 @@ jobs:
- unit
- venv
include:
- python_version: "3.6"
# The actions/setup-python action with Python version 3.6 isn't
# possible to use with the ubuntu-22.04 runner, so we use ubuntu-20.04
# for this test where Python 3.6 remain available.
- ubuntu_version: "20.04"
python_version: "3.6"
repo_type: venv
steps:
- name: "Checkout repo"
uses: actions/checkout@v2
- name: "Setup Python"
uses: actions/setup-python@v2
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python_version }}
python-version: "${{ matrix.python_version }}"
# Action Repo: https://github.com/actions/cache
- name: "Cache pip dependencies"
uses: actions/cache@v2
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('dev-requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: "Install"
- name: Install dependencies
run: |
pip install --upgrade setuptools pip wheel
pip install --upgrade -r dev-requirements.txt
python setup.py bdist_wheel
pip install dist/*.whl
pip install -r dev-requirements.txt
pip freeze
# hg-evolve pinned to 9.2 because hg-evolve dropped support for
# hg 4.5, installed with apt in Ubuntu 18.04
$(hg debuginstall --template "{pythonexe}") -m pip install hg-evolve==9.2 --user
- name: "Run tests"
- name: Install repo2docker
run: |
cd tests
pytest --durations 10 --cov repo2docker -v ${{ matrix.repo_type }}
python -m build --wheel .
pip install dist/*.whl
- name: "Upload code coverage stats"
# add for mercurial tests
pip install mercurial hg-evolve
pip freeze
- name: Run pytest
run: |
pip install codecov
pushd tests && codecov && cat
cat /home/runner/work/repo2docker/repo2docker/tests/coverage.xml
pytest --verbose --color=yes --durations=10 --cov=repo2docker tests/${{ matrix.repo_type }}
- uses: codecov/codecov-action@v4

180
.gitignore vendored
Wyświetl plik

@ -1,23 +1,15 @@
# Manually added parts to .gitignore
# ----------------------------------
#
.#*
dist
build
*.tar.gz
*.egg-info
*.py[co]
__pycache__
MANIFEST
.DS_Store
.cache
.pytest_cache
.coverage
htmlcov
repo2docker/s2i
^bin/
lib/
lib64/
share/
include/
@ -31,7 +23,171 @@ tests/dockerfile/legacy/root.frozen.yml
generated/
test_file_text.txt
\.vscode/
tests/dockerfile_diff.sh
# Python .gitignore from https://github.com/github/gitignore/blob/HEAD/Python.gitignore
# -------------------------------------------------------------------------------------
#
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

Wyświetl plik

@ -1,10 +1,12 @@
tasks:
- init: |
pip3 install sphinx-autobuild
pip3 install -r docs/doc-requirements.txt
pip3 install -e.
pip3 install -r dev-requirements.txt
pip3 install -r docs/requirements.txt
pip3 install -e .
command: |
sphinx-autobuild docs/source/ docs/build/html/
sphinx-autobuild docs/source/ docs/_build/html/
name: Sphinx preview
ports:
- port: 8000
- port: 8000

Wyświetl plik

@ -1,6 +1,54 @@
# pre-commit is a tool to perform a predefined set of tasks manually and/or
# automatically before git commits are made.
#
# Config reference: https://pre-commit.com/#pre-commit-configyaml---top-level
#
# Common tasks
#
# - Run on all files: pre-commit run --all-files
# - Register git hooks: pre-commit install --install-hooks
#
repos:
- repo: https://github.com/ambv/black
rev: 20.8b1
hooks:
- id: black
args: [--target-version=py36]
# Autoformat: Python code, syntax patterns are modernized
- repo: https://github.com/asottile/pyupgrade
rev: v3.15.2
hooks:
- id: pyupgrade
args:
- --py36-plus
# check-tmp is a Python based test script run in created environments
# that can be at least Python 3.5 even though we require Python 3.6 for
# repo2docker itself.
exclude: check-tmp
# Autoformat: Python code
- repo: https://github.com/psf/black
rev: 24.4.2
hooks:
- id: black
args:
- --target-version=py36
- --target-version=py37
- --target-version=py38
- --target-version=py39
- --target-version=py310
- --target-version=py311
# Autoformat: Python code
- repo: https://github.com/pycqa/isort
rev: 5.13.2
hooks:
- id: isort
args:
- --profile=black
# Autoformat: markdown
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v4.0.0-alpha.8
hooks:
- id: prettier
files: ".md"
# pre-commit.ci config reference: https://pre-commit.ci/#configuration
ci:
autoupdate_schedule: monthly

19
.readthedocs.yaml 100644
Wyświetl plik

@ -0,0 +1,19 @@
# Configuration on how ReadTheDocs (RTD) builds our documentation
# ref: https://readthedocs.org/projects/repo2docker-service/
# ref: https://docs.readthedocs.io/en/stable/config-file/v2.html
#
version: 2
sphinx:
configuration: docs/source/conf.py
build:
os: ubuntu-22.04
tools:
python: "3.10"
python:
install:
- requirements: docs/requirements.txt
- method: pip
path: .

Wyświetl plik

@ -1 +1 @@
The ``repo2docker`` changelog has been moved. It can be viewed online at https://repo2docker.readthedocs.io/en/latest/changelog.html. In the ``repo2docker`` repository, the changelog is located at ``docs/source/changelog.rst``.
The ``repo2docker`` changelog has been moved. It can be viewed online at https://repo2docker.readthedocs.io/en/latest/changelog.html. In the ``repo2docker`` repository, the changelog is located at ``docs/source/changelog.md``.

Wyświetl plik

@ -8,19 +8,20 @@ The repo2docker developer documentation is all rendered on our documentation web
If you're here, you're probably looking for the [Contributing to repo2docker development](https://repo2docker.readthedocs.io/en/latest/contributing/contributing.html) page.
Please make sure you've read the following sections before opening an issue/pull request:
* [Process for making a contribution](https://repo2docker.readthedocs.io/en/latest/contributing/contributing.html#process-for-making-a-contribution).
* These steps talk you through choosing the right issue template (bug report or feature request) and making a change.
* [Guidelines to getting a Pull Request merged](https://repo2docker.readthedocs.io/en/latest/contributing/contributing.html#guidelines-to-getting-a-pull-request-merged).
* These are tips and tricks to help make your contribution as smooth as possible for you and for the repo2docker maintenance team.
- [Process for making a contribution](https://repo2docker.readthedocs.io/en/latest/contributing/contributing.html#process-for-making-a-contribution).
- These steps talk you through choosing the right issue template (bug report or feature request) and making a change.
- [Guidelines to getting a Pull Request merged](https://repo2docker.readthedocs.io/en/latest/contributing/contributing.html#guidelines-to-getting-a-pull-request-merged).
- These are tips and tricks to help make your contribution as smooth as possible for you and for the repo2docker maintenance team.
There are a few other pages to highlight:
* [Our roadmap](https://repo2docker.readthedocs.io/en/latest/contributing/roadmap.html)
* We use the roadmap to develop a shared understanding of the project's vision and direction amongst the community of users, contributors, and maintainers.
- [Our roadmap](https://repo2docker.readthedocs.io/en/latest/contributing/roadmap.html)
- We use the roadmap to develop a shared understanding of the project's vision and direction amongst the community of users, contributors, and maintainers.
This is a great place to get a feel for what the maintainers are thinking about for the short, medium, and long term future of the project.
* [Design of repo2docker](https://repo2docker.readthedocs.io/en/latest/design.html)
* This page explains some of the design principles behind repo2docker.
- [Design of repo2docker](https://repo2docker.readthedocs.io/en/latest/design.html)
- This page explains some of the design principles behind repo2docker.
Its a good place to understand _why_ the team have made the decisions that they have along the way!
* We absolutely encourage discussion around refactoring, updating or extending repo2docker, but please make sure that you've understood this page before opening an issue to discuss the change you'd like to propose.
* [Common developer tasks and how-tos](https://repo2docker.readthedocs.io/en/latest/contributing/tasks.html)
* Some notes on running tests, buildpack dependencies, creating a release, and keeping the pip files up to date.
- We absolutely encourage discussion around refactoring, updating or extending repo2docker, but please make sure that you've understood this page before opening an issue to discuss the change you'd like to propose.
- [Common developer tasks and how-tos](https://repo2docker.readthedocs.io/en/latest/contributing/tasks.html)
- Some notes on running tests, buildpack dependencies, creating a release, and keeping the pip files up to date.

Wyświetl plik

@ -1,30 +1,40 @@
ARG ALPINE_VERSION=3.12.0
# syntax = docker/dockerfile:1.3
ARG ALPINE_VERSION=3.19
FROM alpine:${ALPINE_VERSION}
RUN apk add --no-cache git python3 python3-dev py-pip
RUN apk add --no-cache git python3 python3-dev py3-pip py3-setuptools build-base
# build wheels in a build stage
ARG VIRTUAL_ENV=/opt/venv
ENV PATH=${VIRTUAL_ENV}/bin:${PATH}
RUN python3 -m venv ${VIRTUAL_ENV}
# build wheels in first image
ADD . /tmp/src
# restore the hooks directory so that the repository isn't marked as dirty
RUN cd /tmp/src && git clean -xfd && git checkout -- hooks && git status
RUN cd /tmp/src && git clean -xfd && git status
RUN mkdir /tmp/wheelhouse \
&& cd /tmp/wheelhouse \
&& pip3 install wheel \
&& pip3 wheel --no-cache-dir /tmp/src \
&& pip install wheel \
&& pip wheel --no-cache-dir /tmp/src \
&& ls -l /tmp/wheelhouse
FROM alpine:${ALPINE_VERSION}
# install python, git, bash, mercurial
RUN apk add --no-cache git git-lfs python3 py-pip bash docker mercurial
RUN apk add --no-cache git git-lfs python3 py3-pip py3-setuptools bash docker mercurial
ARG VIRTUAL_ENV=/opt/venv
ENV PATH=${VIRTUAL_ENV}/bin:${PATH}
RUN python3 -m venv ${VIRTUAL_ENV}
# install hg-evolve (Mercurial extensions)
RUN pip3 install hg-evolve --user --no-cache-dir
RUN pip install hg-evolve --no-cache-dir
# install repo2docker
COPY --from=0 /tmp/wheelhouse /tmp/wheelhouse
RUN pip3 install --no-cache-dir /tmp/wheelhouse/*.whl \
&& pip3 list
RUN pip install --no-cache-dir --ignore-installed --no-deps /tmp/wheelhouse/*.whl \
&& pip list
# add git-credential helper
COPY ./docker/git-credential-env /usr/local/bin/git-credential-env

17
Pipfile
Wyświetl plik

@ -1,17 +0,0 @@
# Note that there are a dev-requirements.txt and a docs/doc-requirements.txt
# files in this project, if you are updating this Pipfile make sure to
# update these accordingly
[dev-packages]
pytest=">=4.6"
wheel="*"
pytest-cov="*"
PyYAML = "*"
recommonmark = "*"
alabaster = "*"
Sphinx = ">=1.4,!=1.5.4"
alabaster_jupyterhub = "*"
sphinxcontrib-autoprogram = "*"
[packages]
repo2docker = {path=".", editable=true}

559
Pipfile.lock wygenerowano
Wyświetl plik

@ -1,559 +0,0 @@
{
"_meta": {
"hash": {
"sha256": "e5e25d07eef39c6a63fc222436b9fe266edf7f024fd5c0ff72afd454e4176602"
},
"pipfile-spec": 6,
"requires": {},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"certifi": {
"hashes": [
"sha256:046832c04d4e752f37383b628bc601a7ea7211496b4638f6514d0e5b9acc4939",
"sha256:945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695"
],
"version": "==2019.6.16"
},
"chardet": {
"hashes": [
"sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
"sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
],
"version": "==3.0.4"
},
"decorator": {
"hashes": [
"sha256:86156361c50488b84a3f148056ea716ca587df2f0de1d34750d35c21312725de",
"sha256:f069f3a01830ca754ba5258fde2278454a0b5b79e0d7f5c13b3b97e57d4acff6"
],
"version": "==4.4.0"
},
"docker": {
"hashes": [
"sha256:acf51b5e3e0d056925c3b780067a6f753c915fffaa46c5f2d79eb0fc1cbe6a01",
"sha256:cc5b2e94af6a2b1e1ed9d7dcbdc77eff56c36081757baf9ada6e878ea0213164"
],
"version": "==4.0.2"
},
"escapism": {
"hashes": [
"sha256:5f1cc1fa04a95f5b85b3da194750f8a71846d493ea332f62e8798949f10c9b86",
"sha256:bde950505d0a2c0fce069620f8ffb99464635851146c25e8d1be882ca9a1bb75"
],
"version": "==1.0.0"
},
"idna": {
"hashes": [
"sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407",
"sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"
],
"version": "==2.8"
},
"ipython-genutils": {
"hashes": [
"sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8",
"sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"
],
"version": "==0.2.0"
},
"jinja2": {
"hashes": [
"sha256:065c4f02ebe7f7cf559e49ee5a95fb800a9e4528727aec6f24402a5374c65013",
"sha256:14dd6caf1527abb21f08f86c784eac40853ba93edb79552aa1e4b8aef1b61c7b"
],
"version": "==2.10.1"
},
"markupsafe": {
"hashes": [
"sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473",
"sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161",
"sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235",
"sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5",
"sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff",
"sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b",
"sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1",
"sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e",
"sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183",
"sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66",
"sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1",
"sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1",
"sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e",
"sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b",
"sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905",
"sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735",
"sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d",
"sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e",
"sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d",
"sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c",
"sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21",
"sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2",
"sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5",
"sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b",
"sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6",
"sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f",
"sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f",
"sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"
],
"version": "==1.1.1"
},
"python-json-logger": {
"hashes": [
"sha256:b7a31162f2a01965a5efb94453ce69230ed208468b0bbc7fdfc56e6d8df2e281"
],
"version": "==0.1.11"
},
"repo2docker": {
"editable": true,
"path": "."
},
"requests": {
"hashes": [
"sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4",
"sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31"
],
"version": "==2.22.0"
},
"ruamel.yaml": {
"hashes": [
"sha256:17dbf6b7362e7aee8494f7a0f5cffd44902a6331fe89ef0853b855a7930ab845",
"sha256:23731c9efb79f3f5609dedffeb6c5c47a68125fd3d4b157d9fc71b1cd49076a9",
"sha256:2bbdd598ae57bac20968cf9028cc67d37d83bdb7942a94b9478110bc72193148",
"sha256:34586084cdd60845a3e1bece2b58f0a889be25450db8cc0ea143ddf0f40557a2",
"sha256:35957fedbb287b01313bb5c556ffdc70c0277c3500213b5e73dfd8716f748d77",
"sha256:414cb87a40974a575830b406ffab4ab8c6cbd82eeb73abd2a9d1397c1f0223e1",
"sha256:428775be75db68d908b17e4e8dda424c410222f170dc173246aa63e972d094b3",
"sha256:514f670f7d36519bda504d507edfe63e3c20489f86c86d42bc4d9a6dbdf82c7b",
"sha256:5cb962c1ac6887c5da29138fbbe3b4b7705372eb54e599907fa63d4cd743246d",
"sha256:5f6e30282cf70fb7754e1a5f101e27b5240009766376e131b31ab49f14fe81be",
"sha256:86f8e010af6af0b4f42de2d0d9b19cb441e61d3416082186f9dd03c8552d13ad",
"sha256:8d47ed1e557d546bd2dfe54f504d7274274602ff7a0652cde84c258ad6c2d96d",
"sha256:98668876720bce1ac08562d8b93a564a80e3397e442c7ea19cebdcdf73da7f74",
"sha256:9e1f0ddc18d8355dcf5586a5d90417df56074f237812b8682a93b62cca9d2043",
"sha256:a7bc812a72a79d6b7dbb96fa5bee3950464b65ec055d3abc4db6572f2373a95c",
"sha256:b72e13f9f206ee103247b07afd5a39c8b1aa98e8eba80ddba184d030337220ba",
"sha256:bcff8ea9d916789e85e24beed8830c157fb8bc7c313e554733a8151540e66c01",
"sha256:c76e78b3bab652069b8d6f7889b0e72f3455c2b854b2e0a8818393d149ad0a0d"
],
"version": "==0.15.97"
},
"semver": {
"hashes": [
"sha256:41c9aa26c67dc16c54be13074c352ab666bce1fa219c7110e8f03374cd4206b0",
"sha256:5b09010a66d9a3837211bb7ae5a20d10ba88f8cb49e92cb139a69ef90d5060d8"
],
"version": "==2.8.1"
},
"six": {
"hashes": [
"sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c",
"sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"
],
"version": "==1.12.0"
},
"toml": {
"hashes": [
"sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c",
"sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e"
],
"version": "==0.10.0"
},
"traitlets": {
"hashes": [
"sha256:9c4bd2d267b7153df9152698efb1050a5d84982d3384a37b2c1f7723ba3e7835",
"sha256:c6cb5e6f57c5a9bdaa40fa71ce7b4af30298fbab9ece9815b5d995ab6217c7d9"
],
"version": "==4.3.2"
},
"urllib3": {
"hashes": [
"sha256:b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1",
"sha256:dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232"
],
"version": "==1.25.3"
},
"websocket-client": {
"hashes": [
"sha256:1151d5fb3a62dc129164292e1227655e4bbc5dd5340a5165dfae61128ec50aa9",
"sha256:1fd5520878b68b84b5748bb30e592b10d0a91529d5383f74f4964e72b297fd3a"
],
"version": "==0.56.0"
}
},
"develop": {
"alabaster": {
"hashes": [
"sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359",
"sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"
],
"index": "pypi",
"version": "==0.7.12"
},
"alabaster-jupyterhub": {
"hashes": [
"sha256:00911ff8828996c44dadc1aa234853b98d91c6a0c25153dde4b2c241cd0851c7",
"sha256:787c7a895f2fdfab5adc1478bd6925a287cee6dcf12ac8ccf565c6856969a4ef"
],
"index": "pypi",
"version": "==0.1.8"
},
"atomicwrites": {
"hashes": [
"sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4",
"sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6"
],
"version": "==1.3.0"
},
"attrs": {
"hashes": [
"sha256:69c0dbf2ed392de1cb5ec704444b08a5ef81680a61cb899dc08127123af36a79",
"sha256:f0b870f674851ecbfbbbd364d6b5cbdff9dcedbc7f3f5e18a6891057f21fe399"
],
"version": "==19.1.0"
},
"babel": {
"hashes": [
"sha256:af92e6106cb7c55286b25b38ad7695f8b4efb36a90ba483d7f7a6628c46158ab",
"sha256:e86135ae101e31e2c8ec20a4e0c5220f4eed12487d5cf3f78be7e98d3a57fc28"
],
"version": "==2.7.0"
},
"certifi": {
"hashes": [
"sha256:046832c04d4e752f37383b628bc601a7ea7211496b4638f6514d0e5b9acc4939",
"sha256:945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695"
],
"version": "==2019.6.16"
},
"chardet": {
"hashes": [
"sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
"sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
],
"version": "==3.0.4"
},
"commonmark": {
"hashes": [
"sha256:14c3df31e8c9c463377e287b2a1eefaa6019ab97b22dad36e2f32be59d61d68d",
"sha256:867fc5db078ede373ab811e16b6789e9d033b15ccd7296f370ca52d1ee792ce0"
],
"version": "==0.9.0"
},
"coverage": {
"hashes": [
"sha256:3684fabf6b87a369017756b551cef29e505cb155ddb892a7a29277b978da88b9",
"sha256:39e088da9b284f1bd17c750ac672103779f7954ce6125fd4382134ac8d152d74",
"sha256:3c205bc11cc4fcc57b761c2da73b9b72a59f8d5ca89979afb0c1c6f9e53c7390",
"sha256:465ce53a8c0f3a7950dfb836438442f833cf6663d407f37d8c52fe7b6e56d7e8",
"sha256:48020e343fc40f72a442c8a1334284620f81295256a6b6ca6d8aa1350c763bbe",
"sha256:5296fc86ab612ec12394565c500b412a43b328b3907c0d14358950d06fd83baf",
"sha256:5f61bed2f7d9b6a9ab935150a6b23d7f84b8055524e7be7715b6513f3328138e",
"sha256:68a43a9f9f83693ce0414d17e019daee7ab3f7113a70c79a3dd4c2f704e4d741",
"sha256:6b8033d47fe22506856fe450470ccb1d8ba1ffb8463494a15cfc96392a288c09",
"sha256:7ad7536066b28863e5835e8cfeaa794b7fe352d99a8cded9f43d1161be8e9fbd",
"sha256:7bacb89ccf4bedb30b277e96e4cc68cd1369ca6841bde7b005191b54d3dd1034",
"sha256:839dc7c36501254e14331bcb98b27002aa415e4af7ea039d9009409b9d2d5420",
"sha256:8f9a95b66969cdea53ec992ecea5406c5bd99c9221f539bca1e8406b200ae98c",
"sha256:932c03d2d565f75961ba1d3cec41ddde00e162c5b46d03f7423edcb807734eab",
"sha256:988529edadc49039d205e0aa6ce049c5ccda4acb2d6c3c5c550c17e8c02c05ba",
"sha256:998d7e73548fe395eeb294495a04d38942edb66d1fa61eb70418871bc621227e",
"sha256:9de60893fb447d1e797f6bf08fdf0dbcda0c1e34c1b06c92bd3a363c0ea8c609",
"sha256:9e80d45d0c7fcee54e22771db7f1b0b126fb4a6c0a2e5afa72f66827207ff2f2",
"sha256:a545a3dfe5082dc8e8c3eb7f8a2cf4f2870902ff1860bd99b6198cfd1f9d1f49",
"sha256:a5d8f29e5ec661143621a8f4de51adfb300d7a476224156a39a392254f70687b",
"sha256:aca06bfba4759bbdb09bf52ebb15ae20268ee1f6747417837926fae990ebc41d",
"sha256:bb23b7a6fd666e551a3094ab896a57809e010059540ad20acbeec03a154224ce",
"sha256:bfd1d0ae7e292105f29d7deaa9d8f2916ed8553ab9d5f39ec65bcf5deadff3f9",
"sha256:c62ca0a38958f541a73cf86acdab020c2091631c137bd359c4f5bddde7b75fd4",
"sha256:c709d8bda72cf4cd348ccec2a4881f2c5848fd72903c185f363d361b2737f773",
"sha256:c968a6aa7e0b56ecbd28531ddf439c2ec103610d3e2bf3b75b813304f8cb7723",
"sha256:df785d8cb80539d0b55fd47183264b7002077859028dfe3070cf6359bf8b2d9c",
"sha256:f406628ca51e0ae90ae76ea8398677a921b36f0bd71aab2099dfed08abd0322f",
"sha256:f46087bbd95ebae244a0eda01a618aff11ec7a069b15a3ef8f6b520db523dcf1",
"sha256:f8019c5279eb32360ca03e9fac40a12667715546eed5c5eb59eb381f2f501260",
"sha256:fc5f4d209733750afd2714e9109816a29500718b32dd9a5db01c0cb3a019b96a"
],
"version": "==4.5.3"
},
"docutils": {
"hashes": [
"sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6",
"sha256:51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274",
"sha256:7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6"
],
"version": "==0.14"
},
"future": {
"hashes": [
"sha256:67045236dcfd6816dc439556d009594abf643e5eb48992e36beac09c2ca659b8"
],
"version": "==0.17.1"
},
"idna": {
"hashes": [
"sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407",
"sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"
],
"version": "==2.8"
},
"imagesize": {
"hashes": [
"sha256:3f349de3eb99145973fefb7dbe38554414e5c30abd0c8e4b970a7c9d09f3a1d8",
"sha256:f3832918bc3c66617f92e35f5d70729187676313caa60c187eb0f28b8fe5e3b5"
],
"version": "==1.1.0"
},
"importlib-metadata": {
"hashes": [
"sha256:6dfd58dfe281e8d240937776065dd3624ad5469c835248219bd16cf2e12dbeb7",
"sha256:cb6ee23b46173539939964df59d3d72c3e0c1b5d54b84f1d8a7e912fe43612db"
],
"version": "==0.18"
},
"jinja2": {
"hashes": [
"sha256:065c4f02ebe7f7cf559e49ee5a95fb800a9e4528727aec6f24402a5374c65013",
"sha256:14dd6caf1527abb21f08f86c784eac40853ba93edb79552aa1e4b8aef1b61c7b"
],
"version": "==2.10.1"
},
"markupsafe": {
"hashes": [
"sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473",
"sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161",
"sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235",
"sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5",
"sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff",
"sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b",
"sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1",
"sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e",
"sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183",
"sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66",
"sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1",
"sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1",
"sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e",
"sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b",
"sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905",
"sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735",
"sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d",
"sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e",
"sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d",
"sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c",
"sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21",
"sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2",
"sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5",
"sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b",
"sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6",
"sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f",
"sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f",
"sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"
],
"version": "==1.1.1"
},
"more-itertools": {
"hashes": [
"sha256:2112d2ca570bb7c3e53ea1a35cd5df42bb0fd10c45f0fb97178679c3c03d64c7",
"sha256:c3e4748ba1aad8dba30a4886b0b1a2004f9a863837b8654e7059eebf727afa5a"
],
"markers": "python_version > '2.7'",
"version": "==7.0.0"
},
"packaging": {
"hashes": [
"sha256:0c98a5d0be38ed775798ece1b9727178c4469d9c3b4ada66e8e6b7849f8732af",
"sha256:9e1cbf8c12b1f1ce0bb5344b8d7ecf66a6f8a6e91bcb0c84593ed6d3ab5c4ab3"
],
"version": "==19.0"
},
"pluggy": {
"hashes": [
"sha256:0825a152ac059776623854c1543d65a4ad408eb3d33ee114dff91e57ec6ae6fc",
"sha256:b9817417e95936bf75d85d3f8767f7df6cdde751fc40aed3bb3074cbcb77757c"
],
"version": "==0.12.0"
},
"py": {
"hashes": [
"sha256:64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa",
"sha256:dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53"
],
"version": "==1.8.0"
},
"pygments": {
"hashes": [
"sha256:71e430bc85c88a430f000ac1d9b331d2407f681d6f6aec95e8bcfbc3df5b0127",
"sha256:881c4c157e45f30af185c1ffe8d549d48ac9127433f2c380c24b84572ad66297"
],
"version": "==2.4.2"
},
"pyparsing": {
"hashes": [
"sha256:1873c03321fc118f4e9746baf201ff990ceb915f433f23b395f5580d1840cb2a",
"sha256:9b6323ef4ab914af344ba97510e966d64ba91055d6b9afa6b30799340e89cc03"
],
"version": "==2.4.0"
},
"pytest": {
"hashes": [
"sha256:4a784f1d4f2ef198fe9b7aef793e9fa1a3b2f84e822d9b3a64a181293a572d45",
"sha256:926855726d8ae8371803f7b2e6ec0a69953d9c6311fa7c3b6c1b929ff92d27da"
],
"index": "pypi",
"version": "==4.6.3"
},
"pytest-cov": {
"hashes": [
"sha256:2b097cde81a302e1047331b48cadacf23577e431b61e9c6f49a1170bbe3d3da6",
"sha256:e00ea4fdde970725482f1f35630d12f074e121a23801aabf2ae154ec6bdd343a"
],
"index": "pypi",
"version": "==2.7.1"
},
"pytz": {
"hashes": [
"sha256:303879e36b721603cc54604edcac9d20401bdbe31e1e4fdee5b9f98d5d31dfda",
"sha256:d747dd3d23d77ef44c6a3526e274af6efeb0a6f1afd5a69ba4d5be4098c8e141"
],
"version": "==2019.1"
},
"pyyaml": {
"hashes": [
"sha256:57acc1d8533cbe51f6662a55434f0dbecfa2b9eaf115bede8f6fd00115a0c0d3",
"sha256:588c94b3d16b76cfed8e0be54932e5729cc185caffaa5a451e7ad2f7ed8b4043",
"sha256:68c8dd247f29f9a0d09375c9c6b8fdc64b60810ebf07ba4cdd64ceee3a58c7b7",
"sha256:70d9818f1c9cd5c48bb87804f2efc8692f1023dac7f1a1a5c61d454043c1d265",
"sha256:86a93cccd50f8c125286e637328ff4eef108400dd7089b46a7be3445eecfa391",
"sha256:a0f329125a926876f647c9fa0ef32801587a12328b4a3c741270464e3e4fa778",
"sha256:a3c252ab0fa1bb0d5a3f6449a4826732f3eb6c0270925548cac342bc9b22c225",
"sha256:b4bb4d3f5e232425e25dda21c070ce05168a786ac9eda43768ab7f3ac2770955",
"sha256:cd0618c5ba5bda5f4039b9398bb7fb6a317bb8298218c3de25c47c4740e4b95e",
"sha256:ceacb9e5f8474dcf45b940578591c7f3d960e82f926c707788a570b51ba59190",
"sha256:fe6a88094b64132c4bb3b631412e90032e8cfe9745a58370462240b8cb7553cd"
],
"index": "pypi",
"version": "==5.1.1"
},
"recommonmark": {
"hashes": [
"sha256:a520b8d25071a51ae23a27cf6252f2fe387f51bdc913390d83b2b50617f5bb48",
"sha256:c85228b9b7aea7157662520e74b4e8791c5eacd375332ec68381b52bf10165be"
],
"index": "pypi",
"version": "==0.5.0"
},
"requests": {
"hashes": [
"sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4",
"sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31"
],
"version": "==2.22.0"
},
"six": {
"hashes": [
"sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c",
"sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"
],
"version": "==1.12.0"
},
"snowballstemmer": {
"hashes": [
"sha256:919f26a68b2c17a7634da993d91339e288964f93c274f1343e3bbbe2096e1128",
"sha256:9f3bcd3c401c3e862ec0ebe6d2c069ebc012ce142cce209c098ccb5b09136e89"
],
"version": "==1.2.1"
},
"sphinx": {
"hashes": [
"sha256:22538e1bbe62b407cf5a8aabe1bb15848aa66bb79559f42f5202bbce6b757a69",
"sha256:f9a79e746b87921cabc3baa375199c6076d1270cee53915dbd24fdbeaaacc427"
],
"index": "pypi",
"version": "==2.1.2"
},
"sphinxcontrib-applehelp": {
"hashes": [
"sha256:edaa0ab2b2bc74403149cb0209d6775c96de797dfd5b5e2a71981309efab3897",
"sha256:fb8dee85af95e5c30c91f10e7eb3c8967308518e0f7488a2828ef7bc191d0d5d"
],
"version": "==1.0.1"
},
"sphinxcontrib-autoprogram": {
"hashes": [
"sha256:5c1af55d44c0a4301807eb42174a0f474d97decc137169c7c9305e56ed4d3000",
"sha256:7ec6bdf235b491dc693d1a72fb7f9f734db69e29b81333435efb41f09f9bbeef"
],
"index": "pypi",
"version": "==0.1.5"
},
"sphinxcontrib-devhelp": {
"hashes": [
"sha256:6c64b077937330a9128a4da74586e8c2130262f014689b4b89e2d08ee7294a34",
"sha256:9512ecb00a2b0821a146736b39f7aeb90759834b07e81e8cc23a9c70bacb9981"
],
"version": "==1.0.1"
},
"sphinxcontrib-htmlhelp": {
"hashes": [
"sha256:4670f99f8951bd78cd4ad2ab962f798f5618b17675c35c5ac3b2132a14ea8422",
"sha256:d4fd39a65a625c9df86d7fa8a2d9f3cd8299a3a4b15db63b50aac9e161d8eff7"
],
"version": "==1.0.2"
},
"sphinxcontrib-jsmath": {
"hashes": [
"sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178",
"sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"
],
"version": "==1.0.1"
},
"sphinxcontrib-qthelp": {
"hashes": [
"sha256:513049b93031beb1f57d4daea74068a4feb77aa5630f856fcff2e50de14e9a20",
"sha256:79465ce11ae5694ff165becda529a600c754f4bc459778778c7017374d4d406f"
],
"version": "==1.0.2"
},
"sphinxcontrib-serializinghtml": {
"hashes": [
"sha256:c0efb33f8052c04fd7a26c0a07f1678e8512e0faec19f4aa8f2473a8b81d5227",
"sha256:db6615af393650bf1151a6cd39120c29abaf93cc60db8c48eb2dddbfdc3a9768"
],
"version": "==1.1.3"
},
"urllib3": {
"hashes": [
"sha256:b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1",
"sha256:dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232"
],
"version": "==1.25.3"
},
"wcwidth": {
"hashes": [
"sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e",
"sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c"
],
"version": "==0.1.7"
},
"wheel": {
"hashes": [
"sha256:5e79117472686ac0c4aef5bad5172ea73a1c2d1646b808c35926bd26bdfb0c08",
"sha256:62fcfa03d45b5b722539ccbc07b190e4bfff4bb9e3a4d470dd9f6a0981002565"
],
"index": "pypi",
"version": "==0.33.4"
},
"zipp": {
"hashes": [
"sha256:8c1019c6aad13642199fbe458275ad6a84907634cc9f0989877ccc4a2840139d",
"sha256:ca943a7e809cc12257001ccfb99e3563da9af99d52f261725e96dfe0f9275bc3"
],
"version": "==0.5.1"
}
}
}

Wyświetl plik

@ -1,9 +1,9 @@
# <a href="https://github.com/jupyterhub/repo2docker"><img src="https://raw.githubusercontent.com/jupyterhub/repo2docker/3fa7444fca6ae2b51e590cbc9d83baf92738ca2a/docs/source/_static/images/repo2docker.png" height="48px" /> repo2docker</a>
# <a href="https://github.com/jupyterhub/repo2docker"><img src="https://raw.githubusercontent.com/jupyterhub/repo2docker/8731ecf0967cc5fde028c456f2b92be651ebbc18/docs/source/_static/images/repo2docker.png" height="48px" /> repo2docker</a>
[![Deploy Status](https://travis-ci.org/jupyterhub/repo2docker.svg?branch=master)](https://travis-ci.org/jupyterhub/repo2docker)
[![Build Status](https://github.com/jupyterhub/repo2docker/workflows/Continuous%20Integration/badge.svg)](https://github.com/jupyterhub/repo2docker/actions)
[![Build Status](https://github.com/jupyterhub/repo2docker/workflows/Test/badge.svg)](https://github.com/jupyterhub/repo2docker/actions)
[![Documentation Status](https://readthedocs.org/projects/repo2docker/badge/?version=latest)](http://repo2docker.readthedocs.io/en/latest/?badge=latest)
[![Contribute](https://img.shields.io/badge/I_want_to_contribute!-grey?logo=jupyter)](https://repo2docker.readthedocs.io/en/latest/contributing/contributing.html)
[![Docker Repository on Quay](https://img.shields.io/badge/quay.io-container-green "Docker Repository on Quay")](https://quay.io/repository/jupyterhub/repo2docker?tab=tags)
`repo2docker` fetches a git repository and builds a container image based on
the configuration files found in the repository.
@ -16,8 +16,22 @@ For support questions please search or post to https://discourse.jupyter.org/c/b
See the [contributing guide](CONTRIBUTING.md) for information on contributing to
repo2docker.
---
Please note that this repository is participating in a study into sustainability
of open source projects. Data will be gathered about this repository for
approximately the next 12 months, starting from 2021-06-11.
Data collected will include number of contributors, number of PRs, time taken to
close/merge these PRs, and issues closed.
For more information, please visit
[our informational page](https://sustainable-open-science-and-software.github.io/) or download our [participant information sheet](https://sustainable-open-science-and-software.github.io/assets/PIS_sustainable_software.pdf).
---
## Using repo2docker
### Prerequisites
1. Docker to build & run the repositories. The [community edition](https://store.docker.com/search?type=edition&offering=community)
@ -70,16 +84,19 @@ something like:
If you copy paste that URL into your browser you will see a Jupyter Notebook
with the contents of the repository you had just built!
For more information on how to use ``repo2docker``, see the
For more information on how to use `repo2docker`, see the
[usage guide](http://repo2docker.readthedocs.io/en/latest/usage.html).
## Repository specifications
Repo2Docker looks for configuration files in the source repository to
determine how the Docker image should be built. For a list of the configuration
files that ``repo2docker`` can use, see the
files that `repo2docker` can use, see the
[complete list of configuration files](https://repo2docker.readthedocs.io/en/latest/config_files.html).
The philosophy of repo2docker is inspired by
[Heroku Build Packs](https://devcenter.heroku.com/articles/buildpacks).
## Docker Image
Repo2Docker can be run inside a Docker container if access to the Docker Daemon is provided, for example see [BinderHub](https://github.com/jupyterhub/binderhub). Docker images are [published to quay.io](https://quay.io/repository/jupyterhub/repo2docker?tab=tags). The old [Docker Hub image](https://hub.docker.com/r/jupyter/repo2docker) is no longer supported.

1
RELEASE.md 100644
Wyświetl plik

@ -0,0 +1 @@
See https://repo2docker.readthedocs.io/en/latest/contributing/tasks.html#creating-a-release

Wyświetl plik

@ -1,8 +1,7 @@
# Note that there is also a Pipfile for this project if you are updating this
# file do not forget to update the Pipfile accordingly
pyyaml
pytest>=4.6
wheel
pytest-cov
build
conda-lock
pre-commit
pytest-cov
pytest>=7
pyyaml
requests_mock

Wyświetl plik

@ -1,20 +1,38 @@
# Minimal makefile for Sphinx documentation
#
# Makefile for Sphinx documentation generated by sphinx-quickstart
# ----------------------------------------------------------------------------
# You can set these variables from the command line.
SPHINXOPTS = -W
SPHINXBUILD = python3 -msphinx
SPHINXPROJ = repo2docker
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = source
BUILDDIR = build
BUILDDIR = _build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
# "make mode" option.
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS)
# Manually added commands
# ----------------------------------------------------------------------------
# For local development:
# - builds and rebuilds html on changes to source
# - starts a livereload enabled webserver and opens up a browser
devenv:
sphinx-autobuild -b html --open-browser "$(SOURCEDIR)" "$(BUILDDIR)/html" $(SPHINXOPTS)
# For local development and CI:
# - verifies that links are valid
linkcheck:
$(SPHINXBUILD) -b linkcheck "$(SOURCEDIR)" "$(BUILDDIR)/linkcheck" $(SPHINXOPTS)
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."

Wyświetl plik

@ -1,6 +0,0 @@
# Note that there is also a Pipfile for this project if you are updating this
# file do not forget to update the Pipfile accordingly
sphinx>=1.4, !=1.5.4
recommonmark
sphinxcontrib-autoprogram
pydata-sphinx-theme

Wyświetl plik

@ -5,32 +5,51 @@ pushd %~dp0
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=python -msphinx
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=source
set BUILDDIR=build
set SPHINXPROJ=repo2docker
set BUILDDIR=_build
if "%1" == "" goto help
if "%1" == "devenv" goto devenv
if "%1" == "linkcheck" goto linkcheck
goto default
:default
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The Sphinx module was not found. Make sure you have Sphinx installed,
echo.then set the SPHINXBUILD environment variable to point to the full
echo.path of the 'sphinx-build' executable. Alternatively you may add the
echo.Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
echo.The 'sphinx-build' command was not found. Open and read README.md!
exit /b 1
)
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
%SPHINXBUILD% -M %1 "%SOURCEDIR%" "%BUILDDIR%" %SPHINXOPTS%
goto end
:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
%SPHINXBUILD% -M help "%SOURCEDIR%" "%BUILDDIR%" %SPHINXOPTS%
goto end
:devenv
sphinx-autobuild >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-autobuild' command was not found. Open and read README.md!
exit /b 1
)
sphinx-autobuild -b html --open-browser "%SOURCEDIR%" "%BUILDDIR%/html" %SPHINXOPTS%
goto end
:linkcheck
%SPHINXBUILD% -b linkcheck "%SOURCEDIR%" "%BUILDDIR%/linkcheck" %SPHINXOPTS%
echo.
echo.Link check complete; look for any errors in the above output
echo.or in "%BUILDDIR%/linkcheck/output.txt".
goto end
:end
popd

Wyświetl plik

@ -0,0 +1,7 @@
myst-parser>=0.18
pydata-sphinx-theme>=0.11
sphinx-autobuild
sphinx-copybutton
sphinxcontrib-autoprogram>=0.1.7
sphinxext-opengraph
sphinxext-rediraffe

Wyświetl plik

@ -3,9 +3,7 @@
This is a living document talking about the architecture of repo2docker
from various perspectives.
```eval_rst
.. _buildpacks:
```
(buildpacks)=
## Buildpacks
@ -60,7 +58,7 @@ and basic notebook packages (from `repo2docker/buildpacks/conda/environment.yml`
to be the same for most repositories built with `CondaBuildPack`, so we want to use
[docker layer caching](https://thenewstack.io/understanding-the-docker-cache-for-faster-builds/) as
much as possible for performance reasons. Next time a repository is built with `CondaBuildPack`,
we can skip straight to the **copy** step (since the base environment docker image *layers* have
we can skip straight to the **copy** step (since the base environment docker image _layers_ have
already been built and cached).
The `get_build_scripts` and `get_build_script_files` methods are primarily used for this.
@ -68,11 +66,11 @@ The `get_build_scripts` and `get_build_script_files` methods are primarily used
and `get_build_script_files` is used to copy specific scripts (such as a conda installer) into
the image to be run as pat of `get_build_scripts`. Code in either has following constraints:
1. You can *not* use the contents of repository in them, since this happens before the repository
1. You can _not_ use the contents of repository in them, since this happens before the repository
is copied into the image. For example, `pip install -r requirements.txt` will not work,
since there's no `requirements.txt` inside the image at this point. This is an explicit
design decision, to enable better layer caching.
2. You *may*, however, read the contents of the repository and modify the scripts emitted based
2. You _may_, however, read the contents of the repository and modify the scripts emitted based
on that! For example, in `CondaBuildPack`, if there's Python 2 specified in `environment.yml`,
a different kind of environment is set up. The reading of the `environment.yml` is performed
in the BuildPack itself, and not in the scripts returned by `get_build_scripts`. This is fine.
@ -121,7 +119,7 @@ a path to a repository. This might be a local path or a URL. Upon being called,
`repo2docker` will loop through all ContentProviders and perform the following
commands:
* Run the `detect()` method on the repository path given to `repo2docker`. This
- Run the `detect()` method on the repository path given to `repo2docker`. This
should return any value other than `None` if the path matches what the ContentProvider is looking
for.
@ -129,12 +127,11 @@ commands:
> checks whether the argument is a valid local path. If so, then `detect(`
> returns a dictionary: `{'path': source}` which defines the path to the repository.
> This path is used by `fetch()` to check that it matches the output directory.
* If `detect()` returns something other than `None`, run `fetch()` with the
- If `detect()` returns something other than `None`, run `fetch()` with the
returned value as its argument. This should
result in the contents of the repository being placed locally to a folder.
For more information on ContentProviders, take a look at
[the ContentProvider base class](https://github.com/jupyterhub/repo2docker/blob/80b979f8580ddef184d2ba7d354e7a833cfa38a4/repo2docker/contentproviders/base.py#L16-L60)
which has more explanation.

Wyświetl plik

@ -0,0 +1,612 @@
# Changelog
## Version 2024.03.0
([full changelog](https://github.com/jupyterhub/repo2docker/compare/2023.06.0...2024.01.03))
### New features added
- Implement support for dockerignore and containerignore [#1205](https://github.com/jupyterhub/repo2docker/pull/1205) ([@sgaist](https://github.com/sgaist))
### Enhancements made
- rstudio: log-level info to stderr [#1317](https://github.com/jupyterhub/repo2docker/pull/1317) ([@manics](https://github.com/manics))
### Bugs fixed
- Get Zenodo working again [#1315](https://github.com/jupyterhub/repo2docker/pull/1315) ([@manics](https://github.com/manics))
### Maintenance and upkeep improvements
- Update mamba to 1.5.7 from 1.5.1, and conda to 24.3.0 from 23.7.4 [#1337](https://github.com/jupyterhub/repo2docker/pull/1337) ([@SylvainCorlay](https://github.com/SylvainCorlay))
- Dockerfile: bump alpine from 3.17 to 3.19 and Python 3.10 to 3.11 [#1332](https://github.com/jupyterhub/repo2docker/pull/1332) ([@yuvipanda](https://github.com/yuvipanda))
- Upgrade base image from to Ubuntu 22.04 from 18.04 [#1287](https://github.com/jupyterhub/repo2docker/pull/1287) ([@yuvipanda](https://github.com/yuvipanda))
### Documentation improvements
- Add Ubuntu 22.04 upgrade guide [#1309](https://github.com/jupyterhub/repo2docker/pull/1309) ([@manics](https://github.com/manics))
- Update version of R available [#1288](https://github.com/jupyterhub/repo2docker/pull/1288) ([@yuvipanda](https://github.com/yuvipanda))
- Add changelog for 2023.06.0 [#1286](https://github.com/jupyterhub/repo2docker/pull/1286) ([@yuvipanda](https://github.com/yuvipanda))
### Other merged PRs
- [pre-commit.ci] pre-commit autoupdate [#1333](https://github.com/jupyterhub/repo2docker/pull/1333) ([@pre-commit-ci](https://github.com/pre-commit-ci))
- build(deps): bump codecov/codecov-action from 3 to 4 [#1331](https://github.com/jupyterhub/repo2docker/pull/1331) ([@dependabot](https://github.com/dependabot))
- Support pytest=8 [#1330](https://github.com/jupyterhub/repo2docker/pull/1330) ([@manics](https://github.com/manics))
- Update versioneer [#1329](https://github.com/jupyterhub/repo2docker/pull/1329) ([@TimoRoth](https://github.com/TimoRoth))
- build(deps): bump actions/setup-python from 4 to 5 [#1328](https://github.com/jupyterhub/repo2docker/pull/1328) ([@dependabot](https://github.com/dependabot))
- build(deps): bump actions/upload-artifact from 3 to 4 [#1327](https://github.com/jupyterhub/repo2docker/pull/1327) ([@dependabot](https://github.com/dependabot))
- Add NYCU Dataverse [#1326](https://github.com/jupyterhub/repo2docker/pull/1326) ([@twtw](https://github.com/twtw))
- [pre-commit.ci] pre-commit autoupdate [#1322](https://github.com/jupyterhub/repo2docker/pull/1322) ([@pre-commit-ci](https://github.com/pre-commit-ci))
- New domain for Edmond MPG repository [#1321](https://github.com/jupyterhub/repo2docker/pull/1321) ([@haarli](https://github.com/haarli))
- [pre-commit.ci] pre-commit autoupdate [#1319](https://github.com/jupyterhub/repo2docker/pull/1319) ([@pre-commit-ci](https://github.com/pre-commit-ci))
- [MRG] docs: Add base_image parameter example. [#1318](https://github.com/jupyterhub/repo2docker/pull/1318) ([@hiroyuki-sato](https://github.com/hiroyuki-sato))
- Upgrade mamba and refreeze [#1313](https://github.com/jupyterhub/repo2docker/pull/1313) ([@manics](https://github.com/manics))
- r: Bump version of rsession-proxy [#1310](https://github.com/jupyterhub/repo2docker/pull/1310) ([@yuvipanda](https://github.com/yuvipanda))
- build(deps): bump actions/checkout from 3 to 4 [#1308](https://github.com/jupyterhub/repo2docker/pull/1308) ([@dependabot](https://github.com/dependabot))
- build(deps): bump docker/build-push-action from 4 to 5 [#1307](https://github.com/jupyterhub/repo2docker/pull/1307) ([@dependabot](https://github.com/dependabot))
- build(deps): bump docker/setup-qemu-action from 2 to 3 [#1306](https://github.com/jupyterhub/repo2docker/pull/1306) ([@dependabot](https://github.com/dependabot))
- build(deps): bump docker/setup-buildx-action from 2 to 3 [#1305](https://github.com/jupyterhub/repo2docker/pull/1305) ([@dependabot](https://github.com/dependabot))
- Update conda and mamba [#1299](https://github.com/jupyterhub/repo2docker/pull/1299) ([@SylvainCorlay](https://github.com/SylvainCorlay))
- Point to official documentation for handling JupyterLab workspace [#1294](https://github.com/jupyterhub/repo2docker/pull/1294) ([@fcollonval](https://github.com/fcollonval))
- Fix rstudio-build selection [#1293](https://github.com/jupyterhub/repo2docker/pull/1293) ([@yamaton](https://github.com/yamaton))
- [pre-commit.ci] pre-commit autoupdate [#1291](https://github.com/jupyterhub/repo2docker/pull/1291) ([@pre-commit-ci](https://github.com/pre-commit-ci))
### Contributors to this release
([GitHub contributors page for this release](https://github.com/jupyterhub/repo2docker/graphs/contributors?from=2023-06-13&to=2024-03-28&type=c))
[@annakrystalli](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Aannakrystalli+updated%3A2023-06-13..2024-03-28&type=Issues) | [@betatim](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Abetatim+updated%3A2023-06-13..2024-03-28&type=Issues) | [@bollwyvl](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Abollwyvl+updated%3A2023-06-13..2024-03-28&type=Issues) | [@consideRatio](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3AconsideRatio+updated%3A2023-06-13..2024-03-28&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Adependabot+updated%3A2023-06-13..2024-03-28&type=Issues) | [@dolfinus](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Adolfinus+updated%3A2023-06-13..2024-03-28&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Afcollonval+updated%3A2023-06-13..2024-03-28&type=Issues) | [@felder](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Afelder+updated%3A2023-06-13..2024-03-28&type=Issues) | [@haarli](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Ahaarli+updated%3A2023-06-13..2024-03-28&type=Issues) | [@hiroyuki-sato](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Ahiroyuki-sato+updated%3A2023-06-13..2024-03-28&type=Issues) | [@manics](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Amanics+updated%3A2023-06-13..2024-03-28&type=Issues) | [@mathieuboudreau](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Amathieuboudreau+updated%3A2023-06-13..2024-03-28&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Aminrk+updated%3A2023-06-13..2024-03-28&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Apre-commit-ci+updated%3A2023-06-13..2024-03-28&type=Issues) | [@rgaiacs](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Argaiacs+updated%3A2023-06-13..2024-03-28&type=Issues) | [@ryanlovett](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Aryanlovett+updated%3A2023-06-13..2024-03-28&type=Issues) | [@sgaist](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Asgaist+updated%3A2023-06-13..2024-03-28&type=Issues) | [@SylvainCorlay](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3ASylvainCorlay+updated%3A2023-06-13..2024-03-28&type=Issues) | [@TimoRoth](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3ATimoRoth+updated%3A2023-06-13..2024-03-28&type=Issues) | [@twtw](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Atwtw+updated%3A2023-06-13..2024-03-28&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Awelcome+updated%3A2023-06-13..2024-03-28&type=Issues) | [@yamaton](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Ayamaton+updated%3A2023-06-13..2024-03-28&type=Issues) | [@yuvipanda](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Ayuvipanda+updated%3A2023-06-13..2024-03-28&type=Issues)
## Version 2023.06.0
([full changelog](https://github.com/jupyterhub/repo2docker/compare/2022.10.0...2023.06.0))
### Breaking changes
- JupyterHub version installed by default upgraded from 1.5 to 3.1.1
- Microsoft [killed MRAN](https://techcommunity.microsoft.com/t5/azure-sql-blog/microsoft-r-application-network-retirement/ba-p/3707161), so all package snapshots now come from [Posit Package Manager](https://packagemanager.posit.co/client/). Snapshots from before 2018-12-07 are now no longer available, so you might have to update the snapshot date in your `runtime.txt`.
### New features added
- Support Python 3.11 and upgrade jupyterhub from 1.5.0 to 3.1.1 [#1239](https://github.com/jupyterhub/repo2docker/pull/1239) ([@minrk](https://github.com/minrk))
- allow user to specify a single port with default command [#918](https://github.com/jupyterhub/repo2docker/pull/918) ([@minrk](https://github.com/minrk))
- Let `FROM <base_image>` in the Dockerfile template be configurable [#909](https://github.com/jupyterhub/repo2docker/pull/909) ([@yuvipanda](https://github.com/yuvipanda))
### Enhancements made
- Update to mamba 1.4.0 [#1256](https://github.com/jupyterhub/repo2docker/pull/1256) ([@SylvainCorlay](https://github.com/SylvainCorlay))
- [MRG] download original file formats from Dataverse #1242 [#1253](https://github.com/jupyterhub/repo2docker/pull/1253) ([@pdurbin](https://github.com/pdurbin))
- Add optional registry credentials to push() [#1245](https://github.com/jupyterhub/repo2docker/pull/1245) ([@manics](https://github.com/manics))
- Add ARM64 support where possible [#1228](https://github.com/jupyterhub/repo2docker/pull/1228) ([@manics](https://github.com/manics))
- Switch default python to 3.10 [#1219](https://github.com/jupyterhub/repo2docker/pull/1219) ([@yuvipanda](https://github.com/yuvipanda))
### Bugs fixed
- Microsoft killed MRAN, stop relying on it [#1285](https://github.com/jupyterhub/repo2docker/pull/1285) ([@minrk](https://github.com/minrk))
- Update the location of R packagemanager [#1273](https://github.com/jupyterhub/repo2docker/pull/1273) ([@Xarthisius](https://github.com/Xarthisius))
- missing `f` in julia fetch error f-string [#1264](https://github.com/jupyterhub/repo2docker/pull/1264) ([@minrk](https://github.com/minrk))
- avoid duplicate log statements by memoizing getters [#1248](https://github.com/jupyterhub/repo2docker/pull/1248) ([@minrk](https://github.com/minrk))
- Add Conda env library path to RStudio configuration [#1237](https://github.com/jupyterhub/repo2docker/pull/1237) ([@TimStewartJ](https://github.com/TimStewartJ))
- Create Julia projects based on binder/Project.toml when found [#1216](https://github.com/jupyterhub/repo2docker/pull/1216) ([@frankier](https://github.com/frankier))
- Allow REPO_DIR to be a non-existing folder by creating it and providing the user with permissions [#976](https://github.com/jupyterhub/repo2docker/pull/976) ([@bollwyvl](https://github.com/bollwyvl))
### Maintenance and upkeep improvements
- Microsoft killed MRAN, stop relying on it [#1285](https://github.com/jupyterhub/repo2docker/pull/1285) ([@minrk](https://github.com/minrk))
- Relax pins to major versions and refreeze, introduce explicit jupyter_server v1 pin [#1283](https://github.com/jupyterhub/repo2docker/pull/1283) ([@consideRatio](https://github.com/consideRatio))
- fix github link templates [#1276](https://github.com/jupyterhub/repo2docker/pull/1276) ([@minrk](https://github.com/minrk))
- dependabot: monthly updates of github actions [#1262](https://github.com/jupyterhub/repo2docker/pull/1262) ([@consideRatio](https://github.com/consideRatio))
- Remove deprecated nteract_on_jupyter [#1259](https://github.com/jupyterhub/repo2docker/pull/1259) ([@yuvipanda](https://github.com/yuvipanda))
- disable codecov failures [#1251](https://github.com/jupyterhub/repo2docker/pull/1251) ([@minrk](https://github.com/minrk))
- Support Python 3.11 and upgrade jupyterhub from 1.5.0 to 3.1.1 [#1239](https://github.com/jupyterhub/repo2docker/pull/1239) ([@minrk](https://github.com/minrk))
- pre-commit update to fix ci [#1238](https://github.com/jupyterhub/repo2docker/pull/1238) ([@minrk](https://github.com/minrk))
- Upgrade to mamba 1.1 and enable rich SAT error messages [#1232](https://github.com/jupyterhub/repo2docker/pull/1232) ([@SylvainCorlay](https://github.com/SylvainCorlay))
- Upgrade to mamba 1.0 [#1213](https://github.com/jupyterhub/repo2docker/pull/1213) ([@SylvainCorlay](https://github.com/SylvainCorlay))
- docker image: update alpine to 3.16 [#1212](https://github.com/jupyterhub/repo2docker/pull/1212) ([@consideRatio](https://github.com/consideRatio))
- reconcile CLI/config priority [#1211](https://github.com/jupyterhub/repo2docker/pull/1211) ([@minrk](https://github.com/minrk))
- pipfile: pass --clear flag, and do it separetely to not be ignored [#1208](https://github.com/jupyterhub/repo2docker/pull/1208) ([@consideRatio](https://github.com/consideRatio))
- run submodule test over https [#1204](https://github.com/jupyterhub/repo2docker/pull/1204) ([@minrk](https://github.com/minrk))
- pre-commit: add pyupgrade, isort, and prettier for .md files [#1202](https://github.com/jupyterhub/repo2docker/pull/1202) ([@consideRatio](https://github.com/consideRatio))
- Create wheels with the build package, stop calling setup.py directly [#1199](https://github.com/jupyterhub/repo2docker/pull/1199) ([@consideRatio](https://github.com/consideRatio))
- Add check-tmp step to local repo tests [#1126](https://github.com/jupyterhub/repo2docker/pull/1126) ([@minrk](https://github.com/minrk))
- Set default, type, and help method for engine in argparse [#1073](https://github.com/jupyterhub/repo2docker/pull/1073) ([@jgarte](https://github.com/jgarte))
### Documentation improvements
- Fix links to jupyterlab-demo postBuild file [#1282](https://github.com/jupyterhub/repo2docker/pull/1282) ([@fcollonval](https://github.com/fcollonval))
- Recreate changelog as markdown [#1281](https://github.com/jupyterhub/repo2docker/pull/1281) ([@yuvipanda](https://github.com/yuvipanda))
- fix github link templates [#1276](https://github.com/jupyterhub/repo2docker/pull/1276) ([@minrk](https://github.com/minrk))
- update docs for default and supported Python versions [#1250](https://github.com/jupyterhub/repo2docker/pull/1250) ([@minrk](https://github.com/minrk))
- docs: add devenv, linkcheck, and refresh misc config etc [#1197](https://github.com/jupyterhub/repo2docker/pull/1197) ([@consideRatio](https://github.com/consideRatio))
### Other merged PRs
- build(deps): bump pypa/gh-action-pypi-publish from 1.8.5 to (edit) release/v1 [#1279](https://github.com/jupyterhub/repo2docker/pull/1279) ([@dependabot](https://github.com/dependabot))
- [pre-commit.ci] pre-commit autoupdate [#1270](https://github.com/jupyterhub/repo2docker/pull/1270) ([@pre-commit-ci](https://github.com/pre-commit-ci))
- build(deps): bump pypa/gh-action-pypi-publish from 1.8.4 to 1.8.5 [#1263](https://github.com/jupyterhub/repo2docker/pull/1263) ([@dependabot](https://github.com/dependabot))
- [pre-commit.ci] pre-commit autoupdate [#1261](https://github.com/jupyterhub/repo2docker/pull/1261) ([@pre-commit-ci](https://github.com/pre-commit-ci))
- build(deps): bump pypa/gh-action-pypi-publish from 1.8.3 to 1.8.4 [#1260](https://github.com/jupyterhub/repo2docker/pull/1260) ([@dependabot](https://github.com/dependabot))
- build(deps): bump pypa/gh-action-pypi-publish from 1.6.4 to 1.8.3 [#1257](https://github.com/jupyterhub/repo2docker/pull/1257) ([@dependabot](https://github.com/dependabot))
- [pre-commit.ci] pre-commit autoupdate [#1252](https://github.com/jupyterhub/repo2docker/pull/1252) ([@pre-commit-ci](https://github.com/pre-commit-ci))
- Ensure `BuildPack.python_version` is specified [#1249](https://github.com/jupyterhub/repo2docker/pull/1249) ([@minrk](https://github.com/minrk))
- Update install-nix.bash [#1244](https://github.com/jupyterhub/repo2docker/pull/1244) ([@robertodr](https://github.com/robertodr))
- build(deps): bump docker/build-push-action from 3 to 4 [#1241](https://github.com/jupyterhub/repo2docker/pull/1241) ([@dependabot](https://github.com/dependabot))
- Update to `jupyter-resource-usage==0.7.0` [#1236](https://github.com/jupyterhub/repo2docker/pull/1236) ([@jtpio](https://github.com/jtpio))
- Also install dev requirements on Gitpod [#1235](https://github.com/jupyterhub/repo2docker/pull/1235) ([@jtpio](https://github.com/jtpio))
- Bump to Node 18 [#1234](https://github.com/jupyterhub/repo2docker/pull/1234) ([@jtpio](https://github.com/jtpio))
- [pre-commit.ci] pre-commit autoupdate [#1229](https://github.com/jupyterhub/repo2docker/pull/1229) ([@pre-commit-ci](https://github.com/pre-commit-ci))
- Quick-fix for Docker image build [#1227](https://github.com/jupyterhub/repo2docker/pull/1227) ([@manics](https://github.com/manics))
- Fix tests/external/reproductions.repos.yaml [#1226](https://github.com/jupyterhub/repo2docker/pull/1226) ([@manics](https://github.com/manics))
- Fix typo [#1224](https://github.com/jupyterhub/repo2docker/pull/1224) ([@fkohrt](https://github.com/fkohrt))
- build(deps): bump pypa/gh-action-pypi-publish from 1.5.1 to 1.6.4 [#1223](https://github.com/jupyterhub/repo2docker/pull/1223) ([@dependabot](https://github.com/dependabot))
- [pre-commit.ci] pre-commit autoupdate [#1222](https://github.com/jupyterhub/repo2docker/pull/1222) ([@pre-commit-ci](https://github.com/pre-commit-ci))
- ci: cleanup no longer used test logic related to memlimit [#1218](https://github.com/jupyterhub/repo2docker/pull/1218) ([@consideRatio](https://github.com/consideRatio))
- [pre-commit.ci] pre-commit autoupdate [#1217](https://github.com/jupyterhub/repo2docker/pull/1217) ([@pre-commit-ci](https://github.com/pre-commit-ci))
- ci: use non-deprecated codecov uploader [#1209](https://github.com/jupyterhub/repo2docker/pull/1209) ([@consideRatio](https://github.com/consideRatio))
- ci: stop running pre-commit in gha, rely on pre-commit.ci [#1200](https://github.com/jupyterhub/repo2docker/pull/1200) ([@consideRatio](https://github.com/consideRatio))
- Initial changelog for 2022.10.0 [#1194](https://github.com/jupyterhub/repo2docker/pull/1194) ([@manics](https://github.com/manics))
### Contributors to this release
([GitHub contributors page for this release](https://github.com/jupyterhub/repo2docker/graphs/contributors?from=2022-10-18&to=2023-06-13&type=c))
[@AliMirlou](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3AAliMirlou+updated%3A2022-10-18..2023-06-13&type=Issues) | [@betatim](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Abetatim+updated%3A2022-10-18..2023-06-13&type=Issues) | [@bollwyvl](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Abollwyvl+updated%3A2022-10-18..2023-06-13&type=Issues) | [@choldgraf](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Acholdgraf+updated%3A2022-10-18..2023-06-13&type=Issues) | [@consideRatio](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3AconsideRatio+updated%3A2022-10-18..2023-06-13&type=Issues) | [@craig-willis](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Acraig-willis+updated%3A2022-10-18..2023-06-13&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Adependabot+updated%3A2022-10-18..2023-06-13&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Afcollonval+updated%3A2022-10-18..2023-06-13&type=Issues) | [@fkohrt](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Afkohrt+updated%3A2022-10-18..2023-06-13&type=Issues) | [@frankier](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Afrankier+updated%3A2022-10-18..2023-06-13&type=Issues) | [@jgarte](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Ajgarte+updated%3A2022-10-18..2023-06-13&type=Issues) | [@jhamman](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Ajhamman+updated%3A2022-10-18..2023-06-13&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Ajtpio+updated%3A2022-10-18..2023-06-13&type=Issues) | [@manics](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Amanics+updated%3A2022-10-18..2023-06-13&type=Issues) | [@meeseeksmachine](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Ameeseeksmachine+updated%3A2022-10-18..2023-06-13&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Aminrk+updated%3A2022-10-18..2023-06-13&type=Issues) | [@nuest](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Anuest+updated%3A2022-10-18..2023-06-13&type=Issues) | [@pdurbin](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Apdurbin+updated%3A2022-10-18..2023-06-13&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Apre-commit-ci+updated%3A2022-10-18..2023-06-13&type=Issues) | [@robertodr](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Arobertodr+updated%3A2022-10-18..2023-06-13&type=Issues) | [@SylvainCorlay](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3ASylvainCorlay+updated%3A2022-10-18..2023-06-13&type=Issues) | [@TimStewartJ](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3ATimStewartJ+updated%3A2022-10-18..2023-06-13&type=Issues) | [@trybik](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Atrybik+updated%3A2022-10-18..2023-06-13&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Awelcome+updated%3A2022-10-18..2023-06-13&type=Issues) | [@westurner](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Awesturner+updated%3A2022-10-18..2023-06-13&type=Issues) | [@Xarthisius](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3AXarthisius+updated%3A2022-10-18..2023-06-13&type=Issues) | [@yamaton](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Ayamaton+updated%3A2022-10-18..2023-06-13&type=Issues) | [@yuvipanda](https://github.com/search?q=repo%3Ajupyterhub%2Frepo2docker+involves%3Ayuvipanda+updated%3A2022-10-18..2023-06-13&type=Issues)
## Version 2022.10.0
[Full changelog](https://github.com/jupyterhub/repo2docker/compare/2022.02.0...2022.10.0)
### New features
- Update Jupyter dependencies {pr}`1193` by {user}`jtpio`
- add Python 3.10 base environment {pr}`1175` by {user}`minrk`
- Bump default R version to 4.2 from 4.1, and let R 3.4 go from 3.4.0 to 3.4.4 {pr}`1165` by {user}`yuvipanda`
- Support pulling from zenodo sandbox too {pr}`1169` by {user}`yuvipanda`
- Add MPDL Dataverse {pr}`1167` by {user}`wilhelmfrank`
- Add JPL Dataverse {pr}`1163` by {user}`foobarbecue`
- upgrade RStudio Server to v2022.02.1 {pr}`1148` by {user}`aplamada`
- Pass build_args to `render()` during `--no-build` for consistency with regular builds {pr}`1135` by {user}`yoogottamk`
### Documentation improvements
- Update 'how to get R' section {pr}`1147` by {user}`yuvipanda`
- Post release fixes {pr}`1133` by {user}`manics`
### API changes
### Bug fixes
- consistent log handling when not using JSON loggers {pr}`1177` by {user}`minrk`
- Fix Read-Only filesystem permission issue for log file {pr}`1156` by {user}`timeu`
- handle permission issue writing .jupyter-server-log.txt in REPO_DIR {pr}`1151` by {user}`pymonger`
- handle r version being unspecified in environment.yml {pr}`1141` by {user}`minrk`
### Other merged PRs
- Remove conda buildpacks pin of r-irkernel to 1.2 {pr}`1191` by {user}`consideRatio`
- ci: refactor julia/r/conda tests - now ~25 min instead of ~50 min {pr}`1188` by {user}`consideRatio`
- ci: general refresh of github workflows, update gha versions and let dependabot do it, etc. {pr}`1186` by {user}`consideRatio`
- Use enum to standardise `phase` {pr}`1185` by {user}`manics`
- fail on unsupported Python {pr}`1184` by {user}`minrk`
- mount wheels from build stage instead of copying them {pr}`1182` by {user}`minrk`
- get CI working again {pr}`1178` by {user}`minrk`
- explicitly build linux/amd64 images {pr}`1176` by {user}`minrk`
- Freeze.py update {pr}`1173` by {user}`manics`
- Bump version of nodejs {pr}`1172` by {user}`yuvipanda`
- Update mamba {pr}`1171` by {user}`SylvainCorlay`
- ci: switch to using a 2fa enabled accounts pypi api-token {pr}`1166` by {user}`consideRatio`
- Get R from RStudio provided apt packages (.deb files) {pr}`1161` by {user}`yuvipanda`
- Shallow clone HEAD {pr}`1160` by {user}`daradib`
- Update black version {pr}`1150` by {user}`yuvipanda`
- Update base notebook packages {pr}`1149` by {user}`yuvipanda`
- Update Dockerfile to current Alpine (ALPINE_VERSION=3.15.0) {pr}`1136` by {user}`holzman`
- update Python in some dockerfile tests {pr}`1130` by {user}`minrk`
## Version 2022.02.0
[Full changelog](https://github.com/jupyterhub/repo2docker/compare/2021.08.0...2022.02.0)
### New features
- Update ipywidgets jupyter-offlinenotebook jupyterlab {pr}`1127` by {user}`manics`
- Allow passing in extra args to Docker initialization {pr}`1124` by {user}`yuvipanda`
- Allow passing in traitlets via commandline {pr}`1123` by {user}`yuvipanda`
- Bump default R version to 4.1 {pr}`1107` by {user}`yuvipanda`
- Update jupyterlab 3.2.5 jupyter-resource-usage 0.6.1 {pr}`1105` by {user}`manics`
- Get binary R packages from packagemanager.rstudio.com {pr}`1104` by {user}`yuvipanda`
- Support R 4.1 {pr}`1102` by {user}`yuvipanda`
- Add command line option to pass extra build args {pr}`1100` by {user}`TimoRoth`
- Set labels when building image from Dockerfile {pr}`1097` by {user}`TimoRoth`
- jupyterlab 3.1.17 {pr}`1092` by {user}`minrk`
- Bump JupyterLab to 3.1.11 {pr}`1081` by {user}`choldgraf`
- Bootstrap base env with micromamba {pr}`1062` by {user}`wolfv`
- Default UI to JupyterLab {pr}`1035` by {user}`SylvainCorlay`
### API changes
### Bug fixes
### Other merged PRs
- Put micromamba in /usr/local/bin and use mamba for installs {pr}`1128` by {user}`minrk`
- Remove deprecated calls to distutils {pr}`1122` by {user}`minrk`
- Delete /tmp/downloaded_packages after running install.R {pr}`1119` by {user}`yuvipanda`
- Use a smaller R library in our tests {pr}`1118` by {user}`yuvipanda`
- Only get R itself (r-base-core) from apt, not CRAN packages {pr}`1117` by {user}`minrk`
- set USER root after each directive block {pr}`1115` by {user}`minrk`
- Say 'apt repository' rather than PPA {pr}`1111` by {user}`yuvipanda`
- add tests for R conda {pr}`1108` by {user}`aplamada`
- Add help message to freeze.py {pr}`1106` by {user}`manics`
- Quieter R builds {pr}`1103` by {user}`yuvipanda`
- update user_interface doc to reflect that lab is default {pr}`1085` by {user}`minrk`
- Updates to dev docs + Recommonmark -> MyST Parser {pr}`1082` by {user}`choldgraf`
- Fix Docker build (again) {pr}`1078` by {user}`manics`
- \[mrg\] \_\_init\_\_.py: r_version: fixed description {pr}`1074` by {user}`magnush0lm`
- Typo fix in utils docstring {pr}`1072` by {user}`jgarte`
- Rename requirements.py-3.5.txt to requirements.py-3.5.pip {pr}`1061` by {user}`manics`
- Remove nodesource' nodejs {pr}`847` by {user}`yuvipanda`
## Version 2021.08.0
[Full changelog](https://github.com/jupyterhub/repo2docker/compare/2021.03.0...2021.08.0)
The repo2docker container image has moved to [quay.io/jupyterhub/repo2docker](https://quay.io/repository/jupyterhub/repo2docker?tab=tags)
### New features
- always unpack a single zenodo zip {pr}`1043` by {user}`akhmerov`
- Refreeze with conda-lock {pr}`1024` by {user}`minrk`
- Refine buffered output debugging {pr}`1016` by {user}`minrk`
- reimplement entrypoint in Python {pr}`1014` by {user}`minrk`
- Fetch available Julia versions from hosted json {pr}`994` by {user}`tomyun`
- Define an interface for Container engines {pr}`848` by {user}`manics`
### API changes
### Bug fixes
- Workaround docker-py dependency's failure to import six {pr}`1066:` by {user}`consideratio`
- fix: add chardet, a not explicitly declared dependency {pr}`1064` by {user}`johnhoman`
- Add build-base to build stage of docker image {pr}`1051` by {user}`yuvipanda`
- Fix regression in hydroshare introduced after moving to requests {pr}`1034` by {user}`MridulS`
### Other merged PRs
- Update README quay.io URL, Add docker latest tag {pr}`1075` by {user}`manics`
- GitHub workflow build and push to Docker hub {pr}`1071` by {user}`manics`
- Rename master branch to main {pr}`1068` by {user}`manics`
- Remove Pipfile & Pipfile.lock {pr}`1054` by {user}`yuvipanda`
- Remove CircleCI docs build {pr}`1053` by {user}`yuvipanda`
- Pin doc requirements to avoid CI breakages {pr}`1052` by {user}`manics`
- Stop using deprecated add_stylesheet in sphinx {pr}`1050` by {user}`yuvipanda`
- Add study participation notice to readme {pr}`1046` by {user}`sgibson91`
- Bump urllib3 from 1.26.4 to 1.26.5 {pr}`1045` by {user}`dependabot`
- State newly used installation command {pr}`1040` by {user}`fkohrt`
- Bump pyyaml from 5.1.1 to 5.4 {pr}`1029` by {user}`dependabot`
- Set default Julia version to 1.6 {pr}`1028` by {user}`tomyun`
- Fix logo URL in README {pr}`1027` by {user}`betatim`
## Version 2021.03.0
[Full changelog](https://github.com/jupyterhub/repo2docker/compare/2021.01.0...2021.03.0)
### New features
- freeze with mamba, add 3.9 {pr}`1017` by {user}`minrk`
- Add GH workflow to push releases to PYPi and introduce CalVer {pr}`1004` by {user}`betatim`
- Add entrypoint script which automatically propagates \*\_PROXY env vars… {pr}`1003` (\[@g-braeunlich\](<https://github.com/g-braeunlich>))
- Update to JupyterLab 3.0 {pr}`996` by {user}`jtpio`
- Fetch available Julia versions from hosted json {pr}`994` by {user}`tomyun`
- Add a contentprovider for Software Heritage persistent ID (SWHID) {pr}`988` by {user}`douardda`
- Stream jupyter server logs to a file {pr}`987` by {user}`betatim`
- add 4.0, 4.0.2 to list of supported R versions {pr}`960` by {user}`minrk`
### API changes
### Bug fixes
- fix dataverse regression introduced in last release {pr}`1011` by {user}`MridulS`
- buildpacks.r: dont use apt-key directly to respect \*\_proxy env vars {pr}`1019` (\[@g-braeunlich\](<https://github.com/g-braeunlich>))
### Other merged PRs
- Cleanup install_requires including duplicates {pr}`1020` by {user}`manics`
- bump docker action version {pr}`1018` by {user}`minrk`
- bump python in circleci test {pr}`1013` by {user}`minrk`
- Investigating the missing logs {pr}`1008` by {user}`betatim`
- Experiment with different install mechanism to get code coverage stats again {pr}`982` by {user}`betatim`
## Version 2021.01.0
[Full changelog](https://github.com/jupyterhub/repo2docker/compare/0.11.0...2021.01.0)
### New features
- Replace urllib by requests in contentproviders {pr}`993` by {user}`douardda`
- Use mambaforge instead of miniforge {pr}`992` by {user}`SylvainCorlay`
- buildpacks/nix: 2.3 -> 2.3.9 {pr}`991` by {user}`FRidh`
- Drop support for stencila {pr}`985` by {user}`minrk`
- Add Julia 1.5.3 support {pr}`984` by {user}`tomyun`
- Update to node 14 {pr}`983` by {user}`jtpio`
- Mamba 0.6.1 {pr}`979` by {user}`minrk`
- Ensure REPO_DIR owned by NB_USER {pr}`975` by {user}`tomyun`
- Add Julia 1.5.2 support {pr}`965` by {user}`tomyun`
- Mamba number three {pr}`962` by {user}`SylvainCorlay`
- Add a Mercurial contentprovider {pr}`950` by {user}`paugier`
- Add Julia 1.5.1 support {pr}`949` by {user}`tomyun`
- Handle requirements.txt with `--pre` lines {pr}`943` by {user}`betatim`
- Add Julia 1.5.0 support {pr}`938` by {user}`tomyun`
- Update JupyterLab to 2.2.0 {pr}`933` by {user}`manics`
- Bump nix version to 2.3 {pr}`915` by {user}`jboynyc`
- Add nbresuse==0.3.3 (full freeze.py) {pr}`904` by {user}`manics`
- Add Julia 1.4.2 support {pr}`899` by {user}`davidanthoff`
- Bump version of irkernel for R 4.0 {pr}`892` by {user}`betatim`
- chmod start script from repo2docker-entrypoint {pr}`886` by {user}`danlester`
- pypi jupyter-offlinenotebook==0.1.0 {pr}`880` by {user}`manics`
- Add support for Julia 1.4.1 {pr}`878` by {user}`davidanthoff`
- Change --env option to work like docker's {pr}`874` by {user}`hwine`
- Add support for Julia 1.4.0 {pr}`870` by {user}`davidanthoff`
- Update server proxy and rsession proxy {pr}`869` by {user}`betatim`
- Use miniforge instead of miniconda to get conda {pr}`859` by {user}`yuvipanda`
- If looking for latest MRAN URL try earlier snapshots too {pr}`851` by {user}`manics`
- Add jupyter-offlinenotebook extension {pr}`845` by {user}`betatim`
### API changes
- Bump Python requirement to 3.6 from 3.5 {pr}`951` by {user}`betatim`
### Bug fixes
- buildpacks/nix: disable sandboxing (bugfix) {pr}`990` by {user}`FRidh`
- avoid deprecated import of collections.abc {pr}`924` by {user}`minrk`
- Add missing “:” for R code {pr}`900` by {user}`adamhsparks`
- Fix RShiny proxy {pr}`893` by {user}`betatim`
- Work around a Julia bug {pr}`879` by {user}`davidanthoff`
- Fix typo {pr}`862` by {user}`jtpio`
### Other merged PRs
- Fix figshare test {pr}`1001` by {user}`manics`
- Weekly test of master to check for external failures {pr}`998` by {user}`manics`
- Remove reference to `master` branch from CLI doc {pr}`977` by {user}`betatim`
- add chown to COPY commands to reduce layer count {pr}`969` by {user}`bollwyvl`
- set TIMEFORMAT for timed bash conda commands {pr}`966` by {user}`manics`
- Disable jupyterlab extension build minimize {pr}`963` by {user}`manics`
- Bump Black version to 20.8b1 and use --target-version=py36 {pr}`955` by {user}`paugier`
- Add workflow to build Docker image {pr}`954` by {user}`manics`
- Crosslink 'Configuring your repository' with usage {pr}`952` by {user}`manics`
- Add `www-frame-origin=same` to /etc/rstudio/rserver.conf {pr}`944` (\[@rkevin-arch\](<https://github.com/rkevin-arch>))
- GitHub Actions {pr}`942` by {user}`minrk`
- stop running tests on travis {pr}`940` by {user}`minrk`
- update repo URLs for jupyterhub/repo2docker {pr}`939` by {user}`minrk`
- Upgrade custom test infrastructure for pytest 6.0.0 {pr}`936` by {user}`betatim`
- validate_image_name: mention lowercase, fix formatting {pr}`934` by {user}`manics`
- Update snapshot date for simple R test {pr}`930` by {user}`betatim`
- little improvement for testing binder_dir {pr}`928` by {user}`bitnik`
- update docs for config dirs {pr}`927` by {user}`bitnik`
- doc: runtime.txt installs python x.y (& concise rewording) {pr}`914` by {user}`mdeff`
- doc: environment.yml installs a conda env, not only python {pr}`913` by {user}`mdeff`
- Make the memory limit test simpler {pr}`912` by {user}`betatim`
- Add gitpod.io config for docs {pr}`908` by {user}`betatim`
- fix repo2docker logo in Sphinx docs {pr}`906` by {user}`trallard`
- Update Dockerfile to add Docker {pr}`896` by {user}`hamelsmu`
- Document test failure workarounds {pr}`890` by {user}`hwine`
- Workaround Docker issue impacting some tests on macOS {pr}`882` by {user}`hwine`
- \[docs\] fix grammatical error in section title {pr}`872` by {user}`jameslamb`
- Fix long form args requirements {pr}`866` by {user}`betatim`
- Adopt new Sphinx theme name {pr}`864` by {user}`xhochy`
- Document loose conda export with --from-history {pr}`863` by {user}`xhochy`
- utils.execute_cmd flush buffer if no EOL {pr}`850` by {user}`manics`
- Update black 19.10b0, target Python 3.5 {pr}`849` by {user}`manics`
- docs: postBuild warn about shell script errors being ignored {pr}`844` by {user}`manics`
- Update changelog for 0.11.0 {pr}`842` by {user}`betatim`
## Version 0.11.0
Release date: 2020-02-05
### New features
- Add support for Figshare in {pr}`788` by {user}`nuest`.
- Add support for Dataverse in {pr}`739` by {user}`Xarthisius`.
- Add support for configuring the version of R installed in {pr}`772` by
{user}`betatim`.
- Add support for Julia 1.2.0 in {pr}`768` by {user}`davidanthoff`.
- Add support for Julia 1.3.0 and 1.0.5 in {pr}`822` by {user}`davidanthoff`.
- Add support for Julia 1.3.1 in {pr}`831` by {user}`davidanthoff`.
- Update Miniconda to 4.7.10 in {pr}`769` by {user}`davidrpugh`.
- Update IRKernel to 1.0.2 in {pr}`770` by {user}`GeorgianaElena`.
- Update RStudio to 1.2 in {pr}`803` by {user}`pablobernabeu`.
- Switch to "pandas" sphinx theme for documentation in {pr}`816` by {user}`choldgraf`.
- Add content provider documentation in {pr}`824` by {user}`choldgraf`.
- Remove legacy buildpack in {pr}`829` by {user}`betatim`.
- Add support for automatic RStudio install when using R packages via conda
in {pr}`838` by {user}`xhochy`.
- Add support for Python 3.8 in {pr}`840` by {user}`minrk`.
- Add Hydroshare as content provider in {pr}`800` by {user}`sblack-usu`.
- Update to Jupyter Notebook 6 and Lab 1.2 in {pr}`839` by {user}`minrk`.
### Bug fixes
- Fix for submodule check out in {pr}`809` by {user}`davidbrochart`.
- Handle `requirements.txt` files with different encodings in {pr}`771`
by {user}`GeorgianaElena`.
- Update to nteract-on-jupyter 2.1.3 in {pr}`2.1.3 by :user:`betatim`.
- Use `useradd --no-log-init` to fix exhausting disk space in {pr}`804` by
{user}`manics.`
- Add help text for commandline arguments in {pr}`517` by {user}`yuvipanda`.
- Fix submodule checkout in {pr}`809` by {user}`davidbrochart`.
## Version 0.10.0
Release date: 2019-08-07
### New features
- Increased minimum Python version supported for running `repo2docker` itself
to Python 3.5 in {pr}`684` by {user}`betatim`.
- Support for `Pipfile` and `Pipfile.lock` implemented in {pr}`649` by
{user}`consideratio`.
- Use only conda packages for our base environments in {pr}`728` by
{user}`scottyhq`.
- Fast rebuilds when repo dependencies haven't changed by {user}`minrk` and
{user}`betatim` in {pr}`743`, {pr}`752`, {pr}`718` and {pr}`716`.
- Add support for Zenodo in {pr}`693` by {user}`betatim`.
- Add support for general Invenio repositories in {pr}`704` by {user}`tmorrell`.
- Add support for julia 1.0.4 and 1.1.1 in {pr}`710` by {user}`davidanthoff`.
- Bump Conda from 4.6.14 to 4.7.5 in {pr}`719` by {user}`davidrpugh`.
### API changes
### Bug fixes
- Prevent building the image as root if --user-id and --user-name are not specified
in {pr}`676` by {user}`Xarthisius`.
- Add bash to Dockerfile to fix usage of private repos with git-crendential-env in
{pr}`738` by {user}`eexwhyzee`.
- Fix memory limit enforcement in {pr}`677` by {user}`betatim`.
## Version 0.9.0
Release date: 2019-05-05
### New features
- Support for julia `Project.toml`, `JuliaProject.toml` and `Manifest.toml` files in {pr}`595` by
{user}`davidanthoff`
- Set JULIA_PROJECT globally, so that every julia instance starts with the
julia environment activated in {pr}`612` by {user}`davidanthoff`.
- Update Miniconda version to 4.6.14 and Conda version to 4.6.14 in {pr}`637` by
{user}`jhamman`
- Install notebook into `notebook` env instead of `root`.
Activate conda environments and shell integration via ENTRYPOINT
in {pr}`651` by {user}`minrk`
- Support for `.binder` directory in addition to `binder` directory for location of
configuration files, in {pr}`653` by {user}`jhamman`.
- Updated contributor guide and issue templates for bugs, feature requests,
and support questions in {pr}`654` and {pr}`655` by {user}`KirstieJane` and
{user}`betatim`.
- Create a page naming and describing the "Reproducible Execution
Environment Specification" (the specification used by repo2docker)
in {pr}`662` by {user}`choldgraf`.
### API changes
### Bug fixes
- Install IJulia kernel into \$\{NB_PYTHON_PREFIX}/share/jupyter in {pr}`622` by
{user}`davidanthoff`.
- Ensure git submodules are updated and initilized correctly in {pr}`639` by
{user}`djhoese`.
- Use archive.debian.org as source for the debian jessie based legacy
buildpack in {pr}`633` by {user}`betatim`.
- Update to version 5.7.6 of the `notebook` package used in all environments
in {pr}`628` by {user}`betatim`.
- Update to version 5.7.8 of the `notebook` package and version 2.0.12 of
`nteract-on-jupyter` in {pr}`650` by {user}`betatim`.
- Switch to newer version of jupyter-server-proxy to fix websocket handling
in {pr}`646` by {user}`betatim`.
- Update to pip version 19.0.3 in {pr}`647` by {user}`betatim`.
- Ensure ENTRYPOINT is an absolute path in {pr}`657` by {user}`yuvipanda`.
- Fix handling of `--build-memory-limit` values without a postfix in {pr}`652`
by {user}`betatim`.
## Version 0.8.0
Release date: 2019-02-21
### New features
- Add additional metadata to docker images about how they were built {pr}`500` by
{user}`jrbourbeau`.
- Allow users to install global NPM packages: {pr}`573` by {user}`GladysNalvarte`.
- Add documentation on switching the user interface presented by a
container. {pr}`568` by user:`choldgraf`.
- Increased test coverage to ~87% by {user}`betatim` and {user}`yuvipanda`.
- Documentation improvements and additions by {user}`lheagy`, {user}`choldgraf`.
- Remove f-strings from code base, repo2docker is compatible with Python 3.4+
again by {user}`jrbourbeau` in {pr}`520`.
- Local caching of previously built repostories to speed up launch times
by {user}`betatim` in {pr}`511`.
- Make destination of repository content in the container image configurable
on the CLI via `--target-repo-dir`. By {user}`yuvipanda` in {pr}`507`.
- Expose CPU limit settings for building and running containers. By
{user}`GladysNalvarte` in {pr}`579`.
- Make Python 3.7 the default version. By {user}`yuvipanda` and {user}`minrk` in
{pr}`539`.
### API changes
### Bug fixes
- In some cases the version of conda installed in images was not pinned and got
upgraded by user actions. Fixed in {pr}`576` by {user}`minrk`.
- Fix an error related to checking if debug output was enabled or not:
{pr}`575` by {user}`yuvipanda`.
- Update nteract frontend to version 2.0.0 by {user}`yuvipanda` in {pr}`571`.
- Fix quoting issue in `GIT_CREDENTIAL_ENV` environment variable by
{user}`minrk` in {pr}`572`.
- Change to using the first 8 characters of each Git commit, not the last 8,
to tag each built docker image of repo2docker itself. {user}`minrk` in {pr}`562`.
- Allow users to select the Julia when using a `requirements.txt` by
{user}`yuvipanda` in {pr}`557`.
- Set `JULIA_DEPOT_PATH` to install packages outside the home directory by
{user}`yuvipanda` in {pr}`555`.
- Update to Jupyter notebook 5.7.4 {pr}`519` by {user}`minrk`.
## Version 0.7.0
Release date: 2018-12-12
### New features
- Build from sub-directory: build the image based on a sub-directory of a
repository {pr}`413` by {user}`dsludwig`.
- Editable mode: allows editing a local repository from a live container
{pr}`421` by {user}`evertrol`.
- Change log added {pr}`426` by {user}`evertrol`.
- Documentation: improved the documentation for contributors {pr}`453` by
{user}`choldgraf`.
- Buildpack: added support for the nix package manager {pr}`407` by
{user}`costrouc`.
- Log a 'success' message when push is complete {pr}`482` by
{user}`yuvipanda`.
- Allow specifying images to reuse cache from {pr}`478` by
{user}`yuvipanda`.
- Add JupyterHub back to base environment {pr}`476` by {user}`yuvipanda`.
- Repo2docker has a logo! by {user}`agahkarakuzu` and {user}`blairhudson`.
- Improve support for Stencila, including identifying stencila runtime from
document context {pr}`457` by {user}`nuest`.
### API changes
- Add content provider abstraction {pr}`421` by {user}`betatim`.
### Bug fixes
- Update to Jupyter notebook 5.7 {pr}`475` by {user}`betatim` and {user}`minrk`.
## Version 0.6
Released 2018-09-09
## Version 0.5
Released 2018-02-07
## Version 0.4.1
Released 2018-09-06
## Version 0.2
Released 2018-05-25
## Version 0.1.1
Released 2017-04-19
## Version 0.1
Released 2017-04-14

Wyświetl plik

@ -1,245 +0,0 @@
=========
Changelog
=========
Version 0.11.0
==============
Release date: 2020-02-05
New features
------------
- Add support for Figshare in :pr:`788` by :user:`nuest`.
- Add support for Dataverse in :pr:`739` by :user:`Xarthisius`.
- Add support for configuring the version of R installed in :pr:`772` by
:user:`betatim`.
- Add support for Julia 1.2.0 in :pr:`768` by :user:`davidanthoff`.
- Add support for Julia 1.3.0 and 1.0.5 in :pr:`822` by :user:`davidanthoff`.
- Add support for Julia 1.3.1 in :pr:`831` by :user:`davidanthoff`.
- Update Miniconda to 4.7.10 in :pr:`769` by :user:`davidrpugh`.
- Update IRKernel to 1.0.2 in :pr:`770` by :user:`GeorgianaElena`.
- Update RStudio to 1.2 in :pr:`803` by :user:`pablobernabeu`.
- Switch to "pandas" sphinx theme for documentation in :pr:`816` by :user:`choldgraf`.
- Add content provider documentation in :pr:`824` by :user:`choldgraf`.
- Remove legacy buildpack in :pr:`829` by :user:`betatim`.
- Add support for automatic RStudio install when using R packages via conda
in :pr:`838` by :user:`xhochy`.
- Add support for Python 3.8 in :pr:`840` by :user:`minrk`.
- Add Hydroshare as content provider in :pr:`800` by :user:`sblack-usu`.
- Update to Jupyter Notebook 6 and Lab 1.2 in :pr:`839` by :user:`minrk`.
Bug fixes
---------
- Fix for submodule check out in :pr:`809` by :user:`davidbrochart`.
- Handle `requirements.txt` files with different encodings in :pr:`771`
by :user:`GeorgianaElena`.
- Update to nteract-on-jupyter 2.1.3 in :pr:`2.1.3 by :user:`betatim`.
- Use `useradd --no-log-init` to fix exhausting disk space in :pr:`804` by
:user:`manics.`
- Add help text for commandline arguments in :pr:`517` by :user:`yuvipanda`.
- Fix submodule checkout in :pr:`809` by :user:`davidbrochart`.
Version 0.10.0
==============
Release date: 2019-08-07
New features
------------
- Increased minimum Python version supported for running `repo2docker` itself
to Python 3.5 in :pr:`684` by :user:`betatim`.
- Support for `Pipfile` and `Pipfile.lock` implemented in :pr:`649` by
:user:`consideratio`.
- Use only conda packages for our base environments in :pr:`728` by
:user:`scottyhq`.
- Fast rebuilds when repo dependencies haven't changed by :user:`minrk` and
:user:`betatim` in :pr:`743`, :pr:`752`, :pr:`718` and :pr:`716`.
- Add support for Zenodo in :pr:`693` by :user:`betatim`.
- Add support for general Invenio repositories in :pr:`704` by :user:`tmorrell`.
- Add support for julia 1.0.4 and 1.1.1 in :pr:`710` by :user:`davidanthoff`.
- Bump Conda from 4.6.14 to 4.7.5 in :pr:`719` by :user:`davidrpugh`.
API changes
-----------
Bug fixes
---------
- Prevent building the image as root if --user-id and --user-name are not specified
in :pr:`676` by :user:`Xarthisius`.
- Add bash to Dockerfile to fix usage of private repos with git-crendential-env in
:pr:`738` by :user:`eexwhyzee`.
- Fix memory limit enforcement in :pr:`677` by :user:`betatim`.
Version 0.9.0
=============
Release date: 2019-05-05
New features
------------
- Support for julia `Project.toml`, `JuliaProject.toml` and `Manifest.toml` files in :pr:`595` by
:user:`davidanthoff`
- Set JULIA_PROJECT globally, so that every julia instance starts with the
julia environment activated in :pr:`612` by :user:`davidanthoff`.
- Update Miniconda version to 4.6.14 and Conda version to 4.6.14 in :pr:`637` by
:user:`jhamman`
- Install notebook into `notebook` env instead of `root`.
Activate conda environments and shell integration via ENTRYPOINT
in :pr:`651` by :user:`minrk`
- Support for `.binder` directory in addition to `binder` directory for location of
configuration files, in :pr:`653` by :user:`jhamman`.
- Updated contributor guide and issue templates for bugs, feature requests,
and support questions in :pr:`654` and :pr:`655` by :user:`KirstieJane` and
:user:`betatim`.
- Create a page naming and describing the "Reproducible Execution
Environment Specification" (the specification used by repo2docker)
in :pr:`662` by :user:`choldgraf`.
API changes
-----------
Bug fixes
---------
- Install IJulia kernel into ${NB_PYTHON_PREFIX}/share/jupyter in :pr:`622` by
:user:`davidanthoff`.
- Ensure git submodules are updated and initilized correctly in :pr:`639` by
:user:`djhoese`.
- Use archive.debian.org as source for the debian jessie based legacy
buildpack in :pr:`633` by :user:`betatim`.
- Update to version 5.7.6 of the `notebook` package used in all environments
in :pr:`628` by :user:`betatim`.
- Update to version 5.7.8 of the `notebook` package and version 2.0.12 of
`nteract-on-jupyter` in :pr:`650` by :user:`betatim`.
- Switch to newer version of jupyter-server-proxy to fix websocket handling
in :pr:`646` by :user:`betatim`.
- Update to pip version 19.0.3 in :pr:`647` by :user:`betatim`.
- Ensure ENTRYPOINT is an absolute path in :pr:`657` by :user:`yuvipanda`.
- Fix handling of `--build-memory-limit` values without a postfix in :pr:`652`
by :user:`betatim`.
Version 0.8.0
=============
Release date: 2019-02-21
New features
------------
- Add additional metadata to docker images about how they were built :pr:`500` by
:user:`jrbourbeau`.
- Allow users to install global NPM packages: :pr:`573` by :user:`GladysNalvarte`.
- Add documentation on switching the user interface presented by a
container. :pr:`568` by user:`choldgraf`.
- Increased test coverage to ~87% by :user:`betatim` and :user:`yuvipanda`.
- Documentation improvements and additions by :user:`lheagy`, :user:`choldgraf`.
- Remove f-strings from code base, repo2docker is compatible with Python 3.4+
again by :user:`jrbourbeau` in :pr:`520`.
- Local caching of previously built repostories to speed up launch times
by :user:`betatim` in :pr:`511`.
- Make destination of repository content in the container image configurable
on the CLI via ``--target-repo-dir``. By :user:`yuvipanda` in :pr:`507`.
- Expose CPU limit settings for building and running containers. By
:user:`GladysNalvarte` in :pr:`579`.
- Make Python 3.7 the default version. By :user:`yuvipanda` and :user:`minrk` in
:pr:`539`.
API changes
-----------
Bug fixes
---------
- In some cases the version of conda installed in images was not pinned and got
upgraded by user actions. Fixed in :pr:`576` by :user:`minrk`.
- Fix an error related to checking if debug output was enabled or not:
:pr:`575` by :user:`yuvipanda`.
- Update nteract frontend to version 2.0.0 by :user:`yuvipanda` in :pr:`571`.
- Fix quoting issue in ``GIT_CREDENTIAL_ENV`` environment variable by
:user:`minrk` in :pr:`572`.
- Change to using the first 8 characters of each Git commit, not the last 8,
to tag each built docker image of repo2docker itself. :user:`minrk` in :pr:`562`.
- Allow users to select the Julia when using a ``requirements.txt`` by
:user:`yuvipanda` in :pr:`557`.
- Set ``JULIA_DEPOT_PATH`` to install packages outside the home directory by
:user:`yuvipanda` in :pr:`555`.
- Update to Jupyter notebook 5.7.4 :pr:`519` by :user:`minrk`.
Version 0.7.0
=============
Release date: 2018-12-12
New features
------------
- Build from sub-directory: build the image based on a sub-directory of a
repository :pr:`413` by :user:`dsludwig`.
- Editable mode: allows editing a local repository from a live container
:pr:`421` by :user:`evertrol`.
- Change log added :pr:`426` by :user:`evertrol`.
- Documentation: improved the documentation for contributors :pr:`453` by
:user:`choldgraf`.
- Buildpack: added support for the nix package manager :pr:`407` by
:user:`costrouc`.
- Log a 'success' message when push is complete :pr:`482` by
:user:`yuvipanda`.
- Allow specifying images to reuse cache from :pr:`478` by
:user:`yuvipanda`.
- Add JupyterHub back to base environment :pr:`476` by :user:`yuvipanda`.
- Repo2docker has a logo! by :user:`agahkarakuzu` and :user:`blairhudson`.
- Improve support for Stencila, including identifying stencila runtime from
document context :pr:`457` by :user:`nuest`.
API changes
-----------
- Add content provider abstraction :pr:`421` by :user:`betatim`.
Bug fixes
---------
- Update to Jupyter notebook 5.7 :pr:`475` by :user:`betatim` and :user:`minrk`.
Version 0.6
===========
Released 2018-09-09
Version 0.5
===========
Released 2018-02-07
Version 0.4.1
=============
Released 2018-09-06
Version 0.2
===========
Released 2018-05-25
Version 0.1.1
=============
Released 2017-04-19
Version 0.1
===========
Released 2017-04-14

Wyświetl plik

@ -1,73 +1,50 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Configuration file for Sphinx to build our documentation to HTML.
#
# repo2docker documentation build configuration file, created by
# sphinx-quickstart on Fri Jun 2 13:00:51 2017.
# Configuration reference: https://www.sphinx-doc.org/en/master/usage/configuration.html
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import datetime
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
# -- Project information -----------------------------------------------------
# ref: https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
#
# import os
# import sys
# sys.path.insert(0, os.path.abspath('.'))
project = "repo2docker"
copyright = f"{datetime.date.today().year}, Project Jupyter Contributors"
author = "Project Jupyter Contributors"
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
# -- General Sphinx configuration ---------------------------------------------------
# ref: https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
#
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = ["sphinx.ext.extlinks", "sphinxcontrib.autoprogram", "recommonmark"]
extensions = [
"myst_parser",
"sphinx_copybutton",
"sphinx.ext.extlinks",
"sphinxcontrib.autoprogram",
"sphinxext.opengraph",
"sphinxext.rediraffe",
]
root_doc = "index"
source_suffix = [".md", ".rst"]
default_role = "literal"
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
templates_path = ["_templates"]
extlinks = {
"issue": ("https://github.com/jupyterhub/repo2docker/issues/%s", "Issue #"),
"pr": ("https://github.com/jupyterhub/repo2docker/pull/%s", "PR #"),
"user": ("https://github.com/%s", "@"),
"issue": ("https://github.com/jupyterhub/repo2docker/issues/%s", "Issue #%s"),
"pr": ("https://github.com/jupyterhub/repo2docker/pull/%s", "PR #%s"),
"user": ("https://github.com/%s", "@%s"),
}
# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates"]
from recommonmark.transform import AutoStructify
def setup(app):
app.add_stylesheet("custom.css") # may also be a URL
app.add_config_value(
"recommonmark_config", {"auto_toc_tree_section": "Contents"}, True
)
app.add_transform(AutoStructify)
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
# -- General MyST configuration -----------------------------------------------------
# ref: https://myst-parser.readthedocs.io/en/latest/configuration.html
#
# source_suffix = ['.rst', '.md']
source_suffix = [".rst", ".md"]
myst_enable_extensions = [
"colon_fence",
]
# The master toctree document.
master_doc = "index"
# General information about the project.
project = "repo2docker"
copyright = "2019, Project Jupyter"
author = "Project Jupyter"
# -- Referenceable variables --------------------------------------------------
#
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
@ -83,132 +60,69 @@ from repo2docker.buildpacks.conda import CondaBuildPack
default_python = CondaBuildPack.major_pythons["3"]
rst_prolog = """
rst_prolog = f"""
.. |default_python| replace:: **Python {default_python}**
.. |default_python_version| replace:: {default_python}
""".format(
default_python=default_python
)
"""
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
# -- Options for HTML output -------------------------------------------------
# ref: https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = []
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = "sphinx"
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = False
# repo2docker Logo
html_logo = "_static/images/logo.png"
html_favicon = "_static/images/favicon.ico"
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = "pydata_sphinx_theme"
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
# html_theme_options = {}
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ["_static"]
html_sidebars = {}
html_css_files = ["custom.css"]
# -- Options for HTMLHelp output ------------------------------------------
# Output file base name for HTML help builder.
htmlhelp_basename = "repo2dockerdoc"
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
# pydata_sphinx_theme reference: https://pydata-sphinx-theme.readthedocs.io/en/latest/
html_theme = "pydata_sphinx_theme"
html_theme_options = {
"use_edit_page_button": True,
"github_url": "https://github.com/jupyterhub/repo2docker",
}
html_context = {
"github_user": "jupyterhub",
"github_repo": "repo2docker",
"github_version": "main",
"doc_path": "docs/source",
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(
master_doc,
"repo2docker.tex",
"repo2docker Documentation",
"Project Jupyter",
"manual",
)
# -- Options for linkcheck builder -------------------------------------------
# ref: https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-the-linkcheck-builder
#
linkcheck_ignore = [
r"(.*)github\.com(.*)#", # javascript based anchors
r"(.*)/#%21(.*)/(.*)", # /#!forum/jupyter - encoded anchor edge case
r"https://github.com/[^/]*$", # too many github usernames / searches in changelog
"https://github.com/jupyterhub/repo2docker/pull/", # too many PRs in changelog
"https://github.com/jupyterhub/repo2docker/compare/", # too many comparisons in changelog
]
linkcheck_anchors_ignore = [
"/#!",
"/#%21",
]
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [(master_doc, "repo2docker", "repo2docker Documentation", [author], 1)]
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(
master_doc,
"repo2docker",
"repo2docker Documentation",
author,
"repo2docker",
"One line description of project.",
"Miscellaneous",
)
]
# -- Options for Epub output ----------------------------------------------
# Bibliographic Dublin Core info.
epub_title = project
epub_author = author
epub_publisher = author
epub_copyright = copyright
# The unique identifier of the text. This can be a ISBN number
# or the project homepage.
# -- Options for the opengraph extension -------------------------------------
# ref: https://github.com/wpilibsuite/sphinxext-opengraph#options
#
# epub_identifier = ''
# A unique identification for the text.
# This extension help others provide better thumbnails and link descriptions
# when they link to this documentation from other websites, such as
# https://discourse.jupyter.org.
#
# epub_uid = ''
# ogp_site_url is set automatically by RTD
ogp_image = "_static/images/logo.png"
ogp_use_first_image = True
# A list of files that should not be packed into the epub file.
epub_exclude_files = ["search.html"]
# -- Options for the rediraffe extension -------------------------------------
# ref: https://github.com/wpilibsuite/sphinxext-rediraffe#readme
#
# This extensions help us relocated content without breaking links. If a
# document is moved internally, we should configure a redirect like below.
#
rediraffe_branch = "main"
rediraffe_redirects = {
# "old-file": "new-folder/new-file-name",
}

Wyświetl plik

@ -29,7 +29,7 @@ can be found on this page (and to the right).
that lets you install any kind of package,
including Python, R, and C/C++ packages.
``repo2docker`` does not use your ``environment.yml`` to create and activate a new conda environment.
Rather, it updates a base conda environment `defined here <https://github.com/jupyterhub/repo2docker/blob/master/repo2docker/buildpacks/conda/environment.yml>`_ with the packages listed in your ``environment.yml``.
Rather, it updates a base conda environment `defined here <https://github.com/jupyterhub/repo2docker/blob/HEAD/repo2docker/buildpacks/conda/environment.yml>`_ with the packages listed in your ``environment.yml``.
This means that the environment will always have the same default name, not the name
specified in your ``environment.yml``.
@ -37,14 +37,14 @@ specified in your ``environment.yml``.
You can install files from pip in your ``environment.yml`` as well.
For example, see the `binder-examples environment.yml
<https://github.com/binder-examples/python-conda_pip/blob/master/environment.yml>`_
<https://github.com/binder-examples/python-conda_pip/blob/HEAD/environment.yml>`_
file.
You can also specify which Python version to install in your built environment
with ``environment.yml``. By default, ``repo2docker`` installs
|default_python| with your ``environment.yml`` unless you include the version of
Python in this file. ``conda`` supports all versions of Python,
though ``repo2docker`` support is best with Python 3.7, 3.6, 3.5 and 2.7.
Python in this file. ``conda`` Should support all versions of Python,
though ``repo2docker`` support is best with Python 3.7-3.11.
.. warning::
If you include a Python version in a ``runtime.txt`` file in addition to your
@ -73,7 +73,7 @@ both kinds.
This specifies a list of Python packages that should be installed in your
environment. Our
`requirements.txt example <https://github.com/binder-examples/requirements/blob/master/requirements.txt>`_
`requirements.txt example <https://github.com/binder-examples/requirements/blob/HEAD/requirements.txt>`_
on GitHub shows a typical requirements file.
@ -118,9 +118,9 @@ with ``REQUIRE`` and ``environment.yml``, visit
================================================
This is used to install R libraries pinned to a specific snapshot on
`MRAN <https://mran.microsoft.com/documents/rro/reproducibility>`_.
`Posit Package Manager <https://packagemanager.posit.co/>`_.
To set the date of the snapshot add a runtime.txt_.
For an example ``install.R`` file, visit our `example install.R file <https://github.com/binder-examples/r/blob/master/install.R>`_.
For an example ``install.R`` file, visit our `example install.R file <https://github.com/binder-examples/r/blob/HEAD/install.R>`_.
.. _apt.txt:
@ -132,7 +132,7 @@ A list of Debian packages that should be installed. The base image used is usual
version of Ubuntu.
We use ``apt.txt``, for example, to install LaTeX in our
`example apt.txt for LaTeX <https://github.com/binder-examples/latex/blob/master/apt.txt>`_.
`example apt.txt for LaTeX <https://github.com/binder-examples/latex/blob/HEAD/apt.txt>`_.
.. _DESCRIPTION:
@ -142,11 +142,12 @@ We use ``apt.txt``, for example, to install LaTeX in our
To install your repository like an R package, you may include a
``DESCRIPTION`` file. repo2docker installs the package and dependencies
from the ``DESCRIPTION`` by running ``devtools::install_git(".")``.
from the ``DESCRIPTION`` by running ``devtools::install_local(getwd())``.
You also need to have a ``runtime.txt`` file that is formatted as
``r-<YYYY>-<MM>-<DD>``, where YYYY-MM-DD is a snapshot of MRAN that will be
used for your R installation.
You can also have have a ``runtime.txt`` file that is formatted as
``r-<YYYY>-<MM>-<DD>``, where YYYY-MM-DD is a snapshot of CRAN that will be used
for your R installation. If ``runtime.txt`` isn't provided in this case, a
recent date will be used.
.. _postBuild:
@ -161,8 +162,8 @@ Note that by default the build will not be stopped if an error occurs inside a s
You should include ``set -e`` or the equivalent at the start of the script to avoid errors being silently ignored.
An example use-case of ``postBuild`` file is JupyterLab's demo on mybinder.org.
It uses a ``postBuild`` file in a folder called ``binder`` to `prepare
their demo for binder <https://github.com/jupyterlab/jupyterlab-demo/blob/master/binder/postBuild>`_.
It uses a ``postBuild`` file in a folder called ``.binder`` to `prepare
their demo for binder <https://github.com/jupyterlab/jupyterlab-demo/blob/HEAD/.binder/postBuild>`_.
.. _start:
@ -204,12 +205,12 @@ For these cases, we have a special file, ``runtime.txt``.
``runtime.txt`` will be ignored).
Have ``python-x.y`` in ``runtime.txt`` to run the repository with Python version x.y.
See our `Python2 example repository <https://github.com/binder-examples/python2_runtime/blob/master/runtime.txt>`_.
See our `Python2 example repository <https://github.com/binder-examples/python2_runtime/blob/HEAD/runtime.txt>`_.
Have ``r-<RVERSION>-<YYYY>-<MM>-<DD>`` in ``runtime.txt`` to run the repository with R version RVERSION and libraries from a YYYY-MM-DD snapshot of `MRAN <https://mran.microsoft.com/documents/rro/reproducibility>`_.
Have ``r-<RVERSION>-<YYYY>-<MM>-<DD>`` in ``runtime.txt`` to run the repository with R version RVERSION and libraries from a YYYY-MM-DD snapshot of `Posit Package Manager <https://packagemanager.posit.co/client/#/repos/2/overview>`__.
RVERSION can be set to 3.4, 3.5, 3.6, or to patch releases for the 3.5 and 3.6 series.
If you do not specify a version, the latest release will be used (currently R 3.6).
See our `R example repository <https://github.com/binder-examples/r/blob/master/runtime.txt>`_.
See our `R example repository <https://github.com/binder-examples/r/blob/HEAD/runtime.txt>`_.
.. _default.nix:
@ -232,6 +233,8 @@ To see an example repository visit
`nix binder example <https://github.com/binder-examples/nix>`_.
.. _dockerfile:
``Dockerfile`` - Advanced environments
======================================

Wyświetl plik

@ -1,7 +1,7 @@
# Add a new buildpack
A new buildpack is needed when a new language or a new package manager should be
supported. [Existing buildpacks](https://github.com/jupyterhub/repo2docker/tree/master/repo2docker/buildpacks)
supported. [Existing buildpacks](https://github.com/jupyterhub/repo2docker/tree/HEAD/repo2docker/buildpacks)
are a good model for how new buildpacks should be structured.
See [the Buildpacks page](buildpacks) for more information about the
structure of a buildpack.

Wyświetl plik

@ -5,7 +5,7 @@ Add a new content provider
Adding a new content provider allows repo2docker to grab repositories from new
locations on the internet. To do so, you should take the following steps:
#. Sub-class the `ContentProvider class <https://github.com/jupyterhub/repo2docker/blob/master/repo2docker/contentproviders/base.py#L17>`_.
#. Sub-class the `ContentProvider class <https://github.com/jupyterhub/repo2docker/blob/HEAD/repo2docker/contentproviders/base.py#L17>`_.
This will give you a skeleton class you can modify to support your new
content provider.
#. Implement a **detect()** method for the class. This takes an input

Wyświetl plik

@ -2,33 +2,33 @@
Thank you for thinking about contributing to repo2docker!
This is an open source project that is developed and maintained entirely by volunteers.
*Your contribution* is integral to the future of the project.
_Your contribution_ is integral to the future of the project.
THANK YOU!
## Types of contribution
There are many ways to contribute to repo2docker:
* **Update the documentation.**
- **Update the documentation.**
If you're reading a page or docstring and it doesn't make sense (or doesn't exist!), please let us know by opening a bug report.
It's even more amazing if you can give us a suggested change.
* **Fix bugs or add requested features.**
- **Fix bugs or add requested features.**
Have a look through the [issue tracker](https://github.com/jupyterhub/repo2docker/issues) and see if there are any tagged as ["help wanted"](https://github.com/jupyterhub/repo2docker/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22).
As the label suggests, we'd love your help!
* **Report a bug.**
- **Report a bug.**
If repo2docker isn't doing what you thought it would do then open a [bug report](https://github.com/jupyterhub/repo2docker/issues/new?template=bug_report.md).
That issue template will ask you a few questions described in more detail below.
* **Suggest a new feature.**
- **Suggest a new feature.**
We know that there are lots of ways to extend repo2docker!
If you're interested in adding a feature then please open a [feature request](https://github.com/jupyterhub/repo2docker/issues/new?template=feature_request.md).
That issue template will ask you a few questions described in detail below.
* **Review someone's Pull Request.**
- **Review someone's Pull Request.**
Whenever somebody proposes changes to the repo2docker codebase, the community reviews
the changes, and provides feedback, edits, and suggestions. Check out the
[open pull requests](https://github.com/jupyterhub/repo2docker/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc)
and provide feedback that helps improve the PR and get it merged. Please keep your
feedback positive and constructive!
* **Tell people about repo2docker.**
- **Tell people about repo2docker.**
As we said above, repo2docker is built by and for its community.
If you know anyone who would like to use repo2docker, please tell them about the project!
You could give a talk about it, or run a demonstration.
@ -42,55 +42,59 @@ This outlines the process for getting changes to the repo2docker project merged.
1. Identify the correct issue template: [bug report](https://github.com/jupyterhub/repo2docker/issues/new?template=bug_report.md) or [feature request](https://github.com/jupyterhub/repo2docker/issues/new?template=feature_request.md).
**Bug reports** ([examples](https://github.com/jupyterhub/repo2docker/issues?q=is%3Aissue+is%3Aopen+label%3Abug), [new issue](https://github.com/jupyterhub/repo2docker/issues/new?template=bug_report.md)) will ask you for a description of the problem, the expected behaviour, the actual behaviour, how to reproduce the problem, and your personal set up.
Bugs can include problems with the documentation, or code not running as expected.
**Bug reports** ([examples](https://github.com/jupyterhub/repo2docker/issues?q=is%3Aissue+is%3Aopen+label%3Abug), [new issue](https://github.com/jupyterhub/repo2docker/issues/new?template=bug_report.md)) will ask you for a description of the problem, the expected behaviour, the actual behaviour, how to reproduce the problem, and your personal set up.
Bugs can include problems with the documentation, or code not running as expected.
It is really important that you make it easy for the maintainers to reproduce the problem you're having.
This guide on creating a [minimal, complete and verifiable example](https://stackoverflow.com/help/mcve) is a great place to start.
It is really important that you make it easy for the maintainers to reproduce the problem you're having.
This guide on creating a [minimal, complete and verifiable example](https://stackoverflow.com/help/mcve) is a great place to start.
**Feature requests** ([examples](https://github.com/jupyterhub/repo2docker/labels/needs%3A%20discussion), [new issue](https://github.com/jupyterhub/repo2docker/issues/new?template=feature_request.md)) will ask you for the proposed change, any alternatives that you have considered, a description of who would use this feature, and a best-guess of how much work it will take and what skills are required to accomplish.
**Feature requests** ([examples](https://github.com/jupyterhub/repo2docker/labels/needs%3A%20discussion), [new issue](https://github.com/jupyterhub/repo2docker/issues/new?template=feature_request.md)) will ask you for the proposed change, any alternatives that you have considered, a description of who would use this feature, and a best-guess of how much work it will take and what skills are required to accomplish.
Very easy feature requests might be updates to the documentation to clarify steps for new users.
Harder feature requests may be to add new functionality to the project and will need more in depth discussion about who can complete and maintain the work.
Very easy feature requests might be updates to the documentation to clarify steps for new users.
Harder feature requests may be to add new functionality to the project and will need more in depth discussion about who can complete and maintain the work.
Feature requests are a great opportunity for you to advocate for the use case you're suggesting.
They help others understand how much effort it would be to integrate the work,and - if you're successful at convincing them that this effort is worth it - make it more likely that they to choose to work on it with you.
Feature requests are a great opportunity for you to advocate for the use case you're suggesting.
They help others understand how much effort it would be to integrate the work,and - if you're successful at convincing them that this effort is worth it - make it more likely that they to choose to work on it with you.
2. Open an issue.
Getting consensus with the community is a great way to save time later.
Getting consensus with the community is a great way to save time later.
3. Make edits in [your fork](https://help.github.com/en/articles/fork-a-repo) of the [repo2docker repository](https://github.com/jupyterhub/repo2docker).
4. Make a [pull request](https://help.github.com/en/articles/about-pull-requests).
Read the [next section](#guidelines-to-getting-a-pull-request-merged) for guidelines for both reviewers and contributors on merging a PR.
6. Wait for a community member to merge your changes.
Remember that **someone else must merge your pull request**.
That goes for new contributors and long term maintainers alike.
Because `master` is continuously deployed to mybinder.org it is essential
that `master` is always in a deployable state.
7. (optional) Deploy a new version of repo2docker to mybinder.org by [following these steps](http://mybinder-sre.readthedocs.io/en/latest/deployment/how.html)
Read the [next section](guidelines-to-getting-a-pull-request-merged) for guidelines for both reviewers and contributors on merging a PR.
5. Wait for a community member to merge your changes.
Remember that **someone else must merge your pull request**.
That goes for new contributors and long term maintainers alike.
Because `main` is continuously deployed to mybinder.org it is essential
that `main` is always in a deployable state.
6. (optional) Deploy a new version of repo2docker to mybinder.org by [following these steps](http://mybinder-sre.readthedocs.io/en/latest/deployment/how.html)
(guidelines-to-getting-a-pull-request-merged)=
## Guidelines to getting a Pull Request merged
These are not hard rules to be enforced by 🚓 but they are suggestions written by the repo2docker maintainers to help complete your contribution as smoothly as possible for both you and for them.
* **Create a PR as early as possible**, marking it with `[WIP]` while you work on it.
- **Create a PR as early as possible**, marking it with `[WIP]` while you work on it.
This avoids duplicated work, lets you get high level feedback on functionality or API changes, and/or helps find collaborators to work with you.
* **Keep your PR focused.**
- **Keep your PR focused.**
The best PRs solve one problem.
If you end up changing multiple things, please open separate PRs for the different conceptual changes.
* **Add tests to your code.**
- **Add tests to your code.**
PRs will not be merged if Travis is failing.
* **Apply [PEP8](https://www.python.org/dev/peps/pep-0008/)** as much as possible, but not too much.
- **Apply [PEP8](https://www.python.org/dev/peps/pep-0008/)** as much as possible, but not too much.
If in doubt, ask.
* **Use merge commits** instead of merge-by-squashing/-rebasing.
- **Use merge commits** instead of merge-by-squashing/-rebasing.
This makes it easier to find all changes since the last deployment `git log --merges --pretty=format:"%h %<(10,trunc)%an %<(15)%ar %s" <deployed-revision>..` and your PR easier to review.
* **Make it clear when your PR is ready for review.**
- **Make it clear when your PR is ready for review.**
Prefix the title of your pull request (PR) with `[MRG]` if the contribution is complete and should be subjected to a detailed review.
* **Use commit messages to describe _why_ you are proposing the changes you are proposing.**
* **Try to not rush changes** (the definition of rush depends on how big your changes are).
- **Use commit messages to describe _why_ you are proposing the changes you are proposing.**
- **Try to not rush changes** (the definition of rush depends on how big your changes are).
Remember that everyone in the repo2docker team is a volunteer and we can not (nor would we want to) control their time or interests.
Wait patiently for a reviewer to merge the PR.
(Remember that **someone else** must merge your PR, even if you have the admin rights to do so.)
(contributing:local-dev)=
## Setting up for Local Development
To develop & test repo2docker locally, you need:
@ -120,33 +124,17 @@ After cloning the repository, you should set up an
isolated environment to install libraries required for running / developing
repo2docker.
There are many ways to do this but here we present you with two approaches: `virtual environment` or `pipenv`.
- Using `virtual environment`
```bash
python3 -m venv .
source bin/activate
pip3 install -e .
pip3 install -r dev-requirements.txt
pip3 install -r docs/doc-requirements.txt
pip3 install -r docs/requirements.txt
pip3 install black
```
This should install all the libraries required for testing & running repo2docker!
- Using `pipenv`
Note that you will need to install pipenv first using `pip3 install pipenv`.
Then from the root directory of this project you can use the following commands:
```bash
pipenv install --dev
```
This should install both the dev and docs requirements at once!
### Code formatting
We use [`black`](https://black.readthedocs.io/en/stable/) as code formatter to
@ -162,7 +150,6 @@ according to black's style guide. You can activate it with `pre-commit install`.
As part of our continuous integration tests we will check that code is
formatted properly and the tests will fail if this is not the case.
### Verify that docker is installed and running
If you do not already have [Docker](https://www.docker.com/), you should be able
@ -199,13 +186,12 @@ Then you are good to go!
## Building the documentation locally
If you only changed the documentation, you can also build the documentation locally using `sphinx` .
You can build and inspect the result of documentation changes locally.
```bash
pip install -r docs/doc-requirements.txt
pip install -e .
pip install -r docs/requirements.txt
cd docs/
make html
make devenv
```
Then open the file `docs/build/html/index.html` in your browser.

Wyświetl plik

@ -7,6 +7,7 @@ The goal is to communicate priorities and upcoming release plans.
It is not a aimed at limiting contributions to what is listed here.
## Using the roadmap
### Sharing Feedback on the Roadmap
All of the community is encouraged to provide feedback as well as share new
@ -16,24 +17,22 @@ After submitting the issue, others from the community will probably
respond with questions or comments they have to clarify the issue. The
maintainers will help identify what a good next step is for the issue.
### What do we mean by "next step"?
When submitting an issue, think about what "next step" category best describes
your issue:
* **now**, concrete/actionable step that is ready for someone to start work on.
These might be items that have a link to an issue or more abstract like
"decrease typos and dead links in the documentation"
* **soon**, less concrete/actionable step that is going to happen soon,
discussions around the topic are coming close to an end at which point it can
move into the "now" category
* **later**, abstract ideas or tasks, need a lot of discussion or
experimentation to shape the idea so that it can be executed. Can also
contain concrete/actionable steps that have been postponed on purpose
(these are steps that could be in "now" but the decision was taken to work on
them later)
- **now**, concrete/actionable step that is ready for someone to start work on.
These might be items that have a link to an issue or more abstract like
"decrease typos and dead links in the documentation"
- **soon**, less concrete/actionable step that is going to happen soon,
discussions around the topic are coming close to an end at which point it can
move into the "now" category
- **later**, abstract ideas or tasks, need a lot of discussion or
experimentation to shape the idea so that it can be executed. Can also
contain concrete/actionable steps that have been postponed on purpose
(these are steps that could be in "now" but the decision was taken to work on
them later)
### Reviewing and Updating the Roadmap
@ -48,22 +47,21 @@ For those please create a
The roadmap should give the reader an idea of what is happening next, what needs
input and discussion before it can happen and what has been postponed.
## The roadmap proper
### Project vision
Repo2docker is a dependable tool used by humans that reduces the complexity of
creating the environment in which a piece of software can be executed.
### Now
The "Now" items are being actively worked on by the project:
* reduce documentation typos and syntax errors
* increase test coverage to 80% (see https://codecov.io/gh/jupyterhub/repo2docker/tree/master/repo2docker for low coverage files)
* mounting repository contents in locations that is not `/home/jovyan`
* investigate options for pinning repo2docker versions ([#490](https://github.com/jupyterhub/repo2docker/issues/490))
- reduce documentation typos and syntax errors
- increase test coverage to 80% (see https://codecov.io/gh/jupyterhub/repo2docker/tree/main/repo2docker for low coverage files)
- mounting repository contents in locations that is not `/home/jovyan`
- investigate options for pinning repo2docker versions ([#490](https://github.com/jupyterhub/repo2docker/issues/490))
### Soon
@ -71,15 +69,16 @@ The "Soon" items are being discussed/a plan of action is being made. Once an
item reaches the point of an actionable plan and person who wants to work on
it, the item will be moved to the "Now" section. Typically, these will be moved
at a future review of the roadmap.
* create the contributor highway, define the route from newcomer to project lead
* add Julia Manifest support (https://docs.julialang.org/en/v1/stdlib/Pkg/index.html, [#486](https://github.com/jupyterhub/repo2docker/issues/486))
* support different base images/build pack stacks ([#487](https://github.com/jupyterhub/repo2docker/issues/487))
- create the contributor highway, define the route from newcomer to project lead
- add Julia Manifest support (https://docs.julialang.org/en/v1/stdlib/Pkg/index.html, [#486](https://github.com/jupyterhub/repo2docker/issues/486))
- support different base images/build pack stacks ([#487](https://github.com/jupyterhub/repo2docker/issues/487))
### Later
The "Later" items are things that are at the back of the project's mind. At this
time there is no active plan for an item. The project would like to find the
resources and time to discuss and then execute these ideas.
* support execution on a remote host (with more resources than available locally) via the command-line
* add support for using ZIP files as the repo (`repo2docker https://example.com/an-archive.zip`)
- support execution on a remote host (with more resources than available locally) via the command-line
- add support for using ZIP files as the repo (`repo2docker https://example.com/an-archive.zip`)

Wyświetl plik

@ -4,6 +4,13 @@ These are some common tasks to be done as a part of developing
and maintaining repo2docker. If you'd like more guidance for how
to do these things, reach out in the [JupyterHub Gitter channel](https://gitter.im/jupyterhub/jupyterhub).
:::{admonition} Set up your development environment first!
:class: tip
Before attempting most tasks, follow the directions to [set up your development environment](contributing:local-dev).
Though note that many of these tasks do **not** require Docker.
:::
## Running tests
We have a lot of tests for various cases supported by repo2docker in the `tests/`
@ -25,17 +32,18 @@ py.test -s tests/<path-to-test>
To skip the tests related to Mercurial repositories (to avoid to install
Mercurial and hg-evolve), one can use the environment variable
``REPO2DOCKER_SKIP_HG_TESTS``.
`REPO2DOCKER_SKIP_HG_TESTS`.
### Troubleshooting Tests
Some of the tests have non-python requirements for your development machine. They are:
- `git-lfs` must be installed ([instructions](https://github.com/git-lfs/git-lfs)). It need not be activated -- there is no need to run the `git lfs install` command. It just needs to be available to the test suite.
- If your test failure messages include "`git-lfs filter-process: git-lfs: command not found`", this step should address the problem.
- If your test failure messages include "`git-lfs filter-process: git-lfs: command not found`", this step should address the problem.
- Minimum Docker Image size of 128GB is required. If you are not running docker on a linux OS, you may need to expand the runtime image size for your installation. See Docker's instructions for [macOS](https://docs.docker.com/docker-for-mac/space/) or [Windows 10](https://docs.docker.com/docker-for-windows/#resources) for more information.
- If your test failure messages include "`No space left on device: '/home/...`", this step should address the problem.
- If your test failure messages include "`No space left on device: '/home/...`", this step should address the problem.
## Update and Freeze BuildPack Dependencies
@ -44,36 +52,36 @@ dependencies that are installed by default for several buildpacks.
For both the `conda` and `virtualenv` (`pip`) base environments in the **Conda BuildPack** and **Python BuildPack**,
we install specific pinned versions of all dependencies. We explicitly list the dependencies
we want, then *freeze* them at commit time to explicitly list all the
we want, then _freeze_ them at commit time to explicitly list all the
transitive dependencies at current versions. This way, we know that
all dependencies will have the exact same version installed at all times.
To update one of the dependencies shared across all `repo2docker` builds, you
must follow these steps (with more detailed information in the sections below):
1. Make sure you have [Docker](https://www.docker.com/) running on your computer
2. Bump the version numbers of the dependencies you want to update in the `conda` environment ([link](https://github.com/jupyterhub/repo2docker/blob/master/CONTRIBUTING.md#conda-dependencies))
3. Make a pull request with your changes ([link](https://github.com/jupyterhub/repo2docker/blob/master/CONTRIBUTING.md#make-a-pull-request))
1. Bump the version numbers of the dependencies you want to update in the `conda` environment ([link](tasks:conda-dependencies))
2. Make a pull request with your changes ([link](https://github.com/jupyterhub/repo2docker/blob/HEAD/CONTRIBUTING.md#make-a-pull-request))
See the subsections below for more detailed instructions.
(tasks:conda-dependencies)=
### Conda dependencies
1. There are two files related to conda dependencies. Edit as needed.
- `repo2docker/buildpacks/conda/environment.yml`
- `repo2docker/buildpacks/conda/environment.yml`
Contains list of packages to install in Python3 conda environments,
which are the default. **This is where all Notebook versions &
notebook extensions (such as JupyterLab / nteract) go**.
Contains list of packages to install in Python3 conda environments,
which are the default. **This is where all Notebook versions &
notebook extensions (such as JupyterLab) go**.
- `repo2docker/buildpacks/conda/environment.py-2.7.yml`
- `repo2docker/buildpacks/conda/environment.py-2.7.yml`
Contains list of packages to install in Python2 conda environments, which
can be specifically requested by users. **This only needs `IPyKernel`
and kernel related libraries**. Notebook / Notebook Extension need
not be installed here.
Contains list of packages to install in Python2 conda environments, which
can be specifically requested by users. **This only needs `IPyKernel`
and kernel related libraries**. Notebook / Notebook Extension need
not be installed here.
2. Once you edit either of these files to add a new package / bump version on
an existing package, you should then run:
@ -83,39 +91,30 @@ See the subsections below for more detailed instructions.
python freeze.py
```
This script will resolve dependencies and write them to the respective `.frozen.yml`
files. You will need `docker` installed to run this script.
This script will resolve dependencies and write them to the respective `.lock`
files.
3. After the freeze script finishes, a number of files will have been created.
Commit the following subset of files to git:
3. After the freeze script finishes, a number of files will have been **modified**.
They roughly follow this pattern:
```
repo2docker/buildpacks/conda/environment.yml
repo2docker/buildpacks/conda/environment.frozen.yml
repo2docker/buildpacks/conda/environment.py-2.7.yml
repo2docker/buildpacks/conda/environment.py-2.7.frozen.yml
repo2docker/buildpacks/conda/environment.py-3.5.frozen.yml
repo2docker/buildpacks/conda/environment.py-3.6.frozen.yml
```
```
repo2docker/buildpacks/conda/environment*
```
5. Make a pull request; see details below.
You should **commit all modified files** to git.
6. Once the pull request is approved (but not yet merged), Update the
4. Make a Pull Request to the `jupyterhub/repo2docker` repository, with a description
of what versions were bumped / what new packages were added and why. If you fix a
bug or add new functionality consider adding a new test to prevent the bug from
coming back/the feature breaking in the future.
5. Once the pull request is approved (but not yet merged), Update the
change log (details below) and commit the change log, then update
the pull request.
### Make a Pull Request
Once you've made the commit, please make a Pull Request to the `jupyterhub/repo2docker`
repository, with a description of what versions were bumped / what new packages were
added and why. If you fix a bug or add new functionality consider adding a new
test to prevent the bug from coming back/the feature breaking in the future.
## Creating a Release
We make a release of whatever is on `master` every month. We use "calendar versioning".
We make a release of whatever is on `main` every month. We use "calendar versioning".
Monthly releases give users a predictable pattern for when releases are going to
happen and prevents locking up improvements for fixes for long periods of time.
@ -135,7 +134,7 @@ V=YYYY.MM.0; git tag -am "release $V" $V
> If you need to make a second (or third) release in a month increment the
> trailing 0 of the version to 1 (or 2).
Then push this change up to the master repository
Then push this change up to the main repository
```
git push origin --tags
@ -150,26 +149,13 @@ Once this has completed, make sure that the new version has been updated.
Once the new release has been pushed to PyPI, we need to create a new
release on the [GitHub repository releases page](https://github.com/jupyterhub/repo2docker/releases). Once on that page, follow these steps:
* Click "Draft a new release"
* Choose a tag version using the same tag you just created above
* The release name is simply the tag version
* Finally, click "Publish release"
- Click "Draft a new release"
- Choose a tag version using the same tag you just created above
- The release name is simply the tag version
- Finally, click "Publish release"
That's it!
## Keeping the Pipfile and requirements files up to date
We now have both a `dev-requirements.txt` and a `Pifile` for repo2docker, as
such it is important to keep these in sync/up-to-date.
Both files use `pip identifiers` so if you are updating for example the Sphinx version
in the `doc-requirements.txt` (currently `Sphinx = ">=1.4,!=1.5.4"`) you can use the
same syntax to update the Pipfile and viceversa.
At the moment this has to be done manually so please make sure to update both
files accordingly.
# Uncommon tasks
## Compare generated Dockerfiles between repo2docker versions

Wyświetl plik

@ -7,8 +7,7 @@ The philosophy for the repo2docker buildpacks includes:
- using common configuration files for familiar installation and packaging tools
- allowing configuration files to be combined to compose more complex setups
- specifying default locations for configuration files
(in the repository's root, `binder` or `.binder` directory)
(in the repository's root, `binder` or `.binder` directory)
When designing `repo2docker` and adding to it in the future, the
developers are influenced by two primary use cases.
@ -50,7 +49,7 @@ Many ingredients go into making an image from a repository:
`repo2docker` controls the first two, the user controls the third one. The current
policy for the version of the base image is that we will use the current LTS
version Bionic Beaver (18.04) for the foreseeable future.
version Jammy Jellyfish (22.04) for the foreseeable future.
The version of `repo2docker` used to build an image can influence which packages
are installed by default and which features are supported during the build
@ -79,7 +78,7 @@ is a highly recommended quick read.
Although other projects, like
[s2i](https://github.com/openshift/source-to-image), exist to convert source to
Docker images, `repo2docker` provides the additional functionality to support
*composable* environments. We want to easily have an image with
_composable_ environments. We want to easily have an image with
Python3+Julia+R-3.2 environments, rather than just one single language
environment. While generally one language environment per container works well,
in many scientific / datascience computing environments you need multiple

Wyświetl plik

@ -22,22 +22,35 @@ Repo2docker officially supports the following versions of Python
(specified in your :ref:`environment.yml <environment.yml>` or
:ref:`runtime.txt <runtime.txt>` file):
- 3.11 (added in 2023)
- 3.10 (added in 2022, default in 2023)
- 3.9 (added in 2021)
- 3.8 (added in 0.11)
- 3.7 (added in 0.7, default in 0.8)
- 3.6 (default in 0.7 and earlier)
- 3.5
- 2.7
Additional versions may work, as long as the
`base environment <https://github.com/jupyterhub/repo2docker/blob/master/repo2docker/buildpacks/conda/environment.yml>`_
`base environment <https://github.com/jupyterhub/repo2docker/blob/HEAD/repo2docker/buildpacks/conda/environment.yml>`_
can be installed for your version of Python.
The most likely source of incompatibility is if one of the packages
in the base environment is not packaged for your Python,
either because the version of the package is too new and your chosen Python is too old,
or vice versa.
I Python 2.7 is specified, a separate environment for the kernel will be
installed with Python 2. The notebook server will run in the default Python 3.7
environment.
If an old version of Python is specified (3.6 or earlier in 2023), a separate environment for the kernel will be installed with your requested Python version.
The notebook server will run in the default |default_python| environment.
That is, your _notebooks_ will run with Python 3.6, while your notebook _server_ will run with |default_python|.
These two environments can be distinguished with ``$NB_PYTHON_PREFIX/bin/python`` for the server and ``$KERNEL_PYTHON_PREFIX/bin/python`` for the kernel.
Both of these environment variables area always defined, even when they are the same.
Starting in 2023, the default version of Python used when Python version is unspecified will be updated more often.
Python itself releases a new version every year now, and repo2docker will follow, with the default Python version generally trailing the latest stable version of Python itself by 1-2 versions.
If you choose not to specify a Python version, your repository is _guaranteed_ to stop working, eventually.
We **strongly** recommend specifying a Python version (in environment.yml, runtime.txt, Pipfile, etc.)
Julia
~~~~~
@ -49,11 +62,11 @@ Julia versions 0.6.x and earlier are supported via a :ref:`REQUIRE <REQUIRE>` fi
R
~
The default version of R is currently R 3.6.1. You can select the version of
The default version of R is currently R 4.2. You can select the version of
R you want to use by specifying it in the :ref:`runtime.txt <runtime.txt>`
file.
We support R versions 3.4, 3.5 and 3.6.
We support R versions 3.4, 3.5, 3.6, 4.0, 4.1 and 4.2.
Why is my repository failing to build with ``ResolvePackageNotFound`` ?

Wyświetl plik

@ -0,0 +1,33 @@
# Change the base image used by Docker
You may change the base image used in the `Dockerfile` that creates images by repo2docker.
This is equivalent to changing the `FROM <base_image>` in the Dockerfile.
To do so, use the `base_image` traitlet when invoking `repo2docker` (ex: `repo2docker --Repo2Docker.base_image=image_name`).
Note that this is not configurable by individual repositories, it is configured when you invoke the `repo2docker` command.
```{note}
By default repo2docker builds on top of the `buildpack-deps:jammy` base image, an Ubuntu-based image.
```
## Requirements for your base image
`repo2docker` will only work if a specific set of packages exists in the base image.
Only images that match the following criteria are supported:
- Ubuntu based distributions (minimum `18.04`)
- Contains a set of base packages installed with [the `buildpack-deps` image family](https://hub.docker.com/_/buildpack-deps).
Other images _may_ work, but are not officially supported.
## This will affect reproducibility 🚨
Changing the base image may have an impact on the reproducibility of repositories that are built.
There are **no guarantees that repositories will behave the same way as other repo2docker builds if you change the base image**.
For example these are two scenarios that would make your repositories non-reproducible:
- **Your base image is different from `Ubuntu:jammy`.**
If you change the base image in a way that is different from repo2docker's default (the Ubuntu `jammy` image), then repositories that **you** build with repo2docker may be significantly different from those that **other** instances of repo2docker build (e.g., those from [`mybinder.org`](https://mybinder.org)).
- **Your base image changes over time.**
If you choose a base image that changes its composition over time (e.g., an image provided by some other community), then it may cause repositories build with your base image to change in unpredictable ways.
We recommend choosing a base image that you know to be stable and trustworthy.

Wyświetl plik

@ -0,0 +1,26 @@
# Deal with breaking changes in repo2docker
Repo2docker occasionally has to make breaking changes in how repositories are built.
## Upgrade of base image from Ubuntu 18.04 to 22.04
The base image used by repo2docker was [upgraded from Ubuntu 18.04 to Ubuntu 22.04](https://github.com/jupyterhub/repo2docker/pull/1287) in version 2023.10.0 due to Ubuntu 18.04 going out of support.
This is unlikely to affect you unless you are using {ref}`apt.txt <apt.txt>`.
{ref}`apt.txt <apt.txt>` installs packages from the official Ubuntu package repositories, and is intrinsically tied to the Ubuntu version.
Many packages will be available in both Ubuntu 18.04 and Ubuntu 22.04, however some may be renamed (for example if multiple incompatible versions are available).
Some packages may be removed, or may not be compatible with the previous version.
In this case you should see if your packages can be installed using a {ref}`Conda environment.yml file <environment.yml>` using either the default [conda-forge channel](https://conda-forge.org/feedstock-outputs/) or in one of the many [third-party channels](https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/channels.html).
Alternatively you can try installing the packages from source, using a {ref}`postBuild <postBuild>` script.
As a last resort you can install an older version of repo2docker locally, build your image, push it to a public container registry such as [Docker Hub](https://hub.docker.com/), [GitHub Container Registry](https://docs.github.com/en/packages/guides/about-github-container-registry) or [quay.io](https://quay.io/), and replace your repository's repo2docker configuration with a minimal {ref}`Dockerfile <dockerfile>` containing just:
```dockerfile
FROM <registry>/<username>/<image>:<tag>
```
This image will contain a frozen version of your repository at the time the image was built.
You will need to rebuild and push it everytime your repository is modified.

Wyświetl plik

@ -13,5 +13,7 @@ Select from the pages listed below to get started.
languages
export_environment
lab_workspaces
breaking_changes
jupyterhub_images
deploy
base_image

Wyświetl plik

@ -14,6 +14,6 @@ another JupyterLab installation in order to share a workspace with
someone else.
In order to package your workspace with a repository, we recommend
following the steps in this example repository:
following the steps in the documentation:
https://github.com/ian-r-rose/binder-workspace-demo/
https://jupyterlab.readthedocs.io/en/stable/user/binder.html#customize-the-layout

Wyświetl plik

@ -54,19 +54,26 @@ To specify a specific version of Python, you have two options:
The R Language
==============
To ensure that R is installed, you must specify a version of R in a ``runtime.txt``
file. This takes the following form::
repo2docker supports R, the open source `RStudio IDE <https://www.rstudio.com/>`_ as well
as Jupyter support for R with the `IRKernel <https://irkernel.github.io/>`_. To set it up,
you need to create a ``runtime.txt`` file with the following format:
r-YYYY-MM-DD
r-<version>-<YYYY>-<MM>-<DD>
The date corresponds to the state of the MRAN repository at this day. Make sure
that you choose a day with the desired version of your packages. For example,
to use the MRAN repository on January 1st, 2018, add this line to ``runtime.txt``::
This will provide you R of given version (such as 4.1, 3.6, etc), and a CRAN snapshot
to install libraries from on the given date. You can install more R packages from CRAN
by adding a :ref:`install.R<install.R>` file to your repo. RStudio and IRKernel are
installed by default for all R versions.
r-2018-01-01
`packagemanager.posit.co <https://packagemanager.posit.co/client/#/>`_
will be used to provide much faster installations via `binary packages <https://www.rstudio.com/blog/package-manager-v1-1-no-interruptions/>`_.
For *some* packages, this might require you install underlying system libraries
using :ref:`apt.txt` - look at the page for the CRAN package you are interested in at
`packagemanager.posit.co <https://packagemanager.posit.co/client/#/>`_ to find
a list.
repo2docker stopped using the Microsoft mirror MRAN for older R versions after its shutdown in July, 2023.
Note that to install specific packages with the R environment, you should
use the ``install.R`` configuration file.
Julia
=====

Wyświetl plik

@ -11,26 +11,13 @@ This is controlled with various :ref:`configuration files <config-files>`.
JupyterLab
==========
You do not need any extra configuration in order to allow the use
of the JupyterLab interface. You can launch JupyterLab from within a user
session by opening the Jupyter Notebook and appending ``/lab`` to the end of the URL
like so:
JupyterLab is the default interface for repo2docker.
.. code-block:: none
http(s)://<server:port>/lab
To switch back to the classic notebook, add ``/tree`` to the URL like so:
.. code-block:: none
http(s)://<server:port>/tree
For example, the following Binder URL will open the
The following Binder URL will open the
`pyTudes repository <https://github.com/norvig/pytudes>`_
and begin a JupyterLab session in the ``ipynb`` folder:
https://mybinder.org/v2/gh/norvig/pytudes/master?urlpath=lab/tree/ipynb
https://mybinder.org/v2/gh/norvig/pytudes/HEAD?urlpath=lab/tree/ipynb
The ``/tree/ipynb`` above is how JupyterLab directs you to a specific file
or folder.
@ -38,36 +25,26 @@ or folder.
To learn more about URLs in JupyterLab and Jupyter Notebook, visit
`starting JupyterLab <http://jupyterlab.readthedocs.io/en/latest/getting_started/starting.html>`_.
Classic Notebook Interface
==========================
nteract
=======
`nteract is a notebook interface <https://nteract.io/>`_ built with React.
It is similar to a more feature-filled version of the traditional
Jupyter Notebook interface.
nteract comes pre-installed in any session that has been built from
a Python repository.
You can launch nteract from within a user
session by replacing ``/tree`` with ``/nteract`` at the end of a notebook
server's URL like so:
The classic notebook is also available without any configuration.
To switch to the classic notebook,
You do not need any extra configuration in order to allow the use
of the classic notebook interface.
You can launch the classic notebook interface from within a user
session by opening JupyterLab and replacing ``/lab/`` with ``/tree/`` in the default juptyerlab URL
like so:
.. code-block:: none
http(s)://<server:port>/nteract
http(s)://<server:port>/tree/
For example, the following Binder URL will open the
`pyTudes repository <https://github.com/norvig/pytudes>`_
and begin an nteract session in the ``ipynb`` folder:
And you can switch back to JupyterLab by replacing ``/tree/`` with ``/lab/``:
https://mybinder.org/v2/gh/norvig/pytudes/master?urlpath=nteract/tree/ipynb
The ``/tree/ipynb`` above is how nteract directs you to a specific file
or folder.
To learn more about nteract, visit `the nteract website <https://nteract.io/about>`_.
.. code-block:: none
http(s)://<server:port>/lab/
RStudio
=======
@ -83,13 +60,13 @@ RStudio will be accessible by appending ``/rstudio`` to the URL, like so:
For example, the following Binder link will open an RStudio session in
the `R demo repository <https://github.com/binder-examples/r>`_.
http://mybinder.org/v2/gh/binder-examples/r/master?urlpath=rstudio
http://mybinder.org/v2/gh/binder-examples/r/HEAD?urlpath=rstudio
Shiny
=====
`Shiny lets you create interactive visualizaions with R <https://shiny.rstudio.com/>`_.
`Shiny lets you create interactive visualizations with R <https://shiny.rstudio.com/>`_.
Shiny is automatically enabled if a configuration file for
R is detected (i.e. an R version specified in ``runtime.txt``). If
this is detected, Shiny will be accessible by appending
@ -106,7 +83,7 @@ a Shiny app.
For example, the following Binder link will open a Shiny session in
the `R demo repository <https://github.com/binder-examples/r>`_.
http://mybinder.org/v2/gh/binder-examples/r/master?urlpath=shiny/bus-dashboard/
http://mybinder.org/v2/gh/binder-examples/r/HEAD?urlpath=shiny/bus-dashboard/
Stencila

Wyświetl plik

@ -19,7 +19,7 @@ to build images on demand.
Please report `Bugs <https://github.com/jupyterhub/repo2docker/issues>`_,
`ask questions <https://gitter.im/jupyterhub/binder>`_ or
`contribute to the project <https://github.com/jupyterhub/repo2docker/blob/master/CONTRIBUTING.md>`_.
`contribute to the project <https://github.com/jupyterhub/repo2docker/blob/HEAD/CONTRIBUTING.md>`_.
.. toctree::
:maxdepth: 2

Wyświetl plik

@ -19,7 +19,7 @@ The latest version of Docker, ``18.03``, successfully builds repositories from
`binder-examples <https://github.com/binder-examples>`_.
The `BinderHub <https://binderhub.readthedocs.io/>`_ helm chart uses version
``17.11.0-ce-dind``. See the
`helm chart <https://github.com/jupyterhub/binderhub/blob/master/helm-chart/binderhub/values.yaml#L167>`_
`helm chart <https://github.com/jupyterhub/binderhub/blob/HEAD/helm-chart/binderhub/values.yaml#L167>`_
for more details.
Optional: Mercurial
@ -48,7 +48,7 @@ We recommend installing ``repo2docker`` with the ``pip`` tool::
for the latest release. To install the most recent code from the upstream repository, run::
python3 -m pip install https://github.com/jupyterhub/repo2docker/archive/master.zip
python3 -m pip install https://github.com/jupyterhub/repo2docker/archive/main.zip
For information on using ``repo2docker``, see :ref:`usage`.

Wyświetl plik

@ -52,7 +52,7 @@ Pytudes_ repository::
Building the image may take a few minutes.
Pytudes_
uses a `requirements.txt file <https://github.com/norvig/pytudes/blob/master/requirements.txt>`_
uses a `requirements.txt file <https://github.com/norvig/pytudes/blob/HEAD/requirements.txt>`_
to specify its Python environment. Because of this, ``repo2docker`` will use
``pip`` to install dependencies listed in this ``requirement.txt`` file, and
these will be present in the generated Docker image. To learn more about

Wyświetl plik

@ -1,3 +0,0 @@
# Docker build hooks
These define our [custom hooks for docker automated builds](https://docs.docker.com/docker-hub/builds/advanced/#custom-build-phase-hooks)

Wyświetl plik

@ -1,8 +0,0 @@
#!/bin/bash
# when building jupyter/repo2docker:master
# also push jupyter/repo2docker:1.2.3-3.abcd1234 (replace + with -)
version=$(docker run $DOCKER_REPO:$DOCKER_TAG jupyter-repo2docker --version | sed s@+@-@)
VERSION_IMAGE="$DOCKER_REPO:$version"
docker tag $DOCKER_REPO:$DOCKER_TAG "$VERSION_IMAGE"
docker push "$VERSION_IMAGE"

Wyświetl plik

@ -1,6 +0,0 @@
name: repo2docker
type: sphinx
python:
version: 3
setup_py_install: true
requirements_file: docs/doc-requirements.txt

Wyświetl plik

@ -3,4 +3,7 @@ from ._version import get_versions
__version__ = get_versions()["version"]
del get_versions
from . import _version
from .app import Repo2Docker
__version__ = _version.get_versions()["version"]

Wyświetl plik

@ -1,11 +1,16 @@
import argparse
import sys
import os
import logging
import docker
from .app import Repo2Docker
import os
import sys
from . import __version__
from .utils import validate_and_generate_port_mapping, is_valid_docker_image_name
from .app import Repo2Docker
from .engine import BuildError, ImageLoadError
from .utils import (
R2dState,
is_valid_docker_image_name,
validate_and_generate_port_mapping,
)
def validate_image_name(image_name):
@ -48,7 +53,7 @@ class MimicDockerEnvHandling(argparse.Action):
# key pass using current value, or don't pass
if "=" not in values:
try:
value_to_append = "{}={}".format(values, os.environ[values])
value_to_append = f"{values}={os.environ[values]}"
except KeyError:
# no local def, so don't pass
return
@ -66,6 +71,20 @@ def get_argparser():
description="Fetch a repository and build a container image"
)
argparser.add_argument(
"--help-all",
dest="help_all",
action="store_true",
help="Display all configurable options and exit.",
)
argparser.add_argument(
"--version",
dest="version",
action="store_true",
help="Print the repo2docker version and exit.",
)
argparser.add_argument(
"--config",
default="repo2docker_config.py",
@ -74,7 +93,7 @@ def get_argparser():
argparser.add_argument(
"--json-logs",
default=False,
default=None,
action="store_true",
help="Emit JSON logs instead of human readable logs",
)
@ -89,12 +108,13 @@ def get_argparser():
argparser.add_argument(
"--image-name",
help=("Name of image to be built. If unspecified will be " "autogenerated"),
help="Name of image to be built. If unspecified will be autogenerated",
type=validate_image_name,
)
argparser.add_argument(
"--ref",
default=None,
help=(
"Reference to build instead of default reference. For example"
" branch name or commit for a Git repository."
@ -107,11 +127,17 @@ def get_argparser():
"--no-build",
dest="build",
action="store_false",
help=(
"Do not actually build the image. Useful in conjunction " "with --debug."
),
help="Do not actually build the image. Useful in conjunction with --debug.",
)
argparser.add_argument(
"--build",
dest="build",
action="store_true",
help="Build the image (default)",
)
argparser.set_defaults(build=None)
argparser.add_argument(
"--build-memory-limit",
help="Total Memory that can be used by the docker build process",
@ -130,6 +156,14 @@ def get_argparser():
help="Do not run container after it has been built",
)
argparser.add_argument(
"--run",
dest="run",
action="store_true",
help="Run container after it has been built (default).",
)
argparser.set_defaults(run=None)
argparser.add_argument(
"--publish",
"-p",
@ -145,6 +179,7 @@ def get_argparser():
"--publish-all",
"-P",
dest="all_ports",
default=None,
action="store_true",
help="Publish all exposed ports to random host ports.",
)
@ -155,6 +190,13 @@ def get_argparser():
action="store_false",
help="Don't clean up remote checkouts after we are done",
)
argparser.add_argument(
"--clean",
dest="clean",
action="store_true",
help="Clean up remote checkouts after we are done (default).",
)
argparser.set_defaults(clean=None)
argparser.add_argument(
"--push",
@ -162,6 +204,13 @@ def get_argparser():
action="store_true",
help="Push docker image to repository",
)
argparser.add_argument(
"--no-push",
dest="push",
action="store_false",
help="Don't push docker image to repository (default).",
)
argparser.set_defaults(push=None)
argparser.add_argument(
"--volume",
@ -204,22 +253,39 @@ def get_argparser():
argparser.add_argument("--appendix", type=str, help=Repo2Docker.appendix.help)
argparser.add_argument("--subdir", type=str, help=Repo2Docker.subdir.help)
argparser.add_argument(
"--label",
dest="labels",
action="append",
help="Extra label to set on the image, in form name=value",
default=[],
)
argparser.add_argument(
"--version",
dest="version",
action="store_true",
help="Print the repo2docker version and exit.",
"--build-arg",
dest="build_args",
action="append",
help="Extra build arg to pass to the build process, in form name=value",
default=[],
)
argparser.add_argument("--subdir", type=str, help=Repo2Docker.subdir.help)
argparser.add_argument(
"--cache-from", action="append", default=[], help=Repo2Docker.cache_from.help
)
argparser.add_argument(
"--engine",
type=str,
default="docker",
help=Repo2Docker.engine.help,
)
return argparser
# Note: only used by sphinx-autoprogram
argparser = get_argparser()
@ -227,25 +293,54 @@ def make_r2d(argv=None):
if argv is None:
argv = sys.argv[1:]
argparser = get_argparser()
# version must be checked before parse, as repo/cmd are required and
# will spit out an error if allowed to be parsed first.
if "--version" in argv:
print(__version__)
sys.exit(0)
args = get_argparser().parse_args(argv)
if "--help-all" in argv:
argparser.print_help()
print("\nAll configurable options:\n")
Repo2Docker().print_help(classes=True)
sys.exit(0)
args, traitlet_args = argparser.parse_known_args(argv)
r2d = Repo2Docker()
if args.debug:
r2d.log_level = logging.DEBUG
# load CLI after config file, for correct priority
r2d.load_config_file(args.config)
r2d.parse_command_line(traitlet_args)
if args.debug:
# re-apply debug in case log_level was also set via config
r2d.log_level = logging.DEBUG
if args.appendix:
r2d.appendix = args.appendix
for l in args.labels:
key, _, val = l.partition("=")
r2d.labels[key] = val
for a in args.build_args:
key, _, val = a.partition("=")
r2d.extra_build_args[key] = val
# repo is a required arg, and should never come from config:
if "repo" in r2d.config.Repo2Docker:
r2d.log.warning(
f"Ignoring Repo2Docker.repo={r2d.repo!r} configuration, using {args.repo!r} from CLI."
)
r2d.repo = args.repo
r2d.ref = args.ref
if args.ref is not None:
r2d.ref = args.ref
# user wants to mount a local directory into the container for
# editing
@ -258,29 +353,30 @@ def make_r2d(argv=None):
r2d.volumes[os.path.abspath(args.repo)] = "."
else:
r2d.log.error(
'Cannot mount "{}" in editable mode '
"as it is not a directory".format(args.repo),
extra=dict(phase="failed"),
f'Cannot mount "{args.repo}" in editable mode '
"as it is not a directory",
extra=dict(phase=R2dState.FAILED),
)
sys.exit(1)
if args.image_name:
r2d.output_image_spec = args.image_name
else:
# we will pick a name after fetching the repository
r2d.output_image_spec = ""
r2d.json_logs = args.json_logs
if args.json_logs is not None:
r2d.json_logs = args.json_logs
r2d.dry_run = not args.build
if args.build is not None:
r2d.dry_run = not args.build
if r2d.dry_run:
# Can't push nor run if we aren't building
args.run = False
args.push = False
r2d.run = args.run
r2d.push = args.push
if args.run is not None:
r2d.run = args.run
if args.push is not None:
r2d.push = args.push
# check against r2d.run and not args.run as r2d.run is false on
# --no-build. Also r2d.volumes and not args.volumes since --editable
@ -294,29 +390,33 @@ def make_r2d(argv=None):
src, dest = v.split(":")
r2d.volumes[src] = dest
r2d.run_cmd = args.cmd
if args.cmd:
r2d.run_cmd = args.cmd
if args.all_ports and not r2d.run:
print(
"To publish user defined port mappings, the container must " "also be run"
)
print("To publish user-defined port mappings, the container must also be run")
sys.exit(1)
if args.ports and not r2d.run:
print("To publish user-defined port mappings, the container must also be run")
sys.exit(1)
if args.ports and len(args.ports) > 1 and not r2d.run_cmd:
print(
"To publish user defined port mappings, the container must " "also be run"
"To publish user-defined port mapping, "
"you must specify the command to run in the container"
)
sys.exit(1)
if args.ports and not r2d.run_cmd:
print(
"To publish user defined port mapping, user must specify "
"the command to run in the container"
)
sys.exit(1)
r2d.ports = validate_and_generate_port_mapping(args.ports)
r2d.all_ports = args.all_ports
if args.ports:
# override or update, if also defined in config file?
if r2d.ports:
r2d.log.warning(
f"Ignoring port configuration from config (ports={r2d.ports}), overridden by CLI"
)
r2d.ports = validate_and_generate_port_mapping(args.ports)
if args.all_ports is not None:
r2d.all_ports = args.all_ports
if args.user_id:
r2d.user_id = args.user_id
@ -351,13 +451,14 @@ def make_r2d(argv=None):
if args.cache_from:
r2d.cache_from = args.cache_from
r2d.environment = args.environment
if args.engine:
r2d.engine = args.engine
# if the source exists locally we don't want to delete it at the end
# FIXME: Find a better way to figure out if repo is 'local'. Push this into ContentProvider?
if os.path.exists(args.repo):
r2d.cleanup_checkout = False
else:
if args.environment:
# extend any environment config from a config file
r2d.environment.extend(args.environment)
elif args.clean is not None:
r2d.cleanup_checkout = args.clean
if args.target_repo_dir:
@ -371,12 +472,12 @@ def main():
r2d.initialize()
try:
r2d.start()
except docker.errors.BuildError as e:
except BuildError as e:
# This is only raised by us
if r2d.log_level == logging.DEBUG:
r2d.log.exception(e)
sys.exit(1)
except docker.errors.ImageLoadError as e:
except ImageLoadError as e:
# This is only raised by us
if r2d.log_level == logging.DEBUG:
r2d.log.exception(e)

Wyświetl plik

@ -4,19 +4,22 @@
# directories (produced by setup.py build) will contain a much shorter file
# that just contains the computed version number.
# This file is released into the public domain. Generated by
# versioneer-0.18 (https://github.com/warner/python-versioneer)
# This file is released into the public domain.
# Generated by versioneer-0.29
# https://github.com/python-versioneer/python-versioneer
"""Git implementation of _version.py."""
import errno
import functools
import os
import re
import subprocess
import sys
from typing import Any, Callable, Dict, List, Optional, Tuple
def get_keywords():
def get_keywords() -> Dict[str, str]:
"""Get the keywords needed to look up the version information."""
# these strings will be replaced by git during git-archive.
# setup.py/versioneer.py will grep for the variable names, so they must
@ -32,8 +35,15 @@ def get_keywords():
class VersioneerConfig:
"""Container for Versioneer configuration parameters."""
VCS: str
style: str
tag_prefix: str
parentdir_prefix: str
versionfile_source: str
verbose: bool
def get_config():
def get_config() -> VersioneerConfig:
"""Create, populate and return the VersioneerConfig() object."""
# these strings are filled in when 'setup.py versioneer' creates
# _version.py
@ -51,14 +61,14 @@ class NotThisMethod(Exception):
"""Exception raised if a method is not valid for the current scenario."""
LONG_VERSION_PY = {}
HANDLERS = {}
LONG_VERSION_PY: Dict[str, str] = {}
HANDLERS: Dict[str, Dict[str, Callable]] = {}
def register_vcs_handler(vcs, method): # decorator
"""Decorator to mark a method as the handler for a particular VCS."""
def register_vcs_handler(vcs: str, method: str) -> Callable: # decorator
"""Create decorator to mark a method as the handler of a VCS."""
def decorate(f):
def decorate(f: Callable) -> Callable:
"""Store f in HANDLERS[vcs][method]."""
if vcs not in HANDLERS:
HANDLERS[vcs] = {}
@ -68,24 +78,39 @@ def register_vcs_handler(vcs, method): # decorator
return decorate
def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, env=None):
def run_command(
commands: List[str],
args: List[str],
cwd: Optional[str] = None,
verbose: bool = False,
hide_stderr: bool = False,
env: Optional[Dict[str, str]] = None,
) -> Tuple[Optional[str], Optional[int]]:
"""Call the given command(s)."""
assert isinstance(commands, list)
p = None
for c in commands:
process = None
popen_kwargs: Dict[str, Any] = {}
if sys.platform == "win32":
# This hides the console window if pythonw.exe is used
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
popen_kwargs["startupinfo"] = startupinfo
for command in commands:
try:
dispcmd = str([c] + args)
dispcmd = str([command] + args)
# remember shell=False, so use git.cmd on windows, not just git
p = subprocess.Popen(
[c] + args,
process = subprocess.Popen(
[command] + args,
cwd=cwd,
env=env,
stdout=subprocess.PIPE,
stderr=(subprocess.PIPE if hide_stderr else None),
**popen_kwargs,
)
break
except EnvironmentError:
e = sys.exc_info()[1]
except OSError as e:
if e.errno == errno.ENOENT:
continue
if verbose:
@ -94,20 +119,22 @@ def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, env=
return None, None
else:
if verbose:
print("unable to find command, tried %s" % (commands,))
print(f"unable to find command, tried {commands}")
return None, None
stdout = p.communicate()[0].strip()
if sys.version_info[0] >= 3:
stdout = stdout.decode()
if p.returncode != 0:
stdout = process.communicate()[0].strip().decode()
if process.returncode != 0:
if verbose:
print("unable to run %s (error)" % dispcmd)
print("stdout was %s" % stdout)
return None, p.returncode
return stdout, p.returncode
return None, process.returncode
return stdout, process.returncode
def versions_from_parentdir(parentdir_prefix, root, verbose):
def versions_from_parentdir(
parentdir_prefix: str,
root: str,
verbose: bool,
) -> Dict[str, Any]:
"""Try to determine the version from the parent directory name.
Source tarballs conventionally unpack into a directory that includes both
@ -116,7 +143,7 @@ def versions_from_parentdir(parentdir_prefix, root, verbose):
"""
rootdirs = []
for i in range(3):
for _ in range(3):
dirname = os.path.basename(root)
if dirname.startswith(parentdir_prefix):
return {
@ -126,9 +153,8 @@ def versions_from_parentdir(parentdir_prefix, root, verbose):
"error": None,
"date": None,
}
else:
rootdirs.append(root)
root = os.path.dirname(root) # up a level
rootdirs.append(root)
root = os.path.dirname(root) # up a level
if verbose:
print(
@ -139,41 +165,48 @@ def versions_from_parentdir(parentdir_prefix, root, verbose):
@register_vcs_handler("git", "get_keywords")
def git_get_keywords(versionfile_abs):
def git_get_keywords(versionfile_abs: str) -> Dict[str, str]:
"""Extract version information from the given file."""
# the code embedded in _version.py can just fetch the value of these
# keywords. When used from setup.py, we don't want to import _version.py,
# so we do it with a regexp instead. This function is not used from
# _version.py.
keywords = {}
keywords: Dict[str, str] = {}
try:
f = open(versionfile_abs, "r")
for line in f.readlines():
if line.strip().startswith("git_refnames ="):
mo = re.search(r'=\s*"(.*)"', line)
if mo:
keywords["refnames"] = mo.group(1)
if line.strip().startswith("git_full ="):
mo = re.search(r'=\s*"(.*)"', line)
if mo:
keywords["full"] = mo.group(1)
if line.strip().startswith("git_date ="):
mo = re.search(r'=\s*"(.*)"', line)
if mo:
keywords["date"] = mo.group(1)
f.close()
except EnvironmentError:
with open(versionfile_abs) as fobj:
for line in fobj:
if line.strip().startswith("git_refnames ="):
mo = re.search(r'=\s*"(.*)"', line)
if mo:
keywords["refnames"] = mo.group(1)
if line.strip().startswith("git_full ="):
mo = re.search(r'=\s*"(.*)"', line)
if mo:
keywords["full"] = mo.group(1)
if line.strip().startswith("git_date ="):
mo = re.search(r'=\s*"(.*)"', line)
if mo:
keywords["date"] = mo.group(1)
except OSError:
pass
return keywords
@register_vcs_handler("git", "keywords")
def git_versions_from_keywords(keywords, tag_prefix, verbose):
def git_versions_from_keywords(
keywords: Dict[str, str],
tag_prefix: str,
verbose: bool,
) -> Dict[str, Any]:
"""Get version information from git keywords."""
if not keywords:
raise NotThisMethod("no keywords at all, weird")
if "refnames" not in keywords:
raise NotThisMethod("Short version file found")
date = keywords.get("date")
if date is not None:
# Use only the last line. Previous lines may contain GPG signature
# information.
date = date.splitlines()[-1]
# git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant
# datestamp. However we prefer "%ci" (which expands to an "ISO-8601
# -like" string, which we must then edit to make compliant), because
@ -186,11 +219,11 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose):
if verbose:
print("keywords are unexpanded, not using")
raise NotThisMethod("unexpanded keywords, not a git-archive tarball")
refs = set([r.strip() for r in refnames.strip("()").split(",")])
refs = {r.strip() for r in refnames.strip("()").split(",")}
# starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of
# just "foo-1.0". If we see a "tag: " prefix, prefer those.
TAG = "tag: "
tags = set([r[len(TAG) :] for r in refs if r.startswith(TAG)])
tags = {r[len(TAG) :] for r in refs if r.startswith(TAG)}
if not tags:
# Either we're using git < 1.8.3, or there really are no tags. We use
# a heuristic: assume all version tags have a digit. The old git %d
@ -199,7 +232,7 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose):
# between branches and tags. By ignoring refnames without digits, we
# filter out many common branch names like "release" and
# "stabilization", as well as "HEAD" and "master".
tags = set([r for r in refs if re.search(r"\d", r)])
tags = {r for r in refs if re.search(r"\d", r)}
if verbose:
print("discarding '%s', no digits" % ",".join(refs - tags))
if verbose:
@ -208,6 +241,11 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose):
# sorting will prefer e.g. "2.0" over "2.0rc1"
if ref.startswith(tag_prefix):
r = ref[len(tag_prefix) :]
# Filter out refs that exactly match prefix or that don't start
# with a number once the prefix is stripped (mostly a concern
# when prefix is '')
if not re.match(r"\d", r):
continue
if verbose:
print("picking %s" % r)
return {
@ -230,7 +268,9 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose):
@register_vcs_handler("git", "pieces_from_vcs")
def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
def git_pieces_from_vcs(
tag_prefix: str, root: str, verbose: bool, runner: Callable = run_command
) -> Dict[str, Any]:
"""Get version from 'git describe' in the root of the source tree.
This only gets called if the git-archive 'subst' keywords were *not*
@ -241,7 +281,14 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
if sys.platform == "win32":
GITS = ["git.cmd", "git.exe"]
out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=True)
# GIT_DIR can interfere with correct operation of Versioneer.
# It may be intended to be passed to the Versioneer-versioned project,
# but that should not change where we get our version from.
env = os.environ.copy()
env.pop("GIT_DIR", None)
runner = functools.partial(runner, env=env)
_, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=not verbose)
if rc != 0:
if verbose:
print("Directory %s not under git control" % root)
@ -249,7 +296,7 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
# if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty]
# if there isn't one, this yields HEX[-dirty] (no NUM)
describe_out, rc = run_command(
describe_out, rc = runner(
GITS,
[
"describe",
@ -258,7 +305,7 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
"--always",
"--long",
"--match",
"%s*" % tag_prefix,
f"{tag_prefix}[[:digit:]]*",
],
cwd=root,
)
@ -266,16 +313,48 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
if describe_out is None:
raise NotThisMethod("'git describe' failed")
describe_out = describe_out.strip()
full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root)
full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root)
if full_out is None:
raise NotThisMethod("'git rev-parse' failed")
full_out = full_out.strip()
pieces = {}
pieces: Dict[str, Any] = {}
pieces["long"] = full_out
pieces["short"] = full_out[:7] # maybe improved later
pieces["error"] = None
branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"], cwd=root)
# --abbrev-ref was added in git-1.6.3
if rc != 0 or branch_name is None:
raise NotThisMethod("'git rev-parse --abbrev-ref' returned error")
branch_name = branch_name.strip()
if branch_name == "HEAD":
# If we aren't exactly on a branch, pick a branch which represents
# the current commit. If all else fails, we are on a branchless
# commit.
branches, rc = runner(GITS, ["branch", "--contains"], cwd=root)
# --contains was added in git-1.5.4
if rc != 0 or branches is None:
raise NotThisMethod("'git branch --contains' returned error")
branches = branches.split("\n")
# Remove the first line if we're running detached
if "(" in branches[0]:
branches.pop(0)
# Strip off the leading "* " from the list of branches.
branches = [branch[2:] for branch in branches]
if "master" in branches:
branch_name = "master"
elif not branches:
branch_name = None
else:
# Pick the first branch that is returned. Good or bad.
branch_name = branches[0]
pieces["branch"] = branch_name
# parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty]
# TAG might have hyphens.
git_describe = describe_out
@ -292,7 +371,7 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
# TAG-NUM-gHEX
mo = re.search(r"^(.+)-(\d+)-g([0-9a-f]+)$", git_describe)
if not mo:
# unparseable. Maybe git-describe is misbehaving?
# unparsable. Maybe git-describe is misbehaving?
pieces["error"] = "unable to parse git-describe output: '%s'" % describe_out
return pieces
@ -302,7 +381,7 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
if verbose:
fmt = "tag '%s' doesn't start with prefix '%s'"
print(fmt % (full_tag, tag_prefix))
pieces["error"] = "tag '%s' doesn't start with prefix '%s'" % (
pieces["error"] = "tag '{}' doesn't start with prefix '{}'".format(
full_tag,
tag_prefix,
)
@ -318,26 +397,27 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
else:
# HEX: no tags
pieces["closest-tag"] = None
count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], cwd=root)
pieces["distance"] = int(count_out) # total number of commits
out, rc = runner(GITS, ["rev-list", "HEAD", "--left-right"], cwd=root)
pieces["distance"] = len(out.split()) # total number of commits
# commit date: see ISO-8601 comment in git_versions_from_keywords()
date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[
0
].strip()
date = runner(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip()
# Use only the last line. Previous lines may contain GPG signature
# information.
date = date.splitlines()[-1]
pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
return pieces
def plus_or_dot(pieces):
def plus_or_dot(pieces: Dict[str, Any]) -> str:
"""Return a + if we don't already have one, else return a ."""
if "+" in pieces.get("closest-tag", ""):
return "."
return "+"
def render_pep440(pieces):
def render_pep440(pieces: Dict[str, Any]) -> str:
"""Build up version string, with post-release "local version identifier".
Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you
@ -361,23 +441,70 @@ def render_pep440(pieces):
return rendered
def render_pep440_pre(pieces):
"""TAG[.post.devDISTANCE] -- No -dirty.
def render_pep440_branch(pieces: Dict[str, Any]) -> str:
"""TAG[[.dev0]+DISTANCE.gHEX[.dirty]] .
The ".dev0" means not master branch. Note that .dev0 sorts backwards
(a feature branch will appear "older" than the master branch).
Exceptions:
1: no tags. 0.post.devDISTANCE
1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty]
"""
if pieces["closest-tag"]:
rendered = pieces["closest-tag"]
if pieces["distance"]:
rendered += ".post.dev%d" % pieces["distance"]
if pieces["distance"] or pieces["dirty"]:
if pieces["branch"] != "master":
rendered += ".dev0"
rendered += plus_or_dot(pieces)
rendered += "%d.g%s" % (pieces["distance"], pieces["short"])
if pieces["dirty"]:
rendered += ".dirty"
else:
# exception #1
rendered = "0.post.dev%d" % pieces["distance"]
rendered = "0"
if pieces["branch"] != "master":
rendered += ".dev0"
rendered += "+untagged.%d.g%s" % (pieces["distance"], pieces["short"])
if pieces["dirty"]:
rendered += ".dirty"
return rendered
def render_pep440_post(pieces):
def pep440_split_post(ver: str) -> Tuple[str, Optional[int]]:
"""Split pep440 version string at the post-release segment.
Returns the release segments before the post-release and the
post-release version number (or -1 if no post-release segment is present).
"""
vc = str.split(ver, ".post")
return vc[0], int(vc[1] or 0) if len(vc) == 2 else None
def render_pep440_pre(pieces: Dict[str, Any]) -> str:
"""TAG[.postN.devDISTANCE] -- No -dirty.
Exceptions:
1: no tags. 0.post0.devDISTANCE
"""
if pieces["closest-tag"]:
if pieces["distance"]:
# update the post release segment
tag_version, post_version = pep440_split_post(pieces["closest-tag"])
rendered = tag_version
if post_version is not None:
rendered += ".post%d.dev%d" % (post_version + 1, pieces["distance"])
else:
rendered += ".post0.dev%d" % (pieces["distance"])
else:
# no commits, use the tag as the version
rendered = pieces["closest-tag"]
else:
# exception #1
rendered = "0.post0.dev%d" % pieces["distance"]
return rendered
def render_pep440_post(pieces: Dict[str, Any]) -> str:
"""TAG[.postDISTANCE[.dev0]+gHEX] .
The ".dev0" means dirty. Note that .dev0 sorts backwards
@ -404,12 +531,41 @@ def render_pep440_post(pieces):
return rendered
def render_pep440_old(pieces):
def render_pep440_post_branch(pieces: Dict[str, Any]) -> str:
"""TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] .
The ".dev0" means not master branch.
Exceptions:
1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty]
"""
if pieces["closest-tag"]:
rendered = pieces["closest-tag"]
if pieces["distance"] or pieces["dirty"]:
rendered += ".post%d" % pieces["distance"]
if pieces["branch"] != "master":
rendered += ".dev0"
rendered += plus_or_dot(pieces)
rendered += "g%s" % pieces["short"]
if pieces["dirty"]:
rendered += ".dirty"
else:
# exception #1
rendered = "0.post%d" % pieces["distance"]
if pieces["branch"] != "master":
rendered += ".dev0"
rendered += "+g%s" % pieces["short"]
if pieces["dirty"]:
rendered += ".dirty"
return rendered
def render_pep440_old(pieces: Dict[str, Any]) -> str:
"""TAG[.postDISTANCE[.dev0]] .
The ".dev0" means dirty.
Eexceptions:
Exceptions:
1: no tags. 0.postDISTANCE[.dev0]
"""
if pieces["closest-tag"]:
@ -426,7 +582,7 @@ def render_pep440_old(pieces):
return rendered
def render_git_describe(pieces):
def render_git_describe(pieces: Dict[str, Any]) -> str:
"""TAG[-DISTANCE-gHEX][-dirty].
Like 'git describe --tags --dirty --always'.
@ -446,7 +602,7 @@ def render_git_describe(pieces):
return rendered
def render_git_describe_long(pieces):
def render_git_describe_long(pieces: Dict[str, Any]) -> str:
"""TAG-DISTANCE-gHEX[-dirty].
Like 'git describe --tags --dirty --always -long'.
@ -466,7 +622,7 @@ def render_git_describe_long(pieces):
return rendered
def render(pieces, style):
def render(pieces: Dict[str, Any], style: str) -> Dict[str, Any]:
"""Render the given version pieces into the requested style."""
if pieces["error"]:
return {
@ -482,10 +638,14 @@ def render(pieces, style):
if style == "pep440":
rendered = render_pep440(pieces)
elif style == "pep440-branch":
rendered = render_pep440_branch(pieces)
elif style == "pep440-pre":
rendered = render_pep440_pre(pieces)
elif style == "pep440-post":
rendered = render_pep440_post(pieces)
elif style == "pep440-post-branch":
rendered = render_pep440_post_branch(pieces)
elif style == "pep440-old":
rendered = render_pep440_old(pieces)
elif style == "git-describe":
@ -504,7 +664,7 @@ def render(pieces, style):
}
def get_versions():
def get_versions() -> Dict[str, Any]:
"""Get version information or return default if unable to do so."""
# I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have
# __file__, we can work backwards from there to the root. Some
@ -524,7 +684,7 @@ def get_versions():
# versionfile_source is the relative path from the top of the source
# tree (where the .git directory might live) to this file. Invert
# this to find the root from __file__.
for i in cfg.versionfile_source.split("/"):
for _ in cfg.versionfile_source.split("/"):
root = os.path.dirname(root)
except NameError:
return {

Wyświetl plik

@ -7,26 +7,25 @@ Usage:
python -m repo2docker https://github.com/you/your-repo
"""
import getpass
import json
import sys
import logging
import os
import getpass
import shutil
import sys
import tempfile
import time
import docker
import warnings
from urllib.parse import urlparse
from docker.utils import kwargs_from_env
from docker.errors import DockerException
import entrypoints
import escapism
from pythonjsonlogger import jsonlogger
from traitlets import Any, Dict, Int, List, Unicode, Bool, default
from traitlets import Any, Bool, Dict, Int, List, Unicode, default, observe
from traitlets.config import Application
from . import __version__
from . import __version__, contentproviders
from .buildpacks import (
CondaBuildPack,
DockerBuildPack,
@ -38,8 +37,8 @@ from .buildpacks import (
PythonBuildPack,
RBuildPack,
)
from . import contentproviders
from .utils import ByteSpecification, chdir
from .engine import BuildError, ContainerEngineException, ImageLoadError
from .utils import ByteSpecification, R2dState, chdir, get_platform
class Repo2Docker(Application):
@ -48,6 +47,10 @@ class Repo2Docker(Application):
name = "jupyter-repo2docker"
version = __version__
description = __doc__
# disable aliases/flags because we don't use the traitlets for CLI parsing
# other than --Class.trait=value
aliases = {}
flags = {}
@default("log_level")
def _default_log_level(self):
@ -238,6 +241,47 @@ class Repo2Docker(Application):
""",
)
labels = Dict(
{},
help="""
Extra labels to set on the final image.
Each Label is a key-value pair, with the key being the name of the label
and the value its value.
""",
config=True,
)
platform = Unicode(
config=True,
help="""
Platform to build for, linux/amd64 (recommended) or linux/arm64 (experimental).
""",
)
@default("platform")
def _platform_default(self):
"""
Default platform
"""
p = get_platform()
if p == "linux/arm64":
warnings.warn(
"Building for linux/arm64 is experimental. "
"To use the recommended platform set --Repo2Docker.platform=linux/amd64. "
"To silence this warning set --Repo2Docker.platform=linux/arm64."
)
return p
extra_build_args = Dict(
{},
help="""
Extra build args to pass to the image build process.
This is pretty much only useful for custom Dockerfile based builds.
""",
config=True,
)
json_logs = Bool(
False,
help="""
@ -283,7 +327,7 @@ class Repo2Docker(Application):
)
cleanup_checkout = Bool(
False,
True,
help="""
Delete source repository after building is done.
@ -292,6 +336,12 @@ class Repo2Docker(Application):
config=True,
)
@default("cleanup_checkout")
def _defaut_cleanup_checkout(self):
# if the source exists locally we don't want to delete it at the end
# FIXME: Find a better way to figure out if repo is 'local'. Push this into ContentProvider?
return not os.path.exists(self.repo)
output_image_spec = Unicode(
"",
help="""
@ -311,7 +361,7 @@ class Repo2Docker(Application):
)
run = Bool(
False,
True,
help="""
Run docker image after building
""",
@ -328,6 +378,12 @@ class Repo2Docker(Application):
config=True,
)
@observe("dry_run")
def _dry_run_changed(self, change):
if change.new:
# dry_run forces run and push to be False
self.push = self.run = False
# FIXME: Refactor classes to separate build & run steps
run_cmd = List(
[],
@ -382,6 +438,46 @@ class Repo2Docker(Application):
config=True,
)
engine = Unicode(
"docker",
config=True,
help="""
Name of the container engine.
Defaults to 'docker'.
""",
)
base_image = Unicode(
"docker.io/library/buildpack-deps:jammy",
config=True,
help="""
Base image to use when building docker images.
Only images that match the following criteria are supported:
- Ubuntu based distributions, minimum 18.04
- Contains set of base packages installed with the buildpack-deps
image family: https://hub.docker.com/_/buildpack-deps
Other images *may* work, but are not officially supported.
""",
)
def get_engine(self):
"""Return an instance of the container engine.
Currently no arguments are passed to the engine constructor.
"""
engines = entrypoints.get_group_named("repo2docker.engines")
try:
entry = engines[self.engine]
except KeyError:
raise ContainerEngineException(
f"Container engine '{self.engine}' not found. Available engines: {','.join(engines.keys())}"
)
engine_class = entry.load()
return engine_class(parent=self)
def fetch(self, url, ref, checkout_path):
"""Fetch the contents of `url` and place it in `checkout_path`.
@ -397,16 +493,11 @@ class Repo2Docker(Application):
spec = cp.detect(url, ref=ref)
if spec is not None:
picked_content_provider = cp
self.log.info(
"Picked {cp} content "
"provider.\n".format(cp=cp.__class__.__name__)
)
self.log.info(f"Picked {cp.__class__.__name__} content provider.\n")
break
if picked_content_provider is None:
self.log.error(
"No matching content provider found for " "{url}.".format(url=url)
)
self.log.error(f"No matching content provider found for {url}.")
swh_token = self.config.get("swh_token", self.swh_token)
if swh_token and isinstance(picked_content_provider, contentproviders.Swhid):
@ -415,7 +506,7 @@ class Repo2Docker(Application):
for log_line in picked_content_provider.fetch(
spec, checkout_path, yield_output=self.json_logs
):
self.log.info(log_line, extra=dict(phase="fetching"))
self.log.info(log_line, extra=dict(phase=R2dState.FETCHING))
if not self.output_image_spec:
image_spec = "r2d" + self.repo
@ -438,26 +529,25 @@ class Repo2Docker(Application):
Avoids non-JSON output on errors when using --json-logs
"""
self.log.error(
"Error during build: %s",
evalue,
f"Error during build: {evalue}",
exc_info=(etype, evalue, traceback),
extra=dict(phase="failed"),
extra=dict(phase=R2dState.FAILED),
)
def initialize(self):
def initialize(self, *args, **kwargs):
"""Init repo2docker configuration before start"""
# FIXME: Remove this function, move it to setters / traitlet reactors
self.log = logging.getLogger("repo2docker")
self.log.setLevel(self.log_level)
logHandler = logging.StreamHandler()
self.log.handlers = []
self.log.addHandler(logHandler)
if self.json_logs:
# register JSON excepthook to avoid non-JSON output on errors
sys.excepthook = self.json_excepthook
# Need to reset existing handlers, or we repeat messages
logHandler = logging.StreamHandler()
formatter = jsonlogger.JsonFormatter()
logHandler.setFormatter(formatter)
self.log = logging.getLogger("repo2docker")
self.log.handlers = []
self.log.addHandler(logHandler)
self.log.setLevel(self.log_level)
else:
# due to json logger stuff above,
# our log messages include carriage returns, newlines, etc.
@ -474,13 +564,18 @@ class Repo2Docker(Application):
def push_image(self):
"""Push docker image to registry"""
client = docker.APIClient(version="auto", **kwargs_from_env())
client = self.get_engine()
# Build a progress setup for each layer, and only emit per-layer
# info every 1.5s
progress_layers = {}
layers = {}
last_emit_time = time.time()
for chunk in client.push(self.output_image_spec, stream=True):
for chunk in client.push(self.output_image_spec):
if client.string_output:
self.log.info(chunk, extra=dict(phase=R2dState.PUSHING))
continue
# else this is Docker output
# each chunk can be one or more lines of json events
# split lines here in case multiple are delivered at once
for line in chunk.splitlines():
@ -491,8 +586,8 @@ class Repo2Docker(Application):
self.log.warning("Not a JSON progress line: %r", line)
continue
if "error" in progress:
self.log.error(progress["error"], extra=dict(phase="failed"))
raise docker.errors.ImageLoadError(progress["error"])
self.log.error(progress["error"], extra=dict(phase=R2dState.FAILED))
raise ImageLoadError(progress["error"])
if "id" not in progress:
continue
# deprecated truncated-progress data
@ -506,13 +601,15 @@ class Repo2Docker(Application):
self.log.info(
"Pushing image\n",
extra=dict(
progress=progress_layers, layers=layers, phase="pushing"
progress=progress_layers,
layers=layers,
phase=R2dState.PUSHING,
),
)
last_emit_time = time.time()
self.log.info(
"Successfully pushed {}".format(self.output_image_spec),
extra=dict(phase="pushing"),
f"Successfully pushed {self.output_image_spec}",
extra=dict(phase=R2dState.PUSHING),
)
def run_image(self):
@ -528,7 +625,7 @@ class Repo2Docker(Application):
Returns running container
"""
client = docker.from_env(version="auto")
client = self.get_engine()
docker_host = os.environ.get("DOCKER_HOST")
if docker_host:
@ -538,38 +635,43 @@ class Repo2Docker(Application):
self.hostname = host_name
if not self.run_cmd:
port = str(self._get_free_port())
self.port = port
if len(self.ports) == 1:
# single port mapping specified
# retrieve container and host port from dict
# {'8888/tcp': ('hostname', 'port')}
# or
# {'8888/tcp': 'port'}
container_port_proto, host_port = next(iter(self.ports.items()))
if isinstance(host_port, tuple):
# (hostname, port) tuple or string port
host_name, host_port = host_port
self.hostname = host_name
host_port = int(host_port)
container_port = int(container_port_proto.split("/", 1)[0])
else:
# no port specified, pick a random one
container_port = host_port = str(self._get_free_port())
self.ports = {f"{container_port}/tcp": host_port}
self.port = host_port
# To use the option --NotebookApp.custom_display_url
# make sure the base-notebook image is updated:
# docker pull jupyter/base-notebook
run_cmd = [
"jupyter",
"notebook",
"--ip",
"0.0.0.0",
"--port",
port,
"--NotebookApp.custom_display_url=http://{}:{}".format(host_name, port),
"--ip=0.0.0.0",
f"--port={container_port}",
f"--NotebookApp.custom_display_url=http://{host_name}:{host_port}",
"--NotebookApp.default_url=/lab",
]
ports = {"%s/tcp" % port: port}
else:
# run_cmd given by user, if port is also given then pass it on
run_cmd = self.run_cmd
if self.ports:
ports = self.ports
else:
ports = {}
# store ports on self so they can be retrieved in tests
self.ports = ports
container_volumes = {}
if self.volumes:
api_client = docker.APIClient(
version="auto", **docker.utils.kwargs_from_env()
)
image = api_client.inspect_image(self.output_image_spec)
image_workdir = image["ContainerConfig"]["WorkingDir"]
image = client.inspect_image(self.output_image_spec)
image_workdir = image.config["WorkingDir"]
for k, v in self.volumes.items():
container_volumes[os.path.abspath(k)] = {
@ -579,8 +681,7 @@ class Repo2Docker(Application):
run_kwargs = dict(
publish_all_ports=self.all_ports,
ports=ports,
detach=True,
ports=self.ports,
command=run_cmd,
volumes=container_volumes,
environment=self.environment,
@ -588,7 +689,7 @@ class Repo2Docker(Application):
run_kwargs.update(self.extra_run_kwargs)
container = client.containers.run(self.output_image_spec, **run_kwargs)
container = client.run(self.output_image_spec, **run_kwargs)
while container.status == "created":
time.sleep(0.5)
@ -602,26 +703,32 @@ class Repo2Docker(Application):
Displaying logs while it's running
"""
last_timestamp = None
try:
for line in container.logs(stream=True):
self.log.info(line.decode("utf-8"), extra=dict(phase="running"))
for line in container.logs(stream=True, timestamps=True):
line = line.decode("utf-8")
last_timestamp, line = line.split(" ", maxsplit=1)
self.log.info(line, extra=dict(phase=R2dState.RUNNING))
finally:
container.reload()
if container.status == "running":
self.log.info("Stopping container...\n", extra=dict(phase="running"))
self.log.info(
"Stopping container...\n", extra=dict(phase=R2dState.RUNNING)
)
container.kill()
exit_code = container.attrs["State"]["ExitCode"]
exit_code = container.exitcode
container.wait()
self.log.info(
"Container finished running.\n".upper(), extra=dict(phase="running")
"Container finished running.\n".upper(),
extra=dict(phase=R2dState.RUNNING),
)
# are there more logs? Let's send them back too
late_logs = container.logs().decode("utf-8")
late_logs = container.logs(since=last_timestamp).decode("utf-8")
for line in late_logs.split("\n"):
self.log.info(line + "\n", extra=dict(phase="running"))
self.log.debug(line + "\n", extra=dict(phase=R2dState.RUNNING))
container.remove()
if exit_code:
@ -645,12 +752,11 @@ class Repo2Docker(Application):
if self.dry_run:
return False
# check if we already have an image for this content
client = docker.APIClient(version="auto", **kwargs_from_env())
client = self.get_engine()
for image in client.images():
if image["RepoTags"] is not None:
for tag in image["RepoTags"]:
if tag == self.output_image_spec + ":latest":
return True
for tag in image.tags:
if tag == self.output_image_spec + ":latest":
return True
return False
def build(self):
@ -660,12 +766,9 @@ class Repo2Docker(Application):
# Check if r2d can connect to docker daemon
if not self.dry_run:
try:
docker_client = docker.APIClient(version="auto", **kwargs_from_env())
except DockerException as e:
self.log.error(
"\nDocker client initialization error: %s.\nCheck if docker is running on the host.\n",
e,
)
docker_client = self.get_engine()
except ContainerEngineException as e:
self.log.error(f"\nContainer engine initialization error: {e}\n")
self.exit(1)
# If the source to be executed is a directory, continue using the
@ -674,6 +777,8 @@ class Repo2Docker(Application):
# making a copy of it as it might contain large files that would be
# expensive to copy.
if os.path.isdir(self.repo):
# never cleanup when we are working in a local repo
self.cleanup_checkout = False
checkout_path = self.repo
else:
if self.git_workdir is None:
@ -686,8 +791,7 @@ class Repo2Docker(Application):
if self.find_image():
self.log.info(
"Reusing existing image ({}), not "
"building.".format(self.output_image_spec)
f"Reusing existing image ({self.output_image_spec}), not building."
)
# no need to build, so skip to the end by `return`ing here
# this will still execute the finally clause and let's us
@ -698,21 +802,23 @@ class Repo2Docker(Application):
checkout_path = os.path.join(checkout_path, self.subdir)
if not os.path.isdir(checkout_path):
self.log.error(
"Subdirectory %s does not exist",
self.subdir,
extra=dict(phase="failure"),
f"Subdirectory {self.subdir} does not exist",
extra=dict(phase=R2dState.FAILED),
)
raise FileNotFoundError("Could not find {}".format(checkout_path))
raise FileNotFoundError(f"Could not find {checkout_path}")
with chdir(checkout_path):
for BP in self.buildpacks:
bp = BP()
bp = BP(base_image=self.base_image)
if bp.detect():
picked_buildpack = bp
break
else:
picked_buildpack = self.default_buildpack()
picked_buildpack = self.default_buildpack(
base_image=self.base_image
)
picked_buildpack.platform = self.platform
picked_buildpack.appendix = self.appendix
# Add metadata labels
picked_buildpack.labels["repo2docker.version"] = self.version
@ -720,27 +826,31 @@ class Repo2Docker(Application):
picked_buildpack.labels["repo2docker.repo"] = repo_label
picked_buildpack.labels["repo2docker.ref"] = self.ref
picked_buildpack.labels.update(self.labels)
build_args = {
"NB_USER": self.user_name,
"NB_UID": str(self.user_id),
}
if self.target_repo_dir:
build_args["REPO_DIR"] = self.target_repo_dir
build_args.update(self.extra_build_args)
if self.dry_run:
print(picked_buildpack.render())
print(picked_buildpack.render(build_args))
else:
self.log.debug(
picked_buildpack.render(), extra=dict(phase="building")
picked_buildpack.render(build_args),
extra=dict(phase=R2dState.BUILDING),
)
if self.user_id == 0:
raise ValueError(
"Root as the primary user in the image is not permitted."
)
build_args = {
"NB_USER": self.user_name,
"NB_UID": str(self.user_id),
}
if self.target_repo_dir:
build_args["REPO_DIR"] = self.target_repo_dir
self.log.info(
"Using %s builder\n",
bp.__class__.__name__,
extra=dict(phase="building"),
f"Using {bp.__class__.__name__} builder\n",
extra=dict(phase=R2dState.BUILDING),
)
for l in picked_buildpack.build(
@ -750,21 +860,31 @@ class Repo2Docker(Application):
build_args,
self.cache_from,
self.extra_build_kwargs,
platform=self.platform,
):
if "stream" in l:
self.log.info(l["stream"], extra=dict(phase="building"))
if docker_client.string_output:
self.log.info(l, extra=dict(phase=R2dState.BUILDING))
# else this is Docker output
elif "stream" in l:
self.log.info(
l["stream"], extra=dict(phase=R2dState.BUILDING)
)
elif "error" in l:
self.log.info(l["error"], extra=dict(phase="failure"))
raise docker.errors.BuildError(l["error"], build_log="")
self.log.info(l["error"], extra=dict(phase=R2dState.FAILED))
raise BuildError(l["error"])
elif "status" in l:
self.log.info(
"Fetching base image...\r", extra=dict(phase="building")
"Fetching base image...\r",
extra=dict(phase=R2dState.BUILDING),
)
else:
self.log.info(json.dumps(l), extra=dict(phase="building"))
self.log.info(
json.dumps(l), extra=dict(phase=R2dState.BUILDING)
)
finally:
# Cleanup checkout if necessary
# never cleanup when checking out a local repo
if self.cleanup_checkout:
shutil.rmtree(checkout_path, ignore_errors=True)

Wyświetl plik

@ -1,10 +1,9 @@
from .base import BuildPack, BaseImage
from .python import PythonBuildPack
from .pipfile import PipfileBuildPack
from .base import BaseImage, BuildPack
from .conda import CondaBuildPack
from .julia import JuliaProjectTomlBuildPack
from .julia import JuliaRequireBuildPack
from .docker import DockerBuildPack
from .julia import JuliaProjectTomlBuildPack, JuliaRequireBuildPack
from .legacy import LegacyBinderDockerBuildPack
from .r import RBuildPack
from .nix import NixBuildPack
from .pipfile import PipfileBuildPack
from .python import PythonBuildPack
from .r import RBuildPack

Wyświetl plik

@ -4,63 +4,66 @@ Base information for using R in BuildPacks.
Keeping this in r.py would lead to cyclic imports.
"""
# Via https://rstudio.com/products/rstudio/download-server/debian-ubuntu/
RSTUDIO_URL = "https://download2.rstudio.org/server/bionic/amd64/rstudio-server-1.2.5001-amd64.deb"
# This is MD5, because that is what RStudio download page provides!
RSTUDIO_CHECKSUM = "d33881b9ab786c09556c410e7dc477de"
# Via https://www.rstudio.com/products/shiny/download-server/
SHINY_URL = "https://download3.rstudio.org/ubuntu-14.04/x86_64/shiny-server-1.5.12.933-amd64.deb"
SHINY_CHECKSUM = "9aeef6613e7f58f21c97a4600921340e"
# Version of MRAN to pull devtools from.
DEVTOOLS_VERSION = "2018-02-01"
# IRKernel version - specified as a tag in the IRKernel repository
IRKERNEL_VERSION = "1.1"
from ..semver import parse_version as V
def rstudio_base_scripts():
def rstudio_base_scripts(r_version):
"""Base steps to install RStudio and shiny-server."""
# Shiny server (not the package!) seems to be the same version for all R versions
shiny_server_url = "https://download3.rstudio.org/ubuntu-14.04/x86_64/shiny-server-1.5.17.973-amd64.deb"
shiny_proxy_version = "1.1"
shiny_sha256sum = "80f1e48f6c824be7ef9c843bb7911d4981ac7e8a963e0eff823936a8b28476ee"
# RStudio server has different builds based on wether OpenSSL 3 or 1.1 is available in the base
# image. 3 is present Jammy+, 1.1 until then. Instead of hardcoding URLs based on distro, we actually
# check for the dependency itself directly in the code below. You can find these URLs in
# https://posit.co/download/rstudio-server/, toggling between Ubuntu 22 (for openssl3) vs earlier versions (openssl 1.1)
# you may forget about openssl, but openssl never forgets you.
rstudio_openssl3_url = "https://download2.rstudio.org/server/jammy/amd64/rstudio-server-2022.12.0-353-amd64.deb"
rstudio_openssl3_sha256sum = (
"a5aa2202786f9017a6de368a410488ea2e4fc6c739f78998977af214df0d6288"
)
rstudio_openssl1_url = "https://download2.rstudio.org/server/bionic/amd64/rstudio-server-2022.12.0-353-amd64.deb"
rstudio_openssl1_sha256sum = (
"bb88e37328c304881e60d6205d7dac145525a5c2aaaf9da26f1cb625b7d47e6e"
)
rsession_proxy_version = "2.2.0"
return [
(
"root",
# Install RStudio!
r"""
curl --silent --location --fail {rstudio_url} > /tmp/rstudio.deb && \
echo '{rstudio_checksum} /tmp/rstudio.deb' | md5sum -c - && \
apt-get update && \
apt install -y /tmp/rstudio.deb && \
rm /tmp/rstudio.deb && \
apt-get -qq purge && \
apt-get -qq clean && \
rm -rf /var/lib/apt/lists/*
""".format(
rstudio_url=RSTUDIO_URL, rstudio_checksum=RSTUDIO_CHECKSUM
),
),
(
"root",
# Install Shiny Server!
r"""
curl --silent --location --fail {url} > {deb} && \
echo '{checksum} {deb}' | md5sum -c - && \
dpkg -i {deb} && \
rm {deb}
""".format(
url=SHINY_URL, checksum=SHINY_CHECKSUM, deb="/tmp/shiny.deb"
),
# we should have --no-install-recommends on all our apt-get install commands,
# but here it's important because these recommend r-base,
# which will upgrade the installed version of R, undoing our pinned version
rf"""
apt-get update > /dev/null && \
if apt-cache search libssl3 | grep -q libssl3; then \
RSTUDIO_URL="{rstudio_openssl3_url}" ;\
RSTUDIO_HASH="{rstudio_openssl3_sha256sum}" ;\
else \
RSTUDIO_URL="{rstudio_openssl1_url}" ;\
RSTUDIO_HASH="{rstudio_openssl1_sha256sum}" ;\
fi && \
curl --silent --location --fail ${{RSTUDIO_URL}} > /tmp/rstudio.deb && \
curl --silent --location --fail {shiny_server_url} > /tmp/shiny.deb && \
echo "${{RSTUDIO_HASH}} /tmp/rstudio.deb" | sha256sum -c - && \
echo '{shiny_sha256sum} /tmp/shiny.deb' | sha256sum -c - && \
apt install -y --no-install-recommends /tmp/rstudio.deb /tmp/shiny.deb && \
rm /tmp/*.deb && \
apt-get -qq purge && \
apt-get -qq clean && \
rm -rf /var/lib/apt/lists/*
""",
),
(
"${NB_USER}",
# Install nbrsessionproxy
r"""
pip install --no-cache-dir jupyter-server-proxy==1.4.0 && \
pip install --no-cache-dir https://github.com/jupyterhub/jupyter-rsession-proxy/archive/d5efed5455870556fc414f30871d0feca675a4b4.zip && \
pip install --no-cache-dir https://github.com/ryanlovett/jupyter-shiny-proxy/archive/47557dc47e2aeeab490eb5f3eeae414cdde4a6a9.zip && \
jupyter serverextension enable jupyter_server_proxy --sys-prefix && \
jupyter nbextension install --py jupyter_server_proxy --sys-prefix && \
jupyter nbextension enable --py jupyter_server_proxy --sys-prefix
# Install jupyter-rsession-proxy
rf"""
pip install --no-cache \
jupyter-rsession-proxy=={rsession_proxy_version} \
jupyter-shiny-proxy=={shiny_proxy_version}
""",
),
(

Wyświetl plik

@ -1,21 +1,21 @@
import textwrap
import jinja2
import tarfile
import hashlib
import io
import logging
import os
import re
import logging
import string
import sys
import hashlib
import escapism
import xml.etree.ElementTree as ET
import tarfile
import textwrap
from functools import lru_cache
from traitlets import Dict
import escapism
import jinja2
from docker.utils.build import exclude_paths
# Only use syntax features supported by Docker 17.09
TEMPLATE = r"""
FROM buildpack-deps:bionic
FROM {{base_image}}
# Avoid prompts from apt
ENV DEBIAN_FRONTEND=noninteractive
@ -30,18 +30,18 @@ RUN apt-get -qq update && \
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \
locale-gen
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8
ENV LC_ALL=en_US.UTF-8 \
LANG=en_US.UTF-8 \
LANGUAGE=en_US.UTF-8
# Use bash as default shell, rather than sh
ENV SHELL /bin/bash
ENV SHELL=/bin/bash
# Set up user
ARG NB_USER
ARG NB_UID
ENV USER ${NB_USER}
ENV HOME /home/${NB_USER}
ENV USER=${NB_USER} \
HOME=/home/${NB_USER}
RUN groupadd \
--gid ${NB_UID} \
@ -55,11 +55,6 @@ RUN groupadd \
--uid ${NB_UID} \
${NB_USER}
RUN wget --quiet -O - https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
DISTRO="bionic" && \
echo "deb https://deb.nodesource.com/node_14.x $DISTRO main" >> /etc/apt/sources.list.d/nodesource.list && \
echo "deb-src https://deb.nodesource.com/node_14.x $DISTRO main" >> /etc/apt/sources.list.d/nodesource.list
# Base package installs are not super interesting to users, so hide their outputs
# If install fails for some reason, errors will still be printed
RUN apt-get -qq update && \
@ -89,13 +84,13 @@ EXPOSE 8888
{% if build_env -%}
# Environment variables required for build
{% for item in build_env -%}
ENV {{item[0]}} {{item[1]}}
ENV {{item[0]}}={{item[1]}}
{% endfor -%}
{% endif -%}
{% if path -%}
# Special case PATH
ENV PATH {{ ':'.join(path) }}:${PATH}
ENV PATH={{ ':'.join(path) }}:${PATH}
{% endif -%}
{% if build_script_files -%}
@ -108,10 +103,17 @@ COPY --chown={{ user }}:{{ user }} {{ src }} {{ dst }}
{% for sd in build_script_directives -%}
{{ sd }}
{% endfor %}
# ensure root user after build scripts
USER root
# Allow target path repo is cloned to be configurable
ARG REPO_DIR=${HOME}
ENV REPO_DIR ${REPO_DIR}
ENV REPO_DIR=${REPO_DIR}
# Create a folder and grant the user permissions if it doesn't exist
RUN if [ ! -d "${REPO_DIR}" ]; then \
/usr/bin/install -o ${NB_USER} -g ${NB_USER} -d "${REPO_DIR}"; \
fi
WORKDIR ${REPO_DIR}
RUN chown ${NB_USER}:${NB_USER} ${REPO_DIR}
@ -123,12 +125,12 @@ RUN chown ${NB_USER}:${NB_USER} ${REPO_DIR}
#
# The XDG standard suggests ~/.local/bin as the path for local user-specific
# installs. See https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
ENV PATH ${HOME}/.local/bin:${REPO_DIR}/.local/bin:${PATH}
ENV PATH=${HOME}/.local/bin:${REPO_DIR}/.local/bin:${PATH}
{% if env -%}
# The rest of the environment
{% for item in env -%}
ENV {{item[0]}} {{item[1]}}
ENV {{item[0]}}={{item[1]}}
{% endfor -%}
{% endif -%}
@ -146,9 +148,11 @@ COPY --chown={{ user }}:{{ user }} src/{{ src }} ${REPO_DIR}/{{ dst }}
{% for sd in preassemble_script_directives -%}
{{ sd }}
{% endfor %}
# ensure root user after preassemble scripts
USER root
# Copy stuff.
COPY --chown={{ user }}:{{ user }} src/ ${REPO_DIR}
COPY --chown={{ user }}:{{ user }} src/ ${REPO_DIR}/
# Run assemble scripts! These will actually turn the specification
# in the repository into an image.
@ -177,10 +181,12 @@ RUN ./{{ s }}
# Add start script
{% if start_script is not none -%}
RUN chmod +x "{{ start_script }}"
ENV R2D_ENTRYPOINT "{{ start_script }}"
ENV R2D_ENTRYPOINT="{{ start_script }}"
{% endif -%}
# Add entrypoint
ENV PYTHONUNBUFFERED=1
COPY /python3-login /usr/local/bin/python3-login
COPY /repo2docker-entrypoint /usr/local/bin/repo2docker-entrypoint
ENTRYPOINT ["/usr/local/bin/repo2docker-entrypoint"]
@ -193,9 +199,7 @@ CMD ["jupyter", "notebook", "--ip", "0.0.0.0"]
{% endif %}
"""
ENTRYPOINT_FILE = os.path.join(
os.path.dirname(os.path.abspath(__file__)), "repo2docker-entrypoint"
)
HERE = os.path.dirname(os.path.abspath(__file__))
# Also used for the group
DEFAULT_NB_UID = 1000
@ -208,7 +212,6 @@ class BuildPack:
Specifically used for creating Dockerfiles for use with repo2docker only.
Things that are kept constant:
- base image
- some environment variables (such as locale)
- user creation & ownership of home directory
- working directory
@ -218,16 +221,22 @@ class BuildPack:
"""
def __init__(self):
def __init__(self, base_image):
"""
base_image specifies the base image to use when building docker images
"""
self.log = logging.getLogger("repo2docker")
self.appendix = ""
self.base_image = base_image
self.labels = {}
if sys.platform.startswith("win"):
self.log.warning(
"Windows environment detected. Note that Windows "
"support is experimental in repo2docker."
)
self.platform = ""
@lru_cache()
def get_packages(self):
"""
List of packages that are installed in this BuildPack.
@ -237,6 +246,7 @@ class BuildPack:
"""
return set()
@lru_cache()
def get_base_packages(self):
"""
Base set of apt packages that are installed for all images.
@ -250,10 +260,12 @@ class BuildPack:
return {
# Utils!
"less",
"nodejs",
"unzip",
# Gives us envsubst
"gettext-base",
}
@lru_cache()
def get_build_env(self):
"""
Ordered list of environment variables to be set for this image.
@ -269,6 +281,7 @@ class BuildPack:
"""
return []
@lru_cache()
def get_env(self):
"""
Ordered list of environment variables to be set for this image.
@ -283,6 +296,7 @@ class BuildPack:
"""
return []
@lru_cache()
def get_path(self):
"""
Ordered list of file system paths to look for executables in.
@ -292,12 +306,14 @@ class BuildPack:
"""
return []
@lru_cache()
def get_labels(self):
"""
Docker labels to set on the built image.
"""
return self.labels
@lru_cache()
def get_build_script_files(self):
"""
Dict of files to be copied to the container image for use in building.
@ -322,6 +338,7 @@ class BuildPack:
f"Found a stencila manifest.xml at {root}. Stencila is no longer supported."
)
@lru_cache()
def get_build_scripts(self):
"""
Ordered list of shell script snippets to build the base image.
@ -343,6 +360,7 @@ class BuildPack:
return []
@lru_cache()
def get_preassemble_script_files(self):
"""
Dict of files to be copied to the container image for use in preassembly.
@ -356,6 +374,7 @@ class BuildPack:
"""
return {}
@lru_cache()
def get_preassemble_scripts(self):
"""
Ordered list of shell snippets to build an image for this repository.
@ -372,6 +391,7 @@ class BuildPack:
"""
return []
@lru_cache()
def get_assemble_scripts(self):
"""
Ordered list of shell script snippets to build the repo into the image.
@ -398,6 +418,7 @@ class BuildPack:
"""
return []
@lru_cache()
def get_post_build_scripts(self):
"""
An ordered list of executable scripts to execute after build.
@ -410,6 +431,7 @@ class BuildPack:
"""
return []
@lru_cache()
def get_start_script(self):
"""
The path to a script to be executed at container start up.
@ -462,7 +484,7 @@ class BuildPack:
last_user = "root"
for user, script in self.get_build_scripts():
if last_user != user:
build_script_directives.append("USER {}".format(user))
build_script_directives.append(f"USER {user}")
last_user = user
build_script_directives.append(
"RUN {}".format(textwrap.dedent(script.strip("\n")))
@ -472,7 +494,7 @@ class BuildPack:
last_user = "root"
for user, script in self.get_assemble_scripts():
if last_user != user:
assemble_script_directives.append("USER {}".format(user))
assemble_script_directives.append(f"USER {user}")
last_user = user
assemble_script_directives.append(
"RUN {}".format(textwrap.dedent(script.strip("\n")))
@ -482,7 +504,7 @@ class BuildPack:
last_user = "root"
for user, script in self.get_preassemble_scripts():
if last_user != user:
preassemble_script_directives.append("USER {}".format(user))
preassemble_script_directives.append(f"USER {user}")
last_user = user
preassemble_script_directives.append(
"RUN {}".format(textwrap.dedent(script.strip("\n")))
@ -519,6 +541,7 @@ class BuildPack:
appendix=self.appendix,
# For docker 17.09 `COPY --chown`, 19.03 would allow using $NBUSER
user=build_args.get("NB_UID", DEFAULT_NB_UID),
base_image=self.base_image,
)
@staticmethod
@ -558,6 +581,7 @@ class BuildPack:
build_args,
cache_from,
extra_build_kwargs,
platform=None,
):
tarf = io.BytesIO()
tar = tarfile.open(fileobj=tarf, mode="w")
@ -567,24 +591,52 @@ class BuildPack:
tar.addfile(dockerfile_tarinfo, io.BytesIO(dockerfile))
def _filter_tar(tar):
def _filter_tar(tarinfo):
# We need to unset these for build_script_files we copy into tar
# Otherwise they seem to vary each time, preventing effective use
# of the cache!
# https://github.com/docker/docker-py/pull/1582 is related
tar.uname = ""
tar.gname = ""
tar.uid = int(build_args.get("NB_UID", DEFAULT_NB_UID))
tar.gid = int(build_args.get("NB_UID", DEFAULT_NB_UID))
return tar
tarinfo.uname = ""
tarinfo.gname = ""
tarinfo.uid = int(build_args.get("NB_UID", DEFAULT_NB_UID))
tarinfo.gid = int(build_args.get("NB_UID", DEFAULT_NB_UID))
return tarinfo
for src in sorted(self.get_build_script_files()):
dest_path, src_path = self.generate_build_context_filename(src)
tar.add(src_path, dest_path, filter=_filter_tar)
tar.add(ENTRYPOINT_FILE, "repo2docker-entrypoint", filter=_filter_tar)
for fname in ("repo2docker-entrypoint", "python3-login"):
tar.add(os.path.join(HERE, fname), fname, filter=_filter_tar)
tar.add(".", "src/", filter=_filter_tar)
exclude = []
for ignore_file_name in [".dockerignore", ".containerignore"]:
ignore_file_name = self.binder_path(ignore_file_name)
if os.path.exists(ignore_file_name):
with open(ignore_file_name) as ignore_file:
cleaned_lines = [
line.strip() for line in ignore_file.read().splitlines()
]
exclude.extend(
[
line
for line in cleaned_lines
if line != "" and line[0] != "#"
]
)
files_to_add = exclude_paths(".", exclude)
if files_to_add:
for item in files_to_add:
tar.add(item, f"src/{item}", filter=_filter_tar)
else:
# Either the source was empty or everything was filtered out.
# In any case, create an src dir so the build can proceed.
src = tarfile.TarInfo("src")
src.type = tarfile.DIRTYPE
tar.addfile(src)
tar.close()
tarf.seek(0)
@ -593,8 +645,8 @@ class BuildPack:
# buildpacks/docker.py where it is duplicated
if not isinstance(memory_limit, int):
raise ValueError(
"The memory limit has to be specified as an"
"integer but is '{}'".format(type(memory_limit))
"The memory limit has to be specified as an "
f"integer but is '{type(memory_limit)}'"
)
limits = {}
if memory_limit:
@ -609,50 +661,25 @@ class BuildPack:
tag=image_spec,
custom_context=True,
buildargs=build_args,
decode=True,
forcerm=True,
rm=True,
container_limits=limits,
cache_from=cache_from,
platform=platform,
)
build_kwargs.update(extra_build_kwargs)
for line in client.build(**build_kwargs):
yield line
yield from client.build(**build_kwargs)
class BaseImage(BuildPack):
@lru_cache()
def get_build_env(self):
"""Return env directives required for build"""
return [
("APP_BASE", "/srv"),
("NPM_DIR", "${APP_BASE}/npm"),
("NPM_CONFIG_GLOBALCONFIG", "${NPM_DIR}/npmrc"),
]
def get_path(self):
return super().get_path() + ["${NPM_DIR}/bin"]
def get_build_scripts(self):
scripts = [
(
"root",
r"""
mkdir -p ${NPM_DIR} && \
chown -R ${NB_USER}:${NB_USER} ${NPM_DIR}
""",
),
(
"${NB_USER}",
r"""
npm config --global set prefix ${NPM_DIR}
""",
),
]
return super().get_build_scripts() + scripts
@lru_cache()
def get_env(self):
"""Return env directives to be set after build"""
return []
@ -660,6 +687,7 @@ class BaseImage(BuildPack):
def detect(self):
return True
@lru_cache()
def get_preassemble_scripts(self):
scripts = []
try:
@ -674,8 +702,7 @@ class BaseImage(BuildPack):
# FIXME: Add support for specifying version numbers
if not re.match(r"^[a-z0-9.+-]+", package):
raise ValueError(
"Found invalid package name {} in "
"apt.txt".format(package)
f"Found invalid package name {package} in apt.txt"
)
extra_apt_packages.append(package)
@ -700,16 +727,19 @@ class BaseImage(BuildPack):
return scripts
@lru_cache()
def get_assemble_scripts(self):
"""Return directives to run after the entire repository has been added to the image"""
return []
@lru_cache()
def get_post_build_scripts(self):
post_build = self.binder_path("postBuild")
if os.path.exists(post_build):
return [post_build]
return []
@lru_cache()
def get_start_script(self):
start = self.binder_path("start")
if os.path.exists(start):

Wyświetl plik

@ -1,13 +1,17 @@
"""BuildPack for conda environments"""
import os
import re
import warnings
from collections.abc import Mapping
from functools import lru_cache
from ruamel.yaml import YAML
from ..base import BaseImage
from .._r_base import rstudio_base_scripts, IRKERNEL_VERSION
from ...semver import parse_version as V
from ...utils import is_local_pip_requirement
from .._r_base import rstudio_base_scripts
from ..base import BaseImage
# pattern for parsing conda dependency line
PYTHON_REGEX = re.compile(r"python\s*=+\s*([\d\.]*)")
@ -23,6 +27,27 @@ class CondaBuildPack(BaseImage):
"""
# The kernel conda environment file, if any.
# As an absolute path within the container.
_kernel_environment_file = ""
# extra pip requirements.txt for the kernel
_kernel_requirements_file = ""
# The notebook server environment file.
# As an absolute path within the container.
_nb_environment_file = ""
# extra pip requirements.txt for the notebook env
_nb_requirements_file = ""
def _conda_platform(self):
"""Return the conda platform name for the current platform"""
if self.platform == "linux/amd64":
return "linux-64"
if self.platform == "linux/arm64":
return "linux-aarch64"
raise ValueError(f"Unknown platform {self.platform}")
@lru_cache()
def get_build_env(self):
"""Return environment variables to be set.
@ -30,21 +55,49 @@ class CondaBuildPack(BaseImage):
the `NB_PYTHON_PREFIX` to the location of the jupyter binary.
"""
if not self._nb_environment_file:
# get_build_script_files locates requirements/environment files,
# populating the _nb_environment_file attribute and others.
# FIXME: move file detection and initialization of those attributes to its own step?
self.get_build_script_files()
env = super().get_build_env() + [
("CONDA_DIR", "${APP_BASE}/conda"),
("NB_PYTHON_PREFIX", "${CONDA_DIR}/envs/notebook"),
# We install npm / node from conda-forge
("NPM_DIR", "${APP_BASE}/npm"),
("NPM_CONFIG_GLOBALCONFIG", "${NPM_DIR}/npmrc"),
("NB_ENVIRONMENT_FILE", self._nb_environment_file),
("MAMBA_ROOT_PREFIX", "${CONDA_DIR}"),
# this exe should be used for installs after bootstrap with micromamba
# switch this to /usr/local/bin/micromamba to use it for all installs
("MAMBA_EXE", "${CONDA_DIR}/bin/mamba"),
("CONDA_PLATFORM", self._conda_platform()),
]
if self.py2:
env.append(("KERNEL_PYTHON_PREFIX", "${CONDA_DIR}/envs/kernel"))
if self._nb_requirements_file:
env.append(("NB_REQUIREMENTS_FILE", self._nb_requirements_file))
if self._kernel_environment_file:
# if kernel environment file is separate
env.extend(
[
("KERNEL_PYTHON_PREFIX", "${CONDA_DIR}/envs/kernel"),
("KERNEL_ENVIRONMENT_FILE", self._kernel_environment_file),
]
)
if self._kernel_requirements_file:
env.append(("KERNEL_REQUIREMENTS_FILE", self._kernel_requirements_file))
else:
env.append(("KERNEL_PYTHON_PREFIX", "${NB_PYTHON_PREFIX}"))
return env
@lru_cache()
def get_env(self):
"""Make kernel env the default for `conda install`"""
env = super().get_env() + [("CONDA_DEFAULT_ENV", "${KERNEL_PYTHON_PREFIX}")]
return env
@lru_cache()
def get_path(self):
"""Return paths (including conda environment path) to be added to
the PATH environment variable.
@ -52,18 +105,21 @@ class CondaBuildPack(BaseImage):
"""
path = super().get_path()
path.insert(0, "${CONDA_DIR}/bin")
if self.py2:
if self.separate_kernel_env:
path.insert(0, "${KERNEL_PYTHON_PREFIX}/bin")
path.insert(0, "${NB_PYTHON_PREFIX}/bin")
# This is at the end of $PATH, for backwards compat reasons
path.append("${NPM_DIR}/bin")
return path
@lru_cache()
def get_build_scripts(self):
"""
Return series of build-steps common to all Python 3 repositories.
All scripts here should be independent of contents of the repository.
This sets up through `install-miniforge.bash` (found in this directory):
This sets up through `install-base-env.bash` (found in this directory):
- a directory for the conda environment and its ownership by the
notebook user
@ -72,7 +128,6 @@ class CondaBuildPack(BaseImage):
- a frozen base set of requirements, including:
- support for Jupyter widgets
- support for JupyterLab
- support for nteract
"""
return super().get_build_scripts() + [
@ -80,14 +135,22 @@ class CondaBuildPack(BaseImage):
"root",
r"""
TIMEFORMAT='time: %3R' \
bash -c 'time /tmp/install-miniforge.bash' && \
rm /tmp/install-miniforge.bash /tmp/environment.yml
bash -c 'time /tmp/install-base-env.bash' && \
rm -rf /tmp/install-base-env.bash /tmp/env
""",
)
),
(
"root",
r"""
mkdir -p ${NPM_DIR} && \
chown -R ${NB_USER}:${NB_USER} ${NPM_DIR}
""",
),
]
major_pythons = {"2": "2.7", "3": "3.7"}
major_pythons = {"2": "2.7", "3": "3.10"}
@lru_cache()
def get_build_script_files(self):
"""
Dict of files to be copied to the container image for use in building.
@ -104,30 +167,66 @@ class CondaBuildPack(BaseImage):
"""
files = {
"conda/install-miniforge.bash": "/tmp/install-miniforge.bash",
"conda/install-base-env.bash": "/tmp/install-base-env.bash",
"conda/activate-conda.sh": "/etc/profile.d/activate-conda.sh",
}
py_version = self.python_version
self.log.info("Building conda environment for python=%s" % py_version)
if not py_version or len(py_version.split(".")) != 2:
raise ValueError(
f"{self.__class__.__name__}.python_version must always be specified as 'x.y', e.g. '3.10', got {py_version}."
)
self.log.info(f"Building conda environment for python={py_version}\n")
# Select the frozen base environment based on Python version.
# avoids expensive and possibly conflicting upgrades when changing
# major Python versions during upgrade.
# If no version is specified or no matching X.Y version is found,
# the default base environment is used.
frozen_name = "environment.frozen.yml"
if py_version:
if self.py2:
# python 2 goes in a different env
files[
"conda/environment.py-2.7.frozen.yml"
] = "/tmp/kernel-environment.yml"
else:
py_frozen_name = "environment.py-{py}.frozen.yml".format(py=py_version)
if os.path.exists(os.path.join(HERE, py_frozen_name)):
frozen_name = py_frozen_name
else:
self.log.warning("No frozen env: %s", py_frozen_name)
files["conda/" + frozen_name] = "/tmp/environment.yml"
conda_platform = self._conda_platform()
if self.separate_kernel_env:
# setup kernel environment (separate from server)
# server runs with default env
server_py_version = self.major_pythons["3"]
self.log.warning(
f"User-requested packages for legacy Python version {py_version} will be installed in a separate kernel environment in $KERNEL_PYTHON_PREFIX.\n"
f"Jupyter Server will run with {server_py_version} in $NB_PYTHON_PREFIX.\n"
)
lockfile_name = f"environment.py-{py_version}-{conda_platform}.lock"
if not os.path.exists(os.path.join(HERE, lockfile_name)):
raise ValueError(
f"Python version {py_version} on {conda_platform} is not supported!"
)
files[f"conda/{lockfile_name}"] = self._kernel_environment_file = (
"/tmp/env/kernel-environment.lock"
)
requirements_file_name = f"requirements.py-{py_version}.pip"
if os.path.exists(os.path.join(HERE, requirements_file_name)):
files[f"conda/{requirements_file_name}"] = (
self._kernel_requirements_file
) = "/tmp/env/kernel-requirements.txt"
else:
# server and kernel are the same
server_py_version = py_version
# setup the server Python environment
conda_frozen_name = f"environment.py-{server_py_version}-{conda_platform}.lock"
pip_frozen_name = f"requirements.py-{server_py_version}.pip"
if not os.path.exists(os.path.join(HERE, conda_frozen_name)):
# no env, not supported
raise ValueError(
f"Python version {server_py_version} on {conda_platform} is not supported!"
)
files["conda/" + conda_frozen_name] = self._nb_environment_file = (
"/tmp/env/environment.lock"
)
# add requirements.txt, if present
if os.path.exists(os.path.join(HERE, pip_frozen_name)):
files["conda/" + pip_frozen_name] = self._nb_requirements_file = (
"/tmp/env/requirements.txt"
)
files.update(super().get_build_script_files())
return files
@ -179,8 +278,9 @@ class CondaBuildPack(BaseImage):
def python_version(self):
"""Detect the Python version for a given `environment.yml`
Will return 'x.y' if version is found (e.g '3.6'),
or a Falsy empty string '' if not found.
Will always return an `x.y` version.
If no version is found, the default Python version is used,
via self.major_pythons['3'].
Version information below the minor level is dropped.
"""
@ -198,21 +298,25 @@ class CondaBuildPack(BaseImage):
# extract major.minor
if py_version:
if len(py_version) == 1:
self._python_version = self.major_pythons.get(py_version[0])
py_version_info = py_version.split(".")
if len(py_version_info) == 1:
self._python_version = self.major_pythons[py_version_info[0]]
else:
# return major.minor
self._python_version = ".".join(py_version.split(".")[:2])
self._python_version = ".".join(py_version_info[:2])
else:
self._python_version = ""
self._python_version = self.major_pythons["3"]
self.log.warning(
f"Python version unspecified, using current default Python version {self._python_version}. This will change in the future."
)
return self._python_version
@property
def r_version(self):
"""Detect the Python version for a given `environment.yml`
"""Detect the R version for a given `environment.yml`
Will return 'x.y' if version is found (e.g '3.6'),
Will return 'x.y.z' if version is found (e.g '4.1.1'),
or a Falsy empty string '' if not found.
"""
@ -251,8 +355,27 @@ class CondaBuildPack(BaseImage):
@property
def py2(self):
"""Am I building a Python 2 kernel environment?"""
warnings.warn(
"CondaBuildPack.py2 is deprecated in 2023.2. Use CondaBuildPack.separate_kernel_env.",
DeprecationWarning,
stacklevel=2,
)
return self.python_version and self.python_version.split(".")[0] == "2"
# Python versions _older_ than this get a separate kernel env
kernel_env_cutoff_version = "3.7"
@property
def separate_kernel_env(self):
"""Whether the kernel should be installed into a separate env from the server
Applies to older versions of Python that aren't kept up-to-date
"""
return self.python_version and V(self.python_version) < V(
self.kernel_env_cutoff_version
)
@lru_cache()
def get_preassemble_script_files(self):
"""preassembly only requires environment.yml
@ -266,24 +389,29 @@ class CondaBuildPack(BaseImage):
assemble_files[environment_yml] = environment_yml
return assemble_files
@lru_cache()
def get_env_scripts(self):
"""Return series of build-steps specific to this source repository."""
scripts = []
environment_yml = self.binder_path("environment.yml")
env_prefix = "${KERNEL_PYTHON_PREFIX}" if self.py2 else "${NB_PYTHON_PREFIX}"
env_prefix = (
"${KERNEL_PYTHON_PREFIX}"
if self.separate_kernel_env
else "${NB_PYTHON_PREFIX}"
)
if os.path.exists(environment_yml):
# TODO: when using micromamba, we call $MAMBA_EXE install -p ...
# whereas mamba/conda need `env update -p ...` when it's an env.yaml file
scripts.append(
(
"${NB_USER}",
r"""
rf"""
TIMEFORMAT='time: %3R' \
bash -c 'time mamba env update -p {0} -f "{1}" && \
time mamba clean --all -f -y && \
mamba list -p {0} \
bash -c 'time ${{MAMBA_EXE}} env update -p {env_prefix} --file "{environment_yml}" && \
time ${{MAMBA_EXE}} clean --all -f -y && \
${{MAMBA_EXE}} list -p {env_prefix} \
'
""".format(
env_prefix, environment_yml
),
""",
)
)
@ -295,46 +423,47 @@ class CondaBuildPack(BaseImage):
scripts.append(
(
"${NB_USER}",
r"""
mamba install -p {0} r-base{1} r-irkernel={2} r-devtools -y && \
mamba clean --all -f -y && \
mamba list -p {0}
""".format(
env_prefix, r_pin, IRKERNEL_VERSION
),
rf"""
${{MAMBA_EXE}} install -p {env_prefix} r-base{r_pin} r-irkernel r-devtools -y && \
${{MAMBA_EXE}} clean --all -f -y && \
${{MAMBA_EXE}} list -p {env_prefix}
""",
)
)
scripts += rstudio_base_scripts()
if self.platform != "linux/amd64":
raise RuntimeError(
f"RStudio is only available for linux/amd64 ({self.platform})"
)
scripts += rstudio_base_scripts(self.r_version)
scripts += [
(
"root",
r"""
rf"""
echo auth-none=1 >> /etc/rstudio/rserver.conf && \
echo auth-minimum-user-id=0 >> /etc/rstudio/rserver.conf && \
echo "rsession-which-r={0}/bin/R" >> /etc/rstudio/rserver.conf && \
echo "rsession-which-r={env_prefix}/bin/R" >> /etc/rstudio/rserver.conf && \
echo "rsession-ld-library-path={env_prefix}/lib" >> /etc/rstudio/rserver.conf && \
echo www-frame-origin=same >> /etc/rstudio/rserver.conf
""".format(
env_prefix
),
""",
),
(
"${NB_USER}",
# Install a pinned version of IRKernel and set it up for use!
r"""
R --quiet -e "IRkernel::installspec(prefix='{0}')"
""".format(
env_prefix
),
# Register the jupyter kernel
rf"""
R --quiet -e "IRkernel::installspec(prefix='{env_prefix}')"
""",
),
]
return scripts
@lru_cache()
def get_preassemble_scripts(self):
scripts = super().get_preassemble_scripts()
if self._should_preassemble_env:
scripts.extend(self.get_env_scripts())
return scripts
@lru_cache()
def get_assemble_scripts(self):
scripts = super().get_assemble_scripts()
if not self._should_preassemble_env:

Wyświetl plik

@ -1,11 +1,14 @@
# enable conda and activate the notebook environment
CONDA_PROFILE="${CONDA_DIR}/etc/profile.d/conda.sh"
test -f $CONDA_PROFILE && . $CONDA_PROFILE
eval $(micromamba shell hook -s posix -p ${CONDA_DIR})
for name in conda mamba; do
CONDA_PROFILE="${CONDA_DIR}/etc/profile.d/${name}.sh"
test -f $CONDA_PROFILE && . $CONDA_PROFILE
done
if [[ "${KERNEL_PYTHON_PREFIX}" != "${NB_PYTHON_PREFIX}" ]]; then
# if the kernel is a separate env, stack them
# so both are on PATH, notebook first
conda activate ${KERNEL_PYTHON_PREFIX}
conda activate --stack ${NB_PYTHON_PREFIX}
mamba activate ${KERNEL_PYTHON_PREFIX}
mamba activate --stack ${NB_PYTHON_PREFIX}
# even though it's second on $PATH
# make sure CONDA_DEFAULT_ENV is the *kernel* env
@ -14,5 +17,5 @@ if [[ "${KERNEL_PYTHON_PREFIX}" != "${NB_PYTHON_PREFIX}" ]]; then
# which only contains UI when the two are different
export CONDA_DEFAULT_ENV="${KERNEL_PYTHON_PREFIX}"
else
conda activate ${NB_PYTHON_PREFIX}
mamba activate ${NB_PYTHON_PREFIX}
fi

Wyświetl plik

@ -1,133 +0,0 @@
# AUTO GENERATED FROM environment.py-3.7.yml, DO NOT MANUALLY MODIFY
# Frozen on 2021-02-22 12:26:46 UTC
name: r2d
channels:
- conda-forge
- defaults
- conda-forge/label/broken
dependencies:
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=1_gnu
- alembic=1.5.5=pyhd8ed1ab_0
- anyio=2.1.0=py37h89c1867_0
- argon2-cffi=20.1.0=py37h8f50634_2
- async_generator=1.10=py_0
- attrs=20.3.0=pyhd3deb0d_0
- babel=2.9.0=pyhd3deb0d_0
- backcall=0.2.0=pyh9f0ad1d_0
- backports=1.0=py_2
- backports.functools_lru_cache=1.6.1=py_0
- bleach=3.3.0=pyh44b312d_0
- blinker=1.4=py_1
- brotlipy=0.7.0=py37hb5d75c8_1001
- c-ares=1.17.1=h36c2ea0_0
- ca-certificates=2020.12.5=ha878542_0
- certifi=2020.12.5=py37h89c1867_1
- certipy=0.1.3=py_0
- cffi=1.14.5=py37hc58025e_0
- chardet=4.0.0=py37h89c1867_1
- cryptography=3.4.4=py37hf1a17b8_0
- decorator=4.4.2=py_0
- defusedxml=0.6.0=py_0
- entrypoints=0.3=py37hc8dfbb8_1002
- idna=2.10=pyh9f0ad1d_0
- importlib-metadata=3.4.0=py37h89c1867_0
- importlib_metadata=3.4.0=hd8ed1ab_0
- ipykernel=5.5.0=py37h888b3d9_1
- ipython=7.20.0=py37h888b3d9_2
- ipython_genutils=0.2.0=py_1
- ipywidgets=7.6.3=pyhd3deb0d_0
- jedi=0.18.0=py37h89c1867_2
- jinja2=2.11.3=pyh44b312d_0
- json5=0.9.5=pyh9f0ad1d_0
- jsonschema=3.2.0=py37hc8dfbb8_1
- jupyter-offlinenotebook=0.2.1=pyhd8ed1ab_0
- jupyter-resource-usage=0.5.1=pyhd8ed1ab_0
- jupyter_client=6.1.11=pyhd8ed1ab_1
- jupyter_core=4.7.1=py37h89c1867_0
- jupyter_server=1.4.0=py37h89c1867_0
- jupyter_telemetry=0.1.0=pyhd8ed1ab_1
- jupyterhub-base=1.3.0=py37h89c1867_0
- jupyterhub-singleuser=1.3.0=py37h89c1867_0
- jupyterlab=3.0.7=pyhd8ed1ab_0
- jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
- jupyterlab_server=2.3.0=pyhd8ed1ab_0
- jupyterlab_widgets=1.0.0=pyhd8ed1ab_1
- krb5=1.17.2=h926e7f8_0
- ld_impl_linux-64=2.35.1=hea4e1c9_2
- libcurl=7.71.1=hcdd3856_8
- libedit=3.1.20191231=he28a2e2_2
- libev=4.33=h516909a_1
- libffi=3.3=h58526e2_2
- libgcc-ng=9.3.0=h2828fa1_18
- libgomp=9.3.0=h2828fa1_18
- libnghttp2=1.43.0=h812cca2_0
- libsodium=1.0.18=h516909a_1
- libssh2=1.9.0=hab1572f_5
- libstdcxx-ng=9.3.0=h6de172a_18
- mako=1.1.4=pyh44b312d_0
- markupsafe=1.1.1=py37h5e8e339_3
- mistune=0.8.4=py37h5e8e339_1003
- nbclassic=0.2.6=pyhd8ed1ab_0
- nbclient=0.5.2=pyhd8ed1ab_0
- nbconvert=6.0.7=py37h89c1867_3
- nbformat=5.1.2=pyhd8ed1ab_1
- ncurses=6.2=h58526e2_4
- nest-asyncio=1.4.3=pyhd8ed1ab_0
- notebook=6.2.0=py37h89c1867_0
- nteract_on_jupyter=2.1.3=py_0
- oauthlib=3.0.1=py_0
- openssl=1.1.1j=h7f98852_0
- packaging=20.9=pyh44b312d_0
- pamela=1.0.0=py_0
- pandoc=2.11.4=h7f98852_0
- pandocfilters=1.4.2=py_1
- parso=0.8.1=pyhd8ed1ab_0
- pexpect=4.8.0=py37hc8dfbb8_1
- pickleshare=0.7.5=py37hc8dfbb8_1002
- pip=21.0.1=pyhd8ed1ab_0
- prometheus_client=0.9.0=pyhd3deb0d_0
- prompt-toolkit=3.0.16=pyha770c72_0
- psutil=5.8.0=py37h5e8e339_1
- ptyprocess=0.7.0=pyhd3deb0d_0
- pycparser=2.20=pyh9f0ad1d_2
- pycurl=7.43.0.6=py37h88a64d2_1
- pygments=2.8.0=pyhd8ed1ab_0
- pyjwt=2.0.1=pyhd8ed1ab_0
- pyopenssl=20.0.1=pyhd8ed1ab_0
- pyparsing=2.4.7=pyh9f0ad1d_0
- pyrsistent=0.17.3=py37h5e8e339_2
- pysocks=1.7.1=py37h89c1867_3
- python=3.7.10=hffdb5ce_100_cpython
- python-dateutil=2.8.1=py_0
- python-editor=1.0.4=py_0
- python-json-logger=2.0.1=pyh9f0ad1d_0
- python_abi=3.7=1_cp37m
- pytz=2021.1=pyhd8ed1ab_0
- pyzmq=22.0.3=py37h499b945_0
- readline=8.0=he28a2e2_2
- requests=2.25.1=pyhd3deb0d_0
- ruamel.yaml=0.16.12=py37h5e8e339_2
- ruamel.yaml.clib=0.2.2=py37h5e8e339_2
- send2trash=1.5.0=py_0
- setuptools=49.6.0=py37h89c1867_3
- six=1.15.0=pyh9f0ad1d_0
- sniffio=1.2.0=py37h89c1867_1
- sqlalchemy=1.3.23=py37h5e8e339_0
- sqlite=3.34.0=h74cdb3f_0
- terminado=0.9.2=py37h89c1867_0
- testpath=0.4.4=py_0
- tk=8.6.10=hed695b0_1
- tornado=6.1=py37h5e8e339_1
- traitlets=5.0.5=py_0
- typing_extensions=3.7.4.3=py_0
- urllib3=1.26.3=pyhd8ed1ab_0
- wcwidth=0.2.5=pyh9f0ad1d_2
- webencodings=0.5.1=py_1
- wheel=0.36.2=pyhd3deb0d_0
- widgetsnbextension=3.5.1=py37hc8dfbb8_4
- xz=5.2.5=h516909a_1
- zeromq=4.3.4=h9c3ff4c_0
- zipp=3.4.0=py_0
- zlib=1.2.11=h516909a_1010
prefix: /opt/conda/envs/r2d

Wyświetl plik

@ -0,0 +1,57 @@
# AUTO GENERATED FROM environment.py-2.7.yml, DO NOT MANUALLY MODIFY
# Frozen on 2022-08-01 23:18:07 UTC
# Generated by conda-lock.
# platform: linux-64
# input_hash: 7beee4267691da3e6d80db0820d9671e9bc51feff7a943357b4a21783a8f7826
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.6.15-ha878542_0.tar.bz2#c320890f77fd1d617fa876e0982002c2
https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee
https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.1.0-ha89aaad_16.tar.bz2#6f5ba041a41eb102a1027d9e68731be7
https://conda.anaconda.org/conda-forge/linux-64/libgomp-12.1.0-h8d9b700_16.tar.bz2#f013cf7749536ce43d82afbffdf499ab
https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d
https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar.bz2#4f05bc9844f7c101e6e147dab3c88d5c
https://conda.anaconda.org/conda-forge/linux-64/libffi-3.2.1-he1b5a44_1007.tar.bz2#11389072d7d6036fd811c3d9460475cd
https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.17-h516909a_0.tar.bz2#a98437ebf6fbbc6e498c64636f3958cf
https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_2.tar.bz2#8302381297332ea50532cf2c67961080
https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238
https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1q-h166bdaf_0.tar.bz2#07acc367c7fc8b716770cd5b36d31717
https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa
https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168
https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.2-he1b5a44_2.tar.bz2#bc50a478e0d59f9a62ad164e7d768f63
https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_2.tar.bz2#4533821485cde83ab12ff3d8bda83768
https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.2-h4ff8645_0.tar.bz2#2cf5cb4cd116a78e639977eb61ad9987
https://conda.anaconda.org/conda-forge/linux-64/python-2.7.15-h5a48372_1011_cpython.tar.bz2#d1824ac0987155f58a03b7ffda01db38
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd
https://conda.anaconda.org/conda-forge/noarch/backports_abc-0.5-py_1.tar.bz2#6ac8cc52b55791b066dc43469bbaf8f2
https://conda.anaconda.org/conda-forge/noarch/decorator-4.4.2-py_0.tar.bz2#d2eabb9cabd212e1ec6a9463bd846243
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
https://conda.anaconda.org/conda-forge/linux-64/python_abi-2.7-1_cp27mu.tar.bz2#02d6ad6bce3a798e6ee85494cd9b3d8d
https://conda.anaconda.org/conda-forge/noarch/simplegeneric-0.8.1-py_1.tar.bz2#a561caf8601e8d85547c77a54ee99333
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.1.9-pyh9f0ad1d_0.tar.bz2#ef10a99c7570762fa2a69218c171dbc8
https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022
https://conda.anaconda.org/conda-forge/noarch/backports.shutil_get_terminal_size-1.0.0-py_3.tar.bz2#ed3c4ce59b457c5fd7ca79b94c57eff4
https://conda.anaconda.org/conda-forge/linux-64/certifi-2019.11.28-py27h8c360ce_1.tar.bz2#a345324a2547908c1f9ca4b65d93f5ba
https://conda.anaconda.org/conda-forge/linux-64/configparser-3.7.3-py27h8c360ce_2.tar.bz2#fce87da76335c7274cb858745fded401
https://conda.anaconda.org/conda-forge/linux-64/enum34-1.1.10-py27h8c360ce_1.tar.bz2#0af4ab7b9189611125ba54d99163f58d
https://conda.anaconda.org/conda-forge/linux-64/futures-3.3.0-py27h8c360ce_1.tar.bz2#2689f3fc54d3987298828719b0244005
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh9f0ad1d_2.tar.bz2#5909e7b978141dd80d28dbf9de627827
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.1-py_0.tar.bz2#0d0150ed9c2d25817f5324108d3f7571
https://conda.anaconda.org/conda-forge/linux-64/pyzmq-19.0.0-py27h76efe43_1.tar.bz2#0f578fd2966e4b2b910ffb3d39951645
https://conda.anaconda.org/conda-forge/linux-64/scandir-1.10.0-py27hdf8410d_1.tar.bz2#bfaf4b51772c5904b696ce7d68731397
https://conda.anaconda.org/conda-forge/noarch/singledispatch-3.6.1-pyh44b312d_0.tar.bz2#97dbbff78f872e5eb30a57c050cc4bba
https://conda.anaconda.org/conda-forge/linux-64/entrypoints-0.3-py27h8c360ce_1001.tar.bz2#60366d5225a69edbfcc71572b099ddde
https://conda.anaconda.org/conda-forge/linux-64/pathlib2-2.3.5-py27h8c360ce_1.tar.bz2#5334600914183898c9e7610d894e49e3
https://conda.anaconda.org/conda-forge/linux-64/setuptools-44.0.0-py27_0.tar.bz2#a1dcb0ca393c777d0611faf5b86602be
https://conda.anaconda.org/conda-forge/linux-64/tornado-5.1.1-py27h14c3975_1000.tar.bz2#adf3de0f4bc56b631b63e5b5dc0a8886
https://conda.anaconda.org/conda-forge/linux-64/traitlets-4.3.3-py27h8c360ce_1.tar.bz2#1e13e5ecf3cab787df71dc0c77563dce
https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-4.6.3-py27h8c360ce_1.tar.bz2#1ea743b19d7f4e758b0a385fe9a1ef4b
https://conda.anaconda.org/conda-forge/linux-64/pickleshare-0.7.5-py27h8c360ce_1001.tar.bz2#93586047c34842372ae2c1ed5fc9edbf
https://conda.anaconda.org/conda-forge/noarch/pip-20.1.1-pyh9f0ad1d_0.tar.bz2#cd67a20c73ff2514cf5f34cae28fc867
https://conda.anaconda.org/conda-forge/noarch/pygments-2.5.2-py_0.tar.bz2#c48719b941c60b26add57de2b014ef96
https://conda.anaconda.org/conda-forge/linux-64/jupyter_client-5.3.4-py27_1.tar.bz2#ec6099141189dfae14367478d3e96fa9
https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-1.0.15-py_1.tar.bz2#f5bea0930b268df84653cb32c8d1542f
https://conda.anaconda.org/conda-forge/linux-64/ipython-5.8.0-py27_1.tar.bz2#b95b11ff25dde76c6fa0c5620a8e90ad
https://conda.anaconda.org/conda-forge/linux-64/ipykernel-4.8.2-py27_0.tar.bz2#18141b1342f87e1607c5b389c2c12a81

Wyświetl plik

@ -1,59 +0,0 @@
# AUTO GENERATED FROM environment.py-2.7.yml, DO NOT MANUALLY MODIFY
# Frozen on 2021-02-22 12:21:22 UTC
name: r2d
channels:
- conda-forge
- defaults
- conda-forge/label/broken
dependencies:
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=1_gnu
- backports=1.0=py27_1
- backports.shutil_get_terminal_size=1.0.0=py27_1
- backports_abc=0.5=py27_0
- ca-certificates=2020.12.5=ha878542_0
- certifi=2019.11.28=py27h8c360ce_1
- configparser=3.7.3=py27h8c360ce_2
- decorator=4.4.2=py_0
- entrypoints=0.3=py27h8c360ce_1001
- enum34=1.1.10=py27h8c360ce_1
- futures=3.3.0=py27h8c360ce_1
- ipykernel=4.8.2=py27_0
- ipython=5.8.0=py27_1
- ipython_genutils=0.2.0=py27_0
- jupyter_client=5.3.4=py27_1
- jupyter_core=4.6.3=py27h8c360ce_1
- ld_impl_linux-64=2.35.1=hea4e1c9_2
- libffi=3.2.1=he1b5a44_1007
- libgcc-ng=9.3.0=h2828fa1_18
- libgomp=9.3.0=h2828fa1_18
- libsodium=1.0.17=h516909a_0
- libstdcxx-ng=9.3.0=h6de172a_18
- ncurses=6.2=h58526e2_4
- openssl=1.1.1j=h7f98852_0
- pathlib2=2.3.5=py27h8c360ce_1
- pexpect=4.8.0=py27h8c360ce_1
- pickleshare=0.7.5=py27h8c360ce_1001
- pip=20.1.1=pyh9f0ad1d_0
- prompt_toolkit=1.0.15=py27_0
- ptyprocess=0.7.0=pyhd3deb0d_0
- pygments=2.5.2=py_0
- python=2.7.15=h5a48372_1011_cpython
- python-dateutil=2.8.1=py_0
- python_abi=2.7=1_cp27mu
- pyzmq=19.0.0=py27h76efe43_1
- readline=8.0=he28a2e2_2
- scandir=1.10.0=py27hdf8410d_1
- setuptools=44.0.0=py27_0
- simplegeneric=0.8.1=py27_0
- singledispatch=3.6.0=pyh44b312d_0
- six=1.15.0=pyh9f0ad1d_0
- sqlite=3.34.0=h74cdb3f_0
- tk=8.6.10=hed695b0_1
- tornado=5.1.1=py27h14c3975_1000
- traitlets=4.3.3=py27h8c360ce_1
- wcwidth=0.1.9=pyh9f0ad1d_0
- wheel=0.36.2=pyhd3deb0d_0
- zeromq=4.3.2=he1b5a44_2
- zlib=1.2.11=h516909a_1010
prefix: /opt/conda/envs/r2d

Wyświetl plik

@ -1,4 +1,7 @@
channels:
- conda-forge
dependencies:
- python=2.7.*
- pip
- ipykernel==4.8.2
- wcwidth==0.1.9

Wyświetl plik

@ -0,0 +1,175 @@
# AUTO GENERATED FROM environment.py-3.10.yml, DO NOT MANUALLY MODIFY
# Frozen on 2023-10-14 22:06:18 UTC
# Generated by conda-lock.
# platform: linux-64
# input_hash: d4de4d52232becb85e22651d47e3ee37eda3e6773f0cda97e029623595714734
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.7.22-hbcca054_0.conda#a73ecd2988327ad4c8f2c331482917f2
https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3
https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_2.conda#9172c297304f2a20134fc56c97fbe229
https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.10-4_cp310.conda#26322ec5d7712c3ded99dd656142b8ce
https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda#939e3e74d8be4dac89ce83b20de2492a
https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_2.conda#e2042154faafe61969556f28bade94b9
https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d
https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_2.conda#c28003b0be0494f9a7664389146716ff
https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54
https://conda.anaconda.org/conda-forge/linux-64/gmp-6.2.1-h58526e2_0.tar.bz2#b94cf2db16066b242ebd26db2facbd56
https://conda.anaconda.org/conda-forge/linux-64/icu-72.1-hcb278e6_0.conda#7c8d20d847bb45f56bd941578fcfa146
https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3
https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-hd590300_1.conda#854e3e1623b39777140f199c5f9ab952
https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d
https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b
https://conda.anaconda.org/conda-forge/linux-64/libuv-1.46.0-hd590300_0.conda#d23c76f7e6dcd6243d1b6ef5e62d17d2
https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda#f36c115f1ee199da648e0597ec2047ad
https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-hcb278e6_0.conda#681105bccc2a3f7f1a837d47d39c9179
https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.3-hd590300_0.conda#7bb88ce04c8deb9f7d763ae04a1da72f
https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0
https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae
https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.43.2-h2797004_0.conda#4b441a1ee22397d5a27dc1126b849edd
https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4
https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-h2797004_0.conda#513336054f884f95d9fd925748f41ef3
https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_0.conda#8851084c192dbc56215ac4e3c9aa30fa
https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda#68c34ec6149623be41a1933ab996a209
https://conda.anaconda.org/conda-forge/linux-64/nodejs-18.17.1-hf52ce11_0.conda#c3aad73875296ca9ad3954aa606536b9
https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.3-h32600fe_0.conda#8287aeb8462e2d4b235eff788e75919d
https://conda.anaconda.org/conda-forge/linux-64/python-3.10.12-hd12c33a_0_cpython.conda#eb6f1df105f37daedd6dca78523baa75
https://conda.anaconda.org/conda-forge/noarch/aiofiles-22.1.0-pyhd8ed1ab_0.tar.bz2#a88c206fdb78e34adb1c4081f5f838dd
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda#3edfead7cedd1ab4400a6c588f3e75f8
https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda#54ca2e08b3220c148a1d8329c2678e02
https://conda.anaconda.org/conda-forge/noarch/blinker-1.6.3-pyhd8ed1ab_0.conda#d33cf7357de636cec64320f0c4fb7b6f
https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py310hc6cd4ac_1.conda#1f95722c94f00b69af69a066c7433714
https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a
https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda#7f3dbc9179b4dde7da98dfb151d0ad22
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.0-pyhd8ed1ab_0.conda#fef8ef5f0a54546b9efee39468229917
https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.0-py310hc6cd4ac_1.conda#01388b4ec9eed3b26fa732aa39745475
https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d
https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda#e6518222753f519e911e83136d2158d9
https://conda.anaconda.org/conda-forge/noarch/executing-1.2.0-pyhd8ed1ab_0.tar.bz2#4c1bc140e2be5c8ba6e3acab99e25c50
https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.0-py310hc6cd4ac_1.conda#4377af4c1641b4fc730707169257bd28
https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#34272b248891bddccc64479f9a7fffed
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda#dac1dabba2b5a9d1aee175c5fcc7b436
https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-2.4-py310hff52083_3.conda#08ec1463dbc5c806a32fc431874032ca
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda#8370e0a9dc443f9b45a23fd30e7a6b3b
https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.3-py310h2372a71_1.conda#b74e07a054c479e45a83a83fc5be713c
https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.1-pyhd8ed1ab_0.conda#1dad8397c94e4de97a70de552a7dcf49
https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda#a4f0e4519bc50eee4f53f689be9607f7
https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6
https://conda.anaconda.org/conda-forge/noarch/pamela-1.1.0-pyh1a96a4e_0.conda#dce93ccf07159017c69c6d9cea2d5d61
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761
https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9
https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.17.1-pyhd8ed1ab_0.conda#02153b6b760bbec00cfe9e4c97993d06
https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py310h2372a71_1.conda#cb25177acf28cc35cfa6c1ac1c679e22
https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883
https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda#40e5cb18165466773619e5c963f00a7b
https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda#912c0194f898fdb783021fd25f913c31
https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025
https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.1-pyhd8ed1ab_0.conda#305141cff54af2f90e089d868fffce28
https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960
https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda#c93346b446cd08c169d843ae5fc0da97
https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py310h2372a71_1.conda#bb010e368de4940771368bc3dc4c63e7
https://conda.anaconda.org/conda-forge/linux-64/pyzmq-24.0.1-py310h330234f_1.tar.bz2#527a1e6cb07b5c19563131af9fca3835
https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f
https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.10.6-py310hcb5633a_0.conda#43c12d8f7891a87378eb5339c49ef051
https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py310h2372a71_2.conda#7c9da9721ee545d57ad759f020172853
https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2
https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda#fc2166155db840c634a1291a5c35a709
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2#dd6cbc539e74cb1f430efbd4575b9303
https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561
https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96
https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3.3-py310h2372a71_1.conda#b23e0147fa5f7a9380e06334c7266ad5
https://conda.anaconda.org/conda-forge/noarch/traitlets-5.11.2-pyhd8ed1ab_0.conda#bd3f90f7551e1cffb1f402880eb2cef1
https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.14-pyhd8ed1ab_0.conda#4df15c51a543e806d439490b862be1c6
https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda#5b1be40a26d10a06f6d4f1f9e19fa0c7
https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda#0944dc65cb4a9b5b68522c3bb585d41c
https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda#bdb77b28cf16deac0eef431a068320e8
https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda#1ccd092478b3e0ee10d7a891adbf8a4f
https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda#82617d07b2f5f5a96296d3c19684b37a
https://conda.anaconda.org/conda-forge/linux-64/y-py-0.5.9-py310h4426083_0.conda#0b3145258baa17d4405c3800a308da99
https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a
https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49
https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.0-pyhd8ed1ab_0.conda#056f04e51dd63337e8d7c425c18c86f1
https://conda.anaconda.org/conda-forge/noarch/babel-2.13.0-pyhd8ed1ab_0.conda#22541af7a9eb59fc6afcadb7ecdf9219
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e
https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551
https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py310h2fee648_0.conda#45846a970e71ac98fd327da5d40a0a2c
https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda#c8eaca39e2b6abae1fc96acc929ae939
https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda#4e9f59a060c3be52bc4ddc46ee9b6946
https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.0-pyhd8ed1ab_0.conda#48b0d98e0c0ec810d3ccc2a0926c8c0e
https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2
https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2#243f63592c8e449f40cd42eb5cf32f40
https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2#330448ce4403cc74990ac07c555942a1
https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda#a33161b983172ba6ef69d5fc850650cd
https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520
https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.17.35-py310h2372a71_0.conda#b44ae5156bd1561aca4430a8176819bb
https://conda.anaconda.org/conda-forge/noarch/terminado-0.17.1-pyh41d4057_0.conda#3788984d535770cad699efaeb6cb3037
https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda#384462e63262a527bda564fa2d9126c0
https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.6-pyhd8ed1ab_0.conda#d5f8944ff9ab24a292511c83dce33dea
https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8
https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py310h2372a71_4.conda#68ee85860502d53c8cbfa0e4cef0f6cb
https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508
https://conda.anaconda.org/conda-forge/linux-64/cryptography-41.0.4-py310h75e40e8_0.conda#ad06c4db71ba0b6d153c66de88a41fdc
https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b
https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda#7c27ea1bdbe520bb830dcadd59f55cbf
https://conda.anaconda.org/conda-forge/noarch/mako-1.2.4-pyhd8ed1ab_0.tar.bz2#0d072f0edc017b6318dbab701e053f94
https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda#8f567c0a74aa44cf732f15773b4083b0
https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b
https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.22-py310h2372a71_0.conda#e6d6b76280522052457c12ae7b0cdc23
https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.8-pyhd8ed1ab_0.conda#367386d2575a0e62412448eda1012efd
https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.0-pyhd8ed1ab_0.conda#ba29026b587195548ef82444518061f7
https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4
https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a
https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.1-pyhd8ed1ab_0.conda#78aff5d2af74e6537c1ca73017f01f4f
https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.4.0-py310hff52083_0.conda#28cdf08d2d44db099a95a176f01f7120
https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-0.2.4-pyhd8ed1ab_0.conda#be5d4633c1cc40343ed417153a184006
https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.39-pyha770c72_0.conda#a4986c6bb5b0d05a38855b0880a5f425
https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda#34f7d568bf59d18e3fef8c405cbece21
https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.8.2-pyhd8ed1ab_0.conda#5ee5ad3af20138020065985de57f0711
https://conda.anaconda.org/conda-forge/noarch/certipy-0.1.3-py_0.tar.bz2#23486713ef5712923e7c57cae609b22e
https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.19.1-pyhd8ed1ab_0.conda#daca0665e6fe8a376e48b9f0b5865326
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.4.9-pyhd8ed1ab_0.conda#5cbf9a31a19d4ef9103adb7d71fd45fd
https://conda.anaconda.org/conda-forge/noarch/jupyter_telemetry-0.1.0-pyhd8ed1ab_1.tar.bz2#bb9ebdb6d5aa2622484aff1faceee181
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda#61ba076de6530d9301a0053b02f093d2
https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.39-hd8ed1ab_0.conda#4bbbe67d5df19db30f04b8e344dc9976
https://conda.anaconda.org/conda-forge/noarch/ipython-8.16.1-pyh0d859eb_0.conda#7e52cb0dbf01b90365bfe433ec8bd3c0
https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.7.0-pyhd8ed1ab_2.conda#088f0493279a7f7eebd514df47d65851
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-base-3.1.1-pyh2a2186d_0.conda#78fc5dfd4577a7ba172fa65eb64b6afb
https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda#e78da91cf428faaf05701ce8cc8f2f9b
https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.25.2-pyh2140261_0.conda#226f2032ec491cc6e9ce66072660e4f6
https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda#2605fae5ee27100e5f10037baebf4d41
https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.9.2-pyhd8ed1ab_0.conda#01e4314c780ca73759c694ce3ece281f
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-1.24.0-pyhd8ed1ab_0.conda#7f0d2ec2d4954188ff23503f39823409
https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.9.2-pyhd8ed1ab_0.conda#1ad46253f2eb46fb8c9b2c22b7ca012f
https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-0.7.1-pyhd8ed1ab_0.conda#62ed54dc748d19d0cf056a3f90cc8f12
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.0-pyhd8ed1ab_0.conda#a12525b037a703d7f4512da737d700e6
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.0-pyhd8ed1ab_0.conda#a52834fa7e3d12abc5efdf06b2097a05
https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.9.2-pyhd8ed1ab_0.conda#16ccaddfcfa0a1a606a9ecf6a52d6c11
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-0.8.0-pyhd8ed1ab_0.conda#780280d42fbcb2eaf654a6ba7a3e5bb5
https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda#a0be31e9bd84d6eae87cdbf74c56b90b
https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.6-pyha770c72_0.conda#2e2422cf19f555ef3ddbbeaf2eac7545
https://conda.anaconda.org/conda-forge/noarch/jupyter-offlinenotebook-0.2.2-pyh1d7be83_0.tar.bz2#fe55056ce4bc4bd4953ba440270735fb
https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.6.6-pyhd8ed1ab_0.conda#05def61d4c64b0f3161eaeb3b00cc790
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-singleuser-3.1.1-pyh2a2186d_0.conda#6d0a3394efe9ff7c0ad1ed03a6ca3720

Wyświetl plik

@ -0,0 +1,173 @@
# AUTO GENERATED FROM environment.py-3.10.yml, DO NOT MANUALLY MODIFY
# Frozen on 2023-10-14 22:06:28 UTC
# Generated by conda-lock.
# platform: linux-aarch64
# input_hash: c71bc2e0a2dae5dac9678a5765d28fa98eb1ed55fa606c1c53a3068d043922df
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2023.7.22-hcefe29a_0.conda#95d7f998087114466fa91e7c2887fa2f
https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.40-h2d8c526_0.conda#16246d69e945d0b1969a6099e7c5d457
https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-13.2.0-hf8544c7_2.conda#8ce66e4e1d30f0936a525127eaaaf63d
https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-13.2.0-h9a76618_2.conda#921c652898c8602bf2697d015f3efc77
https://conda.anaconda.org/conda-forge/linux-aarch64/pandoc-3.1.3-h8af1aa0_0.conda#10b7f903dadbf1568c17e2c6cb39435b
https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.10-4_cp310.conda#b0ff2ed109650f9e90d627d3119eb442
https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda#939e3e74d8be4dac89ce83b20de2492a
https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2#6168d71addc746e8f2b8d57dfd2edcea
https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-13.2.0-hf8544c7_2.conda#f4dfb3bad7c8b38c3f8ed7f15a91a1ed
https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-hf897c2e_4.tar.bz2#2d787570a729e273a4e75775ddf3348a
https://conda.anaconda.org/conda-forge/linux-aarch64/icu-72.1-hcf00150_0.conda#cd394213b2f8c9c9060a293a8508fe84
https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2#dddd85f4d52121fab0a8b099c5e06501
https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.0-h31becfc_1.conda#b281ae3b462ef954fac3c06cc2cc92d5
https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.18-hb9de7d4_1.tar.bz2#d09ab3c60eebb6f14eb4d07e172775cc
https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda#000e30b09db0b7c775b21695dff30969
https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.44.2-h31becfc_1.conda#f6068b95c0a3b4fd949a91341e9a0669
https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.2.13-h31becfc_5.conda#b213aa87eea9491ef7b129179322e955
https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.4-h2e1726e_0.conda#40beaf447150c2760affc591c7509595
https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.1.3-h31becfc_0.conda#19469b6fdd72c1ffe022d9845fbb85fa
https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2#83baad393a31d59c20b63ba4da6592df
https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2#b853307650cb226731f653aa623936a4
https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.43.2-h194ca79_0.conda#16417bba0efbcb7539b942a611cc899a
https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda#105eb1e16bf83bfb2eb380a48032b655
https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda#f75105e0585851f818e0009dd1dde4dc
https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h2f0025b_0.conda#88905c542167163a0dea6bdad01c3366
https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.2.13-h31becfc_5.conda#96866c7301479abaf8308c50958c71a4
https://conda.anaconda.org/conda-forge/linux-aarch64/nodejs-18.17.1-hcb20a51_0.conda#0611c05ba14e36fd4e19188d1708e393
https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.10.12-hbbe8eec_0_cpython.conda#020fe1f640c2566b6b6606698b0aeebd
https://conda.anaconda.org/conda-forge/noarch/aiofiles-22.1.0-pyhd8ed1ab_0.tar.bz2#a88c206fdb78e34adb1c4081f5f838dd
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda#3edfead7cedd1ab4400a6c588f3e75f8
https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda#54ca2e08b3220c148a1d8329c2678e02
https://conda.anaconda.org/conda-forge/noarch/blinker-1.6.3-pyhd8ed1ab_0.conda#d33cf7357de636cec64320f0c4fb7b6f
https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py310hbb3657e_1.conda#5ed52d1d3c480022fe67ae00d1cab792
https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a
https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda#7f3dbc9179b4dde7da98dfb151d0ad22
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.0-pyhd8ed1ab_0.conda#fef8ef5f0a54546b9efee39468229917
https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.0-py310hbb3657e_1.conda#710e0a6d93d575d35813a6c0875ffa8b
https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d
https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda#e6518222753f519e911e83136d2158d9
https://conda.anaconda.org/conda-forge/noarch/executing-1.2.0-pyhd8ed1ab_0.tar.bz2#4c1bc140e2be5c8ba6e3acab99e25c50
https://conda.anaconda.org/conda-forge/linux-aarch64/greenlet-3.0.0-py310hbb3657e_1.conda#14ff589dba572c05cb68f92251b6f494
https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#34272b248891bddccc64479f9a7fffed
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda#dac1dabba2b5a9d1aee175c5fcc7b436
https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-2.4-py310h4c7bcd0_3.conda#c7252b728211fc4539a15e8a933b89be
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda#8370e0a9dc443f9b45a23fd30e7a6b3b
https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-2.1.3-py310h7c1f4a2_1.conda#2919650106992a96c85dcb66efae8e67
https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.1-pyhd8ed1ab_0.conda#1dad8397c94e4de97a70de552a7dcf49
https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda#a4f0e4519bc50eee4f53f689be9607f7
https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6
https://conda.anaconda.org/conda-forge/noarch/pamela-1.1.0-pyh1a96a4e_0.conda#dce93ccf07159017c69c6d9cea2d5d61
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761
https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9
https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.17.1-pyhd8ed1ab_0.conda#02153b6b760bbec00cfe9e4c97993d06
https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-5.9.5-py310hb299538_1.conda#5007f78cda962123dbb0a66f666484c5
https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883
https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda#40e5cb18165466773619e5c963f00a7b
https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda#912c0194f898fdb783021fd25f913c31
https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025
https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.1-pyhd8ed1ab_0.conda#305141cff54af2f90e089d868fffce28
https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960
https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda#c93346b446cd08c169d843ae5fc0da97
https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.1-py310hb299538_1.conda#f03783babd9179bffa3025624d11edc8
https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-24.0.1-py310h7c6bb8d_1.tar.bz2#3c2de5f8a464c206b7db965f98af6f65
https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f
https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.10.6-py310h057607a_0.conda#bdcfb85edbb78dddaef2d5ccb8d23236
https://conda.anaconda.org/conda-forge/linux-aarch64/ruamel.yaml.clib-0.2.7-py310hb299538_2.conda#45eee1c3a48b16bad62fd180427c556c
https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2
https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda#fc2166155db840c634a1291a5c35a709
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2#dd6cbc539e74cb1f430efbd4575b9303
https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561
https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96
https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.3.3-py310h7c1f4a2_1.conda#ccaeb6b56c1c7d728daa4fa45dad67b5
https://conda.anaconda.org/conda-forge/noarch/traitlets-5.11.2-pyhd8ed1ab_0.conda#bd3f90f7551e1cffb1f402880eb2cef1
https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.14-pyhd8ed1ab_0.conda#4df15c51a543e806d439490b862be1c6
https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda#5b1be40a26d10a06f6d4f1f9e19fa0c7
https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda#0944dc65cb4a9b5b68522c3bb585d41c
https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda#bdb77b28cf16deac0eef431a068320e8
https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda#1ccd092478b3e0ee10d7a891adbf8a4f
https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda#82617d07b2f5f5a96296d3c19684b37a
https://conda.anaconda.org/conda-forge/linux-aarch64/y-py-0.5.9-py310hf87a4cc_0.conda#5ae43d6a9a31426a8c50d4cdcd4a0cda
https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a
https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49
https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.0-pyhd8ed1ab_0.conda#056f04e51dd63337e8d7c425c18c86f1
https://conda.anaconda.org/conda-forge/noarch/babel-2.13.0-pyhd8ed1ab_0.conda#22541af7a9eb59fc6afcadb7ecdf9219
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e
https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551
https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.16.0-py310hce94938_0.conda#69f5188c0b23d70d99e1f4153fe498cd
https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda#c8eaca39e2b6abae1fc96acc929ae939
https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda#4e9f59a060c3be52bc4ddc46ee9b6946
https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.0-pyhd8ed1ab_0.conda#48b0d98e0c0ec810d3ccc2a0926c8c0e
https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2
https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2#243f63592c8e449f40cd42eb5cf32f40
https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2#330448ce4403cc74990ac07c555942a1
https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda#a33161b983172ba6ef69d5fc850650cd
https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520
https://conda.anaconda.org/conda-forge/linux-aarch64/ruamel.yaml-0.17.35-py310hb299538_0.conda#ff3eeb5a5324f0211147238c16690189
https://conda.anaconda.org/conda-forge/noarch/terminado-0.17.1-pyh41d4057_0.conda#3788984d535770cad699efaeb6cb3037
https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda#384462e63262a527bda564fa2d9126c0
https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.6-pyhd8ed1ab_0.conda#d5f8944ff9ab24a292511c83dce33dea
https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8
https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py310hb299538_4.conda#f24c78f33054d3c0ce4b73f6155e16a5
https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508
https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-41.0.4-py310h34e2850_0.conda#4ef43415299c6e7d20180a69c74ea5ba
https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b
https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda#7c27ea1bdbe520bb830dcadd59f55cbf
https://conda.anaconda.org/conda-forge/noarch/mako-1.2.4-pyhd8ed1ab_0.tar.bz2#0d072f0edc017b6318dbab701e053f94
https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda#8f567c0a74aa44cf732f15773b4083b0
https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b
https://conda.anaconda.org/conda-forge/linux-aarch64/sqlalchemy-2.0.22-py310h7c1f4a2_0.conda#57db60a040ce6a3ccca88d09e8505ebe
https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.8-pyhd8ed1ab_0.conda#367386d2575a0e62412448eda1012efd
https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.0-pyhd8ed1ab_0.conda#ba29026b587195548ef82444518061f7
https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4
https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a
https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.1-pyhd8ed1ab_0.conda#78aff5d2af74e6537c1ca73017f01f4f
https://conda.anaconda.org/conda-forge/linux-aarch64/jupyter_core-5.4.0-py310h4c7bcd0_0.conda#3e6165d82251e26cc82b608a0dfa2281
https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-0.2.4-pyhd8ed1ab_0.conda#be5d4633c1cc40343ed417153a184006
https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.39-pyha770c72_0.conda#a4986c6bb5b0d05a38855b0880a5f425
https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda#34f7d568bf59d18e3fef8c405cbece21
https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.8.2-pyhd8ed1ab_0.conda#5ee5ad3af20138020065985de57f0711
https://conda.anaconda.org/conda-forge/noarch/certipy-0.1.3-py_0.tar.bz2#23486713ef5712923e7c57cae609b22e
https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.19.1-pyhd8ed1ab_0.conda#daca0665e6fe8a376e48b9f0b5865326
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.4.9-pyhd8ed1ab_0.conda#5cbf9a31a19d4ef9103adb7d71fd45fd
https://conda.anaconda.org/conda-forge/noarch/jupyter_telemetry-0.1.0-pyhd8ed1ab_1.tar.bz2#bb9ebdb6d5aa2622484aff1faceee181
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda#61ba076de6530d9301a0053b02f093d2
https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.39-hd8ed1ab_0.conda#4bbbe67d5df19db30f04b8e344dc9976
https://conda.anaconda.org/conda-forge/noarch/ipython-8.16.1-pyh0d859eb_0.conda#7e52cb0dbf01b90365bfe433ec8bd3c0
https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.7.0-pyhd8ed1ab_2.conda#088f0493279a7f7eebd514df47d65851
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-base-3.1.1-pyh2a2186d_0.conda#78fc5dfd4577a7ba172fa65eb64b6afb
https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda#e78da91cf428faaf05701ce8cc8f2f9b
https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.25.2-pyh2140261_0.conda#226f2032ec491cc6e9ce66072660e4f6
https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda#2605fae5ee27100e5f10037baebf4d41
https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.9.2-pyhd8ed1ab_0.conda#01e4314c780ca73759c694ce3ece281f
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-1.24.0-pyhd8ed1ab_0.conda#7f0d2ec2d4954188ff23503f39823409
https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.9.2-pyhd8ed1ab_0.conda#1ad46253f2eb46fb8c9b2c22b7ca012f
https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-0.7.1-pyhd8ed1ab_0.conda#62ed54dc748d19d0cf056a3f90cc8f12
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.0-pyhd8ed1ab_0.conda#a12525b037a703d7f4512da737d700e6
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.0-pyhd8ed1ab_0.conda#a52834fa7e3d12abc5efdf06b2097a05
https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.9.2-pyhd8ed1ab_0.conda#16ccaddfcfa0a1a606a9ecf6a52d6c11
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-0.8.0-pyhd8ed1ab_0.conda#780280d42fbcb2eaf654a6ba7a3e5bb5
https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda#a0be31e9bd84d6eae87cdbf74c56b90b
https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.6-pyha770c72_0.conda#2e2422cf19f555ef3ddbbeaf2eac7545
https://conda.anaconda.org/conda-forge/noarch/jupyter-offlinenotebook-0.2.2-pyh1d7be83_0.tar.bz2#fe55056ce4bc4bd4953ba440270735fb
https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.6.6-pyhd8ed1ab_0.conda#05def61d4c64b0f3161eaeb3b00cc790
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-singleuser-3.1.1-pyh2a2186d_0.conda#6d0a3394efe9ff7c0ad1ed03a6ca3720

Wyświetl plik

@ -0,0 +1,15 @@
# AUTO GENERATED FROM environment.yml, DO NOT MANUALLY MODIFY
# Generated on 2023-10-14 22:06:18 UTC
channels:
- conda-forge
dependencies:
- python=3.10.*
- nodejs=18
- pip
- ipywidgets==8.* # https://github.com/jupyter-widgets/ipywidgets
- jupyter-offlinenotebook==0.2.* # https://github.com/manics/jupyter-offlinenotebook
- jupyter-resource-usage==0.7.* # https://github.com/jupyter-server/jupyter-resource-usage
- jupyter_server==1.* # https://github.com/jupyter-server/jupyter_server
- jupyterhub-singleuser==3.* # https://github.com/jupyterhub/jupyterhub
- jupyterlab==3.* # https://github.com/jupyterlab/jupyterlab
- notebook==6.* # https://github.com/jupyter/notebook

Wyświetl plik

@ -0,0 +1,176 @@
# AUTO GENERATED FROM environment.py-3.11.yml, DO NOT MANUALLY MODIFY
# Frozen on 2023-10-14 22:06:48 UTC
# Generated by conda-lock.
# platform: linux-64
# input_hash: d7858459013cde39e2cf3380f5eefa3195c013a2a891b6cce2de3c687db9c116
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.7.22-hbcca054_0.conda#a73ecd2988327ad4c8f2c331482917f2
https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3
https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_2.conda#9172c297304f2a20134fc56c97fbe229
https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-4_cp311.conda#d786502c97404c94d7d58d258a445a65
https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda#939e3e74d8be4dac89ce83b20de2492a
https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_2.conda#e2042154faafe61969556f28bade94b9
https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d
https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_2.conda#c28003b0be0494f9a7664389146716ff
https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54
https://conda.anaconda.org/conda-forge/linux-64/gmp-6.2.1-h58526e2_0.tar.bz2#b94cf2db16066b242ebd26db2facbd56
https://conda.anaconda.org/conda-forge/linux-64/icu-72.1-hcb278e6_0.conda#7c8d20d847bb45f56bd941578fcfa146
https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.5.0-hcb278e6_1.conda#6305a3dd2752c76335295da4e581f2fd
https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3
https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-hd590300_1.conda#854e3e1623b39777140f199c5f9ab952
https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d
https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b
https://conda.anaconda.org/conda-forge/linux-64/libuv-1.46.0-hd590300_0.conda#d23c76f7e6dcd6243d1b6ef5e62d17d2
https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda#f36c115f1ee199da648e0597ec2047ad
https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-hcb278e6_0.conda#681105bccc2a3f7f1a837d47d39c9179
https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.3-hd590300_0.conda#7bb88ce04c8deb9f7d763ae04a1da72f
https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0
https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae
https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.43.2-h2797004_0.conda#4b441a1ee22397d5a27dc1126b849edd
https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4
https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-h2797004_0.conda#513336054f884f95d9fd925748f41ef3
https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_0.conda#8851084c192dbc56215ac4e3c9aa30fa
https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda#68c34ec6149623be41a1933ab996a209
https://conda.anaconda.org/conda-forge/linux-64/nodejs-18.17.1-hf52ce11_0.conda#c3aad73875296ca9ad3954aa606536b9
https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.3-h32600fe_0.conda#8287aeb8462e2d4b235eff788e75919d
https://conda.anaconda.org/conda-forge/linux-64/python-3.11.6-hab00c5b_0_cpython.conda#b0dfbe2fcbfdb097d321bfd50ecddab1
https://conda.anaconda.org/conda-forge/noarch/aiofiles-22.1.0-pyhd8ed1ab_0.tar.bz2#a88c206fdb78e34adb1c4081f5f838dd
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda#3edfead7cedd1ab4400a6c588f3e75f8
https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda#54ca2e08b3220c148a1d8329c2678e02
https://conda.anaconda.org/conda-forge/noarch/blinker-1.6.3-pyhd8ed1ab_0.conda#d33cf7357de636cec64320f0c4fb7b6f
https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hb755f60_1.conda#cce9e7c3f1c307f2a5fb08a2922d6164
https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a
https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda#7f3dbc9179b4dde7da98dfb151d0ad22
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.0-pyhd8ed1ab_0.conda#fef8ef5f0a54546b9efee39468229917
https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.0-py311hb755f60_1.conda#2c241533b8eafe8028442d46ef41eb13
https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d
https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda#e6518222753f519e911e83136d2158d9
https://conda.anaconda.org/conda-forge/noarch/executing-1.2.0-pyhd8ed1ab_0.tar.bz2#4c1bc140e2be5c8ba6e3acab99e25c50
https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.0-py311hb755f60_1.conda#f902187d6de294292d8462bdcec9a7b2
https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#34272b248891bddccc64479f9a7fffed
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda#dac1dabba2b5a9d1aee175c5fcc7b436
https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-2.4-py311h38be061_3.conda#41d52d822edf991bf0e6b08c1921a8ec
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda#8370e0a9dc443f9b45a23fd30e7a6b3b
https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.3-py311h459d7ec_1.conda#71120b5155a0c500826cf81536721a15
https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.1-pyhd8ed1ab_0.conda#1dad8397c94e4de97a70de552a7dcf49
https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda#a4f0e4519bc50eee4f53f689be9607f7
https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6
https://conda.anaconda.org/conda-forge/noarch/pamela-1.1.0-pyh1a96a4e_0.conda#dce93ccf07159017c69c6d9cea2d5d61
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761
https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9
https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.17.1-pyhd8ed1ab_0.conda#02153b6b760bbec00cfe9e4c97993d06
https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py311h459d7ec_1.conda#490d7fa8675afd1aa6f1b2332d156a45
https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883
https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda#40e5cb18165466773619e5c963f00a7b
https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda#912c0194f898fdb783021fd25f913c31
https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025
https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.1-pyhd8ed1ab_0.conda#305141cff54af2f90e089d868fffce28
https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960
https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda#c93346b446cd08c169d843ae5fc0da97
https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py311h459d7ec_1.conda#52719a74ad130de8fb5d047dc91f247a
https://conda.anaconda.org/conda-forge/linux-64/pyzmq-24.0.1-py311ha4b6469_1.tar.bz2#7d57a4cdfa05e444ed955b0319b97eed
https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f
https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.10.6-py311h46250e7_0.conda#b7237977dbca779aaaab65f42f5558d9
https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py311h459d7ec_2.conda#56bc3fe5180c0b23e05c7a5708153ac7
https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2
https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda#fc2166155db840c634a1291a5c35a709
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2#dd6cbc539e74cb1f430efbd4575b9303
https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561
https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96
https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3.3-py311h459d7ec_1.conda#a700fcb5cedd3e72d0c75d095c7a6eda
https://conda.anaconda.org/conda-forge/noarch/traitlets-5.11.2-pyhd8ed1ab_0.conda#bd3f90f7551e1cffb1f402880eb2cef1
https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.14-pyhd8ed1ab_0.conda#4df15c51a543e806d439490b862be1c6
https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda#5b1be40a26d10a06f6d4f1f9e19fa0c7
https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda#0944dc65cb4a9b5b68522c3bb585d41c
https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda#bdb77b28cf16deac0eef431a068320e8
https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda#1ccd092478b3e0ee10d7a891adbf8a4f
https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda#82617d07b2f5f5a96296d3c19684b37a
https://conda.anaconda.org/conda-forge/linux-64/y-py-0.5.9-py311hfe55011_0.conda#216fb67bd1016b05fe33672bd71937a8
https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a
https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49
https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.0-pyhd8ed1ab_0.conda#056f04e51dd63337e8d7c425c18c86f1
https://conda.anaconda.org/conda-forge/noarch/babel-2.13.0-pyhd8ed1ab_0.conda#22541af7a9eb59fc6afcadb7ecdf9219
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e
https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551
https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py311hb3a22ac_0.conda#b3469563ac5e808b0cd92810d0697043
https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda#c8eaca39e2b6abae1fc96acc929ae939
https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda#4e9f59a060c3be52bc4ddc46ee9b6946
https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.0-pyhd8ed1ab_0.conda#48b0d98e0c0ec810d3ccc2a0926c8c0e
https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2
https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2#243f63592c8e449f40cd42eb5cf32f40
https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2#330448ce4403cc74990ac07c555942a1
https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda#a33161b983172ba6ef69d5fc850650cd
https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520
https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.17.35-py311h459d7ec_0.conda#3d19030a70b6958f5b86062fd5613139
https://conda.anaconda.org/conda-forge/noarch/terminado-0.17.1-pyh41d4057_0.conda#3788984d535770cad699efaeb6cb3037
https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda#384462e63262a527bda564fa2d9126c0
https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.6-pyhd8ed1ab_0.conda#d5f8944ff9ab24a292511c83dce33dea
https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8
https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h459d7ec_4.conda#de5b16869a430949b02161b04b844a30
https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508
https://conda.anaconda.org/conda-forge/linux-64/cryptography-41.0.4-py311h63ff55d_0.conda#2b14cd05541532521196b0d2e0291ecf
https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b
https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda#7c27ea1bdbe520bb830dcadd59f55cbf
https://conda.anaconda.org/conda-forge/noarch/mako-1.2.4-pyhd8ed1ab_0.tar.bz2#0d072f0edc017b6318dbab701e053f94
https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda#8f567c0a74aa44cf732f15773b4083b0
https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b
https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.22-py311h459d7ec_0.conda#d449c9c267177099c4f77a46e2dc078b
https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.8-pyhd8ed1ab_0.conda#367386d2575a0e62412448eda1012efd
https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.0-pyhd8ed1ab_0.conda#ba29026b587195548ef82444518061f7
https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4
https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a
https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.1-pyhd8ed1ab_0.conda#78aff5d2af74e6537c1ca73017f01f4f
https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.4.0-py311h38be061_0.conda#eb4ab2a92a2cc9715226382abb8ebaee
https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-0.2.4-pyhd8ed1ab_0.conda#be5d4633c1cc40343ed417153a184006
https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.39-pyha770c72_0.conda#a4986c6bb5b0d05a38855b0880a5f425
https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda#34f7d568bf59d18e3fef8c405cbece21
https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.8.2-pyhd8ed1ab_0.conda#5ee5ad3af20138020065985de57f0711
https://conda.anaconda.org/conda-forge/noarch/certipy-0.1.3-py_0.tar.bz2#23486713ef5712923e7c57cae609b22e
https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.19.1-pyhd8ed1ab_0.conda#daca0665e6fe8a376e48b9f0b5865326
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.4.9-pyhd8ed1ab_0.conda#5cbf9a31a19d4ef9103adb7d71fd45fd
https://conda.anaconda.org/conda-forge/noarch/jupyter_telemetry-0.1.0-pyhd8ed1ab_1.tar.bz2#bb9ebdb6d5aa2622484aff1faceee181
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda#61ba076de6530d9301a0053b02f093d2
https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.39-hd8ed1ab_0.conda#4bbbe67d5df19db30f04b8e344dc9976
https://conda.anaconda.org/conda-forge/noarch/ipython-8.16.1-pyh0d859eb_0.conda#7e52cb0dbf01b90365bfe433ec8bd3c0
https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.7.0-pyhd8ed1ab_2.conda#088f0493279a7f7eebd514df47d65851
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-base-3.1.1-pyh2a2186d_0.conda#78fc5dfd4577a7ba172fa65eb64b6afb
https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda#e78da91cf428faaf05701ce8cc8f2f9b
https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.25.2-pyh2140261_0.conda#226f2032ec491cc6e9ce66072660e4f6
https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda#2605fae5ee27100e5f10037baebf4d41
https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.9.2-pyhd8ed1ab_0.conda#01e4314c780ca73759c694ce3ece281f
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-1.24.0-pyhd8ed1ab_0.conda#7f0d2ec2d4954188ff23503f39823409
https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.9.2-pyhd8ed1ab_0.conda#1ad46253f2eb46fb8c9b2c22b7ca012f
https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-0.7.1-pyhd8ed1ab_0.conda#62ed54dc748d19d0cf056a3f90cc8f12
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.0-pyhd8ed1ab_0.conda#a12525b037a703d7f4512da737d700e6
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.0-pyhd8ed1ab_0.conda#a52834fa7e3d12abc5efdf06b2097a05
https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.9.2-pyhd8ed1ab_0.conda#16ccaddfcfa0a1a606a9ecf6a52d6c11
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-0.8.0-pyhd8ed1ab_0.conda#780280d42fbcb2eaf654a6ba7a3e5bb5
https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda#a0be31e9bd84d6eae87cdbf74c56b90b
https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.6-pyha770c72_0.conda#2e2422cf19f555ef3ddbbeaf2eac7545
https://conda.anaconda.org/conda-forge/noarch/jupyter-offlinenotebook-0.2.2-pyh1d7be83_0.tar.bz2#fe55056ce4bc4bd4953ba440270735fb
https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.6.6-pyhd8ed1ab_0.conda#05def61d4c64b0f3161eaeb3b00cc790
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-singleuser-3.1.1-pyh2a2186d_0.conda#6d0a3394efe9ff7c0ad1ed03a6ca3720

Wyświetl plik

@ -0,0 +1,174 @@
# AUTO GENERATED FROM environment.py-3.11.yml, DO NOT MANUALLY MODIFY
# Frozen on 2023-10-14 22:06:59 UTC
# Generated by conda-lock.
# platform: linux-aarch64
# input_hash: 6295bf3adc6506c60639735f01c7e1f2dfc8f26b1454486ed44bcad99a6c6877
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2023.7.22-hcefe29a_0.conda#95d7f998087114466fa91e7c2887fa2f
https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.40-h2d8c526_0.conda#16246d69e945d0b1969a6099e7c5d457
https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-13.2.0-hf8544c7_2.conda#8ce66e4e1d30f0936a525127eaaaf63d
https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-13.2.0-h9a76618_2.conda#921c652898c8602bf2697d015f3efc77
https://conda.anaconda.org/conda-forge/linux-aarch64/pandoc-3.1.3-h8af1aa0_0.conda#10b7f903dadbf1568c17e2c6cb39435b
https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-4_cp311.conda#89983f987dfee288f94ddb2ee550ea60
https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda#939e3e74d8be4dac89ce83b20de2492a
https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2#6168d71addc746e8f2b8d57dfd2edcea
https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-13.2.0-hf8544c7_2.conda#f4dfb3bad7c8b38c3f8ed7f15a91a1ed
https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-hf897c2e_4.tar.bz2#2d787570a729e273a4e75775ddf3348a
https://conda.anaconda.org/conda-forge/linux-aarch64/icu-72.1-hcf00150_0.conda#cd394213b2f8c9c9060a293a8508fe84
https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.5.0-hd600fc2_1.conda#6cd3d0a28437b3845c260f9d71d434d7
https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2#dddd85f4d52121fab0a8b099c5e06501
https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.0-h31becfc_1.conda#b281ae3b462ef954fac3c06cc2cc92d5
https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.18-hb9de7d4_1.tar.bz2#d09ab3c60eebb6f14eb4d07e172775cc
https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda#000e30b09db0b7c775b21695dff30969
https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.44.2-h31becfc_1.conda#f6068b95c0a3b4fd949a91341e9a0669
https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.2.13-h31becfc_5.conda#b213aa87eea9491ef7b129179322e955
https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.4-h2e1726e_0.conda#40beaf447150c2760affc591c7509595
https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.1.3-h31becfc_0.conda#19469b6fdd72c1ffe022d9845fbb85fa
https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2#83baad393a31d59c20b63ba4da6592df
https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2#b853307650cb226731f653aa623936a4
https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.43.2-h194ca79_0.conda#16417bba0efbcb7539b942a611cc899a
https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda#105eb1e16bf83bfb2eb380a48032b655
https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda#f75105e0585851f818e0009dd1dde4dc
https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h2f0025b_0.conda#88905c542167163a0dea6bdad01c3366
https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.2.13-h31becfc_5.conda#96866c7301479abaf8308c50958c71a4
https://conda.anaconda.org/conda-forge/linux-aarch64/nodejs-18.17.1-hcb20a51_0.conda#0611c05ba14e36fd4e19188d1708e393
https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.6-h43d1f9e_0_cpython.conda#5f56b82899b4e77b4757b881e7e26ce0
https://conda.anaconda.org/conda-forge/noarch/aiofiles-22.1.0-pyhd8ed1ab_0.tar.bz2#a88c206fdb78e34adb1c4081f5f838dd
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda#3edfead7cedd1ab4400a6c588f3e75f8
https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda#54ca2e08b3220c148a1d8329c2678e02
https://conda.anaconda.org/conda-forge/noarch/blinker-1.6.3-pyhd8ed1ab_0.conda#d33cf7357de636cec64320f0c4fb7b6f
https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py311h8715677_1.conda#22c060f41b1407ed9f40ce6468bdc338
https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a
https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda#7f3dbc9179b4dde7da98dfb151d0ad22
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.0-pyhd8ed1ab_0.conda#fef8ef5f0a54546b9efee39468229917
https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.0-py311h8715677_1.conda#3dccf38a4c102ecf75ee7d18d31b9349
https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d
https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda#e6518222753f519e911e83136d2158d9
https://conda.anaconda.org/conda-forge/noarch/executing-1.2.0-pyhd8ed1ab_0.tar.bz2#4c1bc140e2be5c8ba6e3acab99e25c50
https://conda.anaconda.org/conda-forge/linux-aarch64/greenlet-3.0.0-py311h8715677_1.conda#8cf98fd86815f596c832c8f0ee2448d8
https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#34272b248891bddccc64479f9a7fffed
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda#dac1dabba2b5a9d1aee175c5fcc7b436
https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-2.4-py311hec3470c_3.conda#4f2983c27363a8685eccfb721acd2a03
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda#8370e0a9dc443f9b45a23fd30e7a6b3b
https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-2.1.3-py311hc8f2f60_1.conda#7c2101fff3f6c30b76f3a296218cff4b
https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.1-pyhd8ed1ab_0.conda#1dad8397c94e4de97a70de552a7dcf49
https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda#a4f0e4519bc50eee4f53f689be9607f7
https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6
https://conda.anaconda.org/conda-forge/noarch/pamela-1.1.0-pyh1a96a4e_0.conda#dce93ccf07159017c69c6d9cea2d5d61
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761
https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9
https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.17.1-pyhd8ed1ab_0.conda#02153b6b760bbec00cfe9e4c97993d06
https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-5.9.5-py311hcd402e7_1.conda#ed330c5e852e3b60aeccd3098529a2ed
https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883
https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda#40e5cb18165466773619e5c963f00a7b
https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda#912c0194f898fdb783021fd25f913c31
https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025
https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.1-pyhd8ed1ab_0.conda#305141cff54af2f90e089d868fffce28
https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960
https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda#c93346b446cd08c169d843ae5fc0da97
https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.1-py311hcd402e7_1.conda#78775409be46d19acb2b453f1f2c4757
https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-24.0.1-py311h22a2215_1.tar.bz2#f53eaaf16aabefc915b90a28a16b41b5
https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f
https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.10.6-py311h32437ce_0.conda#b3be057e627c4eddea773a368c0519a4
https://conda.anaconda.org/conda-forge/linux-aarch64/ruamel.yaml.clib-0.2.7-py311hcd402e7_2.conda#10fad26bcf4222541f156415f11cbdc3
https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2
https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda#fc2166155db840c634a1291a5c35a709
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2#dd6cbc539e74cb1f430efbd4575b9303
https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561
https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96
https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.3.3-py311hc8f2f60_1.conda#0680cec7381128327048e18e55d5c301
https://conda.anaconda.org/conda-forge/noarch/traitlets-5.11.2-pyhd8ed1ab_0.conda#bd3f90f7551e1cffb1f402880eb2cef1
https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.14-pyhd8ed1ab_0.conda#4df15c51a543e806d439490b862be1c6
https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda#5b1be40a26d10a06f6d4f1f9e19fa0c7
https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda#0944dc65cb4a9b5b68522c3bb585d41c
https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda#bdb77b28cf16deac0eef431a068320e8
https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda#1ccd092478b3e0ee10d7a891adbf8a4f
https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda#82617d07b2f5f5a96296d3c19684b37a
https://conda.anaconda.org/conda-forge/linux-aarch64/y-py-0.5.9-py311h76a8765_0.conda#777ffa85e78c0c96a8692413b429c0a4
https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a
https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49
https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.0-pyhd8ed1ab_0.conda#056f04e51dd63337e8d7c425c18c86f1
https://conda.anaconda.org/conda-forge/noarch/babel-2.13.0-pyhd8ed1ab_0.conda#22541af7a9eb59fc6afcadb7ecdf9219
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e
https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551
https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.16.0-py311h7963103_0.conda#724e9c95346e0545543124bd3237ed7a
https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda#c8eaca39e2b6abae1fc96acc929ae939
https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda#4e9f59a060c3be52bc4ddc46ee9b6946
https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.0-pyhd8ed1ab_0.conda#48b0d98e0c0ec810d3ccc2a0926c8c0e
https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2
https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2#243f63592c8e449f40cd42eb5cf32f40
https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2#330448ce4403cc74990ac07c555942a1
https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda#a33161b983172ba6ef69d5fc850650cd
https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520
https://conda.anaconda.org/conda-forge/linux-aarch64/ruamel.yaml-0.17.35-py311hcd402e7_0.conda#8b1f2746ffe6b02e9cbcf20aef243a47
https://conda.anaconda.org/conda-forge/noarch/terminado-0.17.1-pyh41d4057_0.conda#3788984d535770cad699efaeb6cb3037
https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda#384462e63262a527bda564fa2d9126c0
https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.6-pyhd8ed1ab_0.conda#d5f8944ff9ab24a292511c83dce33dea
https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8
https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py311hcd402e7_4.conda#836640e8a482dc22decea414117bb2ad
https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508
https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-41.0.4-py311hd42d77a_0.conda#5f529af7a204bfd0619c11277b9d05f8
https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b
https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda#7c27ea1bdbe520bb830dcadd59f55cbf
https://conda.anaconda.org/conda-forge/noarch/mako-1.2.4-pyhd8ed1ab_0.tar.bz2#0d072f0edc017b6318dbab701e053f94
https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda#8f567c0a74aa44cf732f15773b4083b0
https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b
https://conda.anaconda.org/conda-forge/linux-aarch64/sqlalchemy-2.0.22-py311hc8f2f60_0.conda#c2a08013f37e10043bc748b3dac5d65d
https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.8-pyhd8ed1ab_0.conda#367386d2575a0e62412448eda1012efd
https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.0-pyhd8ed1ab_0.conda#ba29026b587195548ef82444518061f7
https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4
https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a
https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.1-pyhd8ed1ab_0.conda#78aff5d2af74e6537c1ca73017f01f4f
https://conda.anaconda.org/conda-forge/linux-aarch64/jupyter_core-5.4.0-py311hec3470c_0.conda#7b0aa51351cb5d460716ec3441b9c1ca
https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-0.2.4-pyhd8ed1ab_0.conda#be5d4633c1cc40343ed417153a184006
https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.39-pyha770c72_0.conda#a4986c6bb5b0d05a38855b0880a5f425
https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda#34f7d568bf59d18e3fef8c405cbece21
https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.8.2-pyhd8ed1ab_0.conda#5ee5ad3af20138020065985de57f0711
https://conda.anaconda.org/conda-forge/noarch/certipy-0.1.3-py_0.tar.bz2#23486713ef5712923e7c57cae609b22e
https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.19.1-pyhd8ed1ab_0.conda#daca0665e6fe8a376e48b9f0b5865326
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.4.9-pyhd8ed1ab_0.conda#5cbf9a31a19d4ef9103adb7d71fd45fd
https://conda.anaconda.org/conda-forge/noarch/jupyter_telemetry-0.1.0-pyhd8ed1ab_1.tar.bz2#bb9ebdb6d5aa2622484aff1faceee181
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda#61ba076de6530d9301a0053b02f093d2
https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.39-hd8ed1ab_0.conda#4bbbe67d5df19db30f04b8e344dc9976
https://conda.anaconda.org/conda-forge/noarch/ipython-8.16.1-pyh0d859eb_0.conda#7e52cb0dbf01b90365bfe433ec8bd3c0
https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.7.0-pyhd8ed1ab_2.conda#088f0493279a7f7eebd514df47d65851
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-base-3.1.1-pyh2a2186d_0.conda#78fc5dfd4577a7ba172fa65eb64b6afb
https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda#e78da91cf428faaf05701ce8cc8f2f9b
https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.25.2-pyh2140261_0.conda#226f2032ec491cc6e9ce66072660e4f6
https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda#2605fae5ee27100e5f10037baebf4d41
https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.9.2-pyhd8ed1ab_0.conda#01e4314c780ca73759c694ce3ece281f
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-1.24.0-pyhd8ed1ab_0.conda#7f0d2ec2d4954188ff23503f39823409
https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.9.2-pyhd8ed1ab_0.conda#1ad46253f2eb46fb8c9b2c22b7ca012f
https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-0.7.1-pyhd8ed1ab_0.conda#62ed54dc748d19d0cf056a3f90cc8f12
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.0-pyhd8ed1ab_0.conda#a12525b037a703d7f4512da737d700e6
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.0-pyhd8ed1ab_0.conda#a52834fa7e3d12abc5efdf06b2097a05
https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.9.2-pyhd8ed1ab_0.conda#16ccaddfcfa0a1a606a9ecf6a52d6c11
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-0.8.0-pyhd8ed1ab_0.conda#780280d42fbcb2eaf654a6ba7a3e5bb5
https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda#a0be31e9bd84d6eae87cdbf74c56b90b
https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.6-pyha770c72_0.conda#2e2422cf19f555ef3ddbbeaf2eac7545
https://conda.anaconda.org/conda-forge/noarch/jupyter-offlinenotebook-0.2.2-pyh1d7be83_0.tar.bz2#fe55056ce4bc4bd4953ba440270735fb
https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.6.6-pyhd8ed1ab_0.conda#05def61d4c64b0f3161eaeb3b00cc790
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-singleuser-3.1.1-pyh2a2186d_0.conda#6d0a3394efe9ff7c0ad1ed03a6ca3720

Wyświetl plik

@ -0,0 +1,150 @@
# AUTO GENERATED FROM environment.py-3.11.yml, DO NOT MANUALLY MODIFY
# Frozen on 2023-01-02 15:31:26 UTC
# Generated by conda-lock.
# platform: linux-64
# input_hash: 3ceb4508af8a0d0e080c5ad14c3ac306d00b4f32584072dd36dc8886b013bd41
@EXPLICIT
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/ca-certificates-2022.12.7-ha878542_0.conda#ff9f73d45c4a07d6f424495288a26080
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/ld_impl_linux-64-2.39-hcc3a1bd_1.conda#737be0d34c22d24432049ab7a3214de4
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/libstdcxx-ng-12.2.0-h46fd767_19.tar.bz2#1030b1f38c129f2634eae026f704fe60
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/python_abi-3.11-3_cp311.conda#c2e2630ddb68cf52eec74dc7dfab20b5
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/tzdata-2022g-h191b570_0.conda#51fc4fcfb19f5d95ffc8c339db5068e8
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/libgomp-12.2.0-h65d4601_19.tar.bz2#cedcee7c064c01c403f962c9e8d3c373
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/libgcc-ng-12.2.0-h65d4601_19.tar.bz2#e4c94f80aef025c17ab0828cd85ef535
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/icu-70.1-h27087fc_0.tar.bz2#87473a15119779e021c314249d4b4aed
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2#39b1328babf85c7c3a61636d9cd50206
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/libuv-1.44.2-h166bdaf_0.tar.bz2#e5cb4fe581a18ca2185a016eb848fc00
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/libzlib-1.2.13-h166bdaf_4.tar.bz2#f3f9de449d32ca9b9c66a22863c96f41
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/openssl-3.0.7-h0b41bf4_1.conda#7adaac6ff98219bcb99b45e408b80f4e
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/libsqlite-3.40.0-h753d276_0.tar.bz2#2e5f9a37d487e1019fd4d8113adb2f9f
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/pandoc-2.19.2-h32600fe_1.tar.bz2#35a82883468c85ac8bf41f083c1933cf
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/zeromq-4.3.4-h9c3ff4c_1.tar.bz2#21743a8d2ea0c8cfbbf8fe489b0347df
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/zlib-1.2.13-h166bdaf_4.tar.bz2#4b11e365c0275b808be78b30f904e295
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/nodejs-16.17.1-h8839609_0.tar.bz2#1a19c5a76422549640a6824d6db189cf
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/python-3.11.0-ha86cf86_0_cpython.tar.bz2#531b2b97ce96cc95a587bdf7c74e31c0
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/_ipython_minor_entry_point-8.7.0-h0c17e10_0.conda#8a63fb4d63db7b245ecf3c6f907935ff
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/attrs-22.2.0-pyh71513ae_0.conda#8b76db7818a4e401ed4486c4c1635cd9
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda#54ca2e08b3220c148a1d8329c2678e02
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/blinker-1.5-pyhd8ed1ab_0.tar.bz2#f473c4e32d8180733ba5594d122cb637
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/certifi-2022.12.7-pyhd8ed1ab_0.conda#fb9addc3db06e56abe03e0e9f21a63e6
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/charset-normalizer-2.1.1-pyhd8ed1ab_0.tar.bz2#c1d5b294fbf9a795dec349a6f4d8be8e
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/debugpy-1.6.4-py311ha362b79_0.conda#7cfc802c1a673662f49cdb76de669b39
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/executing-1.2.0-pyhd8ed1ab_0.tar.bz2#4c1bc140e2be5c8ba6e3acab99e25c50
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/flit-core-3.8.0-pyhd8ed1ab_0.tar.bz2#6d5e56de2e65da7aa35fd10131226efa
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/greenlet-2.0.1-py311ha362b79_0.tar.bz2#7adf8b182f4fd2cd313349bce924afdd
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#34272b248891bddccc64479f9a7fffed
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/json5-0.9.5-pyh9f0ad1d_0.tar.bz2#10759827a94e6b14996e81fb002c0bda
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/jupyterlab_widgets-3.0.5-pyhd8ed1ab_0.conda#953a312b272f37d39fe9d09f46734622
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/markupsafe-2.1.1-py311hd4cff14_2.tar.bz2#6b0d96114b4a841630ef7d0dff10d4e8
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/mistune-2.0.4-pyhd8ed1ab_0.tar.bz2#78e0a90393b79b378b8ff6d32893d58a
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/nest-asyncio-1.5.6-pyhd8ed1ab_0.tar.bz2#7b868f21adde0d9b8b38f9c16836589b
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/packaging-22.0-pyhd8ed1ab_0.conda#0e8e1bd93998978fc3125522266d12db
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/pamela-1.0.0-py_0.tar.bz2#36f6f18d2f3ae0c93d77a9dbedad08c3
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0.tar.bz2#89e3c7cdde7d3aaa2aee933b604dd07f
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/prometheus_client-0.15.0-pyhd8ed1ab_0.tar.bz2#b260ed41427dbbe70537b3030c643b2e
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/psutil-5.9.4-py311hd4cff14_0.tar.bz2#6fbda857a56adb4140bed339fbe0b801
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/pyjwt-2.6.0-pyhd8ed1ab_0.tar.bz2#56d08bbebf5b3719ca2b1688fcfd98a4
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/pyrsistent-0.19.2-py311hd4cff14_0.tar.bz2#e6808d85cbd28e4fb2d61294627fa1b1
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/python-fastjsonschema-2.16.2-pyhd8ed1ab_0.tar.bz2#5fe4b6002f505336734ce92961b3e6a0
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/python-json-logger-2.0.4-pyhd8ed1ab_0.conda#6d1f4215f123c18aed06fb4104bcb11a
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/pytz-2022.7-pyhd8ed1ab_0.conda#c8d7e34ca76d6ecc03b84bedfd99d689
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/pyzmq-24.0.1-py311ha4b6469_1.tar.bz2#7d57a4cdfa05e444ed955b0319b97eed
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py311h2582759_1.conda#5e997292429a22ad50c11af0a2cb0f08
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/send2trash-1.8.0-pyhd8ed1ab_0.tar.bz2#edab14119efe85c3bf131ad747e9005c
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/setuptools-65.6.3-pyhd8ed1ab_0.conda#9600fc9524d3f821e6a6d58c52f5bf5a
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2#dd6cbc539e74cb1f430efbd4575b9303
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/soupsieve-2.3.2.post1-pyhd8ed1ab_0.tar.bz2#146f4541d643d48fc8a75cacf69f03ae
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/tornado-6.2-py311hd4cff14_1.tar.bz2#4d86cd6dbdc1185f4e72d974f1f1f852
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/traitlets-5.8.0-pyhd8ed1ab_0.conda#75fa7ac3992a41e6a06102594bbf67d0
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/typing_extensions-4.4.0-pyha770c72_0.tar.bz2#2d93b130d148d7fc77e583677792fc6a
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/websocket-client-1.4.2-pyhd8ed1ab_0.tar.bz2#5309fca1777cfdd2d7ab582edb8cc41a
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/wheel-0.38.4-pyhd8ed1ab_0.tar.bz2#c829cfb8cb826acb9de0ac1a2df0a940
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/widgetsnbextension-4.0.5-pyhd8ed1ab_0.conda#2af53b3894fb9bdbb3679c0d31028b1b
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/zipp-3.11.0-pyhd8ed1ab_0.conda#09b5b885341697137879a4f039a9e5a1
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/anyio-3.6.2-pyhd8ed1ab_0.tar.bz2#8ada050fa88f26916fc1e76e368a49fd
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/asttokens-2.2.1-pyhd8ed1ab_0.conda#bf7f54dd0f25c3f06ecb82a07341841a
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/babel-2.11.0-pyhd8ed1ab_0.tar.bz2#2ea70fde8d581ba9425a761609eed6ba
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0.tar.bz2#c5b3edc62d6309088f4970b3eaaa65a6
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/beautifulsoup4-4.11.1-pyha770c72_0.tar.bz2#eeec8814bd97b2681f708bb127478d7d
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/bleach-5.0.1-pyhd8ed1ab_0.tar.bz2#1f5151d37e4a2b1137f81c89a3a769f2
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/cffi-1.15.1-py311h409f033_3.conda#9025d0786dbbe4bc91fd8e85502decce
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/comm-0.1.2-pyhd8ed1ab_0.conda#3c78af4752bb1600ebe5e83ef4588eaa
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/importlib-metadata-6.0.0-pyha770c72_0.conda#691644becbcdca9f73243450b1c63e62
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/importlib_resources-5.10.1-pyhd8ed1ab_1.conda#5b48ca365913b08b819884bc21d4fb56
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/jedi-0.18.2-pyhd8ed1ab_0.conda#b5e695ef9c3f0d27d6cd96bf5adc9e07
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2#330448ce4403cc74990ac07c555942a1
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/pip-22.3.1-pyhd8ed1ab_0.tar.bz2#da66f2851b9836d3a7c5190082a45f7d
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/pygments-2.13.0-pyhd8ed1ab_0.tar.bz2#9f478e8eedd301008b5f395bad0caaed
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/ruamel.yaml-0.17.21-py311hd4cff14_2.tar.bz2#1e3fa73ad16d9c64e8e3421861a49ec0
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/sqlalchemy-1.4.45-py311h2582759_0.conda#c8452b47661df1285d72803934abc594
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/terminado-0.17.1-pyh41d4057_0.conda#3788984d535770cad699efaeb6cb3037
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/typing-extensions-4.4.0-hd8ed1ab_0.tar.bz2#be969210b61b897775a0de63cd9e9026
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311hd4cff14_3.tar.bz2#5159e874f65ac382773d2b534a1d7b80
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/brotlipy-0.7.0-py311hd4cff14_1005.tar.bz2#9bdac7084ecfc08338bae1b976535724
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/cryptography-38.0.4-py311h42a1071_0.conda#34c95722eb879d7a9ee0546671084b2d
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/jsonschema-4.17.3-pyhd8ed1ab_0.conda#723268a468177cd44568eb8f794e0d80
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2#243f63592c8e449f40cd42eb5cf32f40
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/mako-1.2.4-pyhd8ed1ab_0.tar.bz2#0d072f0edc017b6318dbab701e053f94
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/platformdirs-2.6.2-pyhd8ed1ab_0.conda#0b4cc3f8181b0d8446eb5387d7848a54
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2#5266fcd697043c59621fda522b3d78ee
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/alembic-1.9.1-pyhd8ed1ab_0.conda#5519188d282629ce4fef73eb87285cbe
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2#a0b402db58f73aaab8ee0ca1025a362e
https://conda.anaconda.org/t/<TOKEN>/conda-forge/linux-64/jupyter_core-5.1.1-py311h38be061_0.conda#7a8cea41b480b295e083a39076342ca1
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/jupyter_telemetry-0.1.0-pyhd8ed1ab_1.tar.bz2#bb9ebdb6d5aa2622484aff1faceee181
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/prompt-toolkit-3.0.36-pyha770c72_0.conda#4d79ec192e0bfd530a254006d123b9a6
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/pyopenssl-23.0.0-pyhd8ed1ab_0.conda#d41957700e83bbb925928764cb7f8878
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/certipy-0.1.3-py_0.tar.bz2#23486713ef5712923e7c57cae609b22e
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/ipython-8.7.0-pyh41d4057_0.conda#adc2f96edf35423c091dba93b642573a
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/jupyter_client-7.4.8-pyhd8ed1ab_0.conda#bd4951aa5fbf3336a249e25c90f50333
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/nbformat-5.7.1-pyhd8ed1ab_0.conda#facb42913140f1a399a5ebb65b30915e
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/urllib3-1.26.13-pyhd8ed1ab_0.conda#3078ef2359efd6ecadbc7e085c5e0592
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/ipykernel-6.19.4-pyh210e3f2_0.conda#65372b6dd819e2c36345cf91eeb4ff06
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/nbclient-0.7.2-pyhd8ed1ab_0.conda#6c7b0d75b66a220274bb5a28c23197f2
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/requests-2.28.1-pyhd8ed1ab_1.tar.bz2#089382ee0e2dc2eae33a04cc3c2bddb0
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/ipywidgets-8.0.2-pyhd8ed1ab_1.tar.bz2#81b7f46918555bf911ad2ba2f3259094
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/jupyterhub-base-3.1.0-pyh2a2186d_0.conda#ca96c2cd4d1aaa98d9098d775e5012cb
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/nbconvert-core-7.2.7-pyhd8ed1ab_0.conda#dce063b1f5d6193646fc2ac43f88b77f
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/jupyter_server-1.23.4-pyhd8ed1ab_0.conda#35b7e9267926e864cc70ce137e6588ca
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/nbconvert-pandoc-7.2.7-pyhd8ed1ab_0.conda#7d48776bb3fdfa6447267c413a480ccd
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/jupyter-resource-usage-0.6.3-pyhd8ed1ab_0.tar.bz2#9d26ebd67e0e22aba13ac8a490d88d9e
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/jupyterlab_server-2.17.0-pyhd8ed1ab_0.conda#68364b266a989bb9829943bfd33187d8
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/nbconvert-7.2.7-pyhd8ed1ab_0.conda#b019fe41e6f6b88e0557532514f39cff
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/notebook-shim-0.2.2-pyhd8ed1ab_0.tar.bz2#40be846cd4e78672a40e43db9dae753c
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/nbclassic-0.4.8-pyhd8ed1ab_0.tar.bz2#f4f150f83ed90a1b833e6081bbf38257
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/notebook-6.4.12-pyha770c72_0.tar.bz2#77fc67c5bbea44fd41e8bbe2ac82d1ad
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/jupyter-offlinenotebook-0.2.2-pyh1d7be83_0.tar.bz2#fe55056ce4bc4bd4953ba440270735fb
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/jupyterlab-3.4.8-pyhd8ed1ab_0.tar.bz2#6fbf13b0e8a6fa24bbae91205e8ce467
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/nteract_on_jupyter-2.1.3-py_0.tar.bz2#1430ccd983ae6b161e2fbf4377965f7a
https://conda.anaconda.org/t/<TOKEN>/conda-forge/noarch/jupyterhub-singleuser-3.1.0-pyh2a2186d_0.conda#7607cbc55a1bc12bc9c78ce827c7bb8e

Wyświetl plik

@ -0,0 +1,15 @@
# AUTO GENERATED FROM environment.yml, DO NOT MANUALLY MODIFY
# Generated on 2023-10-14 22:06:48 UTC
channels:
- conda-forge
dependencies:
- python=3.11.*
- nodejs=18
- pip
- ipywidgets==8.* # https://github.com/jupyter-widgets/ipywidgets
- jupyter-offlinenotebook==0.2.* # https://github.com/manics/jupyter-offlinenotebook
- jupyter-resource-usage==0.7.* # https://github.com/jupyter-server/jupyter-resource-usage
- jupyter_server==1.* # https://github.com/jupyter-server/jupyter_server
- jupyterhub-singleuser==3.* # https://github.com/jupyterhub/jupyterhub
- jupyterlab==3.* # https://github.com/jupyterlab/jupyterlab
- notebook==6.* # https://github.com/jupyter/notebook

Wyświetl plik

@ -0,0 +1,73 @@
# py3.5 conda packages are no longer being updated as of 12/2018
# note: one update 11/2021 to shift nodejs into conda-env
# this file is hand-maintained now
# and should only receive security fixes, no new features
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_11.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/libgomp-11.2.0-h1d223b6_11.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-1_gnu.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_11.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.6-h470a237_2.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/gmp-6.1.2-hfc679d8_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/icu-68.2-h9c3ff4c_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/libffi-3.3-h58526e2_2.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.16-h470a237_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/libuv-1.42.0-h7f98852_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.2-h58526e2_4.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1l-h7f98852_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h470a237_3.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/nodejs-14.17.4-h92b4a50_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/pandoc-1.19.2-0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.11-h27826a3_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.2.5-hfc679d8_6.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.36.0-h9cd32fc_2.tar.bz2
https://repo.anaconda.com/pkgs/main/linux-64/python-3.5.6-h12debd9_1.conda
https://conda.anaconda.org/conda-forge/noarch/backcall-0.1.0-py_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/certifi-2018.8.24-py35_1001.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/decorator-4.3.0-py_0.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.5.0-py_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/entrypoints-0.2.3-py35_2.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/jsonschema-2.6.0-py35_2.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.0-py35h470a237_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/mistune-0.8.3-py35h470a237_2.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.4.2-py_1.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/parso-0.3.1-py_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/pickleshare-0.7.5-py35_0.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.4.2-py_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/ptyprocess-0.6.0-py35_1000.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/pyzmq-17.1.2-py35hae99301_0.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/send2trash-1.5.0-py_0.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/simplegeneric-0.8.1-py_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/six-1.11.0-py35_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/testpath-0.3.1-py35_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/tornado-5.1.1-py35h470a237_0.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.1.7-py_1.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/jedi-0.12.1-py35_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/pexpect-4.6.0-py35_0.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.7.5-py_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/setuptools-40.4.3-py35_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/terminado-0.8.1-py35_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/traitlets-4.3.2-py35_0.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/bleach-3.0.2-py_0.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/jinja2-2.10-py_1.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/jupyter_core-4.4.0-py_0.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/pygments-2.2.0-py_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/wheel-0.32.0-py35_1000.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-5.2.3-py_1.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/nbformat-4.4.0-py_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/pip-18.0-py35_1001.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-2.0.7-py_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/ipython-7.0.1-py35h24bf2e0_0.tar.bz2
https://conda.anaconda.org/conda-forge/label/broken/noarch/nbconvert-5.4.0-1.tar.bz2
https://conda.anaconda.org/conda-forge/label/broken/noarch/ipykernel-5.1.0-pyh24bf2e0_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/notebook-5.7.0-py35_0.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_launcher-0.13.1-py_2.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/widgetsnbextension-3.2.1-py35_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/ipywidgets-7.2.1-py35_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/jupyterlab-0.34.9-py35_0.tar.bz2

Wyświetl plik

@ -1,86 +0,0 @@
# py3.5 conda packages are no longer being updated as of 12/2018
# this file is hand-maintained now
# and should only receive security fixes, no new features
name: r2d
channels:
- conda-forge
- defaults
- conda-forge/label/broken
dependencies:
- backcall=0.1.0=py_0
- bleach=3.0.2=py_0
- bzip2=1.0.6=h470a237_2
- ca-certificates=2018.10.15=ha4d7672_0
- certifi=2018.8.24=py35_1001
- decorator=4.3.0=py_0
- defusedxml=0.5.0=py_1
- entrypoints=0.2.3=py35_2
- gmp=6.1.2=hfc679d8_0
- ipykernel=5.1.0=pyh24bf2e0_0
- ipython=7.0.1=py35h24bf2e0_0
- ipython_genutils=0.2.0=py_1
- ipywidgets=7.2.1=py35_1
- jedi=0.12.1=py35_0
- jinja2=2.10=py_1
- jsonschema=2.6.0=py35_2
- jupyter_client=5.2.3=py_1
- jupyter_core=4.4.0=py_0
- jupyterlab=0.34.9=py35_0
- jupyterlab_launcher=0.13.1=py_2
- libffi=3.2.1=hfc679d8_5
- libgcc-ng=7.2.0=hdf63c60_3
- libsodium=1.0.16=h470a237_1
- libstdcxx-ng=7.2.0=hdf63c60_3
- markupsafe=1.0=py35h470a237_1
- mistune=0.8.3=py35h470a237_2
- nbconvert=5.4.0=1
- nbformat=4.4.0=py_1
- ncurses=6.1=hfc679d8_1
- openssl=1.0.2p=h470a237_1
- pandoc=1.19.2=0
- pandocfilters=1.4.2=py_1
- parso=0.3.1=py_0
- pexpect=4.6.0=py35_0
- pickleshare=0.7.5=py35_0
- pip=18.0=py35_1001
- prometheus_client=0.4.2=py_0
- prompt_toolkit=2.0.7=py_0
- ptyprocess=0.6.0=py35_1000
- pygments=2.2.0=py_1
- python=3.5.5=h5001a0f_2
- python-dateutil=2.7.5=py_0
- pyzmq=17.1.2=py35hae99301_0
- readline=7.0=haf1bffa_1
- send2trash=1.5.0=py_0
- setuptools=40.4.3=py35_0
- simplegeneric=0.8.1=py_1
- six=1.11.0=py35_1
- sqlite=3.25.3=hb1c47c0_0
- terminado=0.8.1=py35_1
- testpath=0.3.1=py35_1
- tk=8.6.9=ha92aebf_0
- tornado=5.1.1=py35h470a237_0
- traitlets=4.3.2=py35_0
- wcwidth=0.1.7=py_1
- webencodings=0.5.1=py_1
- wheel=0.32.0=py35_1000
- widgetsnbextension=3.2.1=py35_1
- xz=5.2.4=h470a237_1
- zeromq=4.2.5=hfc679d8_6
- zlib=1.2.11=h470a237_3
- pip:
- alembic==1.0.3
- async-generator==1.10
- chardet==3.0.4
- idna==2.7
- jupyterhub==0.9.4
- mako==1.0.7
- notebook==5.7.8
- nteract-on-jupyter==1.9.6
- pamela==0.3.0
- python-editor==1.0.3
- python-oauth2==1.1.0
- requests==2.20.1
- sqlalchemy==1.2.14
- urllib3==1.24.1
prefix: /opt/conda/envs/r2d

Wyświetl plik

@ -0,0 +1,141 @@
# AUTO GENERATED FROM environment.py-3.6.yml, DO NOT MANUALLY MODIFY
# Frozen on 2022-04-08 20:38:59 UTC
# Generated by conda-lock.
# platform: linux-64
# input_hash: a380aced865172581392c0b25b78cfde69a59becdb41fef3ade37eae6b024aed
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26
https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee
https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_15.tar.bz2#4ffda9c4352880439042fbb8a9863e8c
https://conda.anaconda.org/conda-forge/linux-64/pandoc-2.17.1.1-ha770c72_0.tar.bz2#316431b0b4e25f384cfd3428a1a5dd8c
https://conda.anaconda.org/conda-forge/linux-64/libgomp-11.2.0-h1d223b6_15.tar.bz2#5b7bff215ad9f30325dbe86dd983cb49
https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-1_gnu.tar.bz2#561e277319a41d4f24f5c05a9ef63c04
https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_15.tar.bz2#8041e476e66fcde71f0aa3d614e0efcf
https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.18.1-h7f98852_0.tar.bz2#f26ef8098fab1f719c91eb760d63381a
https://conda.anaconda.org/conda-forge/linux-64/icu-70.1-h27087fc_0.tar.bz2#87473a15119779e021c314249d4b4aed
https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3
https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2#6f8720dff19e17ce5d48cfe7f3d2f0a3
https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3
https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2#39b1328babf85c7c3a61636d9cd50206
https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d
https://conda.anaconda.org/conda-forge/linux-64/libuv-1.43.0-h7f98852_0.tar.bz2#b34d856aa7e06ebd79bded72ef4afc16
https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9
https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238
https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1n-h166bdaf_0.tar.bz2#cf0ddbd911fa547e6bc4291ca5e17379
https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f601066901f3e1a85af3522a8113f9
https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1
https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6
https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168
https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.4-h9c3ff4c_1.tar.bz2#21743a8d2ea0c8cfbbf8fe489b0347df
https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2
https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h3790be6_0.tar.bz2#7d862b05445123144bec92cb1acc8ef8
https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.47.0-h727a467_0.tar.bz2#a22567abfea169ff8048506b1ca9b230
https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.10.0-ha56f1ee_2.tar.bz2#6ab4eaa11ff01801cffca0a27489dc04
https://conda.anaconda.org/conda-forge/linux-64/nodejs-14.18.3-h96d913c_3.tar.bz2#45c64ff49b9d353104b9a127869cd108
https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.37.1-h4ff8645_0.tar.bz2#8057ac02d6d10a162d7eb4b0ca7ed291
https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.82.0-h7bff187_0.tar.bz2#fa26f833ca8796ad44f9561c5402013d
https://conda.anaconda.org/conda-forge/linux-64/python-3.6.15-hb7a2778_0_cpython.tar.bz2#2263dbd2d8116aa8dd974602faabb1a2
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d
https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd
https://conda.anaconda.org/conda-forge/noarch/blinker-1.4-py_1.tar.bz2#fa509a09190583f869ae442bf4d17f5f
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e
https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyh787bdff_2.tar.bz2#ed959a4ba14e6ddfa898630a5474a601
https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d
https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
https://conda.anaconda.org/conda-forge/noarch/json5-0.9.5-pyh9f0ad1d_0.tar.bz2#10759827a94e6b14996e81fb002c0bda
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.0-pyhd8ed1ab_0.tar.bz2#e963a4a39cf442dbe5503f66edda083d
https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.5-pyhd8ed1ab_0.tar.bz2#dc36c992aec485c0efff619ed2e63957
https://conda.anaconda.org/conda-forge/noarch/pamela-1.0.0-py_0.tar.bz2#36f6f18d2f3ae0c93d77a9dbedad08c3
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
https://conda.anaconda.org/conda-forge/noarch/parso-0.7.1-pyh9f0ad1d_0.tar.bz2#f66647d1ec805566d72ac26f62b19c01
https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761
https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.14.0-pyhd8ed1ab_0.tar.bz2#6996536cbb531e722a452feebff019a3
https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.3.0-pyhd8ed1ab_1.tar.bz2#b7bc0de380f114658af5fe57cebdcd9e
https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.7-pyhd8ed1ab_0.tar.bz2#727e2216d9c47455d8ddc060eb2caad9
https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.1-pyh9f0ad1d_0.tar.bz2#aed452f2f9f8bc8b2b0c412975051b5b
https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.6-2_cp36m.tar.bz2#6f5b92d833a339da29ad8578c2a648ad
https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2#b87d66d6d3991d988fb31510c95a9267
https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.0-pyhd8ed1ab_0.tar.bz2#edab14119efe85c3bf131ad747e9005c
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
https://conda.anaconda.org/conda-forge/noarch/testpath-0.6.0-pyhd8ed1ab_0.tar.bz2#196b1f0165dbc9ea6f03c3b3419323fd
https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.1.1-pyha770c72_0.tar.bz2#74761ba7bc682e9009520163a1031ace
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.3.1-pyhd8ed1ab_0.tar.bz2#0fa7710a18a1fa033b8337f6515c9de1
https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022
https://conda.anaconda.org/conda-forge/noarch/zipp-3.6.0-pyhd8ed1ab_0.tar.bz2#855e2c4622f5eb50a4f6f7167b9ba17a
https://conda.anaconda.org/conda-forge/noarch/babel-2.9.1-pyh44b312d_0.tar.bz2#74136ed39bfea0832d338df1e58d013e
https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.5.30-py36h5fab9bb_0.tar.bz2#500e3fb737f9d2023755f78f1f22ca69
https://conda.anaconda.org/conda-forge/linux-64/cffi-1.14.6-py36hd8eec40_1.tar.bz2#2e025dd15559c9882880f005e6c02018
https://conda.anaconda.org/conda-forge/linux-64/greenlet-1.1.1-py36hc4f0c31_0.tar.bz2#e0509bd49a3747b0442ecabae4a0df1b
https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.8.1-py36h5fab9bb_0.tar.bz2#ec50a4f999b407d69b3a433c1405f0ba
https://conda.anaconda.org/conda-forge/noarch/importlib_resources-5.6.0-pyhd8ed1ab_0.tar.bz2#ffee77eddb96c584ed417d2f72670a02
https://conda.anaconda.org/conda-forge/linux-64/jedi-0.17.2-py36h5fab9bb_1.tar.bz2#e761c2377eafa1268eda3dd192cb06cb
https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.0.1-py36h8f6f2f9_0.tar.bz2#e450eb239eb68d0467b1c6d0fef28ae9
https://conda.anaconda.org/conda-forge/linux-64/mistune-0.8.4-py36h8f6f2f9_1004.tar.bz2#a53a196c30fc83ee9f0a84711b8fa681
https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh9f0ad1d_2.tar.bz2#5909e7b978141dd80d28dbf9de627827
https://conda.anaconda.org/conda-forge/linux-64/psutil-5.8.0-py36h8f6f2f9_1.tar.bz2#ccecd9206d61f029549a81a980174ed8
https://conda.anaconda.org/conda-forge/linux-64/pycurl-7.44.1-py36h66a4f8d_0.tar.bz2#ab0c8b5ebc4924b67d1ee2b1444abf0b
https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.17.3-py36h8f6f2f9_2.tar.bz2#26db670368942d4a144cad213448496a
https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py36h5fab9bb_3.tar.bz2#4dfb9be0b2975bc7933f32c6db7af205
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
https://conda.anaconda.org/conda-forge/linux-64/pyzmq-22.3.0-py36h7068817_0.tar.bz2#6bd5499ce1e61fde19e5ce8206569303
https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.2-py36h8f6f2f9_2.tar.bz2#20b17ae368cb09dd5609203ad3eaf122
https://conda.anaconda.org/conda-forge/linux-64/setuptools-58.0.4-py36h5fab9bb_2.tar.bz2#d584b24af029d1fc78b6a0d2cc294d40
https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py36h8f6f2f9_1.tar.bz2#3d19680e14cb7cf6f383ba1fd3a72f2c
https://conda.anaconda.org/conda-forge/noarch/traitlets-4.3.3-pyhd8ed1ab_2.tar.bz2#dacad0ee02418407a5991b0b62dfdc18
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.1.1-hd8ed1ab_0.tar.bz2#9d1b5bbaa13bca480c80893a87a52c4f
https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-21.1.0-py36h8f6f2f9_0.tar.bz2#c7ff3bb6bfd8cb82aefb8d960c439743
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0.tar.bz2#c5b3edc62d6309088f4970b3eaaa65a6
https://conda.anaconda.org/conda-forge/noarch/bleach-5.0.0-pyhd8ed1ab_0.tar.bz2#2a2ae7c56b8f72caba261363407b484a
https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py36h8f6f2f9_1001.tar.bz2#0f244e9624403e17430e9d959530b01c
https://conda.anaconda.org/conda-forge/linux-64/cryptography-35.0.0-py36hb60f036_0.tar.bz2#d7533bed1783b4abef7e598cee93347d
https://conda.anaconda.org/conda-forge/linux-64/immutables-0.16-py36h8f6f2f9_0.tar.bz2#e9abd4b9cee6d7dd062ca2b5f4e4c9f3
https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c
https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.1.2-pyhd8ed1ab_0.tar.bz2#94188756716d63117f09d546a30d43e7
https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-4.8.1-py36h5fab9bb_0.tar.bz2#a6fa892e9d37e4e299b426c8fdb6f1d6
https://conda.anaconda.org/conda-forge/noarch/mako-1.2.0-pyhd8ed1ab_1.tar.bz2#df0535cc0efcc9d418940fc689b1487c
https://conda.anaconda.org/conda-forge/noarch/pip-21.3.1-pyhd8ed1ab_0.tar.bz2#e4fe2a9af78ff11f1aced7e62128c6a8
https://conda.anaconda.org/conda-forge/noarch/pygments-2.11.2-pyhd8ed1ab_0.tar.bz2#caef60540e2239e27bf62569a5015e3b
https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.17.16-py36h8f6f2f9_0.tar.bz2#602e4a91b1df8519343e4a317a75fd5a
https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.4.25-py36h8f6f2f9_0.tar.bz2#fbe3f8667087f9c6dc0011df8c39f76b
https://conda.anaconda.org/conda-forge/linux-64/terminado-0.12.1-py36h5fab9bb_0.tar.bz2#292f1173e1c1b446dc5969444f619108
https://conda.anaconda.org/conda-forge/noarch/alembic-1.7.7-pyhd8ed1ab_0.tar.bz2#9637550104fade18bc6f91aef1f4f02c
https://conda.anaconda.org/conda-forge/noarch/contextvars-2.4-py_0.tar.bz2#295fe9300971a6bd1dc4b18ad6509be2
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.1.2-pyhd8ed1ab_0.tar.bz2#9a332b6f8f05629435ce59032df8cfa9
https://conda.anaconda.org/conda-forge/noarch/jupyter_telemetry-0.1.0-pyhd8ed1ab_1.tar.bz2#bb9ebdb6d5aa2622484aff1faceee181
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.1.2-pyh9f0ad1d_0.tar.bz2#2cbd910890bb328e8959246a1e16fac7
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.1.3-pyhd8ed1ab_0.tar.bz2#bafa5df6d4f8db69a4d197b4657127e7
https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.0-pyhd8ed1ab_0.tar.bz2#ecc95c82c788737d6d33f5d564566d89
https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2#5266fcd697043c59621fda522b3d78ee
https://conda.anaconda.org/conda-forge/noarch/certipy-0.1.3-py_0.tar.bz2#23486713ef5712923e7c57cae609b22e
https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.9-pyhd8ed1ab_0.tar.bz2#21554dd9bbabff27ae87f715fee4d56c
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.29-pyha770c72_0.tar.bz2#9e720b57b22ef3032b4fb081697819dd
https://conda.anaconda.org/conda-forge/linux-64/sniffio-1.2.0-py36h5fab9bb_1.tar.bz2#43c550017bd3ffea3cbc9669617b71eb
https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693
https://conda.anaconda.org/conda-forge/linux-64/anyio-3.3.2-py36h5fab9bb_0.tar.bz2#68e1135e2c76b473fc08831ba4b940c0
https://conda.anaconda.org/conda-forge/linux-64/ipython-7.16.1-py36he448a4c_2.tar.bz2#ac605247c1149f7b275a4bcf9fa0de41
https://conda.anaconda.org/conda-forge/linux-64/nbconvert-6.0.7-py36h5fab9bb_3.tar.bz2#30f571d5b9a389f49b1d54a0e38871bc
https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62
https://conda.anaconda.org/conda-forge/linux-64/ipykernel-5.5.5-py36hcb3619a_0.tar.bz2#595507013916992bbd551005bfa96bbf
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-1.13.2-pyhd8ed1ab_0.tar.bz2#b6771ff740526a8a04853fda74dc03f3
https://conda.anaconda.org/conda-forge/linux-64/jupyterhub-base-1.4.2-py36h5fab9bb_0.tar.bz2#01e91ea234e632cf4ee3284a338a679d
https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-0.6.1-pyhd8ed1ab_0.tar.bz2#a35cb988cd5b9b9b2d1c6179a8a86974
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.10.3-pyhd8ed1ab_0.tar.bz2#65d62a616bed5237b85b9e2a88378ec0
https://conda.anaconda.org/conda-forge/linux-64/notebook-6.3.0-py36h5fab9bb_0.tar.bz2#4b075f38968b16bb1be4d17d90cf7e38
https://conda.anaconda.org/conda-forge/noarch/jupyter-offlinenotebook-0.2.2-pyh1d7be83_0.tar.bz2#fe55056ce4bc4bd4953ba440270735fb
https://conda.anaconda.org/conda-forge/linux-64/jupyterhub-singleuser-1.4.2-py36h5fab9bb_0.tar.bz2#647d5e58896dda8405b124e4606a5314
https://conda.anaconda.org/conda-forge/noarch/nbclassic-0.3.5-pyhd8ed1ab_0.tar.bz2#e9e2281b7dc08d876fc789af0f571ade
https://conda.anaconda.org/conda-forge/noarch/nteract_on_jupyter-2.1.3-py_0.tar.bz2#1430ccd983ae6b161e2fbf4377965f7a
https://conda.anaconda.org/conda-forge/linux-64/widgetsnbextension-3.5.1-py36h5fab9bb_4.tar.bz2#6919ca2c4ddec0166a900910d54ded67
https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.6.5-pyhd8ed1ab_0.tar.bz2#6f2ee1ec157104df141e2e5afeba98d4
https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.2.8-pyhd8ed1ab_0.tar.bz2#e2cc0671571f14af58f832c912dee025

Wyświetl plik

@ -1,136 +0,0 @@
# AUTO GENERATED FROM environment.py-3.6.yml, DO NOT MANUALLY MODIFY
# Frozen on 2021-02-22 12:25:15 UTC
name: r2d
channels:
- conda-forge
- defaults
- conda-forge/label/broken
dependencies:
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=1_gnu
- alembic=1.5.5=pyhd8ed1ab_0
- anyio=2.1.0=py36h5fab9bb_0
- argon2-cffi=20.1.0=py36h8f6f2f9_2
- async_generator=1.10=py_0
- attrs=20.3.0=pyhd3deb0d_0
- babel=2.9.0=pyhd3deb0d_0
- backcall=0.2.0=pyh9f0ad1d_0
- backports=1.0=py36_1
- backports.functools_lru_cache=1.6.1=py_0
- bleach=3.3.0=pyh44b312d_0
- blinker=1.4=py_1
- brotlipy=0.7.0=py36he6145b8_1001
- c-ares=1.17.1=h36c2ea0_0
- ca-certificates=2020.12.5=ha878542_0
- certifi=2020.12.5=py36h5fab9bb_1
- certipy=0.1.3=py_0
- cffi=1.14.5=py36hc120d54_0
- chardet=4.0.0=py36h5fab9bb_1
- contextvars=2.4=py_0
- cryptography=3.4.4=py36hc39840e_0
- dataclasses=0.7=py36_0
- decorator=4.4.2=py_0
- defusedxml=0.6.0=py_0
- entrypoints=0.3=py36h9f0ad1d_1002
- idna=2.10=pyh9f0ad1d_0
- immutables=0.15=py36h8f6f2f9_0
- importlib-metadata=3.4.0=py36h5fab9bb_0
- importlib_metadata=3.4.0=hd8ed1ab_0
- ipykernel=5.5.0=py36he448a4c_1
- ipython=7.16.1=py36he448a4c_2
- ipython_genutils=0.2.0=py36_0
- ipywidgets=7.6.3=pyhd3deb0d_0
- jedi=0.17.2=py36h9f0ad1d_1
- jinja2=2.11.3=pyh44b312d_0
- json5=0.9.5=pyh9f0ad1d_0
- jsonschema=3.2.0=py36h9f0ad1d_1
- jupyter-offlinenotebook=0.2.1=pyhd8ed1ab_0
- jupyter-resource-usage=0.5.1=pyhd8ed1ab_0
- jupyter_client=6.1.11=pyhd8ed1ab_1
- jupyter_core=4.7.1=py36h5fab9bb_0
- jupyter_server=1.4.0=py36h5fab9bb_0
- jupyter_telemetry=0.1.0=pyhd8ed1ab_1
- jupyterhub-base=1.3.0=py36h5fab9bb_0
- jupyterhub-singleuser=1.3.0=py36h5fab9bb_0
- jupyterlab=3.0.7=pyhd8ed1ab_0
- jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
- jupyterlab_server=2.3.0=pyhd8ed1ab_0
- jupyterlab_widgets=1.0.0=pyhd8ed1ab_1
- krb5=1.17.2=h926e7f8_0
- ld_impl_linux-64=2.35.1=hea4e1c9_2
- libcurl=7.71.1=hcdd3856_8
- libedit=3.1.20191231=he28a2e2_2
- libev=4.33=h516909a_1
- libffi=3.3=h58526e2_2
- libgcc-ng=9.3.0=h2828fa1_18
- libgomp=9.3.0=h2828fa1_18
- libnghttp2=1.43.0=h812cca2_0
- libsodium=1.0.18=h516909a_1
- libssh2=1.9.0=hab1572f_5
- libstdcxx-ng=9.3.0=h6de172a_18
- mako=1.1.4=pyh44b312d_0
- markupsafe=1.1.1=py36h8f6f2f9_3
- mistune=0.8.4=py36h8f6f2f9_1003
- nbclassic=0.2.6=pyhd8ed1ab_0
- nbclient=0.5.2=pyhd8ed1ab_0
- nbconvert=6.0.7=py36h5fab9bb_3
- nbformat=5.1.2=pyhd8ed1ab_1
- ncurses=6.2=h58526e2_4
- nest-asyncio=1.4.3=pyhd8ed1ab_0
- notebook=6.2.0=py36h5fab9bb_0
- nteract_on_jupyter=2.1.3=py_0
- oauthlib=3.0.1=py_0
- openssl=1.1.1j=h7f98852_0
- packaging=20.9=pyh44b312d_0
- pamela=1.0.0=py_0
- pandoc=2.11.4=h7f98852_0
- pandocfilters=1.4.2=py36_0
- parso=0.7.1=pyh9f0ad1d_0
- pexpect=4.8.0=py36h9f0ad1d_1
- pickleshare=0.7.5=py36h9f0ad1d_1002
- pip=21.0.1=pyhd8ed1ab_0
- prometheus_client=0.9.0=pyhd3deb0d_0
- prompt-toolkit=3.0.16=pyha770c72_0
- psutil=5.8.0=py36h8f6f2f9_1
- ptyprocess=0.7.0=pyhd3deb0d_0
- pycparser=2.20=pyh9f0ad1d_2
- pycurl=7.43.0.6=py36h66a4f8d_1
- pygments=2.8.0=pyhd8ed1ab_0
- pyjwt=2.0.1=pyhd8ed1ab_0
- pyopenssl=20.0.1=pyhd8ed1ab_0
- pyparsing=2.4.7=pyh9f0ad1d_0
- pyrsistent=0.17.3=py36h8f6f2f9_2
- pysocks=1.7.1=py36h5fab9bb_3
- python=3.6.13=hffdb5ce_0_cpython
- python-dateutil=2.8.1=py_0
- python-editor=1.0.4=py_0
- python-json-logger=2.0.1=pyh9f0ad1d_0
- python_abi=3.6=1_cp36m
- pytz=2021.1=pyhd8ed1ab_0
- pyzmq=22.0.3=py36h81c33ee_0
- readline=8.0=he28a2e2_2
- requests=2.25.1=pyhd3deb0d_0
- ruamel.yaml=0.16.12=py36h8f6f2f9_2
- ruamel.yaml.clib=0.2.2=py36h8f6f2f9_2
- send2trash=1.5.0=py_0
- setuptools=49.6.0=py36h5fab9bb_3
- six=1.15.0=pyh9f0ad1d_0
- sniffio=1.2.0=py36h5fab9bb_1
- sqlalchemy=1.3.23=py36h8f6f2f9_0
- sqlite=3.34.0=h74cdb3f_0
- terminado=0.9.2=py36h5fab9bb_0
- testpath=0.4.4=py_0
- tk=8.6.10=hed695b0_1
- tornado=6.1=py36h8f6f2f9_1
- traitlets=4.3.3=py36h9f0ad1d_1
- typing_extensions=3.7.4.3=py_0
- urllib3=1.26.3=pyhd8ed1ab_0
- wcwidth=0.2.5=pyh9f0ad1d_2
- webencodings=0.5.1=py_1
- wheel=0.36.2=pyhd3deb0d_0
- widgetsnbextension=3.5.1=py36h9f0ad1d_4
- xz=5.2.5=h516909a_1
- zeromq=4.3.4=h9c3ff4c_0
- zipp=3.4.0=py_0
- zlib=1.2.11=h516909a_1010
prefix: /opt/conda/envs/r2d

Wyświetl plik

@ -1,12 +1,2 @@
# AUTO GENERATED FROM environment.yml, DO NOT MANUALLY MODIFY
# Generated on 2021-02-22 12:25:15 UTC
dependencies:
- python=3.6.*
- ipywidgets==7.6.3
- jupyter-offlinenotebook==0.2.1
- jupyter-resource-usage==0.5.1
- jupyterlab==3.0.7
- jupyterhub-singleuser==1.3.0
- nbconvert==6.0.7
- notebook==6.2.0
- nteract_on_jupyter==2.1.3
# py3.6 is not being auto-generated from this file anymore
# update environment.py-3.6.frozen.yml directly

Wyświetl plik

@ -0,0 +1,164 @@
# AUTO GENERATED FROM environment.py-3.7.yml, DO NOT MANUALLY MODIFY
# Frozen on 2023-10-14 22:04:48 UTC
# Generated by conda-lock.
# platform: linux-64
# input_hash: 5915c99fbcf718ecb070006efbc921e7cbe0a9732a6187bb88b2c177f7e82f8d
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.7.22-hbcca054_0.conda#a73ecd2988327ad4c8f2c331482917f2
https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3
https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_2.conda#9172c297304f2a20134fc56c97fbe229
https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.7-4_cp37m.conda#d5fa71a1bac31ad985348ffff6b399c4
https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_2.conda#e2042154faafe61969556f28bade94b9
https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d
https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_2.conda#c28003b0be0494f9a7664389146716ff
https://conda.anaconda.org/conda-forge/linux-64/gmp-6.2.1-h58526e2_0.tar.bz2#b94cf2db16066b242ebd26db2facbd56
https://conda.anaconda.org/conda-forge/linux-64/icu-72.1-hcb278e6_0.conda#7c8d20d847bb45f56bd941578fcfa146
https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3
https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-hd590300_1.conda#854e3e1623b39777140f199c5f9ab952
https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d
https://conda.anaconda.org/conda-forge/linux-64/libuv-1.46.0-hd590300_0.conda#d23c76f7e6dcd6243d1b6ef5e62d17d2
https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda#f36c115f1ee199da648e0597ec2047ad
https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-hcb278e6_0.conda#681105bccc2a3f7f1a837d47d39c9179
https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.3-hd590300_0.conda#7bb88ce04c8deb9f7d763ae04a1da72f
https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0
https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae
https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.43.2-h2797004_0.conda#4b441a1ee22397d5a27dc1126b849edd
https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4
https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-h2797004_0.conda#513336054f884f95d9fd925748f41ef3
https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_0.conda#8851084c192dbc56215ac4e3c9aa30fa
https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda#68c34ec6149623be41a1933ab996a209
https://conda.anaconda.org/conda-forge/linux-64/nodejs-18.17.1-hf52ce11_0.conda#c3aad73875296ca9ad3954aa606536b9
https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.3-h32600fe_0.conda#8287aeb8462e2d4b235eff788e75919d
https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.43.2-h2c6b66d_0.conda#c37b95bcd6c6833dacfd5df0ae2f4303
https://conda.anaconda.org/conda-forge/linux-64/python-3.7.12-hf930737_100_cpython.tar.bz2#416558a6f46b7a1fa8db7d0e98aff56a
https://conda.anaconda.org/conda-forge/noarch/aiofiles-22.1.0-pyhd8ed1ab_0.tar.bz2#a88c206fdb78e34adb1c4081f5f838dd
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda#3edfead7cedd1ab4400a6c588f3e75f8
https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda#54ca2e08b3220c148a1d8329c2678e02
https://conda.anaconda.org/conda-forge/noarch/blinker-1.6.3-pyhd8ed1ab_0.conda#d33cf7357de636cec64320f0c4fb7b6f
https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.0.9-py37hd23a5d3_7.tar.bz2#f330e49790eb1af580c0d710e63c8cb0
https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a
https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda#7f3dbc9179b4dde7da98dfb151d0ad22
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.0-pyhd8ed1ab_0.conda#fef8ef5f0a54546b9efee39468229917
https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.6.3-py37hd23a5d3_0.tar.bz2#004724940367fa84ec1d0732c8b27c18
https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d
https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda#e6518222753f519e911e83136d2158d9
https://conda.anaconda.org/conda-forge/linux-64/greenlet-1.1.3-py37hd23a5d3_0.tar.bz2#426c53c95df106039da865c0095e2a65
https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#34272b248891bddccc64479f9a7fffed
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda#dac1dabba2b5a9d1aee175c5fcc7b436
https://conda.anaconda.org/conda-forge/noarch/jsonpointer-2.0-py_0.tar.bz2#07d85c22a3beb102a48cd123df84c2a6
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda#8370e0a9dc443f9b45a23fd30e7a6b3b
https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.1-py37h540881e_1.tar.bz2#a9123517674ab0589d955a5adbf58573
https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.1-pyhd8ed1ab_0.conda#1dad8397c94e4de97a70de552a7dcf49
https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda#a4f0e4519bc50eee4f53f689be9607f7
https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6
https://conda.anaconda.org/conda-forge/noarch/pamela-1.1.0-pyh1a96a4e_0.conda#dce93ccf07159017c69c6d9cea2d5d61
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761
https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9
https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.17.1-pyhd8ed1ab_0.conda#02153b6b760bbec00cfe9e4c97993d06
https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.3-py37h540881e_0.tar.bz2#0c813ad118e926df328bf74899a48047
https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda#40e5cb18165466773619e5c963f00a7b
https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda#912c0194f898fdb783021fd25f913c31
https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.18.1-py37h540881e_1.tar.bz2#8e25160800dafbc2a24c0aaa99a981ef
https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py37h89c1867_5.tar.bz2#8c4b0563f96363ee99f1ab864616ac63
https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.1-pyhd8ed1ab_0.conda#305141cff54af2f90e089d868fffce28
https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960
https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda#c93346b446cd08c169d843ae5fc0da97
https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py37h540881e_4.tar.bz2#f231119f9790da6da6bd93b250b7e42e
https://conda.anaconda.org/conda-forge/linux-64/pyzmq-24.0.1-py37h0c0c2a8_0.tar.bz2#732c98a38c84984262940c868793ebb4
https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f
https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.6-py37h540881e_1.tar.bz2#f3c703ac09e7810d6c9baec89e901fb5
https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2
https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda#fc2166155db840c634a1291a5c35a709
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2#dd6cbc539e74cb1f430efbd4575b9303
https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.3.2.post1-pyhd8ed1ab_0.tar.bz2#146f4541d643d48fc8a75cacf69f03ae
https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96
https://conda.anaconda.org/conda-forge/linux-64/tornado-6.2-py37h540881e_0.tar.bz2#2f0863ba6b29d1d2872b064dd697a492
https://conda.anaconda.org/conda-forge/noarch/traitlets-5.9.0-pyhd8ed1ab_0.conda#d0b4f5c87cd35ac3fb3d47b223263a64
https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.7.1-pyha770c72_0.conda#c39d6a09fe819de4951c2642629d9115
https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda#0944dc65cb4a9b5b68522c3bb585d41c
https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.1-pyhd8ed1ab_0.conda#c34d9325a609381a0b0e8a5b4f325147
https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda#1ccd092478b3e0ee10d7a891adbf8a4f
https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda#82617d07b2f5f5a96296d3c19684b37a
https://conda.anaconda.org/conda-forge/linux-64/y-py-0.5.4-py37hbd0741f_0.tar.bz2#ecadea26afe1035c2be1f159fdd22b4c
https://conda.anaconda.org/conda-forge/noarch/zipp-3.15.0-pyhd8ed1ab_0.conda#13018819ca8f5b7cc675a8faf1f5fedf
https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49
https://conda.anaconda.org/conda-forge/noarch/babel-2.13.0-pyhd8ed1ab_0.conda#22541af7a9eb59fc6afcadb7ecdf9219
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e
https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551
https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.1-py37h43b0acd_1.tar.bz2#5111b64bdfdd72d85086ec49c952fe0d
https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda#c8eaca39e2b6abae1fc96acc929ae939
https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.11.4-py37h89c1867_0.tar.bz2#71107630527e4bd82932952351231efe
https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.0.0-pyhd8ed1ab_0.conda#acf36c4210f71dbf45a83409a9b5ff4d
https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2
https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37
https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-4.11.1-py37h89c1867_0.tar.bz2#6d184401b7a49bbebbfedc96bc7add1c
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2#243f63592c8e449f40cd42eb5cf32f40
https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2#330448ce4403cc74990ac07c555942a1
https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520
https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.17.21-py37h540881e_1.tar.bz2#6232de79d3fe4aaa00f5f34d3da55c2a
https://conda.anaconda.org/conda-forge/noarch/terminado-0.17.1-pyh41d4057_0.conda#3788984d535770cad699efaeb6cb3037
https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.7.1-hd8ed1ab_0.conda#f96688577f1faa58096d06a45136afa2
https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.6-pyhd8ed1ab_0.conda#d5f8944ff9ab24a292511c83dce33dea
https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8
https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py37h540881e_2.tar.bz2#ff22fac37e988bed992b1f437e05906a
https://conda.anaconda.org/conda-forge/noarch/arrow-1.2.3-pyhd8ed1ab_0.tar.bz2#fd1967c76eda3a3dd9e8e6cb7a15a028
https://conda.anaconda.org/conda-forge/linux-64/cryptography-38.0.2-py37h5994e8b_1.tar.bz2#5a8bb0074be9d20d456957f92b72beed
https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.11.4-hd8ed1ab_0.tar.bz2#9a1925fdb91c81437b8012e48ede6851
https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.17.3-pyhd8ed1ab_0.conda#723268a468177cd44568eb8f794e0d80
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.4.9-pyhd8ed1ab_0.conda#5cbf9a31a19d4ef9103adb7d71fd45fd
https://conda.anaconda.org/conda-forge/noarch/mako-1.2.4-pyhd8ed1ab_0.tar.bz2#0d072f0edc017b6318dbab701e053f94
https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b
https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.4.42-py37h540881e_0.tar.bz2#921bb310665fba1ed0f64f3287fda6d4
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.8-pyhd8ed1ab_0.conda#367386d2575a0e62412448eda1012efd
https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.0-pyhd8ed1ab_0.conda#ba29026b587195548ef82444518061f7
https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4
https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a
https://conda.anaconda.org/conda-forge/noarch/jupyter_telemetry-0.1.0-pyhd8ed1ab_1.tar.bz2#bb9ebdb6d5aa2622484aff1faceee181
https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-0.2.4-pyhd8ed1ab_0.conda#be5d4633c1cc40343ed417153a184006
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.8.0-pyhd8ed1ab_0.conda#1ca43103a08456b19222d93fd9d119ac
https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.39-pyha770c72_0.conda#a4986c6bb5b0d05a38855b0880a5f425
https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda#34f7d568bf59d18e3fef8c405cbece21
https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.8.2-pyhd8ed1ab_0.conda#5ee5ad3af20138020065985de57f0711
https://conda.anaconda.org/conda-forge/noarch/certipy-0.1.3-py_0.tar.bz2#23486713ef5712923e7c57cae609b22e
https://conda.anaconda.org/conda-forge/linux-64/ipython-7.33.0-py37h89c1867_0.tar.bz2#e4841787deb237aad17b2d44a2d32c23
https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.17.3-pyhd8ed1ab_0.conda#7a709748e93f0b2c33d6b5b676b6d9d0
https://conda.anaconda.org/conda-forge/noarch/nbclient-0.7.0-pyhd8ed1ab_0.tar.bz2#87eed34d791330d8acdab6a8ab63113f
https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.16.2-pyh210e3f2_0.tar.bz2#6b0f40821b784cac8a33d0c5eb7602c0
https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda#2605fae5ee27100e5f10037baebf4d41
https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.6.3-pyhd8ed1ab_1.conda#2ac0d00a0fb3f1a4c81c460ba56bb23b
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-base-3.1.1-pyh2a2186d_0.conda#78fc5dfd4577a7ba172fa65eb64b6afb
https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.6.0-pyhd8ed1ab_0.conda#879782bde4bbdb4c7b5d4054504a20d5
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-1.23.4-pyhd8ed1ab_0.conda#35b7e9267926e864cc70ce137e6588ca
https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.6.0-pyhd8ed1ab_0.conda#e8172ca42f2869bb90185c9356899e81
https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-0.7.1-pyhd8ed1ab_0.conda#62ed54dc748d19d0cf056a3f90cc8f12
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.0-pyhd8ed1ab_0.conda#a12525b037a703d7f4512da737d700e6
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.24.0-pyhd8ed1ab_0.conda#327bfe1c99154f02259d29810bd70afc
https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.6.0-pyhd8ed1ab_0.conda#59976ee8df1c6f82c4aa94b5fd6b745e
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-0.8.0-pyhd8ed1ab_0.conda#780280d42fbcb2eaf654a6ba7a3e5bb5
https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda#a0be31e9bd84d6eae87cdbf74c56b90b
https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.6-pyha770c72_0.conda#2e2422cf19f555ef3ddbbeaf2eac7545
https://conda.anaconda.org/conda-forge/noarch/jupyter-offlinenotebook-0.2.2-pyh1d7be83_0.tar.bz2#fe55056ce4bc4bd4953ba440270735fb
https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.6.6-pyhd8ed1ab_0.conda#05def61d4c64b0f3161eaeb3b00cc790
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-singleuser-3.1.1-pyh2a2186d_0.conda#6d0a3394efe9ff7c0ad1ed03a6ca3720

Wyświetl plik

@ -0,0 +1,140 @@
# AUTO GENERATED FROM environment.py-3.7.yml, DO NOT MANUALLY MODIFY
# Frozen on 2023-10-14 22:04:58 UTC
# Generated by conda-lock.
# platform: linux-aarch64
# input_hash: dbbb799e59a9a09834913b32ecbf9d5b9a8a7852a87bd853f5ffc46324611d8d
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2023.7.22-hcefe29a_0.conda#95d7f998087114466fa91e7c2887fa2f
https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.40-h2d8c526_0.conda#16246d69e945d0b1969a6099e7c5d457
https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-13.2.0-hf8544c7_2.conda#8ce66e4e1d30f0936a525127eaaaf63d
https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-13.2.0-h9a76618_2.conda#921c652898c8602bf2697d015f3efc77
https://conda.anaconda.org/conda-forge/linux-aarch64/pandoc-3.1.3-h8af1aa0_0.conda#10b7f903dadbf1568c17e2c6cb39435b
https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.7-4_cp37m.conda#ce67e6797b16d7211327cb9d8cc88786
https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2#6168d71addc746e8f2b8d57dfd2edcea
https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-13.2.0-hf8544c7_2.conda#f4dfb3bad7c8b38c3f8ed7f15a91a1ed
https://conda.anaconda.org/conda-forge/linux-aarch64/icu-72.1-hcf00150_0.conda#cd394213b2f8c9c9060a293a8508fe84
https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2#dddd85f4d52121fab0a8b099c5e06501
https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.0-h31becfc_1.conda#b281ae3b462ef954fac3c06cc2cc92d5
https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.18-hb9de7d4_1.tar.bz2#d09ab3c60eebb6f14eb4d07e172775cc
https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.44.2-h31becfc_1.conda#f6068b95c0a3b4fd949a91341e9a0669
https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.2.13-h31becfc_5.conda#b213aa87eea9491ef7b129179322e955
https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.4-h2e1726e_0.conda#40beaf447150c2760affc591c7509595
https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.1.3-h31becfc_0.conda#19469b6fdd72c1ffe022d9845fbb85fa
https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2#83baad393a31d59c20b63ba4da6592df
https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.43.2-h194ca79_0.conda#16417bba0efbcb7539b942a611cc899a
https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda#105eb1e16bf83bfb2eb380a48032b655
https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda#f75105e0585851f818e0009dd1dde4dc
https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h2f0025b_0.conda#88905c542167163a0dea6bdad01c3366
https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.2.13-h31becfc_5.conda#96866c7301479abaf8308c50958c71a4
https://conda.anaconda.org/conda-forge/linux-aarch64/nodejs-18.17.1-hcb20a51_0.conda#0611c05ba14e36fd4e19188d1708e393
https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.43.2-h3b3482f_0.conda#9340c895bb8a07ffb056e1742a8c746b
https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.7.12-h47f6e27_100_cpython.tar.bz2#d7b2c7500aa702c992c285854bef95a7
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda#3edfead7cedd1ab4400a6c588f3e75f8
https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda#54ca2e08b3220c148a1d8329c2678e02
https://conda.anaconda.org/conda-forge/noarch/blinker-1.6.3-pyhd8ed1ab_0.conda#d33cf7357de636cec64320f0c4fb7b6f
https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.0.9-py37hb20f0a7_7.tar.bz2#b93248c9b12cd6e57f998c6136c34a75
https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda#7f3dbc9179b4dde7da98dfb151d0ad22
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.0-pyhd8ed1ab_0.conda#fef8ef5f0a54546b9efee39468229917
https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.6.3-py37hb20f0a7_0.tar.bz2#7ab6a7bf4ff4be82cc461e64e53f0afa
https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d
https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda#e6518222753f519e911e83136d2158d9
https://conda.anaconda.org/conda-forge/linux-aarch64/greenlet-1.1.3-py37hb20f0a7_0.tar.bz2#733269b6446567b6eedfa846ddd752b9
https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#34272b248891bddccc64479f9a7fffed
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda#dac1dabba2b5a9d1aee175c5fcc7b436
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda#8370e0a9dc443f9b45a23fd30e7a6b3b
https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-2.1.1-py37heeccf27_1.tar.bz2#8dfd7c3bbc19e52706265c8986411b7f
https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.1-pyhd8ed1ab_0.conda#1dad8397c94e4de97a70de552a7dcf49
https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda#a4f0e4519bc50eee4f53f689be9607f7
https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6
https://conda.anaconda.org/conda-forge/noarch/pamela-1.1.0-pyh1a96a4e_0.conda#dce93ccf07159017c69c6d9cea2d5d61
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761
https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9
https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.17.1-pyhd8ed1ab_0.conda#02153b6b760bbec00cfe9e4c97993d06
https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-5.9.3-py37h795501a_0.tar.bz2#4fd90f8ee043a535f1effd3b2260d46c
https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda#40e5cb18165466773619e5c963f00a7b
https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda#912c0194f898fdb783021fd25f913c31
https://conda.anaconda.org/conda-forge/linux-aarch64/pyrsistent-0.18.1-py37heeccf27_1.tar.bz2#604a4c0f1fa79c503cc56d85b0e4af30
https://conda.anaconda.org/conda-forge/linux-aarch64/pysocks-1.7.1-py37hd9ded2f_5.tar.bz2#83a3d8c5b531c55e9241adc3d4e23373
https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.1-pyhd8ed1ab_0.conda#305141cff54af2f90e089d868fffce28
https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960
https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda#c93346b446cd08c169d843ae5fc0da97
https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-24.0.1-py37h7cb28e0_0.tar.bz2#97e6c8c18201d08a2eb5f87ce28cb55e
https://conda.anaconda.org/conda-forge/linux-aarch64/ruamel.yaml.clib-0.2.6-py37h795501a_1.tar.bz2#65038418d32470b70045205dd1bd7579
https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2
https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda#fc2166155db840c634a1291a5c35a709
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2#dd6cbc539e74cb1f430efbd4575b9303
https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.3.2.post1-pyhd8ed1ab_0.tar.bz2#146f4541d643d48fc8a75cacf69f03ae
https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96
https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.2-py37heeccf27_0.tar.bz2#e87e4ac6adb1b6564b5910ddb967401b
https://conda.anaconda.org/conda-forge/noarch/traitlets-5.9.0-pyhd8ed1ab_0.conda#d0b4f5c87cd35ac3fb3d47b223263a64
https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.7.1-pyha770c72_0.conda#c39d6a09fe819de4951c2642629d9115
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.1-pyhd8ed1ab_0.conda#c34d9325a609381a0b0e8a5b4f325147
https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda#1ccd092478b3e0ee10d7a891adbf8a4f
https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda#82617d07b2f5f5a96296d3c19684b37a
https://conda.anaconda.org/conda-forge/noarch/zipp-3.15.0-pyhd8ed1ab_0.conda#13018819ca8f5b7cc675a8faf1f5fedf
https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49
https://conda.anaconda.org/conda-forge/noarch/babel-2.13.0-pyhd8ed1ab_0.conda#22541af7a9eb59fc6afcadb7ecdf9219
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e
https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.15.1-py37h828e148_1.tar.bz2#50a7437124b0618862af25f390dc259f
https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda#c8eaca39e2b6abae1fc96acc929ae939
https://conda.anaconda.org/conda-forge/linux-aarch64/importlib-metadata-4.11.4-py37hd9ded2f_0.tar.bz2#0f8204faf4756a6f66a609a51992dec0
https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.0.0-pyhd8ed1ab_0.conda#acf36c4210f71dbf45a83409a9b5ff4d
https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2
https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37
https://conda.anaconda.org/conda-forge/linux-aarch64/jupyter_core-4.11.1-py37hfd236b0_0.tar.bz2#7d39f788ccc3fb1cc4f099122cb6a9ca
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2#243f63592c8e449f40cd42eb5cf32f40
https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2#330448ce4403cc74990ac07c555942a1
https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
https://conda.anaconda.org/conda-forge/linux-aarch64/ruamel.yaml-0.17.21-py37h795501a_1.tar.bz2#4305d41999e35a9df06ecfa6de115bb2
https://conda.anaconda.org/conda-forge/noarch/terminado-0.17.1-pyh41d4057_0.conda#3788984d535770cad699efaeb6cb3037
https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.7.1-hd8ed1ab_0.conda#f96688577f1faa58096d06a45136afa2
https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.6-pyhd8ed1ab_0.conda#d5f8944ff9ab24a292511c83dce33dea
https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py37h795501a_2.tar.bz2#5459021da3ad7999d88a32dc52e2b03f
https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-38.0.2-py37h1c39eab_1.tar.bz2#329fe90bd5b7d02ef4d589c641115877
https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.17.3-pyhd8ed1ab_0.conda#723268a468177cd44568eb8f794e0d80
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.4.9-pyhd8ed1ab_0.conda#5cbf9a31a19d4ef9103adb7d71fd45fd
https://conda.anaconda.org/conda-forge/noarch/mako-1.2.4-pyhd8ed1ab_0.tar.bz2#0d072f0edc017b6318dbab701e053f94
https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b
https://conda.anaconda.org/conda-forge/linux-aarch64/sqlalchemy-1.4.42-py37heeccf27_0.tar.bz2#153e4f63748586a2e7af033e39e398cd
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.8-pyhd8ed1ab_0.conda#367386d2575a0e62412448eda1012efd
https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.0-pyhd8ed1ab_0.conda#ba29026b587195548ef82444518061f7
https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4
https://conda.anaconda.org/conda-forge/noarch/jupyter_telemetry-0.1.0-pyhd8ed1ab_1.tar.bz2#bb9ebdb6d5aa2622484aff1faceee181
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.8.0-pyhd8ed1ab_0.conda#1ca43103a08456b19222d93fd9d119ac
https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.39-pyha770c72_0.conda#a4986c6bb5b0d05a38855b0880a5f425
https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda#34f7d568bf59d18e3fef8c405cbece21
https://conda.anaconda.org/conda-forge/noarch/certipy-0.1.3-py_0.tar.bz2#23486713ef5712923e7c57cae609b22e
https://conda.anaconda.org/conda-forge/linux-aarch64/ipython-7.33.0-py37hd9ded2f_0.tar.bz2#9926f80d249c9e4b8c0bb4315cae9caa
https://conda.anaconda.org/conda-forge/noarch/nbclient-0.7.0-pyhd8ed1ab_0.tar.bz2#87eed34d791330d8acdab6a8ab63113f
https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.16.2-pyh210e3f2_0.tar.bz2#6b0f40821b784cac8a33d0c5eb7602c0
https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda#2605fae5ee27100e5f10037baebf4d41
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-base-3.1.1-pyh2a2186d_0.conda#78fc5dfd4577a7ba172fa65eb64b6afb
https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.6.0-pyhd8ed1ab_0.conda#879782bde4bbdb4c7b5d4054504a20d5
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-1.23.4-pyhd8ed1ab_0.conda#35b7e9267926e864cc70ce137e6588ca
https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.6.0-pyhd8ed1ab_0.conda#e8172ca42f2869bb90185c9356899e81
https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-0.7.1-pyhd8ed1ab_0.conda#62ed54dc748d19d0cf056a3f90cc8f12
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.24.0-pyhd8ed1ab_0.conda#327bfe1c99154f02259d29810bd70afc
https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.6.0-pyhd8ed1ab_0.conda#59976ee8df1c6f82c4aa94b5fd6b745e
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda#a0be31e9bd84d6eae87cdbf74c56b90b
https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.6-pyha770c72_0.conda#2e2422cf19f555ef3ddbbeaf2eac7545
https://conda.anaconda.org/conda-forge/noarch/jupyter-offlinenotebook-0.2.2-pyh1d7be83_0.tar.bz2#fe55056ce4bc4bd4953ba440270735fb
https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.5.3-pyhd8ed1ab_0.conda#69f71bc3d176b3ad3d9564a32bd049b8
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-singleuser-3.1.1-pyh2a2186d_0.conda#6d0a3394efe9ff7c0ad1ed03a6ca3720

Wyświetl plik

@ -1,133 +0,0 @@
# AUTO GENERATED FROM environment.py-3.7.yml, DO NOT MANUALLY MODIFY
# Frozen on 2021-02-22 12:26:46 UTC
name: r2d
channels:
- conda-forge
- defaults
- conda-forge/label/broken
dependencies:
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=1_gnu
- alembic=1.5.5=pyhd8ed1ab_0
- anyio=2.1.0=py37h89c1867_0
- argon2-cffi=20.1.0=py37h8f50634_2
- async_generator=1.10=py_0
- attrs=20.3.0=pyhd3deb0d_0
- babel=2.9.0=pyhd3deb0d_0
- backcall=0.2.0=pyh9f0ad1d_0
- backports=1.0=py_2
- backports.functools_lru_cache=1.6.1=py_0
- bleach=3.3.0=pyh44b312d_0
- blinker=1.4=py_1
- brotlipy=0.7.0=py37hb5d75c8_1001
- c-ares=1.17.1=h36c2ea0_0
- ca-certificates=2020.12.5=ha878542_0
- certifi=2020.12.5=py37h89c1867_1
- certipy=0.1.3=py_0
- cffi=1.14.5=py37hc58025e_0
- chardet=4.0.0=py37h89c1867_1
- cryptography=3.4.4=py37hf1a17b8_0
- decorator=4.4.2=py_0
- defusedxml=0.6.0=py_0
- entrypoints=0.3=py37hc8dfbb8_1002
- idna=2.10=pyh9f0ad1d_0
- importlib-metadata=3.4.0=py37h89c1867_0
- importlib_metadata=3.4.0=hd8ed1ab_0
- ipykernel=5.5.0=py37h888b3d9_1
- ipython=7.20.0=py37h888b3d9_2
- ipython_genutils=0.2.0=py_1
- ipywidgets=7.6.3=pyhd3deb0d_0
- jedi=0.18.0=py37h89c1867_2
- jinja2=2.11.3=pyh44b312d_0
- json5=0.9.5=pyh9f0ad1d_0
- jsonschema=3.2.0=py37hc8dfbb8_1
- jupyter-offlinenotebook=0.2.1=pyhd8ed1ab_0
- jupyter-resource-usage=0.5.1=pyhd8ed1ab_0
- jupyter_client=6.1.11=pyhd8ed1ab_1
- jupyter_core=4.7.1=py37h89c1867_0
- jupyter_server=1.4.0=py37h89c1867_0
- jupyter_telemetry=0.1.0=pyhd8ed1ab_1
- jupyterhub-base=1.3.0=py37h89c1867_0
- jupyterhub-singleuser=1.3.0=py37h89c1867_0
- jupyterlab=3.0.7=pyhd8ed1ab_0
- jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
- jupyterlab_server=2.3.0=pyhd8ed1ab_0
- jupyterlab_widgets=1.0.0=pyhd8ed1ab_1
- krb5=1.17.2=h926e7f8_0
- ld_impl_linux-64=2.35.1=hea4e1c9_2
- libcurl=7.71.1=hcdd3856_8
- libedit=3.1.20191231=he28a2e2_2
- libev=4.33=h516909a_1
- libffi=3.3=h58526e2_2
- libgcc-ng=9.3.0=h2828fa1_18
- libgomp=9.3.0=h2828fa1_18
- libnghttp2=1.43.0=h812cca2_0
- libsodium=1.0.18=h516909a_1
- libssh2=1.9.0=hab1572f_5
- libstdcxx-ng=9.3.0=h6de172a_18
- mako=1.1.4=pyh44b312d_0
- markupsafe=1.1.1=py37h5e8e339_3
- mistune=0.8.4=py37h5e8e339_1003
- nbclassic=0.2.6=pyhd8ed1ab_0
- nbclient=0.5.2=pyhd8ed1ab_0
- nbconvert=6.0.7=py37h89c1867_3
- nbformat=5.1.2=pyhd8ed1ab_1
- ncurses=6.2=h58526e2_4
- nest-asyncio=1.4.3=pyhd8ed1ab_0
- notebook=6.2.0=py37h89c1867_0
- nteract_on_jupyter=2.1.3=py_0
- oauthlib=3.0.1=py_0
- openssl=1.1.1j=h7f98852_0
- packaging=20.9=pyh44b312d_0
- pamela=1.0.0=py_0
- pandoc=2.11.4=h7f98852_0
- pandocfilters=1.4.2=py_1
- parso=0.8.1=pyhd8ed1ab_0
- pexpect=4.8.0=py37hc8dfbb8_1
- pickleshare=0.7.5=py37hc8dfbb8_1002
- pip=21.0.1=pyhd8ed1ab_0
- prometheus_client=0.9.0=pyhd3deb0d_0
- prompt-toolkit=3.0.16=pyha770c72_0
- psutil=5.8.0=py37h5e8e339_1
- ptyprocess=0.7.0=pyhd3deb0d_0
- pycparser=2.20=pyh9f0ad1d_2
- pycurl=7.43.0.6=py37h88a64d2_1
- pygments=2.8.0=pyhd8ed1ab_0
- pyjwt=2.0.1=pyhd8ed1ab_0
- pyopenssl=20.0.1=pyhd8ed1ab_0
- pyparsing=2.4.7=pyh9f0ad1d_0
- pyrsistent=0.17.3=py37h5e8e339_2
- pysocks=1.7.1=py37h89c1867_3
- python=3.7.10=hffdb5ce_100_cpython
- python-dateutil=2.8.1=py_0
- python-editor=1.0.4=py_0
- python-json-logger=2.0.1=pyh9f0ad1d_0
- python_abi=3.7=1_cp37m
- pytz=2021.1=pyhd8ed1ab_0
- pyzmq=22.0.3=py37h499b945_0
- readline=8.0=he28a2e2_2
- requests=2.25.1=pyhd3deb0d_0
- ruamel.yaml=0.16.12=py37h5e8e339_2
- ruamel.yaml.clib=0.2.2=py37h5e8e339_2
- send2trash=1.5.0=py_0
- setuptools=49.6.0=py37h89c1867_3
- six=1.15.0=pyh9f0ad1d_0
- sniffio=1.2.0=py37h89c1867_1
- sqlalchemy=1.3.23=py37h5e8e339_0
- sqlite=3.34.0=h74cdb3f_0
- terminado=0.9.2=py37h89c1867_0
- testpath=0.4.4=py_0
- tk=8.6.10=hed695b0_1
- tornado=6.1=py37h5e8e339_1
- traitlets=5.0.5=py_0
- typing_extensions=3.7.4.3=py_0
- urllib3=1.26.3=pyhd8ed1ab_0
- wcwidth=0.2.5=pyh9f0ad1d_2
- webencodings=0.5.1=py_1
- wheel=0.36.2=pyhd3deb0d_0
- widgetsnbextension=3.5.1=py37hc8dfbb8_4
- xz=5.2.5=h516909a_1
- zeromq=4.3.4=h9c3ff4c_0
- zipp=3.4.0=py_0
- zlib=1.2.11=h516909a_1010
prefix: /opt/conda/envs/r2d

Wyświetl plik

@ -1,12 +1,15 @@
# AUTO GENERATED FROM environment.yml, DO NOT MANUALLY MODIFY
# Generated on 2021-02-22 12:26:46 UTC
# Generated on 2023-10-14 22:04:48 UTC
channels:
- conda-forge
dependencies:
- python=3.7.*
- ipywidgets==7.6.3
- jupyter-offlinenotebook==0.2.1
- jupyter-resource-usage==0.5.1
- jupyterlab==3.0.7
- jupyterhub-singleuser==1.3.0
- nbconvert==6.0.7
- notebook==6.2.0
- nteract_on_jupyter==2.1.3
- nodejs=18
- pip
- ipywidgets==8.* # https://github.com/jupyter-widgets/ipywidgets
- jupyter-offlinenotebook==0.2.* # https://github.com/manics/jupyter-offlinenotebook
- jupyter-resource-usage==0.7.* # https://github.com/jupyter-server/jupyter-resource-usage
- jupyter_server==1.* # https://github.com/jupyter-server/jupyter_server
- jupyterhub-singleuser==3.* # https://github.com/jupyterhub/jupyterhub
- jupyterlab==3.* # https://github.com/jupyterlab/jupyterlab
- notebook==6.* # https://github.com/jupyter/notebook

Wyświetl plik

@ -0,0 +1,174 @@
# AUTO GENERATED FROM environment.py-3.8.yml, DO NOT MANUALLY MODIFY
# Frozen on 2023-10-14 22:05:18 UTC
# Generated by conda-lock.
# platform: linux-64
# input_hash: 06bcc16f99337eabba948f7b565f8f19943cd96f5d3c068090a296c29c047ba9
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.7.22-hbcca054_0.conda#a73ecd2988327ad4c8f2c331482917f2
https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3
https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_2.conda#9172c297304f2a20134fc56c97fbe229
https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.8-4_cp38.conda#ea6b353536f42246cd130c7fef1285cf
https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_2.conda#e2042154faafe61969556f28bade94b9
https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d
https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_2.conda#c28003b0be0494f9a7664389146716ff
https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54
https://conda.anaconda.org/conda-forge/linux-64/gmp-6.2.1-h58526e2_0.tar.bz2#b94cf2db16066b242ebd26db2facbd56
https://conda.anaconda.org/conda-forge/linux-64/icu-72.1-hcb278e6_0.conda#7c8d20d847bb45f56bd941578fcfa146
https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3
https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-hd590300_1.conda#854e3e1623b39777140f199c5f9ab952
https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d
https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b
https://conda.anaconda.org/conda-forge/linux-64/libuv-1.46.0-hd590300_0.conda#d23c76f7e6dcd6243d1b6ef5e62d17d2
https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda#f36c115f1ee199da648e0597ec2047ad
https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-hcb278e6_0.conda#681105bccc2a3f7f1a837d47d39c9179
https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.3-hd590300_0.conda#7bb88ce04c8deb9f7d763ae04a1da72f
https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0
https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae
https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.43.2-h2797004_0.conda#4b441a1ee22397d5a27dc1126b849edd
https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4
https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-h2797004_0.conda#513336054f884f95d9fd925748f41ef3
https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_0.conda#8851084c192dbc56215ac4e3c9aa30fa
https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda#68c34ec6149623be41a1933ab996a209
https://conda.anaconda.org/conda-forge/linux-64/nodejs-18.17.1-hf52ce11_0.conda#c3aad73875296ca9ad3954aa606536b9
https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.3-h32600fe_0.conda#8287aeb8462e2d4b235eff788e75919d
https://conda.anaconda.org/conda-forge/linux-64/python-3.8.18-hd12c33a_0_cpython.conda#334cb629e10d209f1c17630f653168b1
https://conda.anaconda.org/conda-forge/noarch/aiofiles-22.1.0-pyhd8ed1ab_0.tar.bz2#a88c206fdb78e34adb1c4081f5f838dd
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda#3edfead7cedd1ab4400a6c588f3e75f8
https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda#54ca2e08b3220c148a1d8329c2678e02
https://conda.anaconda.org/conda-forge/noarch/blinker-1.6.3-pyhd8ed1ab_0.conda#d33cf7357de636cec64320f0c4fb7b6f
https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py38h17151c0_1.conda#7a5a699c8992fc51ef25e980f4502c2a
https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a
https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda#7f3dbc9179b4dde7da98dfb151d0ad22
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.0-pyhd8ed1ab_0.conda#fef8ef5f0a54546b9efee39468229917
https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.0-py38h17151c0_1.conda#b43385ccbd4fa88f2c195ad3c4101c77
https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d
https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda#e6518222753f519e911e83136d2158d9
https://conda.anaconda.org/conda-forge/noarch/executing-1.2.0-pyhd8ed1ab_0.tar.bz2#4c1bc140e2be5c8ba6e3acab99e25c50
https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.0-py38h17151c0_1.conda#e61422a1d4256b5299131f17ef2f5215
https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#34272b248891bddccc64479f9a7fffed
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda#dac1dabba2b5a9d1aee175c5fcc7b436
https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-2.4-py38h578d9bd_3.conda#ed4beead725b2b8c6673d4d7338bce78
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda#8370e0a9dc443f9b45a23fd30e7a6b3b
https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.3-py38h01eb140_1.conda#2dabf287937cd631e292096cc6d0867e
https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.1-pyhd8ed1ab_0.conda#1dad8397c94e4de97a70de552a7dcf49
https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda#a4f0e4519bc50eee4f53f689be9607f7
https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6
https://conda.anaconda.org/conda-forge/noarch/pamela-1.1.0-pyh1a96a4e_0.conda#dce93ccf07159017c69c6d9cea2d5d61
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761
https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9
https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.17.1-pyhd8ed1ab_0.conda#02153b6b760bbec00cfe9e4c97993d06
https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py38h01eb140_1.conda#89cb08bb523adf12fed3829558638d84
https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883
https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda#40e5cb18165466773619e5c963f00a7b
https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda#912c0194f898fdb783021fd25f913c31
https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025
https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.1-pyhd8ed1ab_0.conda#305141cff54af2f90e089d868fffce28
https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960
https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda#c93346b446cd08c169d843ae5fc0da97
https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py38h01eb140_1.conda#5f05353ae9a6c37e1b4aebc9f7834d23
https://conda.anaconda.org/conda-forge/linux-64/pyzmq-24.0.1-py38hfc09fa9_1.tar.bz2#a0d5ef0498ced7a2afd82ee17994935e
https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f
https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.10.6-py38h0cc4f7c_0.conda#e1509df6d5aa872dde4432fcfe89747d
https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py38h01eb140_2.conda#91e6521bacbb90e22146bb41571cdb93
https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2
https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda#fc2166155db840c634a1291a5c35a709
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2#dd6cbc539e74cb1f430efbd4575b9303
https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561
https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96
https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3.3-py38h01eb140_1.conda#660cfc2fc5bd9e3b458ad394976652cf
https://conda.anaconda.org/conda-forge/noarch/traitlets-5.11.2-pyhd8ed1ab_0.conda#bd3f90f7551e1cffb1f402880eb2cef1
https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.14-pyhd8ed1ab_0.conda#4df15c51a543e806d439490b862be1c6
https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda#5b1be40a26d10a06f6d4f1f9e19fa0c7
https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda#0944dc65cb4a9b5b68522c3bb585d41c
https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda#bdb77b28cf16deac0eef431a068320e8
https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda#1ccd092478b3e0ee10d7a891adbf8a4f
https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda#82617d07b2f5f5a96296d3c19684b37a
https://conda.anaconda.org/conda-forge/linux-64/y-py-0.5.9-py38h9fda977_0.conda#18517ed6c99222252a7409b9e128015c
https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a
https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49
https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.0-pyhd8ed1ab_0.conda#056f04e51dd63337e8d7c425c18c86f1
https://conda.anaconda.org/conda-forge/noarch/babel-2.13.0-pyhd8ed1ab_0.conda#22541af7a9eb59fc6afcadb7ecdf9219
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e
https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551
https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py38h6d47a40_0.conda#fc010dfb8ce6540d289436fbba499ee7
https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda#c8eaca39e2b6abae1fc96acc929ae939
https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda#4e9f59a060c3be52bc4ddc46ee9b6946
https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.0-pyhd8ed1ab_0.conda#48b0d98e0c0ec810d3ccc2a0926c8c0e
https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2
https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2#243f63592c8e449f40cd42eb5cf32f40
https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2#330448ce4403cc74990ac07c555942a1
https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda#a33161b983172ba6ef69d5fc850650cd
https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520
https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.17.35-py38h01eb140_0.conda#36887eb1d27b72e4fdc62845863e75ff
https://conda.anaconda.org/conda-forge/noarch/terminado-0.17.1-pyh41d4057_0.conda#3788984d535770cad699efaeb6cb3037
https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda#384462e63262a527bda564fa2d9126c0
https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.6-pyhd8ed1ab_0.conda#d5f8944ff9ab24a292511c83dce33dea
https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8
https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py38h01eb140_4.conda#234c813c9d745d4bfc6a2a40514d88a6
https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508
https://conda.anaconda.org/conda-forge/linux-64/cryptography-41.0.4-py38hcdda232_0.conda#1dbd2442c9a9b93a0771b4e785130aec
https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b
https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda#7c27ea1bdbe520bb830dcadd59f55cbf
https://conda.anaconda.org/conda-forge/noarch/mako-1.2.4-pyhd8ed1ab_0.tar.bz2#0d072f0edc017b6318dbab701e053f94
https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda#8f567c0a74aa44cf732f15773b4083b0
https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b
https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.22-py38h01eb140_0.conda#0dd438c47a98a57ac437b3655c6d414a
https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.8-pyhd8ed1ab_0.conda#367386d2575a0e62412448eda1012efd
https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.0-pyhd8ed1ab_0.conda#ba29026b587195548ef82444518061f7
https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4
https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a
https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.1-pyhd8ed1ab_0.conda#78aff5d2af74e6537c1ca73017f01f4f
https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.4.0-py38h578d9bd_0.conda#e27c9855ef0e113d4fe64c21f7b8146c
https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-0.2.4-pyhd8ed1ab_0.conda#be5d4633c1cc40343ed417153a184006
https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.39-pyha770c72_0.conda#a4986c6bb5b0d05a38855b0880a5f425
https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda#34f7d568bf59d18e3fef8c405cbece21
https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.8.2-pyhd8ed1ab_0.conda#5ee5ad3af20138020065985de57f0711
https://conda.anaconda.org/conda-forge/noarch/certipy-0.1.3-py_0.tar.bz2#23486713ef5712923e7c57cae609b22e
https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.19.1-pyhd8ed1ab_0.conda#daca0665e6fe8a376e48b9f0b5865326
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.4.9-pyhd8ed1ab_0.conda#5cbf9a31a19d4ef9103adb7d71fd45fd
https://conda.anaconda.org/conda-forge/noarch/jupyter_telemetry-0.1.0-pyhd8ed1ab_1.tar.bz2#bb9ebdb6d5aa2622484aff1faceee181
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda#61ba076de6530d9301a0053b02f093d2
https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.39-hd8ed1ab_0.conda#4bbbe67d5df19db30f04b8e344dc9976
https://conda.anaconda.org/conda-forge/noarch/ipython-8.12.2-pyh41d4057_0.conda#acebfd89278ecac2a67b60b657e00d5c
https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.7.0-pyhd8ed1ab_2.conda#088f0493279a7f7eebd514df47d65851
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-base-3.1.1-pyh2a2186d_0.conda#78fc5dfd4577a7ba172fa65eb64b6afb
https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda#e78da91cf428faaf05701ce8cc8f2f9b
https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.25.2-pyh2140261_0.conda#226f2032ec491cc6e9ce66072660e4f6
https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda#2605fae5ee27100e5f10037baebf4d41
https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.9.2-pyhd8ed1ab_0.conda#01e4314c780ca73759c694ce3ece281f
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-1.24.0-pyhd8ed1ab_0.conda#7f0d2ec2d4954188ff23503f39823409
https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.9.2-pyhd8ed1ab_0.conda#1ad46253f2eb46fb8c9b2c22b7ca012f
https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-0.7.1-pyhd8ed1ab_0.conda#62ed54dc748d19d0cf056a3f90cc8f12
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.0-pyhd8ed1ab_0.conda#a12525b037a703d7f4512da737d700e6
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.0-pyhd8ed1ab_0.conda#a52834fa7e3d12abc5efdf06b2097a05
https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.9.2-pyhd8ed1ab_0.conda#16ccaddfcfa0a1a606a9ecf6a52d6c11
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-0.8.0-pyhd8ed1ab_0.conda#780280d42fbcb2eaf654a6ba7a3e5bb5
https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda#a0be31e9bd84d6eae87cdbf74c56b90b
https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.6-pyha770c72_0.conda#2e2422cf19f555ef3ddbbeaf2eac7545
https://conda.anaconda.org/conda-forge/noarch/jupyter-offlinenotebook-0.2.2-pyh1d7be83_0.tar.bz2#fe55056ce4bc4bd4953ba440270735fb
https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.6.6-pyhd8ed1ab_0.conda#05def61d4c64b0f3161eaeb3b00cc790
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-singleuser-3.1.1-pyh2a2186d_0.conda#6d0a3394efe9ff7c0ad1ed03a6ca3720

Wyświetl plik

@ -0,0 +1,172 @@
# AUTO GENERATED FROM environment.py-3.8.yml, DO NOT MANUALLY MODIFY
# Frozen on 2023-10-14 22:05:29 UTC
# Generated by conda-lock.
# platform: linux-aarch64
# input_hash: 3cc330543b03acd00f0bb84d0e8d87f88f68929faa091eda9992d6cb99f6ffc4
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2023.7.22-hcefe29a_0.conda#95d7f998087114466fa91e7c2887fa2f
https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.40-h2d8c526_0.conda#16246d69e945d0b1969a6099e7c5d457
https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-13.2.0-hf8544c7_2.conda#8ce66e4e1d30f0936a525127eaaaf63d
https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-13.2.0-h9a76618_2.conda#921c652898c8602bf2697d015f3efc77
https://conda.anaconda.org/conda-forge/linux-aarch64/pandoc-3.1.3-h8af1aa0_0.conda#10b7f903dadbf1568c17e2c6cb39435b
https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.8-4_cp38.conda#8107237a22bf62f12b4a7c8e0fa3b842
https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2#6168d71addc746e8f2b8d57dfd2edcea
https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-13.2.0-hf8544c7_2.conda#f4dfb3bad7c8b38c3f8ed7f15a91a1ed
https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-hf897c2e_4.tar.bz2#2d787570a729e273a4e75775ddf3348a
https://conda.anaconda.org/conda-forge/linux-aarch64/icu-72.1-hcf00150_0.conda#cd394213b2f8c9c9060a293a8508fe84
https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2#dddd85f4d52121fab0a8b099c5e06501
https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.0-h31becfc_1.conda#b281ae3b462ef954fac3c06cc2cc92d5
https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.18-hb9de7d4_1.tar.bz2#d09ab3c60eebb6f14eb4d07e172775cc
https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda#000e30b09db0b7c775b21695dff30969
https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.44.2-h31becfc_1.conda#f6068b95c0a3b4fd949a91341e9a0669
https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.2.13-h31becfc_5.conda#b213aa87eea9491ef7b129179322e955
https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.4-h2e1726e_0.conda#40beaf447150c2760affc591c7509595
https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.1.3-h31becfc_0.conda#19469b6fdd72c1ffe022d9845fbb85fa
https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2#83baad393a31d59c20b63ba4da6592df
https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2#b853307650cb226731f653aa623936a4
https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.43.2-h194ca79_0.conda#16417bba0efbcb7539b942a611cc899a
https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda#105eb1e16bf83bfb2eb380a48032b655
https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda#f75105e0585851f818e0009dd1dde4dc
https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h2f0025b_0.conda#88905c542167163a0dea6bdad01c3366
https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.2.13-h31becfc_5.conda#96866c7301479abaf8308c50958c71a4
https://conda.anaconda.org/conda-forge/linux-aarch64/nodejs-18.17.1-hcb20a51_0.conda#0611c05ba14e36fd4e19188d1708e393
https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.8.18-hbbe8eec_0_cpython.conda#8e85a0cae8f7f2924842c69c8f1d19a5
https://conda.anaconda.org/conda-forge/noarch/aiofiles-22.1.0-pyhd8ed1ab_0.tar.bz2#a88c206fdb78e34adb1c4081f5f838dd
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda#3edfead7cedd1ab4400a6c588f3e75f8
https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda#54ca2e08b3220c148a1d8329c2678e02
https://conda.anaconda.org/conda-forge/noarch/blinker-1.6.3-pyhd8ed1ab_0.conda#d33cf7357de636cec64320f0c4fb7b6f
https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py38hb83fbf6_1.conda#481316b31f7fba6fa88cb613f37fecf7
https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a
https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda#7f3dbc9179b4dde7da98dfb151d0ad22
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.0-pyhd8ed1ab_0.conda#fef8ef5f0a54546b9efee39468229917
https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.0-py38hb83fbf6_1.conda#bb4b478f78b779eaaaa5c9a1c4038d61
https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d
https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda#e6518222753f519e911e83136d2158d9
https://conda.anaconda.org/conda-forge/noarch/executing-1.2.0-pyhd8ed1ab_0.tar.bz2#4c1bc140e2be5c8ba6e3acab99e25c50
https://conda.anaconda.org/conda-forge/linux-aarch64/greenlet-3.0.0-py38hb83fbf6_1.conda#809d2aace26181044320c8050e0491ef
https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#34272b248891bddccc64479f9a7fffed
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda#dac1dabba2b5a9d1aee175c5fcc7b436
https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-2.4-py38he3eb160_3.conda#69fd075f06a8a58f731ebbb262378df7
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda#8370e0a9dc443f9b45a23fd30e7a6b3b
https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-2.1.3-py38hea3b116_1.conda#cbb1053103239d7344600e53e28aa2b9
https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.1-pyhd8ed1ab_0.conda#1dad8397c94e4de97a70de552a7dcf49
https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda#a4f0e4519bc50eee4f53f689be9607f7
https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6
https://conda.anaconda.org/conda-forge/noarch/pamela-1.1.0-pyh1a96a4e_0.conda#dce93ccf07159017c69c6d9cea2d5d61
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761
https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9
https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.17.1-pyhd8ed1ab_0.conda#02153b6b760bbec00cfe9e4c97993d06
https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-5.9.5-py38h9579f32_1.conda#c7567c002466153592f8717a4df7e4ee
https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883
https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda#40e5cb18165466773619e5c963f00a7b
https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda#912c0194f898fdb783021fd25f913c31
https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025
https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.1-pyhd8ed1ab_0.conda#305141cff54af2f90e089d868fffce28
https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960
https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda#c93346b446cd08c169d843ae5fc0da97
https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.1-py38h9579f32_1.conda#84a50ac70736cc75812b2a49b580415b
https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-24.0.1-py38h891b4b0_1.tar.bz2#99843a538cb902ee3b5f76d9f282c48a
https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f
https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.10.6-py38hf532af8_0.conda#c3f211c5b68db0e225920bfc1666d682
https://conda.anaconda.org/conda-forge/linux-aarch64/ruamel.yaml.clib-0.2.7-py38h9579f32_2.conda#0f2220c05bc739b3d390a0bd12c9029a
https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2
https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda#fc2166155db840c634a1291a5c35a709
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2#dd6cbc539e74cb1f430efbd4575b9303
https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561
https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96
https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.3.3-py38hea3b116_1.conda#ad8257a473627cd17562cb7264f12dcb
https://conda.anaconda.org/conda-forge/noarch/traitlets-5.11.2-pyhd8ed1ab_0.conda#bd3f90f7551e1cffb1f402880eb2cef1
https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.14-pyhd8ed1ab_0.conda#4df15c51a543e806d439490b862be1c6
https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda#5b1be40a26d10a06f6d4f1f9e19fa0c7
https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda#0944dc65cb4a9b5b68522c3bb585d41c
https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda#bdb77b28cf16deac0eef431a068320e8
https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda#1ccd092478b3e0ee10d7a891adbf8a4f
https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda#82617d07b2f5f5a96296d3c19684b37a
https://conda.anaconda.org/conda-forge/linux-aarch64/y-py-0.5.9-py38hb6b4038_0.conda#85d8f2099743288cefc070127b58270e
https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a
https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49
https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.0-pyhd8ed1ab_0.conda#056f04e51dd63337e8d7c425c18c86f1
https://conda.anaconda.org/conda-forge/noarch/babel-2.13.0-pyhd8ed1ab_0.conda#22541af7a9eb59fc6afcadb7ecdf9219
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e
https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551
https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.16.0-py38h4ab679b_0.conda#601106b459f7b9300e8b7b90ab0e1f54
https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda#c8eaca39e2b6abae1fc96acc929ae939
https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda#4e9f59a060c3be52bc4ddc46ee9b6946
https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.0-pyhd8ed1ab_0.conda#48b0d98e0c0ec810d3ccc2a0926c8c0e
https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2
https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2#243f63592c8e449f40cd42eb5cf32f40
https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2#330448ce4403cc74990ac07c555942a1
https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda#a33161b983172ba6ef69d5fc850650cd
https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520
https://conda.anaconda.org/conda-forge/linux-aarch64/ruamel.yaml-0.17.35-py38h9579f32_0.conda#1454fee2832a762e47097346ba9bb68f
https://conda.anaconda.org/conda-forge/noarch/terminado-0.17.1-pyh41d4057_0.conda#3788984d535770cad699efaeb6cb3037
https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda#384462e63262a527bda564fa2d9126c0
https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.6-pyhd8ed1ab_0.conda#d5f8944ff9ab24a292511c83dce33dea
https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8
https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py38h9579f32_4.conda#3460f222597376592b6e1ac5eac0bdce
https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508
https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-41.0.4-py38h72e9872_0.conda#edfadad7854f70024b456c867af3da00
https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b
https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda#7c27ea1bdbe520bb830dcadd59f55cbf
https://conda.anaconda.org/conda-forge/noarch/mako-1.2.4-pyhd8ed1ab_0.tar.bz2#0d072f0edc017b6318dbab701e053f94
https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda#8f567c0a74aa44cf732f15773b4083b0
https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b
https://conda.anaconda.org/conda-forge/linux-aarch64/sqlalchemy-2.0.22-py38hea3b116_0.conda#338b63243aac23198e3c579b4780c8de
https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.8-pyhd8ed1ab_0.conda#367386d2575a0e62412448eda1012efd
https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.0-pyhd8ed1ab_0.conda#ba29026b587195548ef82444518061f7
https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4
https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a
https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.1-pyhd8ed1ab_0.conda#78aff5d2af74e6537c1ca73017f01f4f
https://conda.anaconda.org/conda-forge/linux-aarch64/jupyter_core-5.4.0-py38he3eb160_0.conda#101c11a58becb265db144c7f127f0ee8
https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-0.2.4-pyhd8ed1ab_0.conda#be5d4633c1cc40343ed417153a184006
https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.39-pyha770c72_0.conda#a4986c6bb5b0d05a38855b0880a5f425
https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda#34f7d568bf59d18e3fef8c405cbece21
https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.8.2-pyhd8ed1ab_0.conda#5ee5ad3af20138020065985de57f0711
https://conda.anaconda.org/conda-forge/noarch/certipy-0.1.3-py_0.tar.bz2#23486713ef5712923e7c57cae609b22e
https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.19.1-pyhd8ed1ab_0.conda#daca0665e6fe8a376e48b9f0b5865326
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.4.9-pyhd8ed1ab_0.conda#5cbf9a31a19d4ef9103adb7d71fd45fd
https://conda.anaconda.org/conda-forge/noarch/jupyter_telemetry-0.1.0-pyhd8ed1ab_1.tar.bz2#bb9ebdb6d5aa2622484aff1faceee181
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda#61ba076de6530d9301a0053b02f093d2
https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.39-hd8ed1ab_0.conda#4bbbe67d5df19db30f04b8e344dc9976
https://conda.anaconda.org/conda-forge/noarch/ipython-8.12.2-pyh41d4057_0.conda#acebfd89278ecac2a67b60b657e00d5c
https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.7.0-pyhd8ed1ab_2.conda#088f0493279a7f7eebd514df47d65851
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-base-3.1.1-pyh2a2186d_0.conda#78fc5dfd4577a7ba172fa65eb64b6afb
https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda#e78da91cf428faaf05701ce8cc8f2f9b
https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.25.2-pyh2140261_0.conda#226f2032ec491cc6e9ce66072660e4f6
https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda#2605fae5ee27100e5f10037baebf4d41
https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.9.2-pyhd8ed1ab_0.conda#01e4314c780ca73759c694ce3ece281f
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-1.24.0-pyhd8ed1ab_0.conda#7f0d2ec2d4954188ff23503f39823409
https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.9.2-pyhd8ed1ab_0.conda#1ad46253f2eb46fb8c9b2c22b7ca012f
https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-0.7.1-pyhd8ed1ab_0.conda#62ed54dc748d19d0cf056a3f90cc8f12
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.0-pyhd8ed1ab_0.conda#a12525b037a703d7f4512da737d700e6
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.0-pyhd8ed1ab_0.conda#a52834fa7e3d12abc5efdf06b2097a05
https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.9.2-pyhd8ed1ab_0.conda#16ccaddfcfa0a1a606a9ecf6a52d6c11
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-0.8.0-pyhd8ed1ab_0.conda#780280d42fbcb2eaf654a6ba7a3e5bb5
https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda#a0be31e9bd84d6eae87cdbf74c56b90b
https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.6-pyha770c72_0.conda#2e2422cf19f555ef3ddbbeaf2eac7545
https://conda.anaconda.org/conda-forge/noarch/jupyter-offlinenotebook-0.2.2-pyh1d7be83_0.tar.bz2#fe55056ce4bc4bd4953ba440270735fb
https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.6.6-pyhd8ed1ab_0.conda#05def61d4c64b0f3161eaeb3b00cc790
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-singleuser-3.1.1-pyh2a2186d_0.conda#6d0a3394efe9ff7c0ad1ed03a6ca3720

Wyświetl plik

@ -1,132 +0,0 @@
# AUTO GENERATED FROM environment.py-3.8.yml, DO NOT MANUALLY MODIFY
# Frozen on 2021-02-22 12:22:38 UTC
name: r2d
channels:
- conda-forge
- defaults
- conda-forge/label/broken
dependencies:
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=1_gnu
- alembic=1.5.5=pyhd8ed1ab_0
- anyio=2.1.0=py38h578d9bd_0
- argon2-cffi=20.1.0=py38h497a2fe_2
- async_generator=1.10=py_0
- attrs=20.3.0=pyhd3deb0d_0
- babel=2.9.0=pyhd3deb0d_0
- backcall=0.2.0=pyh9f0ad1d_0
- backports=1.0=py_2
- backports.functools_lru_cache=1.6.1=py_0
- bleach=3.3.0=pyh44b312d_0
- blinker=1.4=py_1
- brotlipy=0.7.0=py38h497a2fe_1001
- c-ares=1.17.1=h36c2ea0_0
- ca-certificates=2020.12.5=ha878542_0
- certifi=2020.12.5=py38h578d9bd_1
- certipy=0.1.3=py_0
- cffi=1.14.5=py38ha65f79e_0
- chardet=4.0.0=py38h578d9bd_1
- cryptography=3.4.4=py38h3e25421_0
- decorator=4.4.2=py_0
- defusedxml=0.6.0=py_0
- entrypoints=0.3=py38h32f6830_1002
- idna=2.10=pyh9f0ad1d_0
- importlib-metadata=3.4.0=py38h578d9bd_0
- importlib_metadata=3.4.0=hd8ed1ab_0
- ipykernel=5.5.0=py38h81c977d_1
- ipython=7.20.0=py38h81c977d_2
- ipython_genutils=0.2.0=py_1
- ipywidgets=7.6.3=pyhd3deb0d_0
- jedi=0.18.0=py38h578d9bd_2
- jinja2=2.11.3=pyh44b312d_0
- json5=0.9.5=pyh9f0ad1d_0
- jsonschema=3.2.0=py38h32f6830_1
- jupyter-offlinenotebook=0.2.1=pyhd8ed1ab_0
- jupyter-resource-usage=0.5.1=pyhd8ed1ab_0
- jupyter_client=6.1.11=pyhd8ed1ab_1
- jupyter_core=4.7.1=py38h578d9bd_0
- jupyter_server=1.4.0=py38h578d9bd_0
- jupyter_telemetry=0.1.0=pyhd8ed1ab_1
- jupyterhub-base=1.3.0=py38h578d9bd_0
- jupyterhub-singleuser=1.3.0=py38h578d9bd_0
- jupyterlab=3.0.7=pyhd8ed1ab_0
- jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
- jupyterlab_server=2.3.0=pyhd8ed1ab_0
- jupyterlab_widgets=1.0.0=pyhd8ed1ab_1
- krb5=1.17.2=h926e7f8_0
- ld_impl_linux-64=2.35.1=hea4e1c9_2
- libcurl=7.71.1=hcdd3856_8
- libedit=3.1.20191231=he28a2e2_2
- libev=4.33=h516909a_1
- libffi=3.3=h58526e2_2
- libgcc-ng=9.3.0=h2828fa1_18
- libgomp=9.3.0=h2828fa1_18
- libnghttp2=1.43.0=h812cca2_0
- libsodium=1.0.18=h516909a_1
- libssh2=1.9.0=hab1572f_5
- libstdcxx-ng=9.3.0=h6de172a_18
- mako=1.1.4=pyh44b312d_0
- markupsafe=1.1.1=py38h497a2fe_3
- mistune=0.8.4=py38h497a2fe_1003
- nbclassic=0.2.6=pyhd8ed1ab_0
- nbclient=0.5.2=pyhd8ed1ab_0
- nbconvert=6.0.7=py38h578d9bd_3
- nbformat=5.1.2=pyhd8ed1ab_1
- ncurses=6.2=h58526e2_4
- nest-asyncio=1.4.3=pyhd8ed1ab_0
- notebook=6.2.0=py38h578d9bd_0
- nteract_on_jupyter=2.1.3=py_0
- oauthlib=3.0.1=py_0
- openssl=1.1.1j=h7f98852_0
- packaging=20.9=pyh44b312d_0
- pamela=1.0.0=py_0
- pandoc=2.11.4=h7f98852_0
- pandocfilters=1.4.2=py_1
- parso=0.8.1=pyhd8ed1ab_0
- pexpect=4.8.0=py38h32f6830_1
- pickleshare=0.7.5=py38h32f6830_1002
- pip=21.0.1=pyhd8ed1ab_0
- prometheus_client=0.9.0=pyhd3deb0d_0
- prompt-toolkit=3.0.16=pyha770c72_0
- psutil=5.8.0=py38h497a2fe_1
- ptyprocess=0.7.0=pyhd3deb0d_0
- pycparser=2.20=pyh9f0ad1d_2
- pycurl=7.43.0.6=py38h996a351_1
- pygments=2.8.0=pyhd8ed1ab_0
- pyjwt=2.0.1=pyhd8ed1ab_0
- pyopenssl=20.0.1=pyhd8ed1ab_0
- pyparsing=2.4.7=pyh9f0ad1d_0
- pyrsistent=0.17.3=py38h497a2fe_2
- pysocks=1.7.1=py38h578d9bd_3
- python=3.8.8=hffdb5ce_0_cpython
- python-dateutil=2.8.1=py_0
- python-editor=1.0.4=py_0
- python-json-logger=2.0.1=pyh9f0ad1d_0
- python_abi=3.8=1_cp38
- pytz=2021.1=pyhd8ed1ab_0
- pyzmq=22.0.3=py38h3d7ac18_0
- readline=8.0=he28a2e2_2
- requests=2.25.1=pyhd3deb0d_0
- ruamel.yaml=0.16.12=py38h497a2fe_2
- ruamel.yaml.clib=0.2.2=py38h497a2fe_2
- send2trash=1.5.0=py_0
- setuptools=49.6.0=py38h578d9bd_3
- six=1.15.0=pyh9f0ad1d_0
- sniffio=1.2.0=py38h578d9bd_1
- sqlalchemy=1.3.23=py38h497a2fe_0
- sqlite=3.34.0=h74cdb3f_0
- terminado=0.9.2=py38h578d9bd_0
- testpath=0.4.4=py_0
- tk=8.6.10=hed695b0_1
- tornado=6.1=py38h497a2fe_1
- traitlets=5.0.5=py_0
- urllib3=1.26.3=pyhd8ed1ab_0
- wcwidth=0.2.5=pyh9f0ad1d_2
- webencodings=0.5.1=py_1
- wheel=0.36.2=pyhd3deb0d_0
- widgetsnbextension=3.5.1=py38h578d9bd_4
- xz=5.2.5=h516909a_1
- zeromq=4.3.4=h9c3ff4c_0
- zipp=3.4.0=py_0
- zlib=1.2.11=h516909a_1010
prefix: /opt/conda/envs/r2d

Wyświetl plik

@ -1,12 +1,15 @@
# AUTO GENERATED FROM environment.yml, DO NOT MANUALLY MODIFY
# Generated on 2021-02-22 12:22:38 UTC
# Generated on 2023-10-14 22:05:18 UTC
channels:
- conda-forge
dependencies:
- python=3.8.*
- ipywidgets==7.6.3
- jupyter-offlinenotebook==0.2.1
- jupyter-resource-usage==0.5.1
- jupyterlab==3.0.7
- jupyterhub-singleuser==1.3.0
- nbconvert==6.0.7
- notebook==6.2.0
- nteract_on_jupyter==2.1.3
- nodejs=18
- pip
- ipywidgets==8.* # https://github.com/jupyter-widgets/ipywidgets
- jupyter-offlinenotebook==0.2.* # https://github.com/manics/jupyter-offlinenotebook
- jupyter-resource-usage==0.7.* # https://github.com/jupyter-server/jupyter-resource-usage
- jupyter_server==1.* # https://github.com/jupyter-server/jupyter_server
- jupyterhub-singleuser==3.* # https://github.com/jupyterhub/jupyterhub
- jupyterlab==3.* # https://github.com/jupyterlab/jupyterlab
- notebook==6.* # https://github.com/jupyter/notebook

Wyświetl plik

@ -0,0 +1,175 @@
# AUTO GENERATED FROM environment.py-3.9.yml, DO NOT MANUALLY MODIFY
# Frozen on 2023-10-14 22:05:49 UTC
# Generated by conda-lock.
# platform: linux-64
# input_hash: 99f0205247d52a0abd0dc705f3ce959255560aebd34ea60d0cc67e297e2ee7c1
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.7.22-hbcca054_0.conda#a73ecd2988327ad4c8f2c331482917f2
https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3
https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_2.conda#9172c297304f2a20134fc56c97fbe229
https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.9-4_cp39.conda#bfe4b3259a8ac6cdf0037752904da6a7
https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda#939e3e74d8be4dac89ce83b20de2492a
https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_2.conda#e2042154faafe61969556f28bade94b9
https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d
https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_2.conda#c28003b0be0494f9a7664389146716ff
https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54
https://conda.anaconda.org/conda-forge/linux-64/gmp-6.2.1-h58526e2_0.tar.bz2#b94cf2db16066b242ebd26db2facbd56
https://conda.anaconda.org/conda-forge/linux-64/icu-72.1-hcb278e6_0.conda#7c8d20d847bb45f56bd941578fcfa146
https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3
https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-hd590300_1.conda#854e3e1623b39777140f199c5f9ab952
https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d
https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b
https://conda.anaconda.org/conda-forge/linux-64/libuv-1.46.0-hd590300_0.conda#d23c76f7e6dcd6243d1b6ef5e62d17d2
https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda#f36c115f1ee199da648e0597ec2047ad
https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-hcb278e6_0.conda#681105bccc2a3f7f1a837d47d39c9179
https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.3-hd590300_0.conda#7bb88ce04c8deb9f7d763ae04a1da72f
https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0
https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae
https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.43.2-h2797004_0.conda#4b441a1ee22397d5a27dc1126b849edd
https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4
https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-h2797004_0.conda#513336054f884f95d9fd925748f41ef3
https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_0.conda#8851084c192dbc56215ac4e3c9aa30fa
https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda#68c34ec6149623be41a1933ab996a209
https://conda.anaconda.org/conda-forge/linux-64/nodejs-18.17.1-hf52ce11_0.conda#c3aad73875296ca9ad3954aa606536b9
https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.3-h32600fe_0.conda#8287aeb8462e2d4b235eff788e75919d
https://conda.anaconda.org/conda-forge/linux-64/python-3.9.18-h0755675_0_cpython.conda#3ede353bc605068d9677e700b1847382
https://conda.anaconda.org/conda-forge/noarch/aiofiles-22.1.0-pyhd8ed1ab_0.tar.bz2#a88c206fdb78e34adb1c4081f5f838dd
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda#3edfead7cedd1ab4400a6c588f3e75f8
https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda#54ca2e08b3220c148a1d8329c2678e02
https://conda.anaconda.org/conda-forge/noarch/blinker-1.6.3-pyhd8ed1ab_0.conda#d33cf7357de636cec64320f0c4fb7b6f
https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py39h3d6467e_1.conda#c48418c8b35f1d59ae9ae1174812b40a
https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a
https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda#7f3dbc9179b4dde7da98dfb151d0ad22
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.0-pyhd8ed1ab_0.conda#fef8ef5f0a54546b9efee39468229917
https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.0-py39h3d6467e_1.conda#31e04f8c5eebb5306793482b5e0f8a78
https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d
https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda#e6518222753f519e911e83136d2158d9
https://conda.anaconda.org/conda-forge/noarch/executing-1.2.0-pyhd8ed1ab_0.tar.bz2#4c1bc140e2be5c8ba6e3acab99e25c50
https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.0-py39h3d6467e_1.conda#1271dbe2e9296a26a4934fc59215d83c
https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#34272b248891bddccc64479f9a7fffed
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda#dac1dabba2b5a9d1aee175c5fcc7b436
https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-2.4-py39hf3d152e_3.conda#23255e64bc45e9bc0b7d87c108357ce6
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda#8370e0a9dc443f9b45a23fd30e7a6b3b
https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.3-py39hd1e30aa_1.conda#ee2b4665b852ec6ff2758f3c1b91233d
https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.1-pyhd8ed1ab_0.conda#1dad8397c94e4de97a70de552a7dcf49
https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda#a4f0e4519bc50eee4f53f689be9607f7
https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6
https://conda.anaconda.org/conda-forge/noarch/pamela-1.1.0-pyh1a96a4e_0.conda#dce93ccf07159017c69c6d9cea2d5d61
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761
https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9
https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.17.1-pyhd8ed1ab_0.conda#02153b6b760bbec00cfe9e4c97993d06
https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py39hd1e30aa_1.conda#c2e412b0f11e5983bcfc35d9beb91ecb
https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883
https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda#40e5cb18165466773619e5c963f00a7b
https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda#912c0194f898fdb783021fd25f913c31
https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025
https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.1-pyhd8ed1ab_0.conda#305141cff54af2f90e089d868fffce28
https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960
https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda#c93346b446cd08c169d843ae5fc0da97
https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py39hd1e30aa_1.conda#37218233bcdc310e4fde6453bc1b40d8
https://conda.anaconda.org/conda-forge/linux-64/pyzmq-24.0.1-py39headdf64_1.tar.bz2#8ef2263feb2f0130ced1a41444474e98
https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f
https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.10.6-py39h9fdd4d6_0.conda#07f3775b21f8cf32a3635f203d3f9669
https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py39hd1e30aa_2.conda#743d996a1af8502f27770fadfd418434
https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2
https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda#fc2166155db840c634a1291a5c35a709
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2#dd6cbc539e74cb1f430efbd4575b9303
https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561
https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96
https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3.3-py39hd1e30aa_1.conda#cbe186eefb0bcd91e8f47c3908489874
https://conda.anaconda.org/conda-forge/noarch/traitlets-5.11.2-pyhd8ed1ab_0.conda#bd3f90f7551e1cffb1f402880eb2cef1
https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.14-pyhd8ed1ab_0.conda#4df15c51a543e806d439490b862be1c6
https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda#5b1be40a26d10a06f6d4f1f9e19fa0c7
https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda#0944dc65cb4a9b5b68522c3bb585d41c
https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda#bdb77b28cf16deac0eef431a068320e8
https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda#1ccd092478b3e0ee10d7a891adbf8a4f
https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda#82617d07b2f5f5a96296d3c19684b37a
https://conda.anaconda.org/conda-forge/linux-64/y-py-0.5.9-py39h50f1755_0.conda#f9225a09f5cb046cfdecd2a54448d4c0
https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a
https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49
https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.0-pyhd8ed1ab_0.conda#056f04e51dd63337e8d7c425c18c86f1
https://conda.anaconda.org/conda-forge/noarch/babel-2.13.0-pyhd8ed1ab_0.conda#22541af7a9eb59fc6afcadb7ecdf9219
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e
https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551
https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py39h7a31438_0.conda#ac992767d7f8ed2cb27e71e78f0fb2d7
https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda#c8eaca39e2b6abae1fc96acc929ae939
https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda#4e9f59a060c3be52bc4ddc46ee9b6946
https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.0-pyhd8ed1ab_0.conda#48b0d98e0c0ec810d3ccc2a0926c8c0e
https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2
https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2#243f63592c8e449f40cd42eb5cf32f40
https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2#330448ce4403cc74990ac07c555942a1
https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda#a33161b983172ba6ef69d5fc850650cd
https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520
https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.17.35-py39hd1e30aa_0.conda#3c77c0430e9ed9bc31ad867c665c3c78
https://conda.anaconda.org/conda-forge/noarch/terminado-0.17.1-pyh41d4057_0.conda#3788984d535770cad699efaeb6cb3037
https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda#384462e63262a527bda564fa2d9126c0
https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.6-pyhd8ed1ab_0.conda#d5f8944ff9ab24a292511c83dce33dea
https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8
https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py39hd1e30aa_4.conda#6a04738e75f877b68552fc19cb045233
https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508
https://conda.anaconda.org/conda-forge/linux-64/cryptography-41.0.4-py39hd4f0224_0.conda#ea82cb6eea14e958127a6c970c253954
https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b
https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda#7c27ea1bdbe520bb830dcadd59f55cbf
https://conda.anaconda.org/conda-forge/noarch/mako-1.2.4-pyhd8ed1ab_0.tar.bz2#0d072f0edc017b6318dbab701e053f94
https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda#8f567c0a74aa44cf732f15773b4083b0
https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b
https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.22-py39hd1e30aa_0.conda#31237b352082e8a34616ee04f37234fc
https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.8-pyhd8ed1ab_0.conda#367386d2575a0e62412448eda1012efd
https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.0-pyhd8ed1ab_0.conda#ba29026b587195548ef82444518061f7
https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4
https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a
https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.1-pyhd8ed1ab_0.conda#78aff5d2af74e6537c1ca73017f01f4f
https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.4.0-py39hf3d152e_0.conda#36e0de68a56dab715169b42972346543
https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-0.2.4-pyhd8ed1ab_0.conda#be5d4633c1cc40343ed417153a184006
https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.39-pyha770c72_0.conda#a4986c6bb5b0d05a38855b0880a5f425
https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda#34f7d568bf59d18e3fef8c405cbece21
https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.8.2-pyhd8ed1ab_0.conda#5ee5ad3af20138020065985de57f0711
https://conda.anaconda.org/conda-forge/noarch/certipy-0.1.3-py_0.tar.bz2#23486713ef5712923e7c57cae609b22e
https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.19.1-pyhd8ed1ab_0.conda#daca0665e6fe8a376e48b9f0b5865326
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.4.9-pyhd8ed1ab_0.conda#5cbf9a31a19d4ef9103adb7d71fd45fd
https://conda.anaconda.org/conda-forge/noarch/jupyter_telemetry-0.1.0-pyhd8ed1ab_1.tar.bz2#bb9ebdb6d5aa2622484aff1faceee181
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda#61ba076de6530d9301a0053b02f093d2
https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.39-hd8ed1ab_0.conda#4bbbe67d5df19db30f04b8e344dc9976
https://conda.anaconda.org/conda-forge/noarch/ipython-8.16.1-pyh0d859eb_0.conda#7e52cb0dbf01b90365bfe433ec8bd3c0
https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.7.0-pyhd8ed1ab_2.conda#088f0493279a7f7eebd514df47d65851
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-base-3.1.1-pyh2a2186d_0.conda#78fc5dfd4577a7ba172fa65eb64b6afb
https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda#e78da91cf428faaf05701ce8cc8f2f9b
https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.25.2-pyh2140261_0.conda#226f2032ec491cc6e9ce66072660e4f6
https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda#2605fae5ee27100e5f10037baebf4d41
https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.9.2-pyhd8ed1ab_0.conda#01e4314c780ca73759c694ce3ece281f
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-1.24.0-pyhd8ed1ab_0.conda#7f0d2ec2d4954188ff23503f39823409
https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.9.2-pyhd8ed1ab_0.conda#1ad46253f2eb46fb8c9b2c22b7ca012f
https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-0.7.1-pyhd8ed1ab_0.conda#62ed54dc748d19d0cf056a3f90cc8f12
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.0-pyhd8ed1ab_0.conda#a12525b037a703d7f4512da737d700e6
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.0-pyhd8ed1ab_0.conda#a52834fa7e3d12abc5efdf06b2097a05
https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.9.2-pyhd8ed1ab_0.conda#16ccaddfcfa0a1a606a9ecf6a52d6c11
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-0.8.0-pyhd8ed1ab_0.conda#780280d42fbcb2eaf654a6ba7a3e5bb5
https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda#a0be31e9bd84d6eae87cdbf74c56b90b
https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.6-pyha770c72_0.conda#2e2422cf19f555ef3ddbbeaf2eac7545
https://conda.anaconda.org/conda-forge/noarch/jupyter-offlinenotebook-0.2.2-pyh1d7be83_0.tar.bz2#fe55056ce4bc4bd4953ba440270735fb
https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.6.6-pyhd8ed1ab_0.conda#05def61d4c64b0f3161eaeb3b00cc790
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-singleuser-3.1.1-pyh2a2186d_0.conda#6d0a3394efe9ff7c0ad1ed03a6ca3720

Wyświetl plik

@ -0,0 +1,173 @@
# AUTO GENERATED FROM environment.py-3.9.yml, DO NOT MANUALLY MODIFY
# Frozen on 2023-10-14 22:05:59 UTC
# Generated by conda-lock.
# platform: linux-aarch64
# input_hash: ca9b9afa6be25d3ddcadd0add3216797cc76e6021c5ee896c5aec130e7d09b0f
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2023.7.22-hcefe29a_0.conda#95d7f998087114466fa91e7c2887fa2f
https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.40-h2d8c526_0.conda#16246d69e945d0b1969a6099e7c5d457
https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-13.2.0-hf8544c7_2.conda#8ce66e4e1d30f0936a525127eaaaf63d
https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-13.2.0-h9a76618_2.conda#921c652898c8602bf2697d015f3efc77
https://conda.anaconda.org/conda-forge/linux-aarch64/pandoc-3.1.3-h8af1aa0_0.conda#10b7f903dadbf1568c17e2c6cb39435b
https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.9-4_cp39.conda#c191905a08694e4a5cb1238e90233878
https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda#939e3e74d8be4dac89ce83b20de2492a
https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2#6168d71addc746e8f2b8d57dfd2edcea
https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-13.2.0-hf8544c7_2.conda#f4dfb3bad7c8b38c3f8ed7f15a91a1ed
https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-hf897c2e_4.tar.bz2#2d787570a729e273a4e75775ddf3348a
https://conda.anaconda.org/conda-forge/linux-aarch64/icu-72.1-hcf00150_0.conda#cd394213b2f8c9c9060a293a8508fe84
https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2#dddd85f4d52121fab0a8b099c5e06501
https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.0-h31becfc_1.conda#b281ae3b462ef954fac3c06cc2cc92d5
https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.18-hb9de7d4_1.tar.bz2#d09ab3c60eebb6f14eb4d07e172775cc
https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda#000e30b09db0b7c775b21695dff30969
https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.44.2-h31becfc_1.conda#f6068b95c0a3b4fd949a91341e9a0669
https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.2.13-h31becfc_5.conda#b213aa87eea9491ef7b129179322e955
https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.4-h2e1726e_0.conda#40beaf447150c2760affc591c7509595
https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.1.3-h31becfc_0.conda#19469b6fdd72c1ffe022d9845fbb85fa
https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2#83baad393a31d59c20b63ba4da6592df
https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2#b853307650cb226731f653aa623936a4
https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.43.2-h194ca79_0.conda#16417bba0efbcb7539b942a611cc899a
https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda#105eb1e16bf83bfb2eb380a48032b655
https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda#f75105e0585851f818e0009dd1dde4dc
https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h2f0025b_0.conda#88905c542167163a0dea6bdad01c3366
https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.2.13-h31becfc_5.conda#96866c7301479abaf8308c50958c71a4
https://conda.anaconda.org/conda-forge/linux-aarch64/nodejs-18.17.1-hcb20a51_0.conda#0611c05ba14e36fd4e19188d1708e393
https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.9.18-h4ac3b42_0_cpython.conda#4d36e157278470ac06508579c6d36555
https://conda.anaconda.org/conda-forge/noarch/aiofiles-22.1.0-pyhd8ed1ab_0.tar.bz2#a88c206fdb78e34adb1c4081f5f838dd
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda#3edfead7cedd1ab4400a6c588f3e75f8
https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda#54ca2e08b3220c148a1d8329c2678e02
https://conda.anaconda.org/conda-forge/noarch/blinker-1.6.3-pyhd8ed1ab_0.conda#d33cf7357de636cec64320f0c4fb7b6f
https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py39h387a81e_1.conda#983fb0d6a8d0ad30f7213dccadea185d
https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a
https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda#7f3dbc9179b4dde7da98dfb151d0ad22
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.0-pyhd8ed1ab_0.conda#fef8ef5f0a54546b9efee39468229917
https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.0-py39h387a81e_1.conda#e7a59ad4da7b3abae57a0cafae50b8b2
https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d
https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda#e6518222753f519e911e83136d2158d9
https://conda.anaconda.org/conda-forge/noarch/executing-1.2.0-pyhd8ed1ab_0.tar.bz2#4c1bc140e2be5c8ba6e3acab99e25c50
https://conda.anaconda.org/conda-forge/linux-aarch64/greenlet-3.0.0-py39h387a81e_1.conda#871da653eead78c03474596989b0069d
https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#34272b248891bddccc64479f9a7fffed
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda#dac1dabba2b5a9d1aee175c5fcc7b436
https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-2.4-py39h4420490_3.conda#48949395cda82fced27f30b73fd36f1a
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda#8370e0a9dc443f9b45a23fd30e7a6b3b
https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-2.1.3-py39h7cc1d5f_1.conda#d42cdaf238da63cd262efba3469246c7
https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.1-pyhd8ed1ab_0.conda#1dad8397c94e4de97a70de552a7dcf49
https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda#a4f0e4519bc50eee4f53f689be9607f7
https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6
https://conda.anaconda.org/conda-forge/noarch/pamela-1.1.0-pyh1a96a4e_0.conda#dce93ccf07159017c69c6d9cea2d5d61
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761
https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9
https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.17.1-pyhd8ed1ab_0.conda#02153b6b760bbec00cfe9e4c97993d06
https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-5.9.5-py39h898b7ef_1.conda#24ed9ae7a812630753ddfc850e4a9aee
https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263
https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883
https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff
https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda#40e5cb18165466773619e5c963f00a7b
https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda#912c0194f898fdb783021fd25f913c31
https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025
https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.1-pyhd8ed1ab_0.conda#305141cff54af2f90e089d868fffce28
https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960
https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda#c93346b446cd08c169d843ae5fc0da97
https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.1-py39h898b7ef_1.conda#6130aa0677e5b9bfcd3c8fde05f8a7e6
https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-24.0.1-py39h754ef6b_1.tar.bz2#14c602fa9762708cbdcd045e8f1a0ea1
https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f
https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.10.6-py39hfe8b3a4_0.conda#507c9af77af5d7397610e9e63e470fd7
https://conda.anaconda.org/conda-forge/linux-aarch64/ruamel.yaml.clib-0.2.7-py39h898b7ef_2.conda#1b7d1d26a32d020dea48d8d65007a614
https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2
https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda#fc2166155db840c634a1291a5c35a709
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2#dd6cbc539e74cb1f430efbd4575b9303
https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561
https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96
https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.3.3-py39h7cc1d5f_1.conda#c383c279123694d7a586ec47320d1cb1
https://conda.anaconda.org/conda-forge/noarch/traitlets-5.11.2-pyhd8ed1ab_0.conda#bd3f90f7551e1cffb1f402880eb2cef1
https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.14-pyhd8ed1ab_0.conda#4df15c51a543e806d439490b862be1c6
https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda#5b1be40a26d10a06f6d4f1f9e19fa0c7
https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda#0944dc65cb4a9b5b68522c3bb585d41c
https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda#bdb77b28cf16deac0eef431a068320e8
https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda#1ccd092478b3e0ee10d7a891adbf8a4f
https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda#82617d07b2f5f5a96296d3c19684b37a
https://conda.anaconda.org/conda-forge/linux-aarch64/y-py-0.5.9-py39h1efe9e1_0.conda#806142b2ca4bb7cc3eda216f2d8cb223
https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a
https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49
https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.0-pyhd8ed1ab_0.conda#056f04e51dd63337e8d7c425c18c86f1
https://conda.anaconda.org/conda-forge/noarch/babel-2.13.0-pyhd8ed1ab_0.conda#22541af7a9eb59fc6afcadb7ecdf9219
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e
https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551
https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.16.0-py39hdf53b9e_0.conda#6dd793656e9dc5ffb637e7c2d2ef5bfb
https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda#c8eaca39e2b6abae1fc96acc929ae939
https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda#4e9f59a060c3be52bc4ddc46ee9b6946
https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.0-pyhd8ed1ab_0.conda#48b0d98e0c0ec810d3ccc2a0926c8c0e
https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2
https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2#243f63592c8e449f40cd42eb5cf32f40
https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2#330448ce4403cc74990ac07c555942a1
https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda#a33161b983172ba6ef69d5fc850650cd
https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520
https://conda.anaconda.org/conda-forge/linux-aarch64/ruamel.yaml-0.17.35-py39h898b7ef_0.conda#fb0d8819c9aa49ff933a8cdcba55e874
https://conda.anaconda.org/conda-forge/noarch/terminado-0.17.1-pyh41d4057_0.conda#3788984d535770cad699efaeb6cb3037
https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda#384462e63262a527bda564fa2d9126c0
https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.6-pyhd8ed1ab_0.conda#d5f8944ff9ab24a292511c83dce33dea
https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8
https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py39h898b7ef_4.conda#4baffaf857eafd23b03ca7974695df21
https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508
https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-41.0.4-py39hea2e5f7_0.conda#39584d24ca21fde78c21b6620f5f42af
https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b
https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda#7c27ea1bdbe520bb830dcadd59f55cbf
https://conda.anaconda.org/conda-forge/noarch/mako-1.2.4-pyhd8ed1ab_0.tar.bz2#0d072f0edc017b6318dbab701e053f94
https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda#8f567c0a74aa44cf732f15773b4083b0
https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b
https://conda.anaconda.org/conda-forge/linux-aarch64/sqlalchemy-2.0.22-py39h7cc1d5f_0.conda#1c74b3c81fb26ac7c50281ebe4d80d78
https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.8-pyhd8ed1ab_0.conda#367386d2575a0e62412448eda1012efd
https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.0-pyhd8ed1ab_0.conda#ba29026b587195548ef82444518061f7
https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4
https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a
https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.1-pyhd8ed1ab_0.conda#78aff5d2af74e6537c1ca73017f01f4f
https://conda.anaconda.org/conda-forge/linux-aarch64/jupyter_core-5.4.0-py39h4420490_0.conda#5b140264aa2a194473cb7ea5aef9f7aa
https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-0.2.4-pyhd8ed1ab_0.conda#be5d4633c1cc40343ed417153a184006
https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.39-pyha770c72_0.conda#a4986c6bb5b0d05a38855b0880a5f425
https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda#34f7d568bf59d18e3fef8c405cbece21
https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.8.2-pyhd8ed1ab_0.conda#5ee5ad3af20138020065985de57f0711
https://conda.anaconda.org/conda-forge/noarch/certipy-0.1.3-py_0.tar.bz2#23486713ef5712923e7c57cae609b22e
https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.19.1-pyhd8ed1ab_0.conda#daca0665e6fe8a376e48b9f0b5865326
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.4.9-pyhd8ed1ab_0.conda#5cbf9a31a19d4ef9103adb7d71fd45fd
https://conda.anaconda.org/conda-forge/noarch/jupyter_telemetry-0.1.0-pyhd8ed1ab_1.tar.bz2#bb9ebdb6d5aa2622484aff1faceee181
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda#61ba076de6530d9301a0053b02f093d2
https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.39-hd8ed1ab_0.conda#4bbbe67d5df19db30f04b8e344dc9976
https://conda.anaconda.org/conda-forge/noarch/ipython-8.16.1-pyh0d859eb_0.conda#7e52cb0dbf01b90365bfe433ec8bd3c0
https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.7.0-pyhd8ed1ab_2.conda#088f0493279a7f7eebd514df47d65851
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-base-3.1.1-pyh2a2186d_0.conda#78fc5dfd4577a7ba172fa65eb64b6afb
https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda#e78da91cf428faaf05701ce8cc8f2f9b
https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.25.2-pyh2140261_0.conda#226f2032ec491cc6e9ce66072660e4f6
https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda#2605fae5ee27100e5f10037baebf4d41
https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.9.2-pyhd8ed1ab_0.conda#01e4314c780ca73759c694ce3ece281f
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-1.24.0-pyhd8ed1ab_0.conda#7f0d2ec2d4954188ff23503f39823409
https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.9.2-pyhd8ed1ab_0.conda#1ad46253f2eb46fb8c9b2c22b7ca012f
https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-0.7.1-pyhd8ed1ab_0.conda#62ed54dc748d19d0cf056a3f90cc8f12
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.0-pyhd8ed1ab_0.conda#a12525b037a703d7f4512da737d700e6
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.0-pyhd8ed1ab_0.conda#a52834fa7e3d12abc5efdf06b2097a05
https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.9.2-pyhd8ed1ab_0.conda#16ccaddfcfa0a1a606a9ecf6a52d6c11
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-0.8.0-pyhd8ed1ab_0.conda#780280d42fbcb2eaf654a6ba7a3e5bb5
https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda#a0be31e9bd84d6eae87cdbf74c56b90b
https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.6-pyha770c72_0.conda#2e2422cf19f555ef3ddbbeaf2eac7545
https://conda.anaconda.org/conda-forge/noarch/jupyter-offlinenotebook-0.2.2-pyh1d7be83_0.tar.bz2#fe55056ce4bc4bd4953ba440270735fb
https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.6.6-pyhd8ed1ab_0.conda#05def61d4c64b0f3161eaeb3b00cc790
https://conda.anaconda.org/conda-forge/noarch/jupyterhub-singleuser-3.1.1-pyh2a2186d_0.conda#6d0a3394efe9ff7c0ad1ed03a6ca3720

Wyświetl plik

@ -1,133 +0,0 @@
# AUTO GENERATED FROM environment.py-3.9.yml, DO NOT MANUALLY MODIFY
# Frozen on 2021-02-22 12:28:32 UTC
name: r2d
channels:
- conda-forge
- defaults
- conda-forge/label/broken
dependencies:
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=1_gnu
- alembic=1.5.5=pyhd8ed1ab_0
- anyio=2.1.0=py39hf3d152e_0
- argon2-cffi=20.1.0=py39hbd71b63_2
- async_generator=1.10=py_0
- attrs=20.3.0=pyhd3deb0d_0
- babel=2.9.0=pyhd3deb0d_0
- backcall=0.2.0=pyh9f0ad1d_0
- backports=1.0=py_2
- backports.functools_lru_cache=1.6.1=py_0
- bleach=3.3.0=pyh44b312d_0
- blinker=1.4=py_1
- brotlipy=0.7.0=py39h3811e60_1001
- c-ares=1.17.1=h36c2ea0_0
- ca-certificates=2020.12.5=ha878542_0
- certifi=2020.12.5=py39hf3d152e_1
- certipy=0.1.3=py_0
- cffi=1.14.5=py39he32792d_0
- chardet=4.0.0=py39hf3d152e_1
- cryptography=3.4.4=py39h95dcef6_0
- decorator=4.4.2=py_0
- defusedxml=0.6.0=py_0
- entrypoints=0.3=py39hde42818_1002
- idna=2.10=pyh9f0ad1d_0
- importlib-metadata=3.4.0=py39hf3d152e_0
- importlib_metadata=3.4.0=hd8ed1ab_0
- ipykernel=5.5.0=py39hef51801_1
- ipython=7.20.0=py39hef51801_2
- ipython_genutils=0.2.0=py_1
- ipywidgets=7.6.3=pyhd3deb0d_0
- jedi=0.18.0=py39hf3d152e_2
- jinja2=2.11.3=pyh44b312d_0
- json5=0.9.5=pyh9f0ad1d_0
- jsonschema=3.2.0=py_2
- jupyter-offlinenotebook=0.2.1=pyhd8ed1ab_0
- jupyter-resource-usage=0.5.1=pyhd8ed1ab_0
- jupyter_client=6.1.11=pyhd8ed1ab_1
- jupyter_core=4.7.1=py39hf3d152e_0
- jupyter_server=1.4.0=py39hf3d152e_0
- jupyter_telemetry=0.1.0=pyhd8ed1ab_1
- jupyterhub-base=1.3.0=py39hf3d152e_0
- jupyterhub-singleuser=1.3.0=py39hf3d152e_0
- jupyterlab=3.0.7=pyhd8ed1ab_0
- jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
- jupyterlab_server=2.3.0=pyhd8ed1ab_0
- jupyterlab_widgets=1.0.0=pyhd8ed1ab_1
- krb5=1.17.2=h926e7f8_0
- ld_impl_linux-64=2.35.1=hea4e1c9_2
- libcurl=7.71.1=hcdd3856_8
- libedit=3.1.20191231=he28a2e2_2
- libev=4.33=h516909a_1
- libffi=3.3=h58526e2_2
- libgcc-ng=9.3.0=h2828fa1_18
- libgomp=9.3.0=h2828fa1_18
- libnghttp2=1.43.0=h812cca2_0
- libsodium=1.0.18=h516909a_1
- libssh2=1.9.0=hab1572f_5
- libstdcxx-ng=9.3.0=h6de172a_18
- mako=1.1.4=pyh44b312d_0
- markupsafe=1.1.1=py39h3811e60_3
- mistune=0.8.4=py39h3811e60_1003
- nbclassic=0.2.6=pyhd8ed1ab_0
- nbclient=0.5.2=pyhd8ed1ab_0
- nbconvert=6.0.7=py39hf3d152e_3
- nbformat=5.1.2=pyhd8ed1ab_1
- ncurses=6.2=h58526e2_4
- nest-asyncio=1.4.3=pyhd8ed1ab_0
- notebook=6.2.0=py39hf3d152e_0
- nteract_on_jupyter=2.1.3=py_0
- oauthlib=3.0.1=py_0
- openssl=1.1.1j=h7f98852_0
- packaging=20.9=pyh44b312d_0
- pamela=1.0.0=py_0
- pandoc=2.11.4=h7f98852_0
- pandocfilters=1.4.2=py_1
- parso=0.8.1=pyhd8ed1ab_0
- pexpect=4.8.0=pyh9f0ad1d_2
- pickleshare=0.7.5=py39hde42818_1002
- pip=21.0.1=pyhd8ed1ab_0
- prometheus_client=0.9.0=pyhd3deb0d_0
- prompt-toolkit=3.0.16=pyha770c72_0
- psutil=5.8.0=py39h3811e60_1
- ptyprocess=0.7.0=pyhd3deb0d_0
- pycparser=2.20=pyh9f0ad1d_2
- pycurl=7.43.0.6=py39h72e3413_1
- pygments=2.8.0=pyhd8ed1ab_0
- pyjwt=2.0.1=pyhd8ed1ab_0
- pyopenssl=20.0.1=pyhd8ed1ab_0
- pyparsing=2.4.7=pyh9f0ad1d_0
- pyrsistent=0.17.3=py39h3811e60_2
- pysocks=1.7.1=py39hf3d152e_3
- python=3.9.2=hffdb5ce_0_cpython
- python-dateutil=2.8.1=py_0
- python-editor=1.0.4=py_0
- python-json-logger=2.0.1=pyh9f0ad1d_0
- python_abi=3.9=1_cp39
- pytz=2021.1=pyhd8ed1ab_0
- pyzmq=22.0.3=py39hea8fd45_0
- readline=8.0=he28a2e2_2
- requests=2.25.1=pyhd3deb0d_0
- ruamel.yaml=0.16.12=py39h3811e60_2
- ruamel.yaml.clib=0.2.2=py39h3811e60_2
- send2trash=1.5.0=py_0
- setuptools=49.6.0=py39hf3d152e_3
- six=1.15.0=pyh9f0ad1d_0
- sniffio=1.2.0=py39hf3d152e_1
- sqlalchemy=1.3.23=py39h3811e60_0
- sqlite=3.34.0=h74cdb3f_0
- terminado=0.9.2=py39hf3d152e_0
- testpath=0.4.4=py_0
- tk=8.6.10=hed695b0_1
- tornado=6.1=py39h3811e60_1
- traitlets=5.0.5=py_0
- tzdata=2021a=he74cb21_0
- urllib3=1.26.3=pyhd8ed1ab_0
- wcwidth=0.2.5=pyh9f0ad1d_2
- webencodings=0.5.1=py_1
- wheel=0.36.2=pyhd3deb0d_0
- widgetsnbextension=3.5.1=py39hf3d152e_4
- xz=5.2.5=h516909a_1
- zeromq=4.3.4=h9c3ff4c_0
- zipp=3.4.0=py_0
- zlib=1.2.11=h516909a_1010
prefix: /opt/conda/envs/r2d

Wyświetl plik

@ -1,12 +1,15 @@
# AUTO GENERATED FROM environment.yml, DO NOT MANUALLY MODIFY
# Generated on 2021-02-22 12:28:32 UTC
# Generated on 2023-10-14 22:05:49 UTC
channels:
- conda-forge
dependencies:
- python=3.9.*
- ipywidgets==7.6.3
- jupyter-offlinenotebook==0.2.1
- jupyter-resource-usage==0.5.1
- jupyterlab==3.0.7
- jupyterhub-singleuser==1.3.0
- nbconvert==6.0.7
- notebook==6.2.0
- nteract_on_jupyter==2.1.3
- nodejs=18
- pip
- ipywidgets==8.* # https://github.com/jupyter-widgets/ipywidgets
- jupyter-offlinenotebook==0.2.* # https://github.com/manics/jupyter-offlinenotebook
- jupyter-resource-usage==0.7.* # https://github.com/jupyter-server/jupyter-resource-usage
- jupyter_server==1.* # https://github.com/jupyter-server/jupyter_server
- jupyterhub-singleuser==3.* # https://github.com/jupyterhub/jupyterhub
- jupyterlab==3.* # https://github.com/jupyterlab/jupyterlab
- notebook==6.* # https://github.com/jupyter/notebook

Wyświetl plik

@ -1,10 +1,13 @@
channels:
- conda-forge
dependencies:
- python=3.7
- ipywidgets==7.6.3
- jupyter-offlinenotebook==0.2.1
- jupyter-resource-usage==0.5.1
- jupyterlab==3.0.7
- jupyterhub-singleuser==1.3.0
- nbconvert==6.0.7
- notebook==6.2.0
- nteract_on_jupyter==2.1.3
- python=3.10
- nodejs=18
- pip
- ipywidgets==8.* # https://github.com/jupyter-widgets/ipywidgets
- jupyter-offlinenotebook==0.2.* # https://github.com/manics/jupyter-offlinenotebook
- jupyter-resource-usage==0.7.* # https://github.com/jupyter-server/jupyter-resource-usage
- jupyter_server==1.* # https://github.com/jupyter-server/jupyter_server
- jupyterhub-singleuser==3.* # https://github.com/jupyterhub/jupyterhub
- jupyterlab==3.* # https://github.com/jupyterlab/jupyterlab
- notebook==6.* # https://github.com/jupyter/notebook

Wyświetl plik

@ -2,47 +2,35 @@
"""
Freeze the conda environment.yml
It runs the freeze in a continuumio/miniconda3 image to ensure portability
Using conda-lock
Usage:
python freeze.py [3.8]
"""
from datetime import datetime
import os
import pathlib
import shutil
from argparse import ArgumentParser
from datetime import datetime
from subprocess import check_call
import sys
from ruamel.yaml import YAML
DOCKER_IMAGE = "condaforge/mambaforge:4.9.2-5"
# set mamba and/or conda versions
# if needed to differ from what's in the image
MAMBA_VERSION = ""
CONDA_VERSION = ""
HERE = pathlib.Path(os.path.dirname(os.path.abspath(__file__)))
ENV_FILE = HERE / "environment.yml"
FROZEN_FILE = os.path.splitext(ENV_FILE)[0] + ".frozen.yml"
ENV_FILE_T = HERE / "environment.py-{py}.yml"
FROZEN_FILE_T = os.path.splitext(ENV_FILE_T)[0] + ".frozen.yml"
yaml = YAML(typ="rt")
def freeze(env_file, frozen_file):
"""Freeze a conda environment.yml
def freeze(env_file, frozen_file, platform="linux-64"):
"""Freeze a conda environment
By running in docker:
By running:
mamba env create
mamba env export
conda-lock --mamba --platform=linux-64 -f environment.yml
Result will be stored in frozen_file
"""
@ -58,43 +46,33 @@ def freeze(env_file, frozen_file):
return
print(f"Freezing {env_file} -> {frozen_file}")
# FIXME: conda-lock 0.8 requires {platform} in template
# https://github.com/conda-incubator/conda-lock/pull/78
frozen_template = str(frozen_dest) + ".{platform}"
frozen_tempfile = pathlib.Path(frozen_template.format(platform=platform))
check_call(
[
"conda-lock",
# FIXME: adopt micromamba after ordering is fixed
# https://github.com/conda-incubator/conda-lock/issues/79
"--mamba",
"--kind=explicit",
f"--platform={platform}",
f"--filename-template={frozen_template}",
f"--file={env_file}",
]
)
with frozen_dest.open("w") as f:
f.write(
f"# AUTO GENERATED FROM {env_file.relative_to(HERE)}, DO NOT MANUALLY MODIFY\n"
)
f.write(f"# Frozen on {datetime.utcnow():%Y-%m-%d %H:%M:%S UTC}\n")
with frozen_tempfile.open() as temp:
f.write(temp.read())
check_call(
[
"docker",
"run",
"--rm",
"-v" f"{HERE}:/r2d",
"-it",
DOCKER_IMAGE,
"sh",
"-c",
"; ".join(
[
"set -ex",
"conda config --set channel_priority strict",
"conda config --add channels conda-forge",
f"mamba install -yq -S mamba={MAMBA_VERSION}"
if MAMBA_VERSION
else "true",
f"mamba install -yq -S conda={CONDA_VERSION}"
if CONDA_VERSION
else "true",
"conda config --system --set auto_update_conda false",
f"mamba env create -v -f /r2d/{env_file.relative_to(HERE)} -n r2d",
# add conda-forge broken channel as lowest priority in case
# any of our frozen packages are marked as broken after freezing
"conda config --append channels conda-forge/label/broken",
f"mamba env export -n r2d >> /r2d/{frozen_file.relative_to(HERE)}",
]
),
]
)
os.remove(frozen_tempfile)
def set_python(py_env_file, py):
@ -125,13 +103,30 @@ def set_python(py_env_file, py):
if __name__ == "__main__":
# allow specifying which Pythons to update on argv
pys = sys.argv[1:] or ("2.7", "3.6", "3.7", "3.8", "3.9")
default_py = "3.7"
for py in pys:
env_file = pathlib.Path(str(ENV_FILE_T).format(py=py))
set_python(env_file, py)
frozen_file = pathlib.Path(os.path.splitext(env_file)[0] + ".frozen.yml")
freeze(env_file, frozen_file)
if py == default_py:
shutil.copy(frozen_file, FROZEN_FILE)
parser = ArgumentParser(
description=(
"Refreeze conda environments. See "
"https://repo2docker.readthedocs.io/en/latest/contributing/tasks.html#update-and-freeze-buildpack-dependencies"
)
)
parser.add_argument(
"py",
nargs="*",
help="Python version(s) to update and freeze",
default=("3.7", "3.8", "3.9", "3.10", "3.11"),
)
parser.add_argument(
"platform",
nargs="*",
help="Platform(s) to update and freeze",
default=("linux-64", "linux-aarch64"),
)
args = parser.parse_args()
for py in args.py:
for platform in args.platform:
env_file = pathlib.Path(str(ENV_FILE_T).format(py=py))
set_python(env_file, py)
frozen_file = pathlib.Path(
os.path.splitext(env_file)[0] + f"-{platform}.lock"
)
freeze(env_file, frozen_file, platform)

Wyświetl plik

@ -0,0 +1,87 @@
#!/bin/bash
# This downloads and installs a pinned version of micromamba
# and sets up the base environment
set -ex
cd $(dirname $0)
export MAMBA_VERSION=1.5.7
export CONDA_VERSION=24.3.0
URL="https://anaconda.org/conda-forge/micromamba/${MAMBA_VERSION}/download/${CONDA_PLATFORM}/micromamba-${MAMBA_VERSION}-0.tar.bz2"
# make sure we don't do anything funky with user's $HOME
# since this is run as root
unset HOME
mkdir -p ${CONDA_DIR}
export MICROMAMBA_EXE="/usr/local/bin/micromamba"
time wget -qO- ${URL} | tar -xvj bin/micromamba
mv bin/micromamba "$MICROMAMBA_EXE"
chmod 0755 "$MICROMAMBA_EXE"
eval "$(${MICROMAMBA_EXE} shell hook -p ${CONDA_DIR} -s posix)"
micromamba activate
export PATH="${PWD}/bin:$PATH"
cat <<EOT >> ${CONDA_DIR}/.condarc
channels:
- conda-forge
- defaults
auto_update_conda: false
show_channel_urls: true
update_dependencies: false
# channel_priority: flexible
EOT
micromamba install conda=${CONDA_VERSION} mamba=${MAMBA_VERSION} -y
echo "installing notebook env:"
cat "${NB_ENVIRONMENT_FILE}"
time ${MAMBA_EXE} create -p ${NB_PYTHON_PREFIX} --file "${NB_ENVIRONMENT_FILE}"
if [[ ! -z "${NB_REQUIREMENTS_FILE:-}" ]]; then
echo "installing pip requirements"
cat "${NB_REQUIREMENTS_FILE}"
${NB_PYTHON_PREFIX}/bin/python -mpip install --no-cache --no-deps -r "${NB_REQUIREMENTS_FILE}"
fi
# empty conda history file,
# which seems to result in some effective pinning of packages in the initial env,
# which we don't intend.
# this file must not be *removed*, however
echo '' > ${NB_PYTHON_PREFIX}/conda-meta/history
if [[ ! -z "${KERNEL_ENVIRONMENT_FILE:-}" ]]; then
# install kernel env and register kernelspec
echo "installing kernel env:"
cat "${KERNEL_ENVIRONMENT_FILE}"
time ${MAMBA_EXE} create -p ${KERNEL_PYTHON_PREFIX} --file "${KERNEL_ENVIRONMENT_FILE}"
if [[ ! -z "${KERNEL_REQUIREMENTS_FILE:-}" ]]; then
echo "installing pip requirements for kernel"
cat "${KERNEL_REQUIREMENTS_FILE}"
${KERNEL_PYTHON_PREFIX}/bin/python -mpip install --no-cache --no-deps -r "${KERNEL_REQUIREMENTS_FILE}"
fi
${KERNEL_PYTHON_PREFIX}/bin/ipython kernel install --prefix "${NB_PYTHON_PREFIX}"
echo '' > ${KERNEL_PYTHON_PREFIX}/conda-meta/history
${MAMBA_EXE} list -p ${KERNEL_PYTHON_PREFIX}
fi
# Clean things out!
time ${MAMBA_EXE} clean --all -f -y
# Remove the pip cache created as part of installing micromamba
rm -rf /root/.cache
chown -R $NB_USER:$NB_USER ${CONDA_DIR}
${MAMBA_EXE} list -p ${NB_PYTHON_PREFIX}
# Set NPM config
${NB_PYTHON_PREFIX}/bin/npm config --global set prefix ${NPM_DIR}

Wyświetl plik

@ -1,80 +0,0 @@
#!/bin/bash
# This downloads and installs a pinned version of miniforge
# and sets up the base environment
set -ex
cd $(dirname $0)
MINIFORGE_VERSION=4.9.2-2
MAMBA_VERSION=0.7.4
# SHA256 for installers can be obtained from https://github.com/conda-forge/miniforge/releases
SHA256SUM="7a7bfaff87680298304a97ba69bcf92f66c810995a7155a2918b99fafb8ca1dc"
URL="https://github.com/conda-forge/miniforge/releases/download/${MINIFORGE_VERSION}/Mambaforge-${MINIFORGE_VERSION}-Linux-x86_64.sh"
INSTALLER_PATH=/tmp/miniforge-installer.sh
# make sure we don't do anything funky with user's $HOME
# since this is run as root
unset HOME
time wget --quiet $URL -O ${INSTALLER_PATH}
chmod +x ${INSTALLER_PATH}
# check sha256 checksum
if ! echo "${SHA256SUM} ${INSTALLER_PATH}" | sha256sum --quiet -c -; then
echo "sha256 mismatch for ${INSTALLER_PATH}, exiting!"
exit 1
fi
time bash ${INSTALLER_PATH} -b -p ${CONDA_DIR}
export PATH="${CONDA_DIR}/bin:$PATH"
# Preserve behavior of miniconda - packages come from conda-forge + defaults
conda config --system --append channels defaults
# Do not attempt to auto update conda or dependencies
conda config --system --set auto_update_conda false
conda config --system --set show_channel_urls true
# bug in conda 4.3.>15 prevents --set update_dependencies
echo 'update_dependencies: false' >> ${CONDA_DIR}/.condarc
# avoid future changes to default channel_priority behavior
conda config --system --set channel_priority "flexible"
time mamba install -y mamba==${MAMBA_VERSION}
echo "installing notebook env:"
cat /tmp/environment.yml
time mamba env create -p ${NB_PYTHON_PREFIX} -f /tmp/environment.yml
# empty conda history file,
# which seems to result in some effective pinning of packages in the initial env,
# which we don't intend.
# this file must not be *removed*, however
echo '' > ${NB_PYTHON_PREFIX}/conda-meta/history
if [[ -f /tmp/kernel-environment.yml ]]; then
# install kernel env and register kernelspec
echo "installing kernel env:"
cat /tmp/kernel-environment.yml
time mamba env create -p ${KERNEL_PYTHON_PREFIX} -f /tmp/kernel-environment.yml
${KERNEL_PYTHON_PREFIX}/bin/ipython kernel install --prefix "${NB_PYTHON_PREFIX}"
echo '' > ${KERNEL_PYTHON_PREFIX}/conda-meta/history
mamba list -p ${KERNEL_PYTHON_PREFIX}
fi
# Clean things out!
time mamba clean --all -f -y
# Remove the big installer so we don't increase docker image size too much
rm ${INSTALLER_PATH}
# Remove the pip cache created as part of installing miniforge
rm -rf /root/.cache
chown -R $NB_USER:$NB_USER ${CONDA_DIR}
mamba list -n root
mamba list -p ${NB_PYTHON_PREFIX}

Wyświetl plik

@ -1,7 +1,10 @@
"""Generates a variety of Dockerfiles based on an input matrix
"""
import os
import docker
from .base import BuildPack
@ -28,14 +31,15 @@ class DockerBuildPack(BuildPack):
build_args,
cache_from,
extra_build_kwargs,
platform=None,
):
"""Build a Docker image based on the Dockerfile in the source repo."""
# If you work on this bit of code check the corresponding code in
# buildpacks/base.py where it is duplicated
if not isinstance(memory_limit, int):
raise ValueError(
"The memory limit has to be specified as an"
"integer but is '{}'".format(type(memory_limit))
"The memory limit has to be specified as an "
f"integer but is '{type(memory_limit)}'"
)
limits = {}
if memory_limit:
@ -50,14 +54,12 @@ class DockerBuildPack(BuildPack):
dockerfile=self.binder_path(self.dockerfile),
tag=image_spec,
buildargs=build_args,
decode=True,
forcerm=True,
rm=True,
container_limits=limits,
cache_from=cache_from,
labels=self.get_labels(),
platform=platform,
)
build_kwargs.update(extra_build_kwargs)
for line in client.build(**build_kwargs):
yield line
yield from client.build(**build_kwargs)

Wyświetl plik

@ -1,10 +1,15 @@
"""Generates a Dockerfile based on an input matrix for Julia"""
import functools
import os
from functools import lru_cache
import requests
import semver
import toml
from ...semver import find_semver_match
from ..python import PythonBuildPack
from .semver import find_semver_match, semver
class JuliaProjectTomlBuildPack(PythonBuildPack):
@ -16,14 +21,14 @@ class JuliaProjectTomlBuildPack(PythonBuildPack):
# Note that these must remain ordered, in order for the find_semver_match()
# function to behave correctly.
@property
@functools.lru_cache(maxsize=1)
@lru_cache(maxsize=1)
def all_julias(self):
try:
json = requests.get(
"https://julialang-s3.julialang.org/bin/versions.json"
).json()
except Exception as e:
raise RuntimeError("Failed to fetch available Julia versions: {e}")
raise RuntimeError(f"Failed to fetch available Julia versions: {e}")
vers = [semver.VersionInfo.parse(v) for v in json.keys()]
# filter out pre-release versions not supported by find_semver_match()
filtered_vers = [v for v in vers if v.prerelease is None]
@ -47,13 +52,24 @@ class JuliaProjectTomlBuildPack(PythonBuildPack):
compat = project_toml["compat"]["julia"]
except:
# Default version which needs to be manually updated with new major.minor releases
compat = "1.5"
#
# NOTE: Updates to the default version should go hand in hand with
# updates to tests/julia/project/verify where is intent to
# test the version.
#
# FIXME: When compat = "1.6" is set below and passed to
# find_semver_match, we get 1.8.2 as of 2022-10-09. We should
# clarify the desired behavior and have a unit test of
# find_semver_match to validate it.
#
compat = "1.6"
match = find_semver_match(compat, self.all_julias)
if match is None:
raise RuntimeError("Failed to find a matching Julia version: {compat}")
return match
@lru_cache()
def get_build_env(self):
"""Get additional environment settings for Julia and Jupyter
@ -66,23 +82,41 @@ class JuliaProjectTomlBuildPack(PythonBuildPack):
will be installed
- `JULIA_DEPOT_PATH`: path where Julia libraries are installed.
- `JULIA_VERSION`: default version of julia to be installed
- `JULIA_ARCH`: machine architecture used in Julia download URLs
- `JULIA_ARCH_SHORT`: machine architecture used in Julia download URLs
- `JUPYTER`: environment variable required by IJulia to point to
the `jupyter` executable
For example, a tuple may be `('JULIA_VERSION', '0.6.0')`.
"""
if self.platform == "linux/arm64":
julia_arch = julia_arch_short = "aarch64"
else:
julia_arch = "x86_64"
julia_arch_short = "x64"
return super().get_build_env() + [
("JULIA_PATH", "${APP_BASE}/julia"),
("JULIA_DEPOT_PATH", "${JULIA_PATH}/pkg"),
("JULIA_VERSION", self.julia_version),
("JULIA_ARCH", julia_arch),
("JULIA_ARCH_SHORT", julia_arch_short),
("JUPYTER", "${NB_PYTHON_PREFIX}/bin/jupyter"),
("JUPYTER_DATA_DIR", "${NB_PYTHON_PREFIX}/share/jupyter"),
]
def get_env(self):
return super().get_env() + [("JULIA_PROJECT", "${REPO_DIR}")]
@property
def project_dir(self):
if self.binder_dir:
return "${REPO_DIR}/" + self.binder_dir
else:
return "${REPO_DIR}"
@lru_cache()
def get_env(self):
return super().get_env() + [("JULIA_PROJECT", self.project_dir)]
@lru_cache()
def get_path(self):
"""Adds path to Julia binaries to user's PATH.
@ -93,6 +127,7 @@ class JuliaProjectTomlBuildPack(PythonBuildPack):
"""
return super().get_path() + ["${JULIA_PATH}/bin"]
@lru_cache()
def get_build_scripts(self):
"""
Return series of build-steps common to "ALL" Julia repositories
@ -109,7 +144,7 @@ class JuliaProjectTomlBuildPack(PythonBuildPack):
"root",
r"""
mkdir -p ${JULIA_PATH} && \
curl -sSL "https://julialang-s3.julialang.org/bin/linux/x64/${JULIA_VERSION%[.-]*}/julia-${JULIA_VERSION}-linux-x86_64.tar.gz" | tar -xz -C ${JULIA_PATH} --strip-components 1
curl -sSL "https://julialang-s3.julialang.org/bin/linux/${JULIA_ARCH_SHORT}/${JULIA_VERSION%[.-]*}/julia-${JULIA_VERSION}-linux-${JULIA_ARCH}.tar.gz" | tar -xz -C ${JULIA_PATH} --strip-components 1
""",
),
(
@ -121,6 +156,7 @@ class JuliaProjectTomlBuildPack(PythonBuildPack):
),
]
@lru_cache()
def get_assemble_scripts(self):
"""
Return series of build-steps specific to "this" Julia repository
@ -135,15 +171,19 @@ class JuliaProjectTomlBuildPack(PythonBuildPack):
The parent, CondaBuildPack, will add the build steps for
any needed Python packages found in environment.yml.
"""
return super().get_assemble_scripts() + [
scripts = super().get_assemble_scripts()
scripts.append(
(
"${NB_USER}",
r"""
JULIA_PROJECT="" julia -e "using Pkg; Pkg.add(\"IJulia\"); using IJulia; installkernel(\"Julia\", \"--project=${REPO_DIR}\");" && \
julia --project=${REPO_DIR} -e 'using Pkg; Pkg.instantiate(); Pkg.resolve(); pkg"precompile"'
""",
JULIA_PROJECT="" julia -e "using Pkg; Pkg.add(\"IJulia\"); using IJulia; installkernel(\"Julia\", \"--project={project}\");" && \
julia --project={project} -e 'using Pkg; Pkg.instantiate(); Pkg.resolve(); pkg"precompile"'
""".format(
project=self.project_dir
),
)
]
)
return scripts
def detect(self):
"""

Wyświetl plik

@ -1,8 +1,9 @@
"""Generates a Dockerfile based on an input matrix with REQUIRE for legacy Julia"""
from distutils.version import LooseVersion as V
import os
from functools import lru_cache
from ...semver import parse_version as V
from ..python import PythonBuildPack
@ -54,6 +55,7 @@ class JuliaRequireBuildPack(PythonBuildPack):
self._julia_version = julia_version
return self._julia_version
@lru_cache()
def get_build_env(self):
"""Get additional environment settings for Julia and Jupyter
@ -69,12 +71,27 @@ class JuliaRequireBuildPack(PythonBuildPack):
- `JULIA_DEPOT_PATH`: path where Julia libraries are installed.
Similar to JULIA_PKGDIR, used in 1.x.
- `JULIA_VERSION`: default version of julia to be installed
- `JULIA_ARCH`: machine architecture used in Julia download URLs
- `JULIA_ARCH_SHORT`: machine architecture used in Julia download URLs
- `JUPYTER`: environment variable required by IJulia to point to
the `jupyter` executable
For example, a tuple may be `('JULIA_VERSION', '0.6.0')`.
"""
if self.platform == "linux/arm64":
julia_arch = julia_arch_short = "aarch64"
else:
julia_arch = "x86_64"
julia_arch_short = "x64"
if V(self.julia_version) < V("0.7"):
# IJulia with Julia 0.6 isn't compatible with more recent jupyter-core
# point it to the one in the kernel env
# I _think_ this is only relevant during installation
jupyter = "${KERNEL_PYTHON_PREFIX}/bin/jupyter"
else:
jupyter = "${NB_PYTHON_PREFIX}/bin/jupyter"
return super().get_build_env() + [
("JULIA_PATH", "${APP_BASE}/julia"),
("JULIA_HOME", "${JULIA_PATH}/bin"), # julia <= 0.6
@ -82,9 +99,12 @@ class JuliaRequireBuildPack(PythonBuildPack):
("JULIA_PKGDIR", "${JULIA_PATH}/pkg"),
("JULIA_DEPOT_PATH", "${JULIA_PKGDIR}"), # julia >= 0.7
("JULIA_VERSION", self.julia_version),
("JUPYTER", "${NB_PYTHON_PREFIX}/bin/jupyter"),
("JULIA_ARCH", julia_arch),
("JULIA_ARCH_SHORT", julia_arch_short),
("JUPYTER", jupyter),
]
@lru_cache()
def get_path(self):
"""Adds path to Julia binaries to user's PATH.
@ -95,6 +115,7 @@ class JuliaRequireBuildPack(PythonBuildPack):
"""
return super().get_path() + ["${JULIA_HOME}"]
@lru_cache()
def get_build_scripts(self):
"""
Return series of build-steps common to "ALL" Julia repositories
@ -111,7 +132,7 @@ class JuliaRequireBuildPack(PythonBuildPack):
"root",
r"""
mkdir -p ${JULIA_PATH} && \
curl -sSL "https://julialang-s3.julialang.org/bin/linux/x64/${JULIA_VERSION%[.-]*}/julia-${JULIA_VERSION}-linux-x86_64.tar.gz" | tar -xz -C ${JULIA_PATH} --strip-components 1
curl -sSL "https://julialang-s3.julialang.org/bin/linux/${JULIA_ARCH_SHORT}/${JULIA_VERSION%[.-]*}/julia-${JULIA_VERSION}-linux-${JULIA_ARCH}.tar.gz" | tar -xz -C ${JULIA_PATH} --strip-components 1
""",
),
(
@ -132,6 +153,7 @@ class JuliaRequireBuildPack(PythonBuildPack):
),
]
@lru_cache()
def get_assemble_scripts(self):
"""
Return series of build-steps specific to "this" Julia repository
@ -153,12 +175,13 @@ class JuliaRequireBuildPack(PythonBuildPack):
r"""
julia /tmp/install-repo-dependencies.jl "%(require)s"
"""
% {"require": require}
% {"require": require},
# TODO: For some reason, `rm`ing the file fails with permission denied.
# && rm /tmp/install-repo-dependencies.jl
)
]
@lru_cache()
def get_build_script_files(self):
files = {
"julia/install-repo-dependencies.jl": "/tmp/install-repo-dependencies.jl"

Wyświetl plik

@ -7,6 +7,7 @@ and IPython kernel.
Note: This buildpack has been deprecated.
"""
import logging
@ -16,11 +17,14 @@ class LegacyBinderDockerBuildPack:
This buildpack has been deprecated.
"""
def __init__(self, *args, **kwargs):
pass
def detect(self):
"""Check if current repo should be built with the Legacy BuildPack."""
log = logging.getLogger("repo2docker")
try:
with open("Dockerfile", "r") as f:
with open("Dockerfile") as f:
for line in f:
if line.startswith("FROM"):
if "andrewosh/binder-base" in line.split("#")[0].lower():

Wyświetl plik

@ -1,24 +1,30 @@
"""BuildPack for nixpkgs environments"""
import os
from ..base import BuildPack, BaseImage
import os
from functools import lru_cache
from ..base import BaseImage
class NixBuildPack(BaseImage):
"""A nix Package Manager BuildPack"""
@lru_cache()
def get_path(self):
"""Return paths to be added to PATH environemnt variable"""
return super().get_path() + ["/home/${NB_USER}/.nix-profile/bin"]
@lru_cache()
def get_env(self):
"""Ordered list of environment variables to be set for this image"""
return super().get_env() + [
("NIX_PATH", "nixpkgs=/home/${NB_USER}/.nix-defexpr/channels/nixpkgs"),
("NIX_SSL_CERT_FILE", "/etc/ssl/certs/ca-certificates.crt"),
("GIT_SSL_CAINFO", "/etc/ssl/certs/ca-certificates.crt"),
]
@lru_cache()
def get_build_scripts(self):
"""
Return series of build-steps common to all nix repositories.
@ -30,6 +36,10 @@ class NixBuildPack(BaseImage):
- install nix package manager for user
"""
if self.platform == "linux/arm64":
nix_arch = "aarch64"
else:
nix_arch = "x86_64"
return super().get_build_scripts() + [
(
"root",
@ -43,13 +53,14 @@ class NixBuildPack(BaseImage):
),
(
"${NB_USER}",
"""
bash /home/${NB_USER}/.local/bin/install-nix.bash && \
rm /home/${NB_USER}/.local/bin/install-nix.bash
f"""
NIX_ARCH={nix_arch} bash /home/${{NB_USER}}/.local/bin/install-nix.bash && \
rm /home/${{NB_USER}}/.local/bin/install-nix.bash
""",
),
]
@lru_cache()
def get_build_script_files(self):
"""Dict of files to be copied to the container image for use in building"""
return {
@ -57,21 +68,21 @@ class NixBuildPack(BaseImage):
"nix/nix-shell-wrapper": "/usr/local/bin/nix-shell-wrapper",
}
@lru_cache()
def get_assemble_scripts(self):
"""Return series of build-steps specific to this source repository."""
return super().get_assemble_scripts() + [
(
"${NB_USER}",
"""
f"""
nix-channel --add https://nixos.org/channels/nixpkgs-unstable nixpkgs && \
nix-channel --update && \
nix-shell {}
""".format(
self.binder_path("default.nix")
),
nix-shell {self.binder_path("default.nix")}
""",
)
]
@lru_cache()
def get_start_script(self):
"""The path to a script to be executed as ENTRYPOINT"""
# the shell wrapper script duplicates the behaviour of other buildpacks

Wyświetl plik

@ -2,13 +2,17 @@
# This downloads and installs a pinned version of nix
set -ex
NIX_VERSION="2.3.9"
NIX_SHA256="49763fd7fa06bcb712ced2f3f11afd275e3a4d7bc5ff0d6fd1d50a4c3ce7bbf4"
NIX_VERSION="2.13.2"
if [ "$NIX_ARCH" = "aarch64" ]; then
NIX_SHA256="4ae275a46a2441d3459ae389a90ce6e8f7eff12c2a084b2d003ba6f8d0899603"
else
NIX_SHA256="beaec0f28899c22f33adbe30e4ecfceef87b797278c5210ee693e22e9719dfb4"
fi
# Do all our operations in /tmp, since we can't rely on current directory being writeable yet.
cd /tmp
wget --quiet https://nixos.org/releases/nix/nix-$NIX_VERSION/nix-$NIX_VERSION-x86_64-linux.tar.xz
echo "$NIX_SHA256 nix-$NIX_VERSION-x86_64-linux.tar.xz" | sha256sum -c
tar xJf nix-*-x86_64-linux.tar.xz
sh nix-*-x86_64-linux/install
rm -r nix-*-x86_64-linux*
wget --quiet https://nixos.org/releases/nix/nix-$NIX_VERSION/nix-$NIX_VERSION-$NIX_ARCH-linux.tar.xz
echo "$NIX_SHA256 nix-$NIX_VERSION-$NIX_ARCH-linux.tar.xz" | sha256sum -c
tar xJf nix-*-$NIX_ARCH-linux.tar.xz
sh nix-*-$NIX_ARCH-linux/install
rm -r nix-*-$NIX_ARCH-linux*

Wyświetl plik

@ -8,9 +8,11 @@ same as the Python or Conda build packs.
import json
import os
import re
from functools import lru_cache
import toml
from ...semver import parse_version as V
from ..conda import CondaBuildPack
VERSION_PAT = re.compile(r"\d+(\.\d+)*")
@ -63,17 +65,22 @@ class PipfileBuildPack(CondaBuildPack):
# extract major.minor
if py_version:
if len(py_version.split(".")) == 1:
self._python_version = self.major_pythons.get(py_version[0])
py_version_info = py_version.split(".")
if len(py_version_info) == 1:
self._python_version = self.major_pythons[py_version_info[0]]
else:
# return major.minor
self._python_version = ".".join(py_version.split(".")[:2])
self._python_version = ".".join(py_version_info[:2])
return self._python_version
else:
# use the default Python
self._python_version = self.major_pythons["3"]
self.log.warning(
f"Python version unspecified, using current default Python version {self._python_version}. This will change in the future."
)
return self._python_version
@lru_cache()
def get_preassemble_script_files(self):
"""Return files needed for preassembly"""
files = super().get_preassemble_script_files()
@ -83,15 +90,25 @@ class PipfileBuildPack(CondaBuildPack):
files[path] = path
return files
@lru_cache()
def get_preassemble_scripts(self):
"""scripts to run prior to staging the repo contents"""
scripts = super().get_preassemble_scripts()
# install pipenv to install dependencies within Pipfile.lock or Pipfile
if V(self.python_version) < V("3.6"):
# last pipenv version to support 2.7, 3.5
pipenv_version = "2021.5.29"
else:
pipenv_version = "2022.1.8"
scripts.append(
("${NB_USER}", "${KERNEL_PYTHON_PREFIX}/bin/pip install pipenv==2018.11.26")
(
"${NB_USER}",
f"${{KERNEL_PYTHON_PREFIX}}/bin/pip install --no-cache-dir pipenv=={pipenv_version}",
)
)
return scripts
@lru_cache()
def get_assemble_scripts(self):
"""Return series of build-steps specific to this repository."""
# If we have either Pipfile.lock, Pipfile, or runtime.txt declare the
@ -104,8 +121,8 @@ class PipfileBuildPack(CondaBuildPack):
# environment.
assemble_scripts = super().get_assemble_scripts()
if self.py2:
# using Python 2 as a kernel, but Python 3 for the notebook server
if self.separate_kernel_env:
# using legacy Python (e.g. 2.7) as a kernel
# requirements3.txt allows for packages to be installed to the
# notebook servers Python environment
@ -114,9 +131,7 @@ class PipfileBuildPack(CondaBuildPack):
assemble_scripts.append(
(
"${NB_USER}",
'${{NB_PYTHON_PREFIX}}/bin/pip install --no-cache-dir -r "{}"'.format(
nb_requirements_file
),
f'${{NB_PYTHON_PREFIX}}/bin/pip install --no-cache-dir -r "{nb_requirements_file}"',
)
)
@ -154,12 +169,15 @@ class PipfileBuildPack(CondaBuildPack):
"${NB_USER}",
"""(cd {working_directory} && \\
PATH="${{KERNEL_PYTHON_PREFIX}}/bin:$PATH" \\
pipenv install {install_option} --system --dev \\
pipenv install {install_option} --system --dev && \\
pipenv --clear \\
)""".format(
working_directory=working_directory,
install_option="--ignore-pipfile"
if os.path.exists(pipfile_lock)
else "--skip-lock",
install_option=(
"--ignore-pipfile"
if os.path.exists(pipfile_lock)
else "--skip-lock"
),
),
)
)

Wyświetl plik

@ -1,8 +1,10 @@
"""Generates Dockerfiles based on an input matrix based on Python."""
import os
from ..conda import CondaBuildPack
import os
from functools import lru_cache
from ...utils import is_local_pip_requirement, open_guess_encoding
from ..conda import CondaBuildPack
class PythonBuildPack(CondaBuildPack):
@ -23,6 +25,9 @@ class PythonBuildPack(CondaBuildPack):
# not a Python runtime (e.g. R, which subclasses this)
# use the default Python
self._python_version = self.major_pythons["3"]
self.log.warning(
f"Python version unspecified, using current default Python version {self._python_version}. This will change in the future."
)
return self._python_version
py_version_info = runtime.split("-", 1)[1].split(".")
@ -45,8 +50,8 @@ class PythonBuildPack(CondaBuildPack):
# whether it's distinct from the notebook or the same.
pip = "${KERNEL_PYTHON_PREFIX}/bin/pip"
scripts = []
if self.py2:
# using python 2 kernel,
if self.separate_kernel_env:
# using legacy Python kernel
# requirements3.txt allows installation in the notebook server env
nb_requirements_file = self.binder_path("requirements3.txt")
if os.path.exists(nb_requirements_file):
@ -55,9 +60,7 @@ class PythonBuildPack(CondaBuildPack):
"${NB_USER}",
# want the $NB_PYHTON_PREFIX environment variable, not for
# Python's string formatting to try and replace this
'${{NB_PYTHON_PREFIX}}/bin/pip install --no-cache-dir -r "{}"'.format(
nb_requirements_file
),
f'${{NB_PYTHON_PREFIX}}/bin/pip install --no-cache-dir -r "{nb_requirements_file}"',
)
)
@ -67,7 +70,7 @@ class PythonBuildPack(CondaBuildPack):
scripts.append(
(
"${NB_USER}",
'{} install --no-cache-dir -r "{}"'.format(pip, requirements_file),
f'{pip} install --no-cache-dir -r "{requirements_file}"',
)
)
return scripts
@ -95,6 +98,7 @@ class PythonBuildPack(CondaBuildPack):
# allow assembly from subset
return True
@lru_cache()
def get_preassemble_script_files(self):
assemble_files = super().get_preassemble_script_files()
for name in ("requirements.txt", "requirements3.txt"):
@ -103,6 +107,7 @@ class PythonBuildPack(CondaBuildPack):
assemble_files[requirements_txt] = requirements_txt
return assemble_files
@lru_cache()
def get_preassemble_scripts(self):
"""Return scripts to run before adding the full repository"""
scripts = super().get_preassemble_scripts()
@ -110,6 +115,7 @@ class PythonBuildPack(CondaBuildPack):
scripts.extend(self._get_pip_scripts())
return scripts
@lru_cache()
def get_assemble_scripts(self):
"""Return series of build steps that require the full repository"""
# If we have a runtime.txt & that's set to python-2.7,
@ -126,9 +132,7 @@ class PythonBuildPack(CondaBuildPack):
# setup.py exists *and* binder dir is not used
if not self.binder_dir and os.path.exists(setup_py):
assemble_scripts.append(
("${NB_USER}", "{} install --no-cache-dir .".format(pip))
)
assemble_scripts.append(("${NB_USER}", f"{pip} install --no-cache-dir ."))
return assemble_scripts
def detect(self):

Wyświetl plik

@ -0,0 +1,11 @@
#!/bin/bash -l
# This is an executable that launches Python in a login shell
# to ensure that full profile setup occurs.
# shebang on linux only allows 1 argument,
# so we couldn't pick a login shell in one shebang line
# for a Python script
# -u means unbuffered, which one ~always wants in a container
# otherwise output can be mysteriously missing
exec python3 -u "$@"

Wyświetl plik

@ -1,12 +1,17 @@
import re
import os
import datetime
import os
import re
from functools import lru_cache
import requests
from distutils.version import LooseVersion as V
from ..semver import parse_version as V
from ._r_base import rstudio_base_scripts
from .python import PythonBuildPack
from ._r_base import rstudio_base_scripts, DEVTOOLS_VERSION, IRKERNEL_VERSION
# Aproximately the first snapshot on RSPM (Posit package manager)
# that seems to have a working IRKernel.
RSPM_CUTOFF_DATE = datetime.date(2018, 12, 7)
class RBuildPack(PythonBuildPack):
@ -20,27 +25,24 @@ class RBuildPack(PythonBuildPack):
r-<year>-<month>-<date>
Where 'year', 'month' and 'date' refer to a specific
date snapshot of https://mran.microsoft.com/timemachine
from which libraries are to be installed.
date whose CRAN snapshot we will use to fetch packages.
Uses https://packagemanager.posit.co.
2. A `DESCRIPTION` file signaling an R package
If there is no `runtime.txt`, then the MRAN snapshot is set to latest
If there is no `runtime.txt`, then the CRAN snapshot is set to latest
date that is guaranteed to exist across timezones.
Additional R packages are installed if specified either
- in a file `install.R`, that will be executed at build time,
and can be used for installing packages from both MRAN and GitHub
and can be used for installing packages from both CRAN and GitHub
- as dependencies in a `DESCRIPTION` file
- are needed by a specific tool
The `r-base` package from Ubuntu apt repositories is used to install
R itself, rather than any of the methods from https://cran.r-project.org/.
The `r-base-dev` package is installed as advised in RStudio instructions.
R is installed from https://docs.rstudio.com/resources/install-r/
"""
@property
@ -65,40 +67,46 @@ class RBuildPack(PythonBuildPack):
Will return the version specified by the user or the current default
version.
"""
# Available versions at https://cran.r-project.org/src/base/
version_map = {
"3.4": "3.4",
"3.5": "3.5.3-1bionic",
"3.5.0": "3.5.0-1bionic",
"3.5.1": "3.5.1-2bionic",
"3.5.2": "3.5.2-1bionic",
"3.5.3": "3.5.3-1bionic",
"3.6": "3.6.1-3bionic",
"3.6.0": "3.6.0-2bionic",
"3.6.1": "3.6.1-3bionic",
"4.0": "4.0.2-1.1804.0",
"4.0.2": "4.0.2-1.1804.0",
"4.2": "4.2.1",
"4.1": "4.1.3",
"4.0": "4.0.5",
"3.6": "3.6.3",
"3.5": "3.5.3",
"3.4": "3.4.4",
"3.3": "3.3.3",
}
# the default if nothing is specified
r_version = "3.6"
# Use full version is needed here, so it a valid semver
#
# NOTE: When updating this version, also update
# - tests/unit/test_r.py -> test_version_specification
# - tests/r/r-rspm-apt/verify
#
r_version = version_map["4.2"]
if not hasattr(self, "_r_version"):
parts = self.runtime.split("-")
# If runtime.txt is not set, or if it isn't of the form r-<version>-<yyyy>-<mm>-<dd>,
# we don't use any of it in determining r version and just use the default
if len(parts) == 5:
r_version = parts[1]
if r_version not in version_map:
raise ValueError(
"Version '{}' of R is not supported.".format(r_version)
)
# For versions of form x.y, we want to explicitly provide x.y.z - latest patchlevel
# available. Users can however explicitly specify the full version to get something specific
if r_version in version_map:
r_version = version_map[r_version]
# translate to the full version string
self._r_version = version_map.get(r_version)
self._r_version = r_version
return self._r_version
@property
def checkpoint_date(self):
"""
Return the date of MRAN checkpoint to use for this repo
Return the date of CRAN checkpoint to use for this repo
Returns '' if no date is specified
"""
@ -131,15 +139,29 @@ class RBuildPack(PythonBuildPack):
if not self.binder_dir and os.path.exists(description_R):
if not self.checkpoint_date:
# no R snapshot date set through runtime.txt
# set the R runtime to the latest date that is guaranteed to
# be on MRAN across timezones
two_days_ago = datetime.date.today() - datetime.timedelta(days=2)
self._checkpoint_date = self._get_latest_working_mran_date(
two_days_ago, 3
# Set it to two days ago from today
self._checkpoint_date = datetime.date.today() - datetime.timedelta(
days=2
)
self._runtime = "r-{}".format(str(self._checkpoint_date))
self._runtime = f"r-{str(self._checkpoint_date)}"
return True
@lru_cache()
def get_env(self):
"""
Set custom env vars needed for RStudio to load
"""
return super().get_env() + [
# rstudio (rsession) can't seem to find R unless we explicitly tell it where
# it is - just $PATH isn't enough. I discovered these are the env vars it
# looks for by digging through RStudio source and finding
# https://github.com/rstudio/rstudio/blob/v2022.02.3+492/src/cpp/r/session/RDiscovery.cpp
("R_HOME", f"/opt/R/{self.r_version}/lib/R"),
("R_DOC_DIR", "${R_HOME}/doc"),
("LD_LIBRARY_PATH", "${R_HOME}/lib:${LD_LIBRARY_PATH}"),
]
@lru_cache()
def get_path(self):
"""
Return paths to be added to the PATH environment variable.
@ -149,6 +171,7 @@ class RBuildPack(PythonBuildPack):
"""
return super().get_path() + ["/usr/lib/rstudio-server/bin/"]
@lru_cache()
def get_build_env(self):
"""
Return environment variables to be set.
@ -162,6 +185,7 @@ class RBuildPack(PythonBuildPack):
("R_LIBS_USER", "${APP_BASE}/rlibs")
]
@lru_cache()
def get_packages(self):
"""
Return list of packages to be installed.
@ -175,39 +199,57 @@ class RBuildPack(PythonBuildPack):
"libapparmor1",
"sudo",
"lsb-release",
"libssl-dev",
]
# For R 3.4 we use the default Ubuntu package, for other versions we
# install from a different PPA
if V(self.r_version) < V("3.5"):
packages.append("r-base")
packages.append("r-base-dev")
packages.append("libclang-dev")
return super().get_packages().union(packages)
def _get_latest_working_mran_date(self, startdate, max_prior):
"""
Look for a working MRAN snapshot
Starts from `startdate` and tries up to `max_prior` previous days.
Raises `requests.HTTPError` with the last tried URL if no working snapshot found.
"""
for days in range(max_prior + 1):
test_date = startdate - datetime.timedelta(days=days)
mran_url = "https://mran.microsoft.com/snapshot/{}".format(
test_date.isoformat()
@lru_cache()
def get_rspm_snapshot_url(self, snapshot_date, max_days_prior=7):
for i in range(max_days_prior):
snapshots = requests.post(
"https://packagemanager.posit.co/__api__/url",
# Ask for midnight UTC snapshot
json={
"repo": "all",
"snapshot": (snapshot_date - datetime.timedelta(days=i)).strftime(
"%Y-%m-%dT00:00:00Z"
),
},
).json()
# Construct a snapshot URL that will give us binary packages for appropriate ubuntu version
if "upsi" in snapshots:
return (
# Env variables here are expanded by envsubst in the Dockerfile, after sourcing
# /etc/os-release. This allows us to use distro specific variables here to get
# appropriate binary packages without having to hard code version names here.
"https://packagemanager.posit.co/all/__linux__/${VERSION_CODENAME}/"
+ snapshots["upsi"]
)
raise ValueError(
"No snapshot found for {} or {} days prior in packagemanager.posit.co".format(
snapshot_date.strftime("%Y-%m-%d"), max_days_prior
)
r = requests.head(mran_url)
if r.ok:
return test_date
self.log.warning(
"Failed to get MRAN snapshot URL %s: %s %s",
mran_url,
r.status_code,
r.reason,
)
r.raise_for_status()
)
@lru_cache()
def get_devtools_snapshot_url(self):
"""
Return url of snapshot to use for getting devtools install
devtools is part of our 'core' base install, so we should have some
control over what version we install here.
"""
# Picked from https://packagemanager.posit.co/client/#/repos/1/overview
# Hardcoded rather than dynamically determined from a date to avoid extra API calls
# Plus, we can always use packagemanager.posit.co here as we always install the
# necessary apt packages.
# Env variables here are expanded by envsubst in the Dockerfile, after sourcing
# /etc/os-release. This allows us to use distro specific variables here to get
# appropriate binary packages without having to hard code version names here.
return "https://packagemanager.posit.co/all/__linux__/${VERSION_CODENAME}/2022-06-03+Y3JhbiwyOjQ1MjYyMTU7RkM5ODcwN0M"
@lru_cache()
def get_build_scripts(self):
"""
Return series of build-steps common to all R repositories
@ -220,113 +262,106 @@ class RBuildPack(PythonBuildPack):
for installing R packages into
- RStudio
- R's devtools package, at a particular frozen version
(determined by MRAN)
(determined by CRAN)
- IRKernel
- nbrsessionproxy (to access RStudio via Jupyter Notebook)
We set the snapshot date used to install R libraries from based on the
contents of runtime.txt.
"""
if self.checkpoint_date < RSPM_CUTOFF_DATE:
raise RuntimeError(
f'Microsoft killed MRAN, the source of R package snapshots before {RSPM_CUTOFF_DATE.strftime("%Y-%m-%d")}. '
f'This repo has a snapshot date of {self.checkpoint_date.strftime("%Y-%m-%d")} specified in runtime.txt. '
"Please use a newer snapshot date"
)
mran_url = "https://mran.microsoft.com/snapshot/{}".format(
self.checkpoint_date.isoformat()
)
cran_mirror_url = self.get_rspm_snapshot_url(self.checkpoint_date)
scripts = []
# For R 3.4 we want to use the default Ubuntu package but otherwise
# we use the packages from R's own repo
if V(self.r_version) >= V("3.5"):
if V(self.r_version) >= V("4"):
vs = "40"
else:
vs = "35"
scripts += [
(
"root",
rf"""
echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran{vs}/" > /etc/apt/sources.list.d/r-ubuntu.list
""",
),
# Dont use apt-key directly, as gpg does not always respect *_proxy vars. This increase the chances
# of being able to reach it from behind a firewall
(
"root",
r"""
wget --quiet -O - 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xe298a3a825c0d65dfd57cbb651716619e084dab9' | apt-key add -
""",
),
(
"root",
r"""
apt-get update && \
apt-get install --yes r-base={R_version} \
r-base-dev={R_version} \
r-recommended={R_version} \
libclang-dev && \
apt-get -qq purge && \
apt-get -qq clean && \
rm -rf /var/lib/apt/lists/*
""".format(
R_version=self.r_version
),
),
]
if self.platform != "linux/amd64":
raise RuntimeError(
f"RStudio is only available for linux/amd64 ({self.platform})"
)
scripts = [
(
"root",
rf"""
apt-get update > /dev/null && \
apt-get install --yes --no-install-recommends \
libclang-dev \
libzmq3-dev > /dev/null && \
wget --quiet -O /tmp/r-{self.r_version}.deb \
https://cdn.rstudio.com/r/ubuntu-$(. /etc/os-release && echo $VERSION_ID | sed 's/\.//')/pkgs/r-{self.r_version}_1_amd64.deb && \
apt install --yes --no-install-recommends /tmp/r-{self.r_version}.deb > /dev/null && \
rm /tmp/r-{self.r_version}.deb && \
apt-get -qq purge && \
apt-get -qq clean && \
rm -rf /var/lib/apt/lists/* && \
ln -s /opt/R/{self.r_version}/bin/R /usr/local/bin/R && \
ln -s /opt/R/{self.r_version}/bin/Rscript /usr/local/bin/Rscript && \
R --version
""",
),
]
scripts.append(
scripts += rstudio_base_scripts(self.r_version)
scripts += [
(
"root",
r"""
mkdir -p ${R_LIBS_USER} && \
chown -R ${NB_USER}:${NB_USER} ${R_LIBS_USER}
""",
)
)
scripts += rstudio_base_scripts()
scripts += [
),
(
"root",
# Set paths so that RStudio shares libraries with base R
# install. This first comments out any R_LIBS_USER that
# might be set in /etc/R/Renviron and then sets it.
r"""
sed -i -e '/^R_LIBS_USER=/s/^/#/' /etc/R/Renviron && \
echo "R_LIBS_USER=${R_LIBS_USER}" >> /etc/R/Renviron
rf"""
sed -i -e '/^R_LIBS_USER=/s/^/#/' /opt/R/{self.r_version}/lib/R/etc/Renviron && \
echo "R_LIBS_USER=${{R_LIBS_USER}}" >> /opt/R/{self.r_version}/lib/R/etc/Renviron
""",
),
(
"root",
# RStudio's CRAN mirror needs this to figure out which binary package to serve.
# If not set properly, it will just serve up source packages
# Quite hilarious, IMO.
# See https://docs.rstudio.com/rspm/1.0.12/admin/binaries.html
# Set mirror for RStudio too, by modifying rsession.conf
rf"""
R RHOME && \
mkdir -p /etc/rstudio && \
EXPANDED_CRAN_MIRROR_URL="$(. /etc/os-release && echo {cran_mirror_url} | envsubst)" && \
echo "options(repos = c(CRAN = \"${{EXPANDED_CRAN_MIRROR_URL}}\"))" > /opt/R/{self.r_version}/lib/R/etc/Rprofile.site && \
echo "r-cran-repos=${{EXPANDED_CRAN_MIRROR_URL}}" > /etc/rstudio/rsession.conf
""",
),
(
"root",
# Configure log-level and send to stderr
# Set log-level=debug to investigate problems
# https://docs.posit.co/ide/server-pro/server_management/logging.html
rf"""
printf '[*]\nlog-level=info\nlogger-type=stderr\n' > /etc/rstudio/logging.conf
""",
),
(
"${NB_USER}",
# Install a pinned version of IRKernel and set it up for use!
r"""
R --quiet -e "install.packages('devtools', repos='https://mran.microsoft.com/snapshot/{devtools_version}', method='libcurl')" && \
R --quiet -e "devtools::install_github('IRkernel/IRkernel', ref='{irkernel_version}')" && \
R --quiet -e "IRkernel::installspec(prefix='$NB_PYTHON_PREFIX')"
""".format(
devtools_version=DEVTOOLS_VERSION, irkernel_version=IRKERNEL_VERSION
),
),
(
"${NB_USER}",
# Install shiny library
r"""
R --quiet -e "install.packages('shiny', repos='{}', method='libcurl')"
""".format(
mran_url
),
),
(
"root",
# We set the default CRAN repo to the MRAN one at given date
# We set download method to be curl so we get HTTPS support
r"""
echo "options(repos = c(CRAN='{mran_url}'), download.file.method = 'libcurl')" > /etc/R/Rprofile.site
""".format(
mran_url=mran_url
),
# Install a pinned version of devtools, IRKernel and shiny
rf"""
export EXPANDED_CRAN_MIRROR_URL="$(. /etc/os-release && echo {cran_mirror_url} | envsubst)" && \
R --quiet -e "install.packages(c('devtools', 'IRkernel', 'shiny'), repos=Sys.getenv(\"EXPANDED_CRAN_MIRROR_URL\"))" && \
R --quiet -e "IRkernel::installspec(prefix=Sys.getenv(\"NB_PYTHON_PREFIX\"))"
""",
),
]
return super().get_build_scripts() + scripts
@lru_cache()
def get_preassemble_script_files(self):
files = super().get_preassemble_script_files()
installR_path = self.binder_path("install.R")
@ -335,6 +370,7 @@ class RBuildPack(PythonBuildPack):
return files
@lru_cache()
def get_preassemble_scripts(self):
"""Install contents of install.R
@ -352,12 +388,15 @@ class RBuildPack(PythonBuildPack):
scripts += [
(
"${NB_USER}",
"Rscript %s && touch /tmp/.preassembled || true" % installR_path,
# Delete /tmp/downloaded_packages only if install.R fails, as the second
# invocation of install.R might be able to reuse them
f"Rscript {installR_path} && touch /tmp/.preassembled || true && rm -rf /tmp/downloaded_packages",
)
]
return super().get_preassemble_scripts() + scripts
@lru_cache()
def get_assemble_scripts(self):
"""Install the dependencies of or the repository itself"""
assemble_scripts = super().get_assemble_scripts()
@ -368,9 +407,8 @@ class RBuildPack(PythonBuildPack):
(
"${NB_USER}",
# only run install.R if the pre-assembly failed
"if [ ! -f /tmp/.preassembled ]; then Rscript {}; fi".format(
installR_path
),
# Delete any downloaded packages in /tmp, as they aren't reused by R
f"""if [ ! -f /tmp/.preassembled ]; then Rscript {installR_path}; rm -rf /tmp/downloaded_packages; fi""",
)
]

Some files were not shown because too many files have changed in this diff Show More