git
inside your repo:cd pycensus && git init
Poetry
installed run:make poetry-download
pre-commit
hooks:make install
make pre-commit-install
make codestyle
git add .
git commit -m ":tada: Initial commit"
git branch -M main
git remote add origin https://github.com/diginomads/pycensus.git
git push -u origin main
Want to know more about Poetry? Check its documentation.
Poetry's [commands](https://python-poetry.org/docs/cli/#commands) are very intuitive and easy to learn, like: - `poetry add numpy@latest` - `poetry run pytest` - `poetry publish --build` etc
Building a new version of the application contains steps:
poetry version <version>
. You can pass the new version explicitly, or a rule such as major
, minor
, or patch
. For more details, refer to the Semantic Versions standard.GitHub
.GitHub release
.poetry publish --build
Well, that's up to you πͺπ». I can only recommend the packages and articles that helped me.
Typer
is great for creating CLI applications.Rich
makes it easy to add beautiful formatting in the terminal.Pydantic
β data validation and settings management using Python type hinting.Loguru
makes logging (stupidly) simple.tqdm
β fast, extensible progress bar for Python and CLI.IceCream
is a little library for sweet and creamy debugging.orjson
β ultra fast JSON parsing library.Returns
makes you function's output meaningful, typed, and safe!Hydra
is a framework for elegantly configuring complex applications.FastAPI
is a type-driven asynchronous web framework.Articles:
Python 3.7
and higher.Poetry
as the dependencies manager. See configuration in pyproject.toml
and setup.cfg
.black
, isort
and pyupgrade
.pre-commit
hooks with code-formatting.mypy
; docstring checks with darglint
; security checks with safety
and bandit
pytest
..editorconfig
, .dockerignore
, and .gitignore
. You don't have to worry about those things.GitHub
integration: issue and pr templates.Github Actions
with predefined build workflow as the default CI/CD.Makefile
. More details in makefile-usage.@dependabot
. You will only enable it.Release Drafter
. You may see the list of labels in release-drafter.yml
. Works perfectly with Semantic Versions specification.LICENSE
, CONTRIBUTING.md
, CODE_OF_CONDUCT.md
, and SECURITY.md
are generated automatically.Stale bot
that closes abandoned issues after a period of inactivity. (You will only need to setup free plan). Configuration is here.Release Drafter
.pip install -U pycensus
or install with Poetry
poetry add pycensus
Then you can run
pycensus --help
or with Poetry
:
poetry run pycensus --help
Makefile
contains a lot of functions for faster development.
To download and install Poetry run: ```bash make poetry-download ``` To uninstall ```bash make poetry-remove ```
Install requirements: ```bash make install ``` Pre-commit hooks coulb be installed after `git init` via ```bash make pre-commit-install ```
Automatic formatting uses `pyupgrade`, `isort` and `black`.
```bash
make codestyle
# or use synonym
make formatting
```
Codestyle checks only, without rewriting files:
```bash
make check-codestyle
```
> Note: `check-codestyle` uses `isort`, `black` and `darglint` library
Update all dev libraries to the latest version using one comand
```bash
make update-dev-deps
```
```bash
make check-safety
```
This command launches `Poetry` integrity checks as well as identifies security issues with `Safety` and `Bandit`.
```bash
make check-safety
```
4. Code security
Run `mypy` static type checker ```bash make mypy ```
Run `pytest` ```bash make test ```
Of course there is a command to ~~rule~~ run all linters in one: ```bash make lint ``` the same as: ```bash make test && make check-codestyle && make mypy && make check-safety ```
```bash make docker-build ``` which is equivalent to: ```bash make docker-build VERSION=latest ``` Remove docker image with ```bash make docker-remove ``` More information [about docker](https://github.com/diginomads/pycensus/tree/master/docker).
Delete pycache files ```bash make pycache-remove ``` Remove package build ```bash make build-remove ``` Delete .DS_STORE files ```bash make dsstore-remove ``` Remove .mypycache ```bash make mypycache-remove ``` Or to remove all above run: ```bash make cleanup ```
You can see the list of available releases on the GitHub Releases page.
We follow Semantic Versions specification.
We use Release Drafter
. As pull requests are merged, a draft release is kept up-to-date listing the changes, ready to publish when youβre ready. With the categories option, you can categorize pull requests in release notes using labels.
Label | Title in Releases |
---|---|
enhancement , feature |
π Features |
bug , refactoring , bugfix , fix |
π§ Fixes & Refactoring |
build , ci , testing |
π¦ Build System & CI/CD |
breaking |
π₯ Breaking Changes |
documentation |
π Documentation |
dependencies |
β¬οΈ Dependencies updates |
You can update it in release-drafter.yml
.
GitHub creates the bug
, enhancement
, and documentation
labels for you. Dependabot creates the dependencies
label. Create the remaining labels on the Issues tab of your GitHub repository, when you need them.
This project is licensed under the terms of the Apache Software License 2.0
license. See LICENSE for more details.
@misc{pycensus,
author = {Vlad Duda vlad@diginomad.xyz},
title = {A Modern wrapper for the United States Census Bureau's API. With over 1,000 Census API endpoints, data sources include the Decennial Census, American Community Survey, Poverty Statistics, Population Estimates, and Census microdata. Incorporate ML and Big Data packages such Pandas, Numpy, and many more. },
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/diginomads/pycensus}}
}
This project was generated with python-package-template