Skip to main content

Swiss army knife for Bord4's data analysis

Project description

Pakkenellik: Bord4's swiss army knife for python projects

Table of Contents

  1. About The Project
  2. Getting Started
  3. Usage
  4. Contributing
  5. Contact

About The Project

Pakkenellik is german and used in Bergen as a synonym for small packages one carry around, especially when traveling. This package is a swiss army knife for Bord4's python projects. It contains a makefile with commands for linting and formatting. One day it will contain testing as well.

This package is used by the cookiecutter-bord4-analysis project and bord4-analysis-templates

Inspiration for the makefile and project setup is taken from Johannes Schmidt's series "Setting up Python Projects"

Installation

Requires Python 3.10 or later.

pip install pakkenellik

or using pipenv:

pipenv install pakkenellik

or using uv:

uv add pakkenellik

Optional dependencies are split into extras:

uv add "pakkenellik[s3]"
uv add "pakkenellik[gspread]"
uv add "pakkenellik[nvdb]"
uv add "pakkenellik[viz]"
uv add "pakkenellik[datawrapper]"

Usage

Clean dataframe column headers:

import pandas as pd

from pakkenellik.dataframe.clean_column_headers import clean_column_headers

df = pd.DataFrame({"Første kolonne": [1]})
df = clean_column_headers(df)

Format numbers for publishing:

from pakkenellik.dataframe.numbers import format_number

formatted = format_number(1234567.89)

Use common project paths:

from pakkenellik.config import Config

config = Config("/path/to/project")
source_file = config.get_source_file("data.csv")

Local development

Requirements


  • pyenv - manage python versions
  • uv - manage python dependencies and packaging

To install on mac you can use homebrew:

brew upgrade
brew install pyenv

Install uv with homebrew or the way described in the documentation:

brew install uv

Install the project dependencies:

make sync

Makefile commands

  • make lint
    • lint the code with ruff. Mypy will check for correct typing.
  • make format
    • format the code with ruff.
  • make test
    • run tests with pytest.
  • make check
    • run linting and tests.

Structure

.
├── .editorconfig
├── pyproject.toml
├── README.md
└── pakkenellik
    ├── __init__.py
    ├── aws
    │   ├── __init__.py
    │   └── s3.py
    ├── config
    │   └── __init__.py
    ├── dataframe
    │   ├── __init__.py
    │   ├── clean_column_headers.py
    │   ├── datetime.py
    │   └── numbers.py
    ├── integration
    │   ├── __init__.py
    │   └── client.py
    ├── log
    │   ├── __init__.py
    │   └── ansi.py
    ├── regions
    │   ├── __init__.py
    │   └── norway.py
    ├── ssb
    │   ├── __init__.py
    │   ├── population.py
    │   └── rates.py
    ├── vegvesen
    │   ├── __init__.py
    │   └── visvegen.py
    └── viz
        ├── __init__.py
        └── pyplot.py
  • .editorconfig
    • Configuration file for editorconfig.
  • pyproject.toml
    • Project metadata and configuration for uv, ruff and mypy.
  • README.md
    • This file.
  • pakkenellik
    • The package. It has the following subpackages:
  • aws
    • util functions for working with AWS
  • config
    • configuration functions that helps with adhering to bord4's folder structure and help with common urls.
  • dataframe
    • util functions for working with dataframes
  • integration
    • helper functions when working with Schibsted MM API
  • log
    • better log functions
  • vegvesen
    • Functions to work with Vegvesenet's VisVegen API

Usage

To install the package in your project run

uv add pakkenellik

Contributing

Do you have write permissions to the repo? Then you can clone this project to a folder on your computer.

git clone https://github.com/BergensTidende/pakkenellik.git

If not do the following:

  • Create a personal fork of the project on Github.
  • Clone the fork on your local machine. Your remote repo on Github is called origin.
  • Add the original repository as a remote called upstream.
  • If you created your fork a while ago be sure to pull upstream changes into your local repository.

This will clone the repo into pakkenellik.

Create a branch for your changes

git checkout -b name-of-branch

Make your changes, rememeber to commit. And always write your commit messages in the present tense. Your commit message should describe what the commit, when applied, does to the code – not what you did to the code.

If you're working on a clone push the branch to github and make PR.

If your're working a fork:

  • Squash your commits into a single commit with git's interactive rebase. Create a new branch if necessary.
  • Push your branch to your fork on Github, the remote origin.
  • From your fork open a pull request in the correct branch. Target the project's develop branch if there is one, else go for master!
  • If the maintainer requests further changes just push them to your branch. The PR will be updated automatically.
  • Once the pull request is approved and merged you can pull the changes from upstream to your local repo and delete your extra branch(es).

Contact

Bord4 - bord4@bt.no

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pakkenellik-0.2.1.tar.gz (180.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pakkenellik-0.2.1-py3-none-any.whl (32.1 kB view details)

Uploaded Python 3

File details

Details for the file pakkenellik-0.2.1.tar.gz.

File metadata

  • Download URL: pakkenellik-0.2.1.tar.gz
  • Upload date:
  • Size: 180.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.10

File hashes

Hashes for pakkenellik-0.2.1.tar.gz
Algorithm Hash digest
SHA256 94553a6e4e3c118456888456c28f8797f0c6fdcc4746a5693428444eecad0b3d
MD5 4a2acef2e3206358d7a58281a147a2c3
BLAKE2b-256 fc1aa76cda545a4362bea447bba3168a00fa352e1fe98f2fc16dd64988df0079

See more details on using hashes here.

File details

Details for the file pakkenellik-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pakkenellik-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 be6ec8446cb80aa29478295cebe667bbe7033921f438e385d8432ed881fe4733
MD5 3c326b13d25c619f30ad91377ad3dadc
BLAKE2b-256 4b9e0cae1fefc48c78682a0340be512e8cb99e70a96c8759dcb8f5866455b92b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page