Metadata-Version: 2.3
Name: netbek-dw-lib
Version: 1.36.4
Summary: Tools for working with Postgres, ClickHouse, and DuckDB.
Requires-Dist: jinja2>=3.1.6
Requires-Dist: lazy-loader>=0.5
Requires-Dist: packaging>=26.0
Requires-Dist: psutil>=7.1.3
Requires-Dist: pydantic>=2.12.4
Requires-Dist: pydash>=8.0.5
Requires-Dist: requests>=2.32.5
Requires-Dist: ruamel-yaml>=0.19.1
Requires-Dist: sqlalchemy>=2.0.44
Requires-Dist: sqlglot>=28.0.0,<28.1.0
Requires-Dist: sqlparse>=0.5.3
Requires-Dist: clickhouse-connect>=0.10.0 ; extra == 'clickhouse'
Requires-Dist: sqlglot>=28.0.0,<28.1.0 ; extra == 'clickhouse'
Requires-Dist: dagster>=1.12.19 ; extra == 'dagster'
Requires-Dist: dagster-dbt>=0.28.19 ; extra == 'dagster'
Requires-Dist: clickhouse-connect>=0.10.0 ; extra == 'dbt'
Requires-Dist: dbt-clickhouse>=1.10.0 ; extra == 'dbt'
Requires-Dist: livereload>=2.7.1 ; extra == 'dbt'
Requires-Dist: opentelemetry-sdk>=1.39.1 ; extra == 'dbt'
Requires-Dist: pydantic>=2.12.4 ; extra == 'dbt'
Requires-Dist: pydash>=8.0.5 ; extra == 'dbt'
Requires-Dist: ruamel-yaml>=0.19.1 ; extra == 'dbt'
Requires-Dist: sqlglot>=28.0.0,<28.1.0 ; extra == 'dbt'
Requires-Dist: duckdb>=1.4.2 ; extra == 'duckdb'
Requires-Dist: duckdb-engine>=0.17.0 ; extra == 'duckdb'
Requires-Dist: sqlglot>=28.0.0,<28.1.0 ; extra == 'duckdb'
Requires-Dist: boto3>=1.41.1 ; extra == 'loader'
Requires-Dist: chdb>=3.7.2 ; extra == 'loader'
Requires-Dist: jinja2>=3.1.6 ; extra == 'loader'
Requires-Dist: pydantic>=2.12.4 ; extra == 'loader'
Requires-Dist: rich>=14.2.0 ; extra == 'loader'
Requires-Dist: clickhouse-connect>=0.10.0 ; extra == 'peerdb'
Requires-Dist: pydantic>=2.12.4 ; extra == 'peerdb'
Requires-Dist: pydash>=8.0.5 ; extra == 'peerdb'
Requires-Dist: requests>=2.32.5 ; extra == 'peerdb'
Requires-Dist: rich>=14.2.0 ; extra == 'peerdb'
Requires-Dist: ruamel-yaml>=0.19.1 ; extra == 'peerdb'
Requires-Dist: sqlalchemy>=2.0.44 ; extra == 'peerdb'
Requires-Dist: sqlglot>=28.0.0 ; extra == 'peerdb'
Requires-Dist: psycopg[binary]>=3.3.3 ; extra == 'psycopg'
Requires-Dist: sqlglot>=28.0.0,<28.1.0 ; extra == 'psycopg'
Requires-Dist: psycopg2-binary>=2.9.11 ; extra == 'psycopg2'
Requires-Dist: sqlglot>=28.0.0,<28.1.0 ; extra == 'psycopg2'
Requires-Dist: polyfactory>=3.0.0 ; extra == 'sqlmodel'
Requires-Dist: sqlmodel>=0.0.27 ; extra == 'sqlmodel'
Requires-Python: >=3.13, <3.14
Provides-Extra: clickhouse
Provides-Extra: dagster
Provides-Extra: dbt
Provides-Extra: duckdb
Provides-Extra: loader
Provides-Extra: peerdb
Provides-Extra: psycopg
Provides-Extra: psycopg2
Provides-Extra: sqlmodel
Description-Content-Type: text/markdown

# dw-lib

Tools for working with Postgres, ClickHouse, and DuckDB.

## Development: Installation

1. Clone the repo:

    ```shell
    git clone git@github.com:netbek/dw-lib.git
    ```

2. Install [Docker Engine v23 or higher](https://docs.docker.com/engine/install/) and [Docker Compose v2 or higher](https://docs.docker.com/compose/install/). Follow the links for instructions or run this script:

    ```shell
    ./scripts/install.sh docker
    ```

3. Install Mise and add activation to `~/.bashrc`, e.g.

    ```shell
    curl -fsSL https://github.com/jdx/mise/releases/download/v2026.7.13/install.sh | sh
    ```

    See [other installation methods](https://mise.en.dev/installing-mise.html).

4. Trust `mise.toml`:

    ```shell
    mise trust
    ```

5. Create a [PyPI API token](https://pypi.org/manage/account/#api-tokens), and add the token to the system keyring as the password:

    ```shell
    keyring set pypi-dw-lib __token__
    ```

## Development: Usage

Build and publish the Python distribution package:

```shell
make bump-version [major|minor|patch]
git push
make build
make create-release
make publish
```

## License

Copyright (c) 2025 Hein Bekker. Licensed under the GNU Affero General Public License, version 3.
