]> git.ipfire.org Git - thirdparty/fastapi/sqlmodel.git/commitdiff
🔧 Migrate from Poetry to PDM for the internal build config (#912)
authorSebastián Ramírez <tiangolo@gmail.com>
Mon, 29 Apr 2024 22:58:15 +0000 (15:58 -0700)
committerGitHub <noreply@github.com>
Mon, 29 Apr 2024 22:58:15 +0000 (15:58 -0700)
.github/workflows/build-docs.yml
.github/workflows/publish.yml
.github/workflows/test-redistribute.yml [new file with mode: 0644]
.github/workflows/test.yml
pyproject.toml
requirements-docs-tests.txt [new file with mode: 0644]
requirements-docs.txt [new file with mode: 0644]
requirements-tests.txt [new file with mode: 0644]
requirements.txt [new file with mode: 0644]
sqlmodel/__init__.py

index e7de374652c311d29937f6a9ad885224868fd365..4871f7bb47c962ffeafc6608858129cf97eb5cd1 100644 (file)
@@ -27,6 +27,7 @@ jobs:
             - README.md
             - docs/**
             - docs_src/**
+            - requirements-docs.txt
             - pyproject.toml
             - mkdocs.yml
             - mkdocs.insiders.yml
@@ -52,21 +53,16 @@ jobs:
         id: cache
         with:
           path: ${{ env.pythonLocation }}
-          key: ${{ runner.os }}-python-docs-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-v01
-      - name: Install Poetry
+          key: ${{ runner.os }}-python-docs-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml', 'requirements-docs.txt') }}-v01
+      - name: Install docs extras
         if: steps.cache.outputs.cache-hit != 'true'
-        run: |
-          python -m pip install --upgrade pip
-          python -m pip install "poetry"
-          python -m poetry self add poetry-version-plugin
-      - name: Configure poetry
-        run: python -m poetry config virtualenvs.create false
-      - name: Install Dependencies
-        if: steps.cache.outputs.cache-hit != 'true'
-        run: python -m poetry install
+        run: pip install -r requirements-docs.txt
       - name: Install Material for MkDocs Insiders
         if: ( github.event_name != 'pull_request' || github.secret_source == 'Actions' ) && steps.cache.outputs.cache-hit != 'true'
-        run: python -m poetry run pip install git+https://${{ secrets.SQLMODEL_MKDOCS_MATERIAL_INSIDERS }}@github.com/squidfunk/mkdocs-material-insiders.git
+        run: |
+          pip install git+https://${{ secrets.SQLMODEL_MKDOCS_MATERIAL_INSIDERS }}@github.com/squidfunk/mkdocs-material-insiders.git
+          pip install git+https://${{ secrets.SQLMODEL_MKDOCS_MATERIAL_INSIDERS }}@github.com/pawamoy-insiders/griffe-typing-deprecated.git
+          pip install git+https://${{ secrets.SQLMODEL_MKDOCS_MATERIAL_INSIDERS }}@github.com/pawamoy-insiders/mkdocstrings-python.git
       - uses: actions/cache@v3
         with:
           key: mkdocs-cards-${{ github.ref }}
index 42a0eec3cead4e97724553b73f0fb0ed49a61514..911cd623a7b0eaa929889360f721c655fe853222 100644 (file)
@@ -14,37 +14,23 @@ on:
 jobs:
   publish:
     runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        package:
+          - sqlmodel
+    permissions:
+      id-token: write
     steps:
       - uses: actions/checkout@v4
       - name: Set up Python
         uses: actions/setup-python@v4
         with:
-          python-version: "3.7"
-      # Allow debugging with tmate
-      - name: Setup tmate session
-        uses: mxschmitt/action-tmate@v3
-        if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true' }}
-        with:
-          limit-access-to-actor: true
-      - uses: actions/cache@v3
-        id: cache
-        with:
-          path: ${{ env.pythonLocation }}
-          key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-root-v2
-      - name: Install poetry
-        if: steps.cache.outputs.cache-hit != 'true'
-        run: |
-          python -m pip install --upgrade pip
-          python -m pip install "poetry"
-          python -m poetry self add poetry-version-plugin
-      - name: Configure poetry
-        run: python -m poetry config virtualenvs.create false
-      - name: Install Dependencies
-        if: steps.cache.outputs.cache-hit != 'true'
-        run: python -m poetry install
-      - name: Publish
+          python-version: "3.11"
+      - name: Install build dependencies
+        run: pip install build
+      - name: Build distribution
         env:
-          PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
-        run: |
-          python -m poetry config pypi-token.pypi $PYPI_TOKEN
-          bash scripts/publish.sh
+          TIANGOLO_BUILD_PACKAGE: ${{ matrix.package }}
+        run: python -m build
+      - name: Publish
+        uses: pypa/gh-action-pypi-publish@v1.8.11
diff --git a/.github/workflows/test-redistribute.yml b/.github/workflows/test-redistribute.yml
new file mode 100644 (file)
index 0000000..45b8241
--- /dev/null
@@ -0,0 +1,50 @@
+name: Test Redistribute
+
+on:
+  push:
+    branches:
+      - main
+  pull_request:
+    types:
+      - opened
+      - synchronize
+
+jobs:
+  test-redistribute:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        package:
+          - sqlmodel
+    steps:
+      - name: Dump GitHub context
+        env:
+          GITHUB_CONTEXT: ${{ toJson(github) }}
+        run: echo "$GITHUB_CONTEXT"
+      - uses: actions/checkout@v4
+      - name: Set up Python
+        uses: actions/setup-python@v5
+        with:
+          python-version: "3.10"
+      - name: Install build dependencies
+        run: pip install build
+      - name: Build source distribution
+        env:
+          TIANGOLO_BUILD_PACKAGE: ${{ matrix.package }}
+        run: python -m build --sdist
+      - name: Decompress source distribution
+        run: |
+          cd dist
+          tar xvf sqlmodel*.tar.gz
+      - name: Install test dependencies
+        run: |
+          cd dist/sqlmodel*/
+          pip install -r requirements-tests.txt
+      - name: Run source distribution tests
+        run: |
+          cd dist/sqlmodel*/
+          bash scripts/test.sh
+      - name: Build wheel distribution
+        run: |
+          cd dist
+          pip wheel --no-deps sqlmodel*.tar.gz
index 990bf46de4621bd655a1d98cf5fb28aa48111f95..f0872ef6232f398d0527714c020a63b1c335a013 100644 (file)
@@ -51,18 +51,10 @@ jobs:
         id: cache
         with:
           path: ${{ env.pythonLocation }}
-          key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-root-v2
-      - name: Install poetry
-        if: steps.cache.outputs.cache-hit != 'true'
-        run: |
-          python -m pip install --upgrade pip
-          python -m pip install "poetry"
-          python -m poetry self add poetry-version-plugin
-      - name: Configure poetry
-        run: python -m poetry config virtualenvs.create false
+          key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml', 'requirements-tests.txt') }}
       - name: Install Dependencies
         if: steps.cache.outputs.cache-hit != 'true'
-        run: python -m poetry install
+        run: pip install -r requirements-tests.txt
       - name: Install Pydantic v1
         if: matrix.pydantic-version == 'pydantic-v1'
         run: pip install --upgrade "pydantic>=1.10.0,<2.0.0"
@@ -72,10 +64,10 @@ jobs:
       - name: Lint
         # Do not run on Python 3.7 as mypy behaves differently
         if: matrix.python-version != '3.7' && matrix.pydantic-version == 'pydantic-v2'
-        run: python -m poetry run bash scripts/lint.sh
+        run: bash scripts/lint.sh
       - run: mkdir coverage
       - name: Test
-        run: python -m poetry run bash scripts/test.sh
+        run: bash scripts/test.sh
         env:
           COVERAGE_FILE: coverage/.coverage.${{ runner.os }}-py${{ matrix.python-version }}
           CONTEXT: ${{ runner.os }}-py${{ matrix.python-version }}
index 9da631b985f7b13686fbf54413f11601bf1fabf8..17f72941b8bb0fe1c56dba78f3fa6f86e5eda7b4 100644 (file)
@@ -1,14 +1,17 @@
-[tool.poetry]
+[build-system]
+requires = ["pdm-backend"]
+build-backend = "pdm.backend"
+
+[project]
 name = "sqlmodel"
-version = "0"
+dynamic = ["version"]
 description = "SQLModel, SQL databases in Python, designed for simplicity, compatibility, and robustness."
-authors = ["Sebastián Ramírez <tiangolo@gmail.com>"]
 readme = "README.md"
-homepage = "https://github.com/tiangolo/sqlmodel"
-documentation = "https://sqlmodel.tiangolo.com"
-repository = "https://github.com/tiangolo/sqlmodel"
-license = "MIT"
-exclude = ["sqlmodel/sql/expression.py.jinja2"]
+requires-python = ">=3.7"
+authors = [
+    { name = "Sebastián Ramírez", email = "tiangolo@gmail.com" },
+]
+
 classifiers = [
     "Development Status :: 4 - Beta",
     "Framework :: AsyncIO",
@@ -31,36 +34,28 @@ classifiers = [
     "Typing :: Typed",
 ]
 
-[tool.poetry.dependencies]
-python = "^3.7"
-SQLAlchemy = ">=2.0.0,<2.1.0"
-pydantic = ">=1.10.13,<3.0.0"
+dependencies = [
+    "SQLAlchemy >=2.0.0,<2.1.0",
+    "pydantic >=1.10.13,<3.0.0",
+]
 
-[tool.poetry.group.dev.dependencies]
-pytest = "^7.0.1"
-mypy = "1.4.1"
-# Needed by the code generator using templates
-black = ">=22.10,<24.0"
-mkdocs-material = "9.2.7"
-pillow = "^9.3.0"
-cairosvg = "^2.5.2"
-mdx-include = "^1.4.1"
-coverage = {extras = ["toml"], version = ">=6.2,<8.0"}
-fastapi = "^0.103.2"
-ruff = "0.2.0"
-# For FastAPI tests
-httpx = "0.24.1"
-# TODO: upgrade when deprecating Python 3.7
-dirty-equals = "^0.6.0"
-typer-cli = "^0.0.13"
-mkdocs-markdownextradata-plugin = ">=0.1.7,<0.3.0"
+[project.urls]
+Homepage = "https://github.com/tiangolo/sqlmodel"
+Documentation = "https://sqlmodel.tiangolo.com"
+Repository = "https://github.com/tiangolo/sqlmodel"
 
-[build-system]
-requires = ["poetry-core"]
-build-backend = "poetry.core.masonry.api"
+[tool.pdm]
+version = { source = "file", path = "sqlmodel/__init__.py" }
+distribution = true
 
-[tool.poetry-version-plugin]
-source = "init"
+[tool.pdm.build]
+source-includes = [
+    "tests/",
+    "docs_src/",
+    "requirements*.txt",
+    "scripts/",
+    "sqlmodel/sql/expression.py.jinja2",
+    ]
 
 [tool.coverage.run]
 parallel = true
diff --git a/requirements-docs-tests.txt b/requirements-docs-tests.txt
new file mode 100644 (file)
index 0000000..28f1ad1
--- /dev/null
@@ -0,0 +1,2 @@
+# For mkdocstrings and code generator using templates
+black >=22.10,<24.0
diff --git a/requirements-docs.txt b/requirements-docs.txt
new file mode 100644 (file)
index 0000000..cacb5dc
--- /dev/null
@@ -0,0 +1,18 @@
+-e .
+-r requirements-docs-tests.txt
+mkdocs-material==9.4.7
+mdx-include >=1.4.1,<2.0.0
+mkdocs-markdownextradata-plugin >=0.1.7,<0.3.0
+mkdocs-redirects>=1.2.1,<1.3.0
+pyyaml >=5.3.1,<7.0.0
+# For Material for MkDocs, Chinese search
+jieba==0.42.1
+# For image processing by Material for MkDocs
+pillow==10.1.0
+# For image processing by Material for MkDocs
+cairosvg==2.7.0
+mkdocstrings[python]==0.23.0
+griffe-typingdoc==0.2.2
+# For griffe, it formats with black
+black==23.3.0
+typer == 0.12.3
diff --git a/requirements-tests.txt b/requirements-tests.txt
new file mode 100644 (file)
index 0000000..648f99b
--- /dev/null
@@ -0,0 +1,12 @@
+-e .
+-r requirements-docs-tests.txt
+pytest >=7.0.1,<8.0.0
+coverage[toml] >=6.2,<8.0
+mypy ==1.4.1
+ruff ==0.2.0
+# For FastAPI tests
+fastapi >=0.103.2
+httpx ==0.24.1
+# TODO: upgrade when deprecating Python 3.7
+dirty-equals ==0.6.0
+jinja2 ==3.1.3
diff --git a/requirements.txt b/requirements.txt
new file mode 100644 (file)
index 0000000..1e21c5d
--- /dev/null
@@ -0,0 +1,6 @@
+-e .
+
+-r requirements-tests.txt
+-r requirements-docs.txt
+
+pre-commit >=2.17.0,<4.0.0
index 556bba189568b45bbadeca67c220e08d17d65dbe..fac039e8198d6ad6c882eb467493910f15a425f9 100644 (file)
@@ -1,4 +1,4 @@
-__version__ = "0.0.16"
+__version__ = "0.0.17.dev2"
 
 # Re-export from SQLAlchemy
 from sqlalchemy.engine import create_engine as create_engine