Skip to main content

A modular Python toolkit

Project description

Spring-Dancer-SI-Kits

A modular Python utility library for internal tooling. Covers string manipulation, WBS project management, JSON diffing, typed settings, serialization, and more.

  • Python >= 3.13
  • License: MIT
  • Author: luvmagi

Project Structure

Spring-Dancer-SI-Kits/
│
├── src/sikits/                        # Library source
│   ├── textcraft/                     # Text & string utilities
│   │   ├── string_nameing.py          # CaseUtils — naming convention converter & branch-name generator
│   │   └── class_str.py               # class_str() — recursive pretty-printer for plain classes
│   │
│   ├── serialization/                 # Serialization & settings
│   │   ├── base.py                    # JsonMixin — dataclass JSON/YAML serialization mixin
│   │   └── setting.py                 # SettingRegister — generates typed Python class from config file
│   │
│   ├── wbs/                           # Work Breakdown Structure
│   │   ├── core/
│   │   │   ├── base.py                # WBS base models
│   │   │   └── mapping.py             # Field mapping logic
│   │   ├── schema/
│   │   │   ├── backend.py             # Backend WBS schema
│   │   │   └── frontend.py            # Frontend WBS schema
│   │   ├── io/
│   │   │   ├── csv_reader.py          # Read WBS from CSV
│   │   │   ├── csv_writer.py          # Write WBS to CSV
│   │   │   ├── excel_writer.py        # Write WBS to Excel
│   │   │   ├── json_reader.py         # Read WBS from JSON
│   │   │   └── json_writer.py         # Write WBS to JSON
│   │   ├── dashboard/
│   │   │   ├── calc/
│   │   │   │   ├── assignee.py        # Per-assignee metrics
│   │   │   │   ├── burndown.py        # Burndown chart data
│   │   │   │   ├── funnel.py          # Status funnel
│   │   │   │   └── review_lag.py      # Review lag analysis
│   │   │   └── writer.py              # Dashboard output writer
│   │   └── snapshot/
│   │       └── snapshot.py            # WBS snapshot
│   │
│   ├── json_diff/                     # JSON diff engine
│   │   ├── core/
│   │   │   ├── differ.py              # Core diff logic
│   │   │   ├── key_detector.py        # Key detection strategies
│   │   │   └── strategies.py          # Diff strategies
│   │   ├── schema/
│   │   │   ├── config.py              # Diff configuration schema
│   │   │   └── result.py              # Diff result schema
│   │   ├── io/
│   │   │   ├── json_writer.py         # Write diff as JSON
│   │   │   └── markdown_writer.py     # Write diff as Markdown
│   │   └── exceptions.py              # Diff exceptions
│   │
│   ├── decotextual/                   # Decorator utilities
│   │   ├── decorators.py              # Decorator definitions
│   │   ├── deco_app.py                # Decorator application helpers
│   │   ├── _linear.py                 # Linear execution helper
│   │   └── _stop.py                   # Stop condition helper
│   │
│   ├── database/                      # Database access helpers
│   │   ├── handler.py                 # TableHandler
│   │   └── model/                     # DB schema models
│   │       └── schema.py              # Table, Column, Index
│   ├── dataframe/                     # DataFrame utilities
│   ├── excel/                         # Excel read/write helpers
│   └── image/
│       └── image_to_ico.py            # Image → ICO converter
│
├── tests/                             # Test suite
│   ├── sikits/
│   │   ├── textcraft/
│   │   │   └── test_string_nameing.py
│   │   └── serialization/
│   │       └── test_setting.py
│   └── resource/                      # Test input/output fixtures
│       └── serialization/setting/
│           ├── input.toml / .yaml / .yml / .json / empty.json
│           └── output_*.py            # Generated files (inspectable)
│
├── docs/Project-SpringDancer-Sikits/  # Module documentation
│   ├── serialization/
│   │   ├── base.md
│   │   └── setting.md
│   └── textcraft/
│       └── string_nameing.md (utils-string_nameing.md)
│
├── pyproject.toml                     # Project metadata & pytest config
├── CLAUDE.md                          # AI assistant context
└── README.md

Modules

sikits.textcraft

File Class / Function Description
string_nameing.py CaseUtils Convert strings between 11 naming conventions (snake_case, camelCase, PascalCase, kebab-case …). Handles full-width (全角) characters and Japanese punctuation.
string_nameing.py CaseUtils.to_branch_name Convert a GitHub issue title to a valid git branch name. Strips illegal chars, normalizes separators, supports Japanese input.
class_str.py class_str Recursive pretty-printer for plain Python objects — used by generated settings classes.

sikits.serialization

File Class Description
base.py JsonMixin @dataclass mixin that adds load_dict, load_file, save_file, to_json_string. Supports nested JsonMixin, Enum, Optional[T], list[JsonMixin].
setting.py SettingRegister Reads a TOML / YAML / JSON config file and generates a fully-typed Python class. The generated class loads from the config file at runtime — no values are baked in.

Settings workflow:

from pathlib import Path
from sikits.serialization.setting import SettingRegister

# Generate once (during development / CI)
SettingRegister(Path("config/settings.toml")).to_class_file(Path("src/myapp/settings.py"))
# Use everywhere — dynamically loaded at startup
from myapp.settings import Setting

print(Setting.db.host)
print(Setting.servers[0].name)

sikits.wbs

Work Breakdown Structure toolkit. Reads/writes project task data (CSV, JSON, Excel) and computes dashboard metrics (burndown, assignee load, review lag, status funnel).

sikits.json_diff

JSON diff engine with pluggable key-detection and output strategies. Produces structured diff results exportable as JSON or Markdown.

sikits.decotextual

Decorator utilities for contextual text processing pipelines.

sikits.database

Database modeling toolkit for PostgreSQL and Oracle.

File Class / Function Description
model/schema.py Table, Column, Index Unified Pydantic Dataclass models for database objects. Compatible with JsonMixin.
handler.py TableHandler Converts between DDL (Postgres/Oracle) and internal models. Supports multi-statement DDL and index extraction.

Installation

# Install from PyPI
pip install spring-dancer-sikits

# Editable install (development)
pip install -e .

# Or with uv
uv sync

Quickstart

from sikits import CaseUtils, JsonDiffer, SettingRegister, TableHandler

Release

python -m build
twine upload dist/*

Running Tests

pytest

Documentation

Full module docs: docs/Project-SpringDancer-Sikits/

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

spring_dancer_sikits-0.1.4.tar.gz (120.8 kB view details)

Uploaded Source

Built Distribution

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

spring_dancer_sikits-0.1.4-py3-none-any.whl (164.3 kB view details)

Uploaded Python 3

File details

Details for the file spring_dancer_sikits-0.1.4.tar.gz.

File metadata

  • Download URL: spring_dancer_sikits-0.1.4.tar.gz
  • Upload date:
  • Size: 120.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for spring_dancer_sikits-0.1.4.tar.gz
Algorithm Hash digest
SHA256 d063d56320d772c72160b7658d17a63c35459b22baa8b4a673ee7a3834e760c7
MD5 53c82c7bb4c02c6b57af37768e88097f
BLAKE2b-256 533c67fbcd23a44d83f2ccdc316444b298d24c0a02cc505a49398c46ec092ac2

See more details on using hashes here.

File details

Details for the file spring_dancer_sikits-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for spring_dancer_sikits-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 22ae8d5c8fee6c034e45b16b1ee3117aa5c58c7a6826088cc98b40a74d12e00c
MD5 8d9ce96900af2f73b35c755680ce4f7a
BLAKE2b-256 5a7636fd9e0e9a41ad882051cea0bc19a36237bd0d1d7b2d2236674107dbfd81

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