diff --git a/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/.github/workflows/{% if cookiecutter.include_ci_files == 'GitHub' %}test.yml{%endif%} b/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/.github/workflows/{% if cookiecutter.include_ci_files == 'GitHub' %}test.yml{%endif%} index 0cfc81005..33313a43e 100644 --- a/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/.github/workflows/{% if cookiecutter.include_ci_files == 'GitHub' %}test.yml{%endif%} +++ b/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/.github/workflows/{% if cookiecutter.include_ci_files == 'GitHub' %}test.yml{%endif%} @@ -12,11 +12,11 @@ jobs: GITHUB_TOKEN: {{ '${{secrets.GITHUB_TOKEN}}' }} strategy: matrix: - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python {{ '${{ matrix.python-version }}' }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: {{ '${{ matrix.python-version }}' }} - name: Install Poetry diff --git a/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/.pre-commit-config.yaml b/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/.pre-commit-config.yaml index 3f2efb42e..62f5ab41d 100644 --- a/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/.pre-commit-config.yaml +++ b/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/.pre-commit-config.yaml @@ -14,19 +14,19 @@ repos: - id: trailing-whitespace - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.27.2 + rev: 0.27.3 hooks: - id: check-dependabot - id: check-github-workflows - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.6 + rev: v0.1.11 hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix, --show-fixes] - id: ruff-format - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.7.1 + rev: v1.8.0 hooks: - id: mypy diff --git a/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/pyproject.toml b/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/pyproject.toml index b19669ea4..d0ae4b1a9 100644 --- a/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/pyproject.toml +++ b/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/pyproject.toml @@ -13,6 +13,15 @@ keywords = [ "Mapper", "{{cookiecutter.name}}", ] +classifiers = [ + "Intended Audience :: Developers", + "Operating System :: OS Independent", + "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", +] license = "Apache-2.0" {%- if cookiecutter.variant != "None (Skip)" %} packages = [ @@ -21,7 +30,7 @@ packages = [ {%- endif %} [tool.poetry.dependencies] -python = ">=3.8,<4" +python = ">=3.8" singer-sdk = { version="~=0.34.1" } fs-s3fs = { version = "~=1.1.1", optional = true } @@ -33,12 +42,12 @@ singer-sdk = { version="~=0.34.1", extras = ["testing"] } s3 = ["fs-s3fs"] [tool.mypy] -python_version = "3.9" +python_version = "3.11" warn_unused_configs = true [tool.ruff] src = ["{{cookiecutter.library_name}}"] -target-version = "py37" +target-version = "py38" [tool.ruff.lint] ignore = [ @@ -59,7 +68,7 @@ known-first-party = ["{{cookiecutter.library_name}}"] convention = "google" [build-system] -requires = ["poetry-core>=1.0.8"] +requires = ["poetry-core==1.8.1"] build-backend = "poetry.core.masonry.api" [tool.poetry.scripts] diff --git a/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/tox.ini b/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/tox.ini index 70b9e4ac7..6be1c116a 100644 --- a/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/tox.ini +++ b/cookiecutter/mapper-template/{{cookiecutter.mapper_id}}/tox.ini @@ -1,7 +1,7 @@ # This file can be used to customize tox tests as well as other test frameworks like flake8 and mypy [tox] -envlist = py37, py38, py39, py310, py311 +envlist = py{38,39,310,311,312} isolated_build = true [testenv] @@ -13,7 +13,7 @@ commands = [testenv:pytest] # Run the python tests. # To execute, run `tox -e pytest` -envlist = py37, py38, py39, py310, py311 +envlist = py{38,39,310,311,312} commands = poetry install -v poetry run pytest diff --git a/cookiecutter/tap-template/{{cookiecutter.tap_id}}/.github/workflows/test.yml b/cookiecutter/tap-template/{{cookiecutter.tap_id}}/.github/workflows/test.yml index 0ea2f9ae7..3922fc4ed 100644 --- a/cookiecutter/tap-template/{{cookiecutter.tap_id}}/.github/workflows/test.yml +++ b/cookiecutter/tap-template/{{cookiecutter.tap_id}}/.github/workflows/test.yml @@ -12,11 +12,11 @@ jobs: GITHUB_TOKEN: {{ '${{secrets.GITHUB_TOKEN}}' }} strategy: matrix: - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python {{ '${{ matrix.python-version }}' }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: {{ '${{ matrix.python-version }}' }} - name: Install Poetry diff --git a/cookiecutter/tap-template/{{cookiecutter.tap_id}}/.pre-commit-config.yaml b/cookiecutter/tap-template/{{cookiecutter.tap_id}}/.pre-commit-config.yaml index 6fd8adfd1..5e3f6cb83 100644 --- a/cookiecutter/tap-template/{{cookiecutter.tap_id}}/.pre-commit-config.yaml +++ b/cookiecutter/tap-template/{{cookiecutter.tap_id}}/.pre-commit-config.yaml @@ -14,20 +14,20 @@ repos: - id: trailing-whitespace - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.27.2 + rev: 0.27.3 hooks: - id: check-dependabot - id: check-github-workflows - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.6 + rev: v0.1.11 hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix, --show-fixes] - id: ruff-format - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.7.1 + rev: v1.8.0 hooks: - id: mypy additional_dependencies: diff --git a/cookiecutter/tap-template/{{cookiecutter.tap_id}}/pyproject.toml b/cookiecutter/tap-template/{{cookiecutter.tap_id}}/pyproject.toml index 772e4b906..b1902b724 100644 --- a/cookiecutter/tap-template/{{cookiecutter.tap_id}}/pyproject.toml +++ b/cookiecutter/tap-template/{{cookiecutter.tap_id}}/pyproject.toml @@ -12,6 +12,15 @@ keywords = [ "ELT", "{{cookiecutter.source_name}}", ] +classifiers = [ + "Intended Audience :: Developers", + "Operating System :: OS Independent", + "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", +] license = "Apache-2.0" {%- if cookiecutter.variant != "None (Skip)" %} packages = [ @@ -20,16 +29,13 @@ packages = [ {%- endif %} [tool.poetry.dependencies] -python = ">=3.8,<4" +python = ">=3.8" importlib-resources = { version = "==6.1.*", python = "<3.9" } singer-sdk = { version="~=0.34.1" } fs-s3fs = { version = "~=1.1.1", optional = true } {%- if cookiecutter.stream_type in ["REST", "GraphQL"] %} requests = "~=2.31.0" {%- endif %} -{%- if cookiecutter.auth_method in ("OAuth2", "JWT") %} -cached-property = "~=1" # Remove after Python 3.7 support is dropped -{%- endif %} [tool.poetry.group.dev.dependencies] pytest = ">=7.4.0" @@ -39,7 +45,7 @@ singer-sdk = { version="~=0.34.1", extras = ["testing"] } s3 = ["fs-s3fs"] [tool.mypy] -python_version = "3.9" +python_version = "3.11" warn_unused_configs = true {%- if cookiecutter.stream_type == 'SQL' %} plugins = "sqlmypy" @@ -47,7 +53,7 @@ plugins = "sqlmypy" [tool.ruff] src = ["{{cookiecutter.library_name}}"] -target-version = "py37" +target-version = "py38" [tool.ruff.lint] ignore = [ @@ -68,7 +74,7 @@ known-first-party = ["{{cookiecutter.library_name}}"] convention = "google" [build-system] -requires = ["poetry-core>=1.0.8"] +requires = ["poetry-core==1.8.1"] build-backend = "poetry.core.masonry.api" [tool.poetry.scripts] diff --git a/cookiecutter/tap-template/{{cookiecutter.tap_id}}/tox.ini b/cookiecutter/tap-template/{{cookiecutter.tap_id}}/tox.ini index 70b9e4ac7..6be1c116a 100644 --- a/cookiecutter/tap-template/{{cookiecutter.tap_id}}/tox.ini +++ b/cookiecutter/tap-template/{{cookiecutter.tap_id}}/tox.ini @@ -1,7 +1,7 @@ # This file can be used to customize tox tests as well as other test frameworks like flake8 and mypy [tox] -envlist = py37, py38, py39, py310, py311 +envlist = py{38,39,310,311,312} isolated_build = true [testenv] @@ -13,7 +13,7 @@ commands = [testenv:pytest] # Run the python tests. # To execute, run `tox -e pytest` -envlist = py37, py38, py39, py310, py311 +envlist = py{38,39,310,311,312} commands = poetry install -v poetry run pytest diff --git a/cookiecutter/tap-template/{{cookiecutter.tap_id}}/{{cookiecutter.library_name}}/rest-client.py b/cookiecutter/tap-template/{{cookiecutter.tap_id}}/{{cookiecutter.library_name}}/rest-client.py index 21316908b..26c1447c9 100644 --- a/cookiecutter/tap-template/{{cookiecutter.tap_id}}/{{cookiecutter.library_name}}/rest-client.py +++ b/cookiecutter/tap-template/{{cookiecutter.tap_id}}/{{cookiecutter.library_name}}/rest-client.py @@ -3,6 +3,9 @@ from __future__ import annotations import sys +{%- if cookiecutter.auth_method in ("OAuth2", "JWT") %} +from functools import cached_property +{%- endif %} from typing import Any, Callable, Iterable import requests @@ -38,14 +41,6 @@ {% endif -%} -{%- if cookiecutter.auth_method in ("OAuth2", "JWT") -%} -if sys.version_info >= (3, 8): - from functools import cached_property -else: - from cached_property import cached_property - -{% endif -%} - if sys.version_info >= (3, 9): import importlib.resources as importlib_resources else: diff --git a/cookiecutter/target-template/{{cookiecutter.target_id}}/.github/workflows/test.yml b/cookiecutter/target-template/{{cookiecutter.target_id}}/.github/workflows/test.yml index 4544911a6..6f9d71cae 100644 --- a/cookiecutter/target-template/{{cookiecutter.target_id}}/.github/workflows/test.yml +++ b/cookiecutter/target-template/{{cookiecutter.target_id}}/.github/workflows/test.yml @@ -12,11 +12,11 @@ jobs: GITHUB_TOKEN: {{ '${{secrets.GITHUB_TOKEN}}' }} strategy: matrix: - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python {{ '${{ matrix.python-version }}' }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: {{ '${{ matrix.python-version }}' }} - name: Install Poetry diff --git a/cookiecutter/target-template/{{cookiecutter.target_id}}/.pre-commit-config.yaml b/cookiecutter/target-template/{{cookiecutter.target_id}}/.pre-commit-config.yaml index 9e3953bcd..c89f290a1 100644 --- a/cookiecutter/target-template/{{cookiecutter.target_id}}/.pre-commit-config.yaml +++ b/cookiecutter/target-template/{{cookiecutter.target_id}}/.pre-commit-config.yaml @@ -14,20 +14,20 @@ repos: - id: trailing-whitespace - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.27.2 + rev: 0.27.3 hooks: - id: check-dependabot - id: check-github-workflows - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.6 + rev: v0.1.11 hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix, --show-fixes] - id: ruff-format - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.7.1 + rev: v1.8.0 hooks: - id: mypy additional_dependencies: diff --git a/cookiecutter/target-template/{{cookiecutter.target_id}}/pyproject.toml b/cookiecutter/target-template/{{cookiecutter.target_id}}/pyproject.toml index 8f095c904..7bcceaf69 100644 --- a/cookiecutter/target-template/{{cookiecutter.target_id}}/pyproject.toml +++ b/cookiecutter/target-template/{{cookiecutter.target_id}}/pyproject.toml @@ -12,6 +12,15 @@ keywords = [ "ELT", "{{cookiecutter.destination_name}}", ] +classifiers = [ + "Intended Audience :: Developers", + "Operating System :: OS Independent", + "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", +] license = "Apache-2.0" {%- if cookiecutter.variant != "None (Skip)" %} packages = [ @@ -20,7 +29,7 @@ packages = [ {%- endif %} [tool.poetry.dependencies] -python = ">=3.8,<4" +python = ">=3.8" singer-sdk = { version="~=0.34.1" } fs-s3fs = { version = "~=1.1.1", optional = true } {%- if cookiecutter.serialization_method != "SQL" %} @@ -36,7 +45,7 @@ s3 = ["fs-s3fs"] [tool.ruff] src = ["{{cookiecutter.library_name}}"] -target-version = "py37" +target-version = "py38" [tool.ruff.lint] ignore = [ @@ -57,7 +66,7 @@ known-first-party = ["{{cookiecutter.library_name}}"] convention = "google" [build-system] -requires = ["poetry-core>=1.0.8"] +requires = ["poetry-core==1.8.1"] build-backend = "poetry.core.masonry.api" [tool.poetry.scripts] diff --git a/cookiecutter/target-template/{{cookiecutter.target_id}}/tox.ini b/cookiecutter/target-template/{{cookiecutter.target_id}}/tox.ini index 70b9e4ac7..6be1c116a 100644 --- a/cookiecutter/target-template/{{cookiecutter.target_id}}/tox.ini +++ b/cookiecutter/target-template/{{cookiecutter.target_id}}/tox.ini @@ -1,7 +1,7 @@ # This file can be used to customize tox tests as well as other test frameworks like flake8 and mypy [tox] -envlist = py37, py38, py39, py310, py311 +envlist = py{38,39,310,311,312} isolated_build = true [testenv] @@ -13,7 +13,7 @@ commands = [testenv:pytest] # Run the python tests. # To execute, run `tox -e pytest` -envlist = py37, py38, py39, py310, py311 +envlist = py{38,39,310,311,312} commands = poetry install -v poetry run pytest