GithubHelp home page GithubHelp logo

jaffle_shop's Introduction

jaffle_shop

Play with DBT locally

Project requirements

Pyenv and Python 3.11.4

  • Install pyenv to manage your Python versions and virtual environments:

    curl -sSL https://pyenv.run | bash
    • If you are on MacOS and experiencing errors on python install with pyenv, follow this comment
    • Add these lines to your ~/.bashrc or ~/.zshrc to be able to activate pyenv virtualenv:
      eval "$(pyenv init -)"
      eval "$(pyenv virtualenv-init -)"
      eval "$(pyenv init --path)"
    • Restart your shell
  • Install the right version of Python with pyenv:

    pyenv install 3.11.4

Poetry

  • Install Poetry to manage your dependencies and tooling configs:
    curl -sSL https://install.python-poetry.org | python - --version 1.5.1
    If you have not previously installed any Python version, you may need to set your global Python version before installing Poetry:
    pyenv global 3.11.4

Docker Engine

Install Docker Engine to build and run the API's Docker image locally.

Installation

Create a virtual environment

Create your virtual environment and link it to your project folder:

pyenv virtualenv 3.11.4 jaffleshop
pyenv local jaffleshop

Now, every time you are in your project directory your virtualenv will be activated thanks to pyenv!

Install Python dependencies through poetry

poetry install --no-root

Install git hooks (running before commit and push commands)

poetry run pre-commit install

Testing

To run unit tests, run pytest with:

pytest tests --cov src

or

make test

Formatting and static analysis

Code formatting with black

To check code formatting, run black with:

black . --check

or

make black

You can also integrate it to your IDE to reformat your code each time you save a file.

Static analysis with ruff

To run static analysis, run ruff with:

ruff check src tests

or

make ruff

To run static analysis and to apply auto-fixes, run ruff with:

make fix-ruff

Type checking with mypy

To type check your code, run mypy with:

mypy src --explicit-package-bases --namespace-packages

or

make mypy

API

The project includes an API built with FastAPI. Its code can be found at src/api.

The API is containerized using a Docker image, built from the Dockerfile and docker-compose.yml at the root.

To build and start the API, use the following Makefile command:

make start-api

You can test the hello_world route by importing the Postman collection at postman.

For more details on the API routes, check the automatically generated swagger at the /docs url.

jaffle_shop's People

Contributors

simonplaye avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.