Skip to main content

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/

Metadata

Release files for spring-dancer-sikits 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for spring-dancer-sikits 0.2.0
File Size Uploaded
spring_dancer_sikits-0.2.0.tar.gz 232.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for spring-dancer-sikits 0.2.0
File Interpreter ABI Platform
spring_dancer_sikits-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 551.8 kB

Release files / spring_dancer_sikits-0.2.0.tar.gz

Download URL spring_dancer_sikits-0.2.0.tar.gz
Size 232.3 kB
Tags Source
SHA-256 checksum
How to use checksums
75725edd6926d41e4b041f8ff333e2b82cca12e8725ac6f4046d4de30804fcb0
BLAKE2b-256 checksum
How to use checksums
79f6e59510d9940f1ddbbbfd0b3a6741c4afcadd175ed5fa129ab27d1323c9e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release files / spring_dancer_sikits-0.2.0-py3-none-any.whl

Download URL spring_dancer_sikits-0.2.0-py3-none-any.whl
Size 319.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ef9dbf98aaafed18ee3b9b9254e4e0689c087b55afcd98b93f83e82332efd25f
BLAKE2b-256 checksum
How to use checksums
8c9cf401971d296eb24f84c5632ca5de3e713a90014b13b026436fc8a2feddb1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release history Release notifications | RSS feed

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

This release

0.2.0 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page