diff --git a/.github/workflows/test_conda_store.yaml b/.github/workflows/test_conda_store.yaml index 67269811d..d787fcf64 100644 --- a/.github/workflows/test_conda_store.yaml +++ b/.github/workflows/test_conda_store.yaml @@ -32,7 +32,7 @@ jobs: working-directory: conda-store strategy: matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] steps: - name: "Checkout Repository 🛎" uses: actions/checkout@v4 @@ -56,7 +56,7 @@ jobs: - name: "Deploy docker compose 🏗️" run: | - docker compose up -d + python_version=${{ matrix.python-version }} docker compose up --build -d docker ps wait-for-it localhost:5432 # postgresql diff --git a/.github/workflows/test_conda_store_server_integration.yaml b/.github/workflows/test_conda_store_server_integration.yaml index 4edc6645d..2b852457c 100644 --- a/.github/workflows/test_conda_store_server_integration.yaml +++ b/.github/workflows/test_conda_store_server_integration.yaml @@ -25,11 +25,12 @@ concurrency: jobs: integration-test-conda-store-server: - name: "integration-test - ${{ matrix.test-type }}" + name: "integration-test - ${{ matrix.test-type }} (python ${{ matrix.python-version }})" runs-on: ubuntu-latest strategy: matrix: test-type: ["playwright", "integration", "user-journey"] + python-version: ["3.10", "3.11", "3.12"] defaults: run: shell: bash -el {0} @@ -38,10 +39,6 @@ jobs: - name: "Checkout Repository 🛎" uses: actions/checkout@v4 - - name: "Get project's default Python version 🏷️" - run: | - echo "PYTHON_VERSION_DEFAULT=$(cat .python-version-default)" >> $GITHUB_ENV - - name: "Set up conda env 🐍" uses: conda-incubator/setup-miniconda@v3 with: @@ -49,7 +46,7 @@ jobs: miniforge-version: latest auto-activate-base: false activate-environment: conda-store-server-dev - python-version: ${{ env.PYTHON_VERSION_DEFAULT }} + python-version: ${{ matrix.python-version }} - name: "Install dependencies 📦" run: | @@ -60,7 +57,7 @@ jobs: - name: "Deploy docker compose 🏗️" run: | - docker compose up -d + python_version=${{ matrix.python-version }} docker compose up --build -d docker ps wait-for-it localhost:5432 # postgresql @@ -78,7 +75,7 @@ jobs: uses: actions/upload-artifact@v4 if: matrix.test-type == 'playwright' with: - name: playwright-tests + name: playwright-tests-${{ matrix.python-version }} path: conda-store-server/test-results - name: "Run integration tests ✅" diff --git a/conda-store-server/conda_store_server/_internal/schema.py b/conda-store-server/conda_store_server/_internal/schema.py index 96dd735d6..bbd170a23 100644 --- a/conda-store-server/conda_store_server/_internal/schema.py +++ b/conda-store-server/conda_store_server/_internal/schema.py @@ -129,7 +129,7 @@ class Config: @classmethod def from_list(cls, lst): - return cls(**{k: v for k, v in zip(cls.__fields__.keys(), lst)}) + return cls(**{k: v for k, v in zip(cls.__fields__.keys(), lst, strict=False)}) class Namespace(BaseModel): diff --git a/conda-store-server/environment-dev.yaml b/conda-store-server/environment-dev.yaml index 3e73865e2..b1b5e1353 100644 --- a/conda-store-server/environment-dev.yaml +++ b/conda-store-server/environment-dev.yaml @@ -13,8 +13,8 @@ channels: - conda-forge - nodefaults dependencies: - # must be kept in sync with .python-version-default - - python=3.12 + # must be kept in sync with the min supported version in pyproject.toml + - python >=3.10 # conda builds - conda # dev dependencies diff --git a/conda-store-server/pyproject.toml b/conda-store-server/pyproject.toml index 318466b03..1b1aa8d29 100644 --- a/conda-store-server/pyproject.toml +++ b/conda-store-server/pyproject.toml @@ -11,7 +11,7 @@ name = "conda-store-server" description = "Conda Environment Management, Builds, and Serve" readme = "README.md" license = "BSD-3-Clause" -requires-python = ">=3.8" +requires-python = ">=3.10,<3.13" keywords = ["conda"] authors = [ { name = "Christopher Ostrouchov", email = "chris.ostrouchov@gmail.com" }, @@ -19,6 +19,7 @@ authors = [ maintainers = [ { name = "Tania Allard", email = "trallard@bitsandchips.me" }, { name = "Pavithra Eswaramoorthy", email = "pavithraes@outlook.com" }, + { name = "Peyton Murray", email = "peynmurray@gmail.com" }, ] classifiers = [ "Development Status :: 3 - Alpha", @@ -26,8 +27,6 @@ classifiers = [ "Topic :: Software Development :: Build Tools", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", @@ -59,13 +58,17 @@ dependencies = [ "pyjwt", "psycopg2-binary", "pymysql", - # pyyaml>5.3.1 is broken with cython>=3 transitive dependency + # pyyaml>5.3.1,<6.0.1 is broken with cython>=3 transitive dependency # See https://github.com/yaml/pyyaml/issues/724 for details - "pyyaml==5.3.1", + "pyyaml >=6.0.1", "redis", "requests", "pydantic >=1.10.16,<2.0a0", "python-multipart", + # setuptools>=70 uses local version of packaging (and other deps) without + # pinning them; conda-lock depends on this, but also doesn't pin the setuptools + # version. See https://github.com/pypa/setuptools/issues/4478 for details + "setuptools<70", "sqlalchemy<2.0a0", "traitlets", "uvicorn", @@ -192,6 +195,8 @@ ignore = [ "UP007", # non-pep604-annotation "UP030", # format-literals "UP031", # printf-string-formatting + "UP035", # deprecated-import + "UP038", # non-pep604-isinstance ] select = [ "E", # pycodestyle diff --git a/conda-store/pyproject.toml b/conda-store/pyproject.toml index a82b4027c..4930325ab 100644 --- a/conda-store/pyproject.toml +++ b/conda-store/pyproject.toml @@ -11,7 +11,7 @@ name = "conda-store" description = "conda-store client" readme = "README.md" license = "BSD-3-Clause" -requires-python = ">=3.8" +requires-python = ">=3.10,<3.13" keywords = [ "conda", "dependency management", @@ -31,8 +31,6 @@ classifiers = [ "Topic :: Software Development :: Build Tools", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", diff --git a/docker-compose.yaml b/docker-compose.yaml index 33ec36d38..760ef93ed 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -3,6 +3,8 @@ services: build: context: conda-store-server target: dev + args: + python_version: $python_version user: 1000:1000 volumes: - ./tests/assets/environments:/opt/environments:ro @@ -22,6 +24,8 @@ services: build: context: conda-store-server target: dev + args: + python_version: $python_version user: 1000:1000 depends_on: postgres: diff --git a/docusaurus-docs/community/contribute/local-setup-labextension.md b/docusaurus-docs/community/contribute/local-setup-labextension.md index 499a56223..a0ce1170a 100644 --- a/docusaurus-docs/community/contribute/local-setup-labextension.md +++ b/docusaurus-docs/community/contribute/local-setup-labextension.md @@ -9,7 +9,7 @@ description: Local development setup for jupyterlab-conda-store - Local [clone of your fork](community/contribute/contribute-code#setup-for-local-development) of the [`jupyterlab-conda-store-ui` repository](https://github.com/conda-incubator/jupyterlab-conda-store) - [NodeJS `> 18`](https://nodejs.org/en/download/) installed on your local computer to build the extension package. -- Python `>= 3.8` (and `pip`) +- Python `>= 3.10` (and `pip`) ## Build and link the extension diff --git a/recipe/meta.yaml b/recipe/meta.yaml index abb967f1f..b37e443a7 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -4,7 +4,7 @@ {% set name = "conda-store" %} # version MUST be updated when a new release is made -{% set version = "2024.6.1" %} +{% set version = "2024.11.1" %} package: name: {{ name|lower }}-split @@ -27,7 +27,7 @@ outputs: - conda-store = conda_store.__main__:main requirements: host: - - python >=3.8 + - python >=3.10,<3.13 - pip - hatchling >=1.14.0 - hatch-vcs @@ -35,9 +35,9 @@ outputs: - __linux # [linux] - __osx # [osx] - __win # [win] - - aiohttp>=3.8.1 + - aiohttp >=3.8.1 - click - - python >=3.8 + - python >=3.10,<3.13 - rich - ruamel.yaml - yarl @@ -60,7 +60,7 @@ outputs: - conda-store-worker = conda_store_server._internal.worker.__main__:main requirements: host: - - python >=3.8 + - python >=3.10,<3.13 - pip - hatchling >=1.14.0 - hatch-vcs @@ -82,10 +82,10 @@ outputs: - minio - pydantic <2.0a0 - pyjwt - - python >=3.8 + - python >=3.10,<3.13 - python-docker - python-multipart - - pyyaml + - pyyaml >=6.0.1 - redis-py - requests - sqlalchemy <2.0a0 @@ -115,11 +115,13 @@ about: philosophy of conda-store is to serve identical conda environments in as many ways as possible. Conda Store controls the environment lifecycle: management, builds, and serving of environments. - doc_url: https://conda.store + doc_url: https://conda.store/ dev_url: https://github.com/conda-incubator/conda-store extra: feedstock-name: conda-store recipe-maintainers: + - peytondmurray + - soapy1 - trallard - jaimergp