• Stars
    star
    249
  • Rank 162,987 (Top 4 %)
  • Language
    Python
  • License
    MIT License
  • Created over 3 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Cookiecutter for rapidly creating modern & high-quality Python packages

Wolt Python Package Cookiecutter

A cookiecutter (project template) for rapidly developing new open source Python packages. Best practices with all the modern bells and whistles included.

Demo

Example projects which use Wolt Python Package Cookiecutter

Features

Automatic updates to the projects generated from this cookiecutter

  • Powered by cruft
  • Keep your project up-to-date with best practices

Continuous integration

  • Powered by Github Actions
  • Testing against multiple different versions

Documentation

Automated releases

  • Publishing to PyPI when a release is made in GitHub

Changelog management

  • Gently enforced: Keep a Changelog
  • GitHub releases get their description automatically populated based on the changelog content
  • The Unreleased section is automatically updated when a release is done
  • Changelog is embedded in the documentation

Bells and whistles

  • Poetry for managing dependencies and packaging
  • pre-commit for running all the goodies listed below
  • mypy for static type checking
  • flake8 (with multiple plugins) for linting (e.g. style and complexity checks, commented code, etc.)
  • black for auto-formatting the code
  • isort for auto-sorting imports
  • autoflake for auto-removing unused imports

Automation

  • Updates to the best practices (via GHA workflow which runs cruft update and creates a PR)
  • Dependency updates (via GHA workflow which creates a PR)

Usage

Make sure you have cruft installed. Alternatively, you can use cookiecutter if you are not interested in getting updates to the project "boilerplate" in the future.

Create a new project:

cruft create https://github.com/woltapp/wolt-python-package-cookiecutter

The CLI interface will ask some basic questions, such the name of the project, and then generate all the goodies automatically.

After that you can make it a proper git repo:

cd <your-project-slug>
git init
git add .
git commit -m "Initial project structure from Wolt Python Package cookiecutter"

We update this cookiecutter template regularly to keep it up-to-date with the best practices of the Python world. You can get the updates into your project with:

cruft update

Configure secrets

PYPI_TOKEN

Required for publishing the package to PyPI. You can generate a token by logging into PyPI and navigating to Add API token in your account settings.

AUTO_UPDATE_GITHUB_TOKEN

This cookiecutter template comes with an auto update feature if the project was created using cruft. A GitHub action automatically checks for updates and creates a pull request.

Generate personal access token and use it as the value for AUTO_UPDATE_GITHUB_TOKEN secret. When creating the access token, the following permissions have to be granted

  • repo
  • workflow

After the first release

The first release will create gh-pages branch which will contain the static files for the documentation. Enable GitHub Pages in the Pages section of the repository settings.

More Repositories

1

blurhash

A very compact representation of a placeholder for an image.
C
15,548
star
2

react-blurhash

React components for blurhash
TypeScript
583
star
3

wolt_modal_sheet

This package provides a responsive modal with multiple pages, motion animation for page transitions, and scrollable content within each page.
Dart
491
star
4

blurhash-python

Python version of the BlurHash encoder
Python
156
star
5

mitmproxy-mock

A tool to mock/modify server responses easily with mitmproxy
Python
87
star
6

redux-autoloader

A higher order component for declarative data loading in React and Redux.
JavaScript
57
star
7

wolt_responsive_layout_grid

Wolt Responsive Layout Grid library introduces the Flutter implementation of Material Design's responsive layout grid. It provides a unified, multi-platform grid system that ensures consistency and visual integrity regardless of the device or operating system being used.
Dart
56
star
8

parallelpbf

OpenStreetMap PBF format multithreaded reader
Java
54
star
9

engineering-internship-2024

The pre-assignment for frontend / backend internship applicants
50
star
10

magic-di

Dependency Injector with minimal boilerplate code, built-in support for FastAPI and Celery, and seamless integration to basically anything.
Python
39
star
11

engineering-summer-intern-2023

34
star
12

arrow-detekt-rules

Kotlin
32
star
13

engineering-summer-intern-2022

The home assignment for the Wolt Engineering Summer Internships 2022
25
star
14

react-geoinput

Geolocation suggestions and coordinates with Google Maps API for React
JavaScript
20
star
15

react-router-query-params

react-router-query-params
JavaScript
19
star
16

summer2021-internship

Wolt Summer 2021 Internships - Preliminary Assignment for Engineering Positions
19
star
17

data-science-summer-intern-2021

Assignment for Data Science Summer Intern candidates 2021
18
star
18

data-science-internship-2024

The pre-assignment for data science internship applicants
17
star
19

spark-osm-datasource

Native Spark OSM PBF data source
Scala
16
star
20

summer2020

Assignment for engineering intern positions
14
star
21

python-fastapi-workshop

Materials for "Modern Python APIs with FastAPI"
Python
13
star
22

celery-farmer

Python
11
star
23

react-native-assignment

React Native UI programming assignment
JavaScript
11
star
24

analytics-summer-intern-2022

Assignment for Analytics Service Summer Intern candidates for 2022
7
star
25

summer2018

Coding task
6
star
26

data-science-summer-intern-2022

6
star
27

mobile-engineering-internship-2024

The pre-assignment for mobile (Flutter) internship applicants
5
star
28

summer2019

Coding task for summer interns 2019
5
star
29

ktor-idempotency

A Ktor library to handle idempotency checks for HTTP requests
Kotlin
5
star
30

memories

Links and description of tools together with a play project for exploring memory problems
Kotlin
4
star
31

spark-osm-tools

Scala
3
star
32

junction-2022-materials

Materials for the Wolt's Junction 2022 challenge
2
star
33

looker-viz-transposed-table

2
star
34

mongo-vector-embeddings-helsinki-python-meetup-demo

A starter kit for embeddings creation and vector search with Python and MongoDB.
Jupyter Notebook
2
star