Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🔧 Migrate from Poetry to PDM for the internal build config #912

Merged
merged 8 commits into from
Apr 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 8 additions & 12 deletions .github/workflows/build-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ jobs:
- README.md
- docs/**
- docs_src/**
- requirements-docs.txt
- pyproject.toml
- mkdocs.yml
- mkdocs.insiders.yml
Expand All @@ -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 }}
Expand Down
42 changes: 14 additions & 28 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
50 changes: 50 additions & 0 deletions .github/workflows/test-redistribute.yml
Original file line number Diff line number Diff line change
@@ -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
16 changes: 4 additions & 12 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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 }}
Expand Down
65 changes: 30 additions & 35 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -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 <[email protected]>"]
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",
Expand All @@ -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
Expand Down
2 changes: 2 additions & 0 deletions requirements-docs-tests.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# For mkdocstrings and code generator using templates
black >=22.10,<24.0
18 changes: 18 additions & 0 deletions requirements-docs.txt
Original file line number Diff line number Diff line change
@@ -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
12 changes: 12 additions & 0 deletions requirements-tests.txt
Original file line number Diff line number Diff line change
@@ -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
6 changes: 6 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
-e .

-r requirements-tests.txt
-r requirements-docs.txt

pre-commit >=2.17.0,<4.0.0
2 changes: 1 addition & 1 deletion sqlmodel/__init__.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Loading