Skip to content
Open
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
35 changes: 35 additions & 0 deletions .copywrite.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
schema_version = 1

project {
license = "Apache-2.0"
copyright_year = 2024

header_ignore = [
# Ignore generated files
"**/*.md",
"**/*.json",
"**/*.yaml",
"**/*.yml",
"**/*.toml",
"**/*.txt",
"**/*.lock",

# Ignore directories
".venv/**",
".tox/**",
"**/__pycache__/**",
"*.egg-info/**",
"dist/**",
"build/**",
".pytest_cache/**",
".ruff_cache/**",
".mypy_cache/**",

# Ignore specific files
"LICENSE",
".gitignore",
".secrets.baseline",
".pre-commit-config.yaml",
".copywrite.hcl",
]
}
39 changes: 39 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
name: Bug report
about: Create a report to help us improve
title: "bug: "
labels: bug
assignees: ""
---

## Issue Description

A clear and concise description of what the bug is.

## Steps to Reproduce

1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

## Expected behaviour

A clear and concise description of what you expected to happen.

## Screenshots/Logs

If applicable, add screenshots and logs to help explain your problem.

## Python/system info

Please include the output of:

```terminaloutput
python --version
Your OS
```

## Additional context

Add any other context about the problem here.
31 changes: 31 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
name: Feature request
about: Suggest an idea for this project
title: "feat: "
labels: enhancement
assignees: ""
---

## Description

A clear and concise description of the feature you'd like to see implemented.

## Motivation

Explain why this feature would be useful. What problem does it solve?

## Proposed Solution

Describe the solution you'd like to see implemented.

## Alternatives Considered

Describe any alternative solutions or features you've considered.

## Additional Context

Add any other context, screenshots, or examples about the feature request here.

## Implementation Notes

If you have ideas about how this could be implemented, please share them here.
67 changes: 67 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Python
__pycache__/
*.py[cod]
*$py.class
*.so

# Virtual environments
.venv/
venv/
ENV/
env/

# UV package manager
.uv/

# Distribution / packaging
build/
dist/
*.egg-info/
.eggs/

# Testing
.pytest_cache/
.coverage
.coverage.*
htmlcov/
.tox/
.hypothesis/
coverage.xml
*.cover

# Type checking
.mypy_cache/
.pytype/
.pyre/

# Linting
.ruff_cache/

# Pre-commit
.pre-commit-cache/

# IDEs
.vscode/
.idea/
*.swp
*.swo
*~

# OS files
.DS_Store
Thumbs.db

# Jupyter Notebook
.ipynb_checkpoints

# Environment variables
.env
.env.local

# Logs
*.log

# Temporary files
*.tmp
*.bak
*.orig
42 changes: 42 additions & 0 deletions .markdownlint-cli2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Markdownlint-cli2 configuration
# See https://github.com/DavidAnson/markdownlint-cli2

# Globs to ignore
globs:
- "**/*.md"
- "!.venv/**"
- "!.tox/**"
- "!node_modules/**"
- "!**/node_modules/**"

# Markdownlint configuration
config:
# Default state for all rules
default: true

# MD013/line-length - Line length
MD013:
line_length: 120
heading_line_length: 120
code_block_line_length: 120
code_blocks: false
tables: false
headings: true
strict: false
stern: false

# MD033/no-inline-html - Inline HTML
MD033:
allowed_elements:
- br
- details
- summary
- img
- a

# MD041/first-line-heading - First line in file should be a top level heading
MD041: false

# MD046/code-block-style - Code block style
MD046:
style: fenced
87 changes: 87 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# Pre-commit hooks configuration
# See https://pre-commit.com for more information

default_install_hook_types:
- pre-commit
- commit-msg

default_stages: [pre-commit]

repos:
# detect-secrets - Detect secrets in code
- repo: https://github.com/ibm/detect-secrets
rev: 0.13.1+ibm.64.dss
hooks:
- id: detect-secrets
args: [--baseline, .secrets.baseline, --use-all-plugins, --fail-on-unaudited]

# Black - Python code formatter
- repo: https://github.com/psf/black-pre-commit-mirror
rev: 26.3.1
hooks:
- id: black-jupyter
language_version: python3

# Ruff - Python linter
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.11.6
hooks:
- id: ruff
args: [--fix]
- id: ruff-format

# Conventional commits
- repo: https://github.com/compilerla/conventional-pre-commit
rev: v4.4.0
hooks:
- id: conventional-pre-commit
stages: [commit-msg]
args:
- --no-color
- --verbose

# Codespell - Check for common misspellings
- repo: https://github.com/codespell-project/codespell
rev: v2.4.2
hooks:
- id: codespell
additional_dependencies: ['tomli']
args: ['--toml', 'pyproject.toml']

# UV lock check
- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.11.6
hooks:
- id: uv-lock
- id: uv-export
args: ["--frozen", "--no-emit-project", "--no-default-groups", "--output-file=requirements.txt"]

# Copywrite - License header management
- repo: https://github.com/hashicorp/copywrite
rev: v0.25.2
hooks:
- id: add-headers

# Markdownlint - Markdown linting
- repo: https://github.com/DavidAnson/markdownlint-cli2
rev: v0.22.0
hooks:
- id: markdownlint-cli2

# Yamlfmt - YAML formatting
- repo: https://github.com/google/yamlfmt
rev: v0.21.0
hooks:
- id: yamlfmt
# Standard pre-commit hooks
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- id: check-merge-conflict
- id: check-toml
- id: check-json
- id: mixed-line-ending
85 changes: 85 additions & 0 deletions .secrets.baseline
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
{
"exclude": {
"files": "^.secrets$",
"lines": null
},
"generated_at": "2026-04-14T08:37:12Z",
"plugins_used": [
{
"name": "AWSKeyDetector"
},
{
"name": "ArtifactoryDetector"
},
{
"name": "AzureStorageKeyDetector"
},
{
"base64_limit": 4.5,
"name": "Base64HighEntropyString"
},
{
"name": "BasicAuthDetector"
},
{
"name": "BoxDetector"
},
{
"name": "CloudantDetector"
},
{
"ghe_instance": "github.ibm.com",
"name": "GheDetector"
},
{
"name": "GitHubTokenDetector"
},
{
"hex_limit": 3,
"name": "HexHighEntropyString"
},
{
"name": "IbmCloudIamDetector"
},
{
"name": "IbmCosHmacDetector"
},
{
"name": "JwtTokenDetector"
},
{
"keyword_exclude": null,
"name": "KeywordDetector"
},
{
"name": "MailchimpDetector"
},
{
"name": "NpmDetector"
},
{
"name": "PrivateKeyDetector"
},
{
"name": "SlackDetector"
},
{
"name": "SoftlayerDetector"
},
{
"name": "SquareOAuthDetector"
},
{
"name": "StripeDetector"
},
{
"name": "TwilioKeyDetector"
}
],
"results": {},
"version": "0.13.1+ibm.64.dss",
"word_list": {
"file": null,
"hash": null
}
}
Loading