diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..82a178db9 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,22 @@ +# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners + +# Ending a path in a `/` will specify the code owners for every file +# nested in that directory, on any level + +# Default owners +* @edgarrmondragon @cjohnhanson @aaronsteers + +# CI/CD +/.github/workflows/ @edgarrmondragon @meltano/engineering + +# Docs (General) +/docs/ @meltano/engineering @meltano/marketing +/README.md @afolson @tayloramurphy @meltano/engineering @meltano/marketing + +# Docs (Contributing) +/docs/CONTRIBUTING.md @afolson @tayloramurphy @meltano/engineering + +# Release Ops (see `/.pyproject.toml` for list of bumped files) +/cookiecutter/*/*/pyproject.toml @meltano/engineering +/docs/conf.py @meltano/engineering +/pyproject.toml @meltano/engineering diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 000000000..b15b11996 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,71 @@ +name: Bug Report +description: File a bug report +title: "[Bug]: " +labels: ["kind/Bug", "valuestream/SDK"] +assignees: + - meltano/engineering + +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + - type: input + id: sdk_version + attributes: + label: Singer SDK Version + description: Version of the library you are using + placeholder: "0.1.0" + validations: + required: true + - type: dropdown + id: python_version + attributes: + label: Python Version + description: Version of Python you are using + options: + - "3.6 (deprecated)" + - "3.7" + - "3.8" + - "3.9" + - "3.10" + - "NA" + validations: + required: true + - type: dropdown + id: scope + attributes: + label: Bug scope + description: Functionality this bug affects + options: + - Taps (catalog, state, stream maps, etc.) + - Targets (data type handling, batching, SQL object generation, etc.) + - Configuration (settings parsing, validation, etc.) + - CLI (options, error messages, logging, etc.) + - Other + validations: + required: true + - type: input + id: os + attributes: + label: Operating System + description: What operating system you are using + placeholder: "Windows" + validations: + required: true + - type: textarea + id: what-happened + attributes: + label: Description + description: Describe what you were trying to get done + placeholder: Tell us what happened, what went wrong, and what you expected to happen + validations: + required: true + - type: textarea + id: failing-code + attributes: + label: Code + description: Paste the failing code and/or traceback, if applicable + render: python + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..2647d95ca --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: +- name: Meltano Community + url: https://meltano.com/slack + about: Join us on Slack. diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml new file mode 100644 index 000000000..f85d74efc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature.yml @@ -0,0 +1,32 @@ +name: Feature request +description: Request a new feature +title: "[Feature]: <title>" +labels: ["kind/Feature", "valuestream/SDK"] +assignees: + - meltano/engineering + +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to request a new feature! + - type: dropdown + id: scope + attributes: + label: Feature scope + description: Functionality this new feature would impact + options: + - Taps (catalog, state, stream maps, etc.) + - Targets (data type handling, batching, SQL object generation, etc.) + - Configuration (settings parsing, validation, etc.) + - CLI (options, error messages, logging, etc.) + - Other + validations: + required: true + - type: textarea + id: what + attributes: + label: Description + description: Describe the feature you would like to see + validations: + required: true diff --git a/.github/workflows/constraints.txt b/.github/workflows/constraints.txt index b1fb51ab9..361d351cd 100644 --- a/.github/workflows/constraints.txt +++ b/.github/workflows/constraints.txt @@ -1,4 +1,4 @@ -pip==22.1.2 +pip==22.2 poetry==1.1.14 virtualenv==20.15.1 nox==2022.1.7 diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 38a2d1ce5..cbf0e9b08 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -1,11 +1,12 @@ -# Dependency Review Action -# -# This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging. -# -# Source repository: https://github.com/actions/dependency-review-action -# Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement name: Dependency Review -on: [pull_request] + +on: + pull_request_target: {} + workflow_dispatch: + inputs: {} + +env: + FOSSA_CLI_INSTALLER_VERSION: '3.3.10' permissions: contents: read @@ -14,7 +15,26 @@ jobs: dependency-review: runs-on: ubuntu-latest steps: - - name: Checkout Repository - uses: actions/checkout@v3 - - name: Dependency Review - uses: actions/dependency-review-action@v2 + - name: Checkout the repository + uses: actions/checkout@v3.0.2 + + - name: GitHub dependency vulnerability check + if: ${{ github.event_name == 'pull_request_target' }} + # Use this fork until https://github.com/actions/dependency-review-action/pull/165 is merged + uses: WillDaSilva/dependency-review-action@main + + - name: FOSSA dependency license check + run: | + # `$FOSSA_CLI_INSTALLER_VERSION` only controls the version of the installer used - the latest version of `fossa-cli` will always be used. + curl --no-progress-meter -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/v${FOSSA_CLI_INSTALLER_VERSION}/install-latest.sh | bash + + echo '## FOSSA dependency license check' >> $GITHUB_STEP_SUMMARY + echo '' >> $GITHUB_STEP_SUMMARY + + fossa analyze --fossa-api-key ${{ secrets.MELTYBOT_FOSSA_API_KEY }} --revision ${{ github.sha }} |& tee fossa_analyze.log + fossa test --fossa-api-key ${{ secrets.MELTYBOT_FOSSA_API_KEY }} --revision ${{ github.sha }} + + TEST_FAILED=$? + FOSSA_REPORT_LINK="$(grep -A 1 '[ INFO] View FOSSA Report:' fossa_analyze.log | tail -n 1 | sed -e 's/^\[ INFO\]\s*//')" + echo "[FOSSA detected $([ $TEST_FAILED -ne 0 ] && echo -n '' || echo 'no ')issues](${FOSSA_REPORT_LINK})" >> $GITHUB_STEP_SUMMARY + exit $TEST_FAILED diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS deleted file mode 100644 index cf60371a6..000000000 --- a/.gitlab/CODEOWNERS +++ /dev/null @@ -1,20 +0,0 @@ -# https://gitlab.com/help/user/project/code_owners - -# Ending a path in a `/` will specify the code owners for every file -# nested in that directory, on any level - -# Default owners -* @edgarrmondragon @cjohnhanson @aaronsteers - -^[Docs] -/docs/ @edgarrmondragon @afolson -/CONTRIBUTING.md @edgarrmondragon @afolson -/README.md @edgarrmondragon @afolson - -# Release Ops (see `/.bumpversion.cfg` for list of bumped files) -/.bumpversion.cfg @meltano/core-team -/CHANGELOG.md @meltano/core-team -/cookiecutter/tap-template/{{cookiecutter.tap_id}}/pyproject.toml @meltano/core-team -/cookiecutter/target-template/{{cookiecutter.target_id}}/pyproject.toml @meltano/core-team -/docs/conf.py @meltano/core-team -/pyproject.toml @meltano/core-team diff --git a/.gitlab/issue_templates/Bug.md b/.gitlab/issue_templates/Bug.md deleted file mode 100644 index ee8f1b353..000000000 --- a/.gitlab/issue_templates/Bug.md +++ /dev/null @@ -1,27 +0,0 @@ -## Summary -[//]: # (Summarize the bug encountered concisely) - - -## Steps to reproduce -[//]: # (How one can reproduce the issue - this is very important) - - -## What is the current bug behavior? -[//]: # (What actually happens) - - -## What is the expected correct behavior? -[//]: # (What you should see instead) - - -## Relevant logs and/or screenshots - -[//]: # (Paste any relevant logs.) -[//]: # (Please use code blocks ``` to format console output, logs, and code, as it's very hard to read otherwise.) - - -## Possible fixes -[//]: # (If you can, link to the line of code that might be responsible for the problem) - - -/label ~Bug diff --git a/.gitlab/issue_templates/Feature Request.md b/.gitlab/issue_templates/Feature Request.md deleted file mode 100644 index 51e4699d6..000000000 --- a/.gitlab/issue_templates/Feature Request.md +++ /dev/null @@ -1,14 +0,0 @@ -## Summary -[//]: # (Concisely summarize the feature you are proposing.) - - -## Proposed benefits -[//]: # (Concisely summarize the benefits this feature would bring to yourself and other users.) - - -## Proposal details -[//]: # (In as much detail as you are able, describe the feature you'd like to build or would like to see built.) - - -## Best reasons not to build -[//]: # (Will this negatively affect any existing functionality? Do you anticipate any breaking changes versus what may already be working today? Make the counter-argument to your proposal here.) diff --git a/.gitlab/issue_templates/Release.md b/.gitlab/issue_templates/Release.md deleted file mode 100644 index 3a827de0f..000000000 --- a/.gitlab/issue_templates/Release.md +++ /dev/null @@ -1,65 +0,0 @@ -[//]: # (NOTE: This Release template is for Admin-Use only. If you've reached this template in error, please select another template from the list.) - -## Evergreen Releases - Prep Steps: - -An `Evergreen` release process means we are _always_ releasing. We open a new release ticket as soon as we've completed the prior release. (It's therefore the final step in this checklist.) - -## "Evergreen Prep" Checklist - -- [x] Open this Issue -- [ ] Indicate the version to be released here in the issue's title `Release vX.Y.Z` - - If the release number changes (from minor to major or patch, for instance), update the version here and in the issue description. - -### Readiness Checklist: - -`Engineering` team, to get ready for the upcoming release: - -1. [ ] Ensure any [already-merged commits](https://gitlab.com/meltano/sdk/-/commits/main) since the last release have [Changelog](https://gitlab.com/meltano/sdk/-/blob/main/CHANGELOG.md) entries (excepting non-user-impacting commits, such as docs fixes). -2. [ ] Create a comment in the `#engineering-team` slack channel with pending-but-not-merged MRs, potentially shipping. (Aka, the "burndown" list.) - - Otherwise a comment that all known merge candidates are already merged. -3. [ ] Create or link to a summary of MRs merged and/or expected in the `#marketing` Slack channel, with an `@channel` mention. - -### Release Checklist - -Rotating `assignee`, on the morning of the release: - -1. [ ] Changelog updates and version bump: - 1. [ ] Create a new branch named `release/vX.Y.Z` and a corresponding MR with the `Release` MR template. - 2. An automated pipeline (linked to the branch prefix `release/v*`) will - immediately and automatically bump the version and flush the changelog. - - [ ] Check this box to confirm the automated changelog flush and version bump are correct. - - You _do not_ need to wait for the CI pipeline. (An identical CI pipeline is already included in the below.) -from `main` branch. -2. [ ] [Cut a release tag](https://gitlab.com/meltano/sdk/-/tags/new) from your `release/vX.Y.Z` branch named `vX.Y.Z` with Message=`Release vX.Y.Z` - 1. In response to new tag creation, these steps are performed automatically in Gitlab pipelines: - 1. Abort if tag `vX.Y.Z` does not match output from `poetry version --short` - 2. Test _everything_. - 3. Publish to PyPi <!-- Meltano-only: and Docker -->. - 2. Validate publish once the pipeline finishes. (While the process is running, you can continue with next steps, such as changelog grooming.) - 1. [ ] Check this box when the tag's [pipeline](https://gitlab.com/meltano/sdk/-/pipelines) has completed (eta 40-60 minutes). - 2. [ ] Check this box when [PyPi publish](https://pypi.org/project/singer-sdk/#history) is confirmed. - <!-- Meltano-only: 5. [ ] Check this box when [Docker publish]() is confirmed. --> -3. Groom the changelog: - 1. [ ] Compare the [Changelog](https://gitlab.com/meltano/sdk/-/blob/main/CHANGELOG.md) against the `main` branch [commit history](https://gitlab.com/meltano/sdk/-/commits/main) and add any significant user-impacting updates (excluding docs and website updates, for instance). - 2. [ ] Review the Changelog for readability and typoes, committing fixes or updates if needed. - 3. [ ] Final changelog review: - - Open the Changelog in preview mode, mouse over each link and ensure tooltip descriptions match the resolved issue. - - Check contributor profile links to make sure they are correct. - 4. [ ] Merge the resulting MR to `main` with the merge commit message `Release vX.Y.Z` - 5. [ ] Check the [pending MRs](https://gitlab.com/meltano/sdk/-/merge_requests?sort=updated_desc) to make sure nothing is missing - 6. [ ] [Open the next `Release` issue](https://gitlab.com/meltano/sdk/-/issues/new?issuable_template=Release&issue[title]=Release%20vX.Y.Z&issue[issue_type]=issue). - -### Announcements, Marketing, and Promotion - -`Marketing` or `Product` team: - -1. [ ] Post-release announcement steps: - 1. [ ] Post announcement to Meltano slack: `#announcements` - 2. [ ] Cross-post (share) to `#sdk` - 3. Copy-paste to: - - [ ] `Singer` slack: `#meltano`, `#singer-sdk` - - [ ] `dbt` slack: `#tools-meltano` - 4. [ ] Blog post - 5. [ ] Tweet the blog post - ----------------- diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index cafc74c2e..b69200ca0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -32,7 +32,6 @@ repos: rev: 22.6.0 hooks: - id: black - language_version: python3.10 exclude: | (?x)^( cookiecutter/.*| diff --git a/CHANGELOG.md b/CHANGELOG.md index c8f8523c8..3d02b23c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## v0.7.0 (2022-07-21) + +### ✨ New + +- [#785](https://github.com/meltano/sdk/issues/785) Output full URL path in error messages + +### 🐛 Fixes + +- [#815](https://github.com/meltano/sdk/issues/815) Generate correct SQL target project from cookiecutter +- [#782](https://github.com/meltano/sdk/issues/782) Allow lists and dictionaries as types for default JSON values + +### 📚 Documentation Improvements + +- [#823](https://github.com/meltano/sdk/issues/823) Add link to the sdk for README generation regarding Stream Maps +- [#813](https://github.com/meltano/sdk/issues/813) Fix PyPI trove classifiers +- [#783](https://github.com/meltano/sdk/issues/783) Document using pipx inject for nox-poetry + ## v0.6.1 (2022-07-01) ### Fix diff --git a/cookiecutter/tap-template/{{cookiecutter.tap_id}}/pyproject.toml b/cookiecutter/tap-template/{{cookiecutter.tap_id}}/pyproject.toml index 16e240e04..b15f16e77 100644 --- a/cookiecutter/tap-template/{{cookiecutter.tap_id}}/pyproject.toml +++ b/cookiecutter/tap-template/{{cookiecutter.tap_id}}/pyproject.toml @@ -12,7 +12,7 @@ license = "Apache 2.0" [tool.poetry.dependencies] python = "<3.11,>=3.7.1" requests = "^2.25.1" -singer-sdk = "^0.6.1" +singer-sdk = "^0.7.0" [tool.poetry.dev-dependencies] pytest = "^6.2.5" diff --git a/cookiecutter/target-template/{{cookiecutter.target_id}}/pyproject.toml b/cookiecutter/target-template/{{cookiecutter.target_id}}/pyproject.toml index 7bec7be08..cfd1d4d25 100644 --- a/cookiecutter/target-template/{{cookiecutter.target_id}}/pyproject.toml +++ b/cookiecutter/target-template/{{cookiecutter.target_id}}/pyproject.toml @@ -12,7 +12,7 @@ license = "Apache 2.0" [tool.poetry.dependencies] python = "<3.11,>=3.7.1" requests = "^2.25.1" -singer-sdk = "^0.6.1" +singer-sdk = "^0.7.0" [tool.poetry.dev-dependencies] pytest = "^6.2.5" diff --git a/docs/conf.py b/docs/conf.py index 20307de46..c0bef7750 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -25,7 +25,7 @@ author = "Meltano Core Team and Contributors" # The full version, including alpha/beta/rc tags -release = "0.6.1" +release = "0.7.0" # -- General configuration --------------------------------------------------- diff --git a/poetry.lock b/poetry.lock index a94a1ee54..4cb1fd6d8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -470,7 +470,7 @@ python-versions = ">=3, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" [[package]] name = "mypy" -version = "0.961" +version = "0.971" description = "Optional static typing for Python" category = "dev" optional = false @@ -1060,7 +1060,7 @@ python-versions = "*" [[package]] name = "types-python-dateutil" -version = "2.8.18" +version = "2.8.19" description = "Typing stubs for python-dateutil" category = "dev" optional = false @@ -1068,7 +1068,7 @@ python-versions = "*" [[package]] name = "types-requests" -version = "2.28.1" +version = "2.28.3" description = "Typing stubs for requests" category = "dev" optional = false @@ -1160,7 +1160,7 @@ docs = ["sphinx", "sphinx-rtd-theme", "sphinx-copybutton", "myst-parser"] [metadata] lock-version = "1.1" python-versions = "<3.11,>=3.7.1" -content-hash = "1258575e354328fbeb751bd55f20959c844a521ebc1e7873ad9c9b6f8a094cef" +content-hash = "b74b78cb9ce97818736201985548a194774c710b054165ef5b0aa9073c0610c5" [metadata.files] alabaster = [ @@ -1575,29 +1575,29 @@ memoization = [ {file = "memoization-0.4.0.tar.gz", hash = "sha256:fde5e7cd060ef45b135e0310cfec17b2029dc472ccb5bbbbb42a503d4538a135"}, ] mypy = [ - {file = "mypy-0.961-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:697540876638ce349b01b6786bc6094ccdaba88af446a9abb967293ce6eaa2b0"}, - {file = "mypy-0.961-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b117650592e1782819829605a193360a08aa99f1fc23d1d71e1a75a142dc7e15"}, - {file = "mypy-0.961-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bdd5ca340beffb8c44cb9dc26697628d1b88c6bddf5c2f6eb308c46f269bb6f3"}, - {file = "mypy-0.961-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3e09f1f983a71d0672bbc97ae33ee3709d10c779beb613febc36805a6e28bb4e"}, - {file = "mypy-0.961-cp310-cp310-win_amd64.whl", hash = "sha256:e999229b9f3198c0c880d5e269f9f8129c8862451ce53a011326cad38b9ccd24"}, - {file = "mypy-0.961-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b24be97351084b11582fef18d79004b3e4db572219deee0212078f7cf6352723"}, - {file = "mypy-0.961-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f4a21d01fc0ba4e31d82f0fff195682e29f9401a8bdb7173891070eb260aeb3b"}, - {file = "mypy-0.961-cp36-cp36m-win_amd64.whl", hash = "sha256:439c726a3b3da7ca84a0199a8ab444cd8896d95012c4a6c4a0d808e3147abf5d"}, - {file = "mypy-0.961-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5a0b53747f713f490affdceef835d8f0cb7285187a6a44c33821b6d1f46ed813"}, - {file = "mypy-0.961-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0e9f70df36405c25cc530a86eeda1e0867863d9471fe76d1273c783df3d35c2e"}, - {file = "mypy-0.961-cp37-cp37m-win_amd64.whl", hash = "sha256:b88f784e9e35dcaa075519096dc947a388319cb86811b6af621e3523980f1c8a"}, - {file = "mypy-0.961-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d5aaf1edaa7692490f72bdb9fbd941fbf2e201713523bdb3f4038be0af8846c6"}, - {file = "mypy-0.961-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9f5f5a74085d9a81a1f9c78081d60a0040c3efb3f28e5c9912b900adf59a16e6"}, - {file = "mypy-0.961-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f4b794db44168a4fc886e3450201365c9526a522c46ba089b55e1f11c163750d"}, - {file = "mypy-0.961-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:64759a273d590040a592e0f4186539858c948302c653c2eac840c7a3cd29e51b"}, - {file = "mypy-0.961-cp38-cp38-win_amd64.whl", hash = "sha256:63e85a03770ebf403291ec50097954cc5caf2a9205c888ce3a61bd3f82e17569"}, - {file = "mypy-0.961-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f1332964963d4832a94bebc10f13d3279be3ce8f6c64da563d6ee6e2eeda932"}, - {file = "mypy-0.961-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:006be38474216b833eca29ff6b73e143386f352e10e9c2fbe76aa8549e5554f5"}, - {file = "mypy-0.961-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9940e6916ed9371809b35b2154baf1f684acba935cd09928952310fbddaba648"}, - {file = "mypy-0.961-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a5ea0875a049de1b63b972456542f04643daf320d27dc592d7c3d9cd5d9bf950"}, - {file = "mypy-0.961-cp39-cp39-win_amd64.whl", hash = "sha256:1ece702f29270ec6af25db8cf6185c04c02311c6bb21a69f423d40e527b75c56"}, - {file = "mypy-0.961-py3-none-any.whl", hash = "sha256:03c6cc893e7563e7b2949b969e63f02c000b32502a1b4d1314cabe391aa87d66"}, - {file = "mypy-0.961.tar.gz", hash = "sha256:f730d56cb924d371c26b8eaddeea3cc07d78ff51c521c6d04899ac6904b75492"}, + {file = "mypy-0.971-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f2899a3cbd394da157194f913a931edfd4be5f274a88041c9dc2d9cdcb1c315c"}, + {file = "mypy-0.971-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:98e02d56ebe93981c41211c05adb630d1d26c14195d04d95e49cd97dbc046dc5"}, + {file = "mypy-0.971-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:19830b7dba7d5356d3e26e2427a2ec91c994cd92d983142cbd025ebe81d69cf3"}, + {file = "mypy-0.971-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:02ef476f6dcb86e6f502ae39a16b93285fef97e7f1ff22932b657d1ef1f28655"}, + {file = "mypy-0.971-cp310-cp310-win_amd64.whl", hash = "sha256:25c5750ba5609a0c7550b73a33deb314ecfb559c350bb050b655505e8aed4103"}, + {file = "mypy-0.971-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d3348e7eb2eea2472db611486846742d5d52d1290576de99d59edeb7cd4a42ca"}, + {file = "mypy-0.971-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3fa7a477b9900be9b7dd4bab30a12759e5abe9586574ceb944bc29cddf8f0417"}, + {file = "mypy-0.971-cp36-cp36m-win_amd64.whl", hash = "sha256:2ad53cf9c3adc43cf3bea0a7d01a2f2e86db9fe7596dfecb4496a5dda63cbb09"}, + {file = "mypy-0.971-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:855048b6feb6dfe09d3353466004490b1872887150c5bb5caad7838b57328cc8"}, + {file = "mypy-0.971-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:23488a14a83bca6e54402c2e6435467a4138785df93ec85aeff64c6170077fb0"}, + {file = "mypy-0.971-cp37-cp37m-win_amd64.whl", hash = "sha256:4b21e5b1a70dfb972490035128f305c39bc4bc253f34e96a4adf9127cf943eb2"}, + {file = "mypy-0.971-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:9796a2ba7b4b538649caa5cecd398d873f4022ed2333ffde58eaf604c4d2cb27"}, + {file = "mypy-0.971-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5a361d92635ad4ada1b1b2d3630fc2f53f2127d51cf2def9db83cba32e47c856"}, + {file = "mypy-0.971-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b793b899f7cf563b1e7044a5c97361196b938e92f0a4343a5d27966a53d2ec71"}, + {file = "mypy-0.971-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d1ea5d12c8e2d266b5fb8c7a5d2e9c0219fedfeb493b7ed60cd350322384ac27"}, + {file = "mypy-0.971-cp38-cp38-win_amd64.whl", hash = "sha256:23c7ff43fff4b0df93a186581885c8512bc50fc4d4910e0f838e35d6bb6b5e58"}, + {file = "mypy-0.971-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1f7656b69974a6933e987ee8ffb951d836272d6c0f81d727f1d0e2696074d9e6"}, + {file = "mypy-0.971-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d2022bfadb7a5c2ef410d6a7c9763188afdb7f3533f22a0a32be10d571ee4bbe"}, + {file = "mypy-0.971-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef943c72a786b0f8d90fd76e9b39ce81fb7171172daf84bf43eaf937e9f220a9"}, + {file = "mypy-0.971-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d744f72eb39f69312bc6c2abf8ff6656973120e2eb3f3ec4f758ed47e414a4bf"}, + {file = "mypy-0.971-cp39-cp39-win_amd64.whl", hash = "sha256:77a514ea15d3007d33a9e2157b0ba9c267496acf12a7f2b9b9f8446337aac5b0"}, + {file = "mypy-0.971-py3-none-any.whl", hash = "sha256:0d054ef16b071149917085f51f89555a576e2618d5d9dd70bd6eea6410af3ac9"}, + {file = "mypy-0.971.tar.gz", hash = "sha256:40b0f21484238269ae6a57200c807d80debc6459d444c0489a102d7c6a75fa56"}, ] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, @@ -1991,12 +1991,12 @@ typed-ast = [ {file = "typed_ast-1.4.3.tar.gz", hash = "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65"}, ] types-python-dateutil = [ - {file = "types-python-dateutil-2.8.18.tar.gz", hash = "sha256:8695c7d7a5b1aef4002f3ab4e1247e23b1d41cd7cc1286d4594c2d8c5593c991"}, - {file = "types_python_dateutil-2.8.18-py3-none-any.whl", hash = "sha256:fd5ed97262b76ae684695ea38ace8dd7c1bc9491aba7eb4edf6654b7ecabc870"}, + {file = "types-python-dateutil-2.8.19.tar.gz", hash = "sha256:bfd3eb39c7253aea4ba23b10f69b017d30b013662bb4be4ab48b20bbd763f309"}, + {file = "types_python_dateutil-2.8.19-py3-none-any.whl", hash = "sha256:6284df1e4783d8fc6e587f0317a81333856b872a6669a282f8a325342bce7fa8"}, ] types-requests = [ - {file = "types-requests-2.28.1.tar.gz", hash = "sha256:acd8ed78509d27bdf04cddcc05f7066dfde4d30dd7dba67b808cdb1141d62ffe"}, - {file = "types_requests-2.28.1-py3-none-any.whl", hash = "sha256:b097692e124001f0ed5e4490245bb090f5e8e929819972f9ace84f9c3e146e8c"}, + {file = "types-requests-2.28.3.tar.gz", hash = "sha256:fb9ea69311766967f9e91861211ec7449f6484025b766ea709689c0dbb29d7ba"}, + {file = "types_requests-2.28.3-py3-none-any.whl", hash = "sha256:66f0e427708588d4dac2f365a0b2c1ad8f31780429fd8ad193fec93139b22112"}, ] types-urllib3 = [ {file = "types-urllib3-1.26.7.tar.gz", hash = "sha256:cfd1fbbe4ba9a605ed148294008aac8a7b8b7472651d1cc357d507ae5962e3d2"}, diff --git a/pyproject.toml b/pyproject.toml index 33f20c87b..308c29129 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "singer-sdk" -version = "0.6.1" +version = "0.7.0" description = "A framework for building Singer taps" authors = ["Meltano Team and Contributors"] maintainers = ["Meltano Team and Contributors"] @@ -66,7 +66,7 @@ docs = ["sphinx", "sphinx-rtd-theme", "sphinx-copybutton", "myst-parser"] # snowflake-connector-python = "2.0.4" # Removed: Too many version conflicts! pytest = "^7.1.2" xdoctest = "^1.0.1" -mypy = "^0.961" +mypy = "^0.971" cookiecutter = "^2.1.1" PyYAML = "^6.0" pyarrow = "^8.0.0" @@ -74,8 +74,8 @@ freezegun = "^1.2.1" viztracer = "^0.15.3" requests-mock = "^1.9.3" sqlalchemy2-stubs = {version = "^0.0.2a24", allow-prereleases = true} -types-python-dateutil = "^2.8.18" -types-requests = "^2.28.1" +types-python-dateutil = "^2.8.19" +types-requests = "^2.28.3" coverage = {extras = ["toml"], version = "^6.4"} # Cookiecutter tests @@ -102,7 +102,7 @@ markers = [ [tool.commitizen] name = "cz_customize" -version = "0.6.1" +version = "0.7.0" tag_format = "v$major.$minor.$patch$prerelease" version_files = [ "docs/conf.py", diff --git a/singer_sdk/helpers/capabilities.py b/singer_sdk/helpers/capabilities.py index 4a3379c75..82e33f7e6 100644 --- a/singer_sdk/helpers/capabilities.py +++ b/singer_sdk/helpers/capabilities.py @@ -22,7 +22,9 @@ Property( "stream_maps", ObjectType(), - description="Config object for stream maps capability.", + description="Config object for stream maps capability. " + + "For more information check out " + + "[Stream Maps](https://sdk.meltano.com/en/latest/stream_maps.html).", ), Property( "stream_map_config",