diginomads / pycensus

Modern Python Package for US Census API
Apache License 2.0
1 stars 0 forks source link
census census-api data-science open-data python python3

pycensus

[![Build status](https://github.com/diginomads/pycensus/workflows/build/badge.svg?branch=master&event=push)](https://github.com/diginomads/pycensus/actions?query=workflow%3Abuild) [![Python Version](https://img.shields.io/pypi/pyversions/pycensus.svg)](https://pypi.org/project/pycensus/) [![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/diginomads/pycensus/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Security: bandit](https://img.shields.io/badge/security-bandit-green.svg)](https://github.com/PyCQA/bandit) [![Pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/diginomads/pycensus/blob/master/.pre-commit-config.yaml) [![Semantic Versions](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--versions-e10079.svg)](https://github.com/diginomads/pycensus/releases) [![License](https://img.shields.io/github/license/diginomads/pycensus)](https://github.com/diginomads/pycensus/blob/master/LICENSE) ![Coverage Report](assets/images/coverage.svg) 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.

Very first steps

Initialize your code

  1. Initialize git inside your repo:
cd pycensus && git init
  1. If you don't have Poetry installed run:
make poetry-download
  1. Initialize poetry and install pre-commit hooks:
make install
make pre-commit-install
  1. Run the codestyle:
make codestyle
  1. Upload initial code to GitHub:
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

Set up bots

Poetry

Want to know more about Poetry? Check its documentation.

Details about Poetry

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 and releasing your package

Building a new version of the application contains steps:

🎯 What's next

Well, that's up to you πŸ’ͺ🏻. I can only recommend the packages and articles that helped me.

Articles:

πŸš€ Features

Development features

Deployment features

Open source community features

Installation

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 usage

Makefile contains a lot of functions for faster development.

1. Download and remove Poetry

To download and install Poetry run: ```bash make poetry-download ``` To uninstall ```bash make poetry-remove ```

2. Install all dependencies and pre-commit hooks

Install requirements: ```bash make install ``` Pre-commit hooks coulb be installed after `git init` via ```bash make pre-commit-install ```

3. Codestyle

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 ```

4. Code security

```bash make check-safety ``` This command launches `Poetry` integrity checks as well as identifies security issues with `Safety` and `Bandit`. ```bash make check-safety ```

5. Type checks

Run `mypy` static type checker ```bash make mypy ```

6. Tests with coverage badges

Run `pytest` ```bash make test ```

7. All linters

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 ```

8. Docker

```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).

9. Cleanup

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 ```

πŸ“ˆ Releases

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.

List of labels and corresponding titles

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.

πŸ›‘ License

License

This project is licensed under the terms of the Apache Software License 2.0 license. See LICENSE for more details.

πŸ“ƒ Citation

@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}}
}

Credits πŸš€ Your next Python package needs a bleeding-edge project structure.

This project was generated with python-package-template