diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..77222e3 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,66 @@ +name: Release + +on: + push: + +jobs: + build: + name: Build and Inspect + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: hynek/build-and-inspect-python-package@v2 + + publish: + name: Publish to PyPI + runs-on: ubuntu-latest + needs: [build] + environment: + name: pypi + url: https://pypi.org/p/dbt-ext + if: startsWith(github.ref, 'refs/tags/') + permissions: + id-token: write # Needed for OIDC PyPI publishing + steps: + - uses: actions/download-artifact@v4 + with: + name: Packages + path: dist + - name: Publish + uses: pypa/gh-action-pypi-publish@v1.9.0 + + upload-to-release: + name: Upload files to release + runs-on: ubuntu-latest + needs: [build] + if: startsWith(github.ref, 'refs/tags/') + permissions: + contents: write # Needed for uploading files to the release + id-token: write # Needed for attestations + attestations: write # Needed for attestations + + steps: + - uses: actions/download-artifact@v4 + with: + name: Packages + path: dist + - name: Upload wheel and sdist to release + uses: svenstaro/upload-release-action@v2 + with: + file: dist/singer_sdk* + tag: ${{ github.ref }} + overwrite: true + file_glob: true + - uses: actions/attest-build-provenance@v1 + id: attest + with: + subject-path: "./dist/edk*" + - name: Upload attestations to release + uses: svenstaro/upload-release-action@v2 + with: + file: ${{ steps.attest.outputs.bundle-path }} + tag: ${{ github.ref }} + overwrite: true + asset_name: attestations.intoto.jsonl diff --git a/dbt_ext/dbt_files/__init__.py b/dbt_ext/dbt_files/__init__.py new file mode 100644 index 0000000..c05b4a1 --- /dev/null +++ b/dbt_ext/dbt_files/__init__.py @@ -0,0 +1 @@ +"""Files used to initialize a dbt project.""" diff --git a/files_dbt_ext/bundle/transform/.gitignore b/dbt_ext/dbt_files/bundle/transform/.gitignore similarity index 100% rename from files_dbt_ext/bundle/transform/.gitignore rename to dbt_ext/dbt_files/bundle/transform/.gitignore diff --git a/files_dbt_ext/bundle/transform/dbt_project.yml b/dbt_ext/dbt_files/bundle/transform/dbt_project.yml similarity index 100% rename from files_dbt_ext/bundle/transform/dbt_project.yml rename to dbt_ext/dbt_files/bundle/transform/dbt_project.yml diff --git a/files_dbt_ext/bundle/transform/models/.gitkeep b/dbt_ext/dbt_files/bundle/transform/models/.gitkeep similarity index 100% rename from files_dbt_ext/bundle/transform/models/.gitkeep rename to dbt_ext/dbt_files/bundle/transform/models/.gitkeep diff --git a/files_dbt_ext/profiles/athena/profiles.yml b/dbt_ext/dbt_files/profiles/athena/profiles.yml similarity index 100% rename from files_dbt_ext/profiles/athena/profiles.yml rename to dbt_ext/dbt_files/profiles/athena/profiles.yml diff --git a/files_dbt_ext/profiles/bigquery/profiles.yaml b/dbt_ext/dbt_files/profiles/bigquery/profiles.yaml similarity index 100% rename from files_dbt_ext/profiles/bigquery/profiles.yaml rename to dbt_ext/dbt_files/profiles/bigquery/profiles.yaml diff --git a/files_dbt_ext/profiles/duckdb/profiles.yml b/dbt_ext/dbt_files/profiles/duckdb/profiles.yml similarity index 100% rename from files_dbt_ext/profiles/duckdb/profiles.yml rename to dbt_ext/dbt_files/profiles/duckdb/profiles.yml diff --git a/files_dbt_ext/profiles/postgres/profiles.yml b/dbt_ext/dbt_files/profiles/postgres/profiles.yml similarity index 100% rename from files_dbt_ext/profiles/postgres/profiles.yml rename to dbt_ext/dbt_files/profiles/postgres/profiles.yml diff --git a/files_dbt_ext/profiles/redshift/profiles.yml b/dbt_ext/dbt_files/profiles/redshift/profiles.yml similarity index 100% rename from files_dbt_ext/profiles/redshift/profiles.yml rename to dbt_ext/dbt_files/profiles/redshift/profiles.yml diff --git a/files_dbt_ext/profiles/snowflake/profiles.yml b/dbt_ext/dbt_files/profiles/snowflake/profiles.yml similarity index 100% rename from files_dbt_ext/profiles/snowflake/profiles.yml rename to dbt_ext/dbt_files/profiles/snowflake/profiles.yml diff --git a/dbt_ext/extension.py b/dbt_ext/extension.py index b42600c..04e4360 100644 --- a/dbt_ext/extension.py +++ b/dbt_ext/extension.py @@ -14,10 +14,12 @@ from meltano.edk.process import Invoker, log_subprocess_error from meltano.edk.types import ExecArg +from . import dbt_files + try: - from importlib.resources import files as ir_files + from importlib import resources except ImportError: - from importlib_resources import files as ir_files + import importlib_resources as resources log = structlog.get_logger() @@ -130,7 +132,9 @@ def initialize(self, force: bool = False) -> None: log.info("creating dbt project directory", path=self.dbt_project_dir) self.dbt_project_dir.mkdir(parents=True, exist_ok=True) - for entry in ir_files("files_dbt_ext.bundle.transform").iterdir(): + files_dir = resources.files(dbt_files) + + for entry in files_dir.joinpath("bundle", "transform").iterdir(): if entry.name == "__pycache__": continue log.debug(f"deploying {entry.name}", entry=entry, dst=self.dbt_project_dir) @@ -145,7 +149,7 @@ def initialize(self, force: bool = False) -> None: log.info("creating dbt profiles directory", path=self.dbt_profiles_dir) self.dbt_profiles_dir.mkdir(parents=True, exist_ok=True) - for entry in ir_files("files_dbt_ext.profiles").iterdir(): + for entry in files_dir.joinpath("profiles").iterdir(): if entry.name == self.dbt_ext_type and entry.is_dir(): log.debug( f"deploying {entry.name} profile", diff --git a/files_dbt_ext/bundle/__init__.py b/files_dbt_ext/bundle/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/files_dbt_ext/bundle/transform/__init__.py b/files_dbt_ext/bundle/transform/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/files_dbt_ext/profiles/__init__.py b/files_dbt_ext/profiles/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pyproject.toml b/pyproject.toml index f7b8524..5416eff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,6 @@ license = "Apache-2.0" packages = [ { include = "dbt_ext" }, - { include = "files_dbt_ext" }, ] # If you need to static assets with your extension, you can add them here.