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]: "
+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 .
- 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.
-
-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",