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.4.2

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.4.2
File Size Uploaded
spring_dancer_sikits-0.4.2.tar.gz 242.4 kB Details

Built distribution (wheel)

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

Total release size: 572.5 kB

Release files / spring_dancer_sikits-0.4.2.tar.gz

Download URL spring_dancer_sikits-0.4.2.tar.gz
Size 242.4 kB
Tags Source
SHA-256 checksum
How to use checksums
f5687200f7c38c43779a9b9a46f670acf5a5e3c20098b46b69b37c426a50cc93
BLAKE2b-256 checksum
How to use checksums
4fd88fed17a0062f89c0edb05fd7c4435a69a05cfd4aa3699565de77417da0f4
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.4.2-py3-none-any.whl

Download URL spring_dancer_sikits-0.4.2-py3-none-any.whl
Size 330.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
65eda233cd8f0b30050f35c42619cbf2c063891e4869ac75b4846f6e0f9c9b2a
BLAKE2b-256 checksum
How to use checksums
34def3d5f6502a5a02da5c0169a3538e3e9f14034e3468d21c2216a13ea3e46b
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

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

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