Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .codespell-ignore-words.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Python terms
pytest
codespell
sphinxcontrib
venv
uv
__pycache__
.pytest_cache

# Country/locale codes and ordinal-suffix examples that look like typos
fo
januar
nd
2 changes: 1 addition & 1 deletion .devcontainer/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export PATH="$HOME/.cargo/bin:$PATH"

# Install all project dependencies
echo "📚 Installing project dependencies..."
uv install --all-extras
uv sync --all-groups

# Install pre-commit hooks
echo "🔧 Installing pre-commit hooks..."
Expand Down
15 changes: 15 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.{md,yml,yaml}]
indent_size = 2

[Makefile]
indent_style = tab
12 changes: 12 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Copy this file to .env and add local configuration values as needed.
# Never commit .env or credentials.

# Required to create/update/publish charts and to run the functional,
# end-to-end tests in tests/functional/. Get a token from your Datawrapper
# account settings: https://app.datawrapper.de/account/api-tokens
DATAWRAPPER_ACCESS_TOKEN=

# Optional: only needed for custom TLS/proxy setups.
# PYTHONHTTPSVERIFY=
# SSL_CERT_FILE=
# REQUESTS_CA_BUNDLE=
7 changes: 7 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
* text=auto eol=lf

*.gif binary
*.jpeg binary
*.jpg binary
*.png binary
*.webp binary
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @palewire @chekos
64 changes: 64 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Bug report
description: Report reproducible behavior that is incorrect or unexpected.
title: "[Bug]: "
labels:
- bug
body:
- type: markdown
attributes:
value: |
Search existing issues before reporting a bug. Do not report security
vulnerabilities here; follow the instructions in SECURITY.md instead.

- type: textarea
id: summary
attributes:
label: What happened?
description: Describe the incorrect behavior and its impact.
validations:
required: true

- type: textarea
id: reproduction
attributes:
label: How can we reproduce it?
description: Provide the smallest reliable example and exact steps.
placeholder: |
1. Install ...
2. Run ...
3. Observe ...
validations:
required: true

- type: textarea
id: expected
attributes:
label: What did you expect?
validations:
required: true

- type: textarea
id: environment
attributes:
label: Environment
description: Include the package version or commit, Python version, and operating system.
placeholder: |
Package version or commit:
Python version:
Operating system:
validations:
required: true

- type: textarea
id: context
attributes:
label: Additional context
description: Add logs, tracebacks, screenshots, or other useful details.

- type: checkboxes
id: checks
attributes:
label: Before submitting
options:
- label: I searched for an existing issue that describes this problem.
required: true
2 changes: 2 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
blank_issues_enabled: false
contact_links: []
35 changes: 35 additions & 0 deletions .github/ISSUE_TEMPLATE/documentation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Documentation improvement
description: Report missing, unclear, or incorrect documentation.
title: "[Docs]: "
labels:
- documentation
body:
- type: input
id: location
attributes:
label: Where is the documentation problem?
description: Link to the page or name the file and section.
validations:
required: true

- type: textarea
id: problem
attributes:
label: What needs improvement?
description: Explain what is missing, unclear, or incorrect.
validations:
required: true

- type: textarea
id: suggestion
attributes:
label: Suggested change
description: Describe or draft the improvement if you have one.

- type: checkboxes
id: checks
attributes:
label: Before submitting
options:
- label: I checked the current documentation and existing issues.
required: true
53 changes: 53 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Feature request
description: Suggest a new capability or an improvement to existing behavior.
title: "[Feature]: "
labels:
- enhancement
body:
- type: markdown
attributes:
value: |
Start with the user need rather than a specific implementation.

- type: textarea
id: problem
attributes:
label: What problem would this solve?
description: Explain who has the problem and why the current behavior is insufficient.
validations:
required: true

- type: textarea
id: proposal
attributes:
label: What would you like to happen?
description: Describe the desired behavior.
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: What alternatives have you considered?
description: Include current workarounds when applicable.

- type: textarea
id: success
attributes:
label: How will we know this is complete?
description: List the outcomes or acceptance criteria that matter.
validations:
required: true

- type: textarea
id: context
attributes:
label: Additional context

- type: checkboxes
id: checks
attributes:
label: Before submitting
options:
- label: I searched for an existing request that covers this idea.
required: true
35 changes: 35 additions & 0 deletions .github/ISSUE_TEMPLATE/question.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Question
description: Ask for help when the documentation does not answer your question.
title: "[Question]: "
labels:
- question
body:
- type: textarea
id: question
attributes:
label: What do you need help with?
description: Ask a specific question and describe what you are trying to accomplish.
validations:
required: true

- type: textarea
id: attempted
attributes:
label: What have you tried?
description: Include relevant documentation, code, commands, or error messages.
validations:
required: true

- type: textarea
id: environment
attributes:
label: Environment
description: Include version and platform details when relevant.

- type: checkboxes
id: checks
attributes:
label: Before submitting
options:
- label: I searched the documentation and existing issues first.
required: true
34 changes: 34 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
## Summary

Describe the user-facing problem and the change that addresses it.

## Related Issue

Link the issue this change addresses, such as `Closes #123`.

## Category

Select one primary category.

- [ ] Bug fix
- [ ] Feature
- [ ] Documentation
- [ ] Maintenance or refactor
- [ ] Dependency update

## Compatibility

- [ ] This change is backward compatible.
- [ ] This change deprecates existing behavior.
- [ ] This change breaks existing behavior.

## Validation

List the commands run and their results.

## Checklist

- [ ] Tests cover the change, or no new tests are needed.
- [ ] Relevant edge cases are covered.
- [ ] Documentation is updated, or no update is needed.
- [ ] `CHANGELOG.md` is updated for a user-facing, compatibility, or security change.
83 changes: 83 additions & 0 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"

on:
workflow_dispatch:
pull_request:
# The branches below must be a subset of the branches above
branches: [ "main" ]
schedule:
- cron: '18 6 * * 6'

jobs:
analyze:
name: Analyze
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners
# Consider using larger runners for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
permissions:
actions: read
contents: read
security-events: write

strategy:
fail-fast: false
matrix:
language: [ 'python' ]
# CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ]
# Use only 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support

steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
persist-credentials: false

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4.37.7
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.

# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality


# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v4.37.7

# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun

# If the Autobuild fails above, remove it and uncomment the following three lines.
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.

# - run: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4.37.7
with:
category: "/language:${{matrix.language}}"
Loading
Loading