Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Contribution guidelines #227

Merged
merged 1 commit into from
Feb 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Contributing Guidelines

This project would not be here without its community, so contributions have and will always be welcome!

## Questions

If you have a **question** or an **idea**, please ensure it does not already exist and create a [discussion](https://github.com/gouline/dbt-metabase/discussions) under the appropriate category. This makes accepted answers and conversations available to others in the same situation.

## Issues

When reporting a bug, please create an [issue](https://github.com/gouline/issues) and provide as much content as humanly possible:

* Package version (`dbt-metabase --version` or `pip show dbt-metabase`)
* Environment details, e.g. operating system, cloud provider, database
* Steps to reproduce
* Expected vs actual results
* Sample code, logs, screenshots

## Pull Requests

Code contributions must be reviewed by the maintainer in a [pull request](https://github.com/gouline/pulls). This project only has one maintainer, so please be patient if the review process takes days or weeks.

Unless your change is a bug fix or an incremental addition, consider proposing your approach in a discussion or an issue first. While your contributions are appreciated, not everything is suitable for this project, and seeking feedback in advance avoids wasting your time implementing something that gets rejected.

### Validation

While checks and tests are run automatically on pull requests, GitHub Actions requires maintainers to manually approve new contributors for security reasons. This means you could spend days waiting for a code review only to be immediately rejected because validation failed. To avoid this, please **run checks locally before you commit**!

To execute only checks (you can also run each check separately, e.g. `check-fmt`):

```
make check
```

To execute only tests:

```
make test
```

The most convenient way to fix formatting and imports, and run checks and tests, with one command:

```
make pre
```

### Tests

Any code you contribute **must have unit tests**. Bug fixes in particular require at least one test case that fails before your fix and succeeds afterwards. This helps communicate how your contribution works and ensures no future changes inadvertently break it.

### Sandbox

While developing, it can be useful to have a sandbox with Metabase, dbt and PostgreSQL running locally to test your changes. To start it in [Docker Compose](https://docs.docker.com/compose/), execute the following (see [.env](./sandbox/.env) for ports and credentials):

```
make sandbox-up
```

To execute dbt-metabase commands against it:

```
make sandbox-models
make sandbox-exposures
```

Once you are finished, stop the sandbox:

```
make sandbox-down
```

## Code of Conduct

All contributors are expected to follow the [PSF Code of Conduct](https://www.python.org/psf/conduct/).

12 changes: 4 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ Requires Python 3.8 or above.

You can install dbt-metabase from [PyPI](https://pypi.org/project/dbt-metabase/):

```shell
```
pip install dbt-metabase
```

Sections below demonstrate basic usage examples, for all CLI options:

```shell
```
dbt-metabase --help
```

Expand Down Expand Up @@ -77,7 +77,7 @@ models:

This is already enough to propagate the primary keys, foreign keys and descriptions to Metabase:

```shell
```
dbt-metabase models \
--manifest-path target/manifest.json \
--metabase-url https://metabase.example.com \
Expand Down Expand Up @@ -204,7 +204,7 @@ If you have known discrepancies between dbt and Metabase and wish to proceed wit

dbt-metabase allows you to extract questions and dashboards from Metabase as [dbt exposures](https://docs.getdbt.com/docs/building-a-dbt-project/exposures) in your project:

```shell
```
dbt-metabase exposures \
--manifest-path ./target/manifest.json \
--metabase-url https://metabase.example.com \
Expand Down Expand Up @@ -300,7 +300,3 @@ c.extract_exposures(
```

See function header comments for information about other parameters.

## Code of Conduct

All contributors are expected to follow the [PSF Code of Conduct](https://www.python.org/psf/conduct/).
Loading