Metadata-Version: 2.3
Name: netbek-dw-lib
Version: 1.32.10
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: sqlmodel>=0.0.27
Requires-Dist: sqlparse>=0.5.3
Requires-Dist: clickhouse-connect>=0.10.0 ; extra == 'clickhouse'
Requires-Dist: clickhouse-sqlalchemy>=0.3.2 ; extra == 'clickhouse'
Requires-Dist: sqlglot>=28.0.0,<28.1.0 ; extra == 'clickhouse'
Requires-Dist: sqlmodel>=0.0.27 ; 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: clickhouse-sqlalchemy>=0.3.2 ; 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: polyfactory>=3.0.0 ; 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: sqlmodel>=0.0.27 ; 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: sqlmodel>=0.0.27 ; 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: clickhouse-sqlalchemy>=0.3.2 ; 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: sqlmodel>=0.0.27 ; extra == 'peerdb'
Requires-Dist: psycopg[binary]>=3.3.3 ; extra == 'psycopg'
Requires-Dist: sqlglot>=28.0.0,<28.1.0 ; extra == 'psycopg'
Requires-Dist: sqlmodel>=0.0.27 ; extra == 'psycopg'
Requires-Dist: psycopg2-binary>=2.9.11 ; extra == 'psycopg2'
Requires-Dist: sqlglot>=28.0.0,<28.1.0 ; extra == 'psycopg2'
Requires-Dist: sqlmodel>=0.0.27 ; extra == 'psycopg2'
Requires-Python: ==3.13.*
Provides-Extra: clickhouse
Provides-Extra: dagster
Provides-Extra: dbt
Provides-Extra: duckdb
Provides-Extra: loader
Provides-Extra: peerdb
Provides-Extra: psycopg
Provides-Extra: psycopg2
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 Nix:

    ```shell
    sh <(curl -L https://nixos.org/nix/install) --daemon
    ```

4. Configure Nix. Edit `/etc/nix/nix.conf` (for a multi-user installation) or `~/.config/nix/nix.conf` (for a single-user installation) to include the following lines:

    ```shell
    experimental-features = nix-command flakes
    trusted-users = root <USER>
    ```

    Replace `<USER>` with your username on your computer.

5. Install direnv:

    ```shell
    sudo apt install direnv
    ```

6. Enable direnv in your shell by adding a line to your shell configuration file.

    For Bash, edit `~/.bashrc`:

    ```shell
    eval "$(direnv hook bash)"
    ```

7. Allow `.envrc`:

    ```shell
    direnv allow
    ```

8. Enter a [PyPI API token](https://pypi.org/manage/account/#api-tokens) as the password in `.pypirc`.

## 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.
