diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml index b86c414..17495d3 100644 --- a/.github/workflows/audit.yml +++ b/.github/workflows/audit.yml @@ -11,7 +11,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15.0rc3"] steps: - name: Checkout repository diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 42c854f..903b6e6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"] steps: - name: Checkout repository @@ -38,7 +38,7 @@ jobs: RTM_TOKEN: ${{ secrets.RTM_TOKEN }} run: | python -c "import rtmilk" - if python --version | grep -q 'Python 3.14' ; then + if python --version | grep -q 'Python 3.15' ; then poe test-with-coverage fi - name: Codecov diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..fd7626c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,51 @@ +name: Release + +on: + workflow_dispatch: + +jobs: + build: + name: Build package + runs-on: ubuntu-latest + # Environment and permissions trusted publishing. + environment: + # Create this environment in the GitHub repository under Settings -> Environments + name: pypi + permissions: + contents: read + steps: + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + - name: Install uv + uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0 + with: + enable-cache: false + - name: Build + run: uv build + - name: Upload distributions as artifacts + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: dist + path: dist/ + pypi-publish: + name: Upload release to PyPI + runs-on: ubuntu-latest + needs: build + # Specifying a GitHub environment is optional, but strongly encouraged + environment: + name: pypi + url: https://pypi.org/p/rtmilk + permissions: + # IMPORTANT: this permission is mandatory for Trusted Publishing + id-token: write + contents: read + steps: + - name: Download built distributions + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: dist + path: dist/ + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2 diff --git a/pyproject.toml b/pyproject.toml index ef8c4a8..8e29248 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "rtmilk" -version = "3.0.8" +version = "3.0.9" description = "Remember The Milk API wrapper" maintainers = [ { name = "Rehan Khwaja", email = "rehan@khwaja.name" } @@ -17,6 +17,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", ] requires-python = ">=3.10" dependencies = [ @@ -51,6 +52,7 @@ lint.ignore = [ "A002", # Disallows argument names which shadow builtins "ANN", # Missing annotations "COM812", # Missing trailing comma + "CPY001", # requires copyright notices "D", # Missing docstrings "DTZ", # datetime timezone rules "EM", # Rules about strings in exception constructors @@ -64,6 +66,7 @@ lint.ignore = [ "N806", # Variable naming rule "N815", # Variable naming rule "PLR0913", # Too many arguments + "PLR0917", # Too many positional arguments "PT013", # Only allows one way of importing pytest "PTH", # Forces use of pathlib "TC", # Requires type-checking blocks @@ -106,7 +109,7 @@ dev = [ "pytest-cov>=3", "pytest-asyncio>=0.24.0", "poethepoet>=0.16.4", - "ruff>=0.15.6", + "ruff>=0.16.1", "ty>=0.0.22", "pysentry-rs>=0.4.5", ]