From 06aada3f5da2b006c544de304dc9ee3a6f7a5aa9 Mon Sep 17 00:00:00 2001 From: ahuang11 Date: Wed, 12 Oct 2022 10:36:16 -0700 Subject: [PATCH 1/2] Add cruft --- .cruft.json | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .cruft.json diff --git a/.cruft.json b/.cruft.json new file mode 100644 index 00000000..7352bbc6 --- /dev/null +++ b/.cruft.json @@ -0,0 +1,20 @@ +{ + "template": "https://github.com/PrefectHQ/prefect-collection-template", + "commit": "be43f39886f1e2a4331697d1ea037187072588df", + "checkout": null, + "context": { + "cookiecutter": { + "full_name": "Prefect Technologies, Inc.", + "email": "help@prefect.io", + "github_organization": "PrefectHQ", + "collection_name": "prefect-aws", + "collection_slug": "prefect_aws", + "collection_short_description": "Prefect integrations for interacting with AWS.", + "_copy_without_render": [ + ".github/workflows/*.yml" + ], + "_template": "https://github.com/PrefectHQ/prefect-collection-template" + } + }, + "directory": null +} From 78710a353095cb9d047587e1950b4f85b6298475 Mon Sep 17 00:00:00 2001 From: ahuang11 Date: Wed, 12 Oct 2022 10:41:57 -0700 Subject: [PATCH 2/2] Cruft update --- .cruft.json | 2 +- .github/PULL_REQUEST_TEMPLATE.md | 36 +++++++++++--- .github/workflows/add-to-project.yml | 24 +++++++++ .github/workflows/template-sync.yml | 46 ++++++++++++++++++ MAINTAINERS.md | 16 ++++-- MANIFEST.in | 12 +++++ README.md | 9 ++++ .../img/prefect-logo-mark-solid-white-500.png | Bin 0 -> 16294 bytes mkdocs.yml | 7 +-- requirements-dev.txt | 1 + setup.cfg | 1 + 11 files changed, 138 insertions(+), 16 deletions(-) create mode 100644 .github/workflows/add-to-project.yml create mode 100644 .github/workflows/template-sync.yml create mode 100644 docs/img/prefect-logo-mark-solid-white-500.png diff --git a/.cruft.json b/.cruft.json index 7352bbc6..1fcfab37 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/PrefectHQ/prefect-collection-template", - "commit": "be43f39886f1e2a4331697d1ea037187072588df", + "commit": "ff7c2498c022e0722e9ed99a09e7bc58d22b94d9", "checkout": null, "context": { "cookiecutter": { diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 97c4eefd..3c0b0816 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,10 +1,32 @@ - + +We've got a few requests to help us review contributions: -## Relevant Issue(s) - +- Make sure that your title neatly summarizes the proposed changes. +- Provide a short overview of the change and the value it adds. +- Share an example to help us understand the change in user experience. +- Run `pre-commit install && pre-commit run --all` for linting. -## Checklist -- [ ] Summarized PR's changes in the **Unreleased** section of the [CHANGELOG.md](https://github.com/PrefectHQ/prefect-aws/blob/main/CHANGELOG.md) +Happy engineering! +--> + + + + +Closes # + +### Example + + +### Checklist + + +- [ ] This pull request references any related issue by including "Closes #" + - If no issue exists and your change is not a small fix, please [create an issue](https://github.com/PrefectHQ/prefect-aws/issues/new/choose) first. +- [ ] This pull request includes tests or only affects documentation. +- [ ] Summarized PR's changes in [CHANGELOG.md](https://github.com/PrefectHQ/prefect-aws/blob/main/CHANGELOG.md) diff --git a/.github/workflows/add-to-project.yml b/.github/workflows/add-to-project.yml new file mode 100644 index 00000000..764e0c26 --- /dev/null +++ b/.github/workflows/add-to-project.yml @@ -0,0 +1,24 @@ +name: Add issues to integrations board + +on: + issues: + types: + - opened + +jobs: + + add-to-project: + name: Add issue to project + runs-on: ubuntu-latest + steps: + - uses: tibdex/github-app-token@v1 + id: generate-token + name: Generate GitHub token + with: + app_id: ${{ secrets.SYNC_APP_ID }} + private_key: ${{ secrets.SYNC_APP_PRIVATE_KEY }} + + - uses: actions/add-to-project@v0.3.0 + with: + project-url: ${{ secrets.ADD_TO_PROJECT_URL }} + github-token: ${{ steps.generate-token.outputs.token }} diff --git a/.github/workflows/template-sync.yml b/.github/workflows/template-sync.yml new file mode 100644 index 00000000..0a8bb359 --- /dev/null +++ b/.github/workflows/template-sync.yml @@ -0,0 +1,46 @@ +name: Template Synchronization +on: + schedule: + - cron: "0 0 * * *" + workflow_dispatch: + +jobs: + submit-update-pr: + name: Submit update PR + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: 3.9 + + - name: Install cruft + run: pip install "cookiecutter>=1.7.3,<2.0.0" cruft + + - name: Perform updates + run: cruft update -y + + - uses: tibdex/github-app-token@v1 + id: generate-token + name: Generate GitHub token + with: + app_id: ${{ secrets.SYNC_APP_ID }} + private_key: ${{ secrets.SYNC_APP_PRIVATE_KEY }} + + - name: Submit PR + uses: peter-evans/create-pull-request@v4 + with: + commit-message: Updating collection with changes to prefect-collection-template + token: ${{ steps.generate-token.outputs.token }} + branch: sync-with-template + delete-branch: true + title: Sync Collection with changes to prefect-collection-template + body: | + Automated PR created to propagate changes from prefect-collection-template to this collection + + Feel free to make any necessary changes to this PR before merging. + labels: | + template sync + automated pr diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 8dd10d9d..a0379935 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -46,7 +46,7 @@ pip install -e ".[dev]" pre-commit install ``` -To verify the set up was successful you can run the following: +To verify the setup was successful you can run the following: - Run the tests for tasks and flows in the collection: ```bash @@ -69,23 +69,29 @@ This collection has been setup to with [mkdocs](https://www.mkdocs.org/) for aut ### CI Pipeline -This collection comes with [GitHub Actions](https://docs.github.com/en/actions) for testing and linting. To add additional actions, you can add jobs in the `.github/workflows` folder. On pull request, the pipeline will run linting via [`black`](https://black.readthedocs.io/en/stable/), [`flake8`](https://flake8.pycqa.org/en/latest/), [`interrogate`](https://interrogate.readthedocs.io/en/latest/), and unit tests via `pytest` alongside `coverage`. +This collection comes with [GitHub Actions](https://docs.github.com/en/actions) for testing and linting. To add additional actions, you can add jobs in the `.github/workflows` folder. Upon a pull request, the pipeline will run linting via [`black`](https://black.readthedocs.io/en/stable/), [`flake8`](https://flake8.pycqa.org/en/latest/), [`interrogate`](https://interrogate.readthedocs.io/en/latest/), and unit tests via `pytest` alongside `coverage`. `interrogate` will tell you which methods, functions, classes, and modules have docstrings, and which do not--the job has a fail threshold of 95%, meaning that it will fail if more than 5% of the codebase is undocumented. We recommend following the [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings) for docstring format. Simiarly, `coverage` ensures that the codebase includes tests--the job has a fail threshold of 80%, meaning that it will fail if more than 20% of the codebase is missing tests. +### Track Issues on Project Board + +To automatically add issues to a GitHub Project Board, you'll need a [secret added](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-an-environment) to the repository. Specifically, a secret named `ADD_TO_PROJECT_URL`, formatted like `https://github.com/orgs//projects/`. + ### Package and Publish GitHub actions will handle packaging and publishing of your collection to [PyPI](https://pypi.org/) so other Prefect users can your collection in their flows. -In order to publish to PyPI, you'll need a PyPI account and generate an API token to authenticate with PyPI when publishing new versions of your collection. The [PyPI documentation](https://pypi.org/help/#apitoken) outlines the steps needed to get an API token. +To publish to PyPI, you'll need a PyPI account and to generate an API token to authenticate with PyPI when publishing new versions of your collection. The [PyPI documentation](https://pypi.org/help/#apitoken) outlines the steps needed to get an API token. Once you've obtained a PyPI API token, [create a GitHub secret](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) named `PYPI_API_TOKEN`. -To create publish a new version of your collection, [create a new GitHub release](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release) and tag it with the version that you want to deploy (e.g. v0.3.2). This will trigger workflow to publish the new version on PyPI and deploy the updated docs to GitHub pages. +To publish a new version of your collection, [create a new GitHub release](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release) and tag it with the version that you want to deploy (e.g. v0.3.2). This will trigger a workflow to publish the new version on PyPI and deploy the updated docs to GitHub pages. + +Upon publishing, a `docs` branch is automatically created. To hook this up to GitHub Pages, simply head over to https://github.com/PrefectHQ/prefect-aws/settings/pages, select `docs` under the dropdown menu, keep the default `/root` folder, `Save`, and upon refresh, you should see a prompt stating "Your site is published at https://PrefectHQ.github.io/prefect-aws". Don't forget to add this link to the repo's "About" section, under "Website" so users can access the docs easily. -Upon publishing, a `docs` branch is automatically created. To hook this up to GitHub Pages, simply head over to https://github.com/PrefectHQ/prefect-aws/settings/pages, select `docs` under the dropdown menu, keep the default `/root` folder, `Save`, and upon refresh, you should see a prompt stating "Your site is published at https://.github.io/". +Feel free to [submit your collection](https://orion-docs.prefect.io/collections/overview/#listing-in-the-collections-catalog) to the Prefect [Collections Catalog](https://orion-docs.prefect.io/collections/catalog/)! ## Further guidance diff --git a/MANIFEST.in b/MANIFEST.in index f1fcd1f7..5054a010 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,2 +1,14 @@ +# Things to always exclude +global-exclude .git* +global-exclude .ipynb_checkpoints +global-exclude *.py[co] +global-exclude __pycache__/** + +# Top-level Config include versioneer.py include prefect_aws/_version.py +include LICENSE +include MANIFEST.in +include setup.cfg +include requirements.txt +include requirements-dev.txt diff --git a/README.md b/README.md index 0b7007ed..fc3433e4 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,13 @@ Install `prefect-aws` ```bash pip install prefect-aws ``` +Then, register to [view the block](https://orion-docs.prefect.io/ui/blocks/) on Prefect Cloud: + +```bash +prefect block register -m prefect_aws.credentials +``` + +Note, to use the `load` method on Blocks, you must already have a block document [saved through code](https://orion-docs.prefect.io/concepts/blocks/#saving-blocks) or [saved through the UI](https://orion-docs.prefect.io/ui/blocks/). ### AWS Authentication @@ -131,6 +138,8 @@ If you encounter and bugs while using `prefect-aws`, feel free to open an issue If you have any questions or issues while using `prefect-aws`, you can find help in either the [Prefect Discourse forum](https://discourse.prefect.io/) or the [Prefect Slack community](https://prefect.io/slack) +Feel free to ⭐️ or watch [`prefect-aws`](https://github.com/PrefectHQ/prefect-aws) for updates too! + ## Development If you'd like to install a version of `prefect-aws` for development, first clone the repository and then perform an editable install with `pip`: diff --git a/docs/img/prefect-logo-mark-solid-white-500.png b/docs/img/prefect-logo-mark-solid-white-500.png new file mode 100644 index 0000000000000000000000000000000000000000..f83aa6ef6a34ee4c596bd1c7c2046a2f05cb9342 GIT binary patch literal 16294 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 1.0.2 boto3-stubs >= 1.24.39 +pillow diff --git a/setup.cfg b/setup.cfg index 396ddf63..1846654a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -23,6 +23,7 @@ parentdir_prefix = [tool:interrogate] ignore-init-module = True +ignore_init_method = True exclude = prefect_aws/_version.py, tests, setup.py, versioneer.py, docs, site fail-under = 95 omit-covered-files = True