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.3.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.3.0
File Size Uploaded
spring_dancer_sikits-0.3.0.tar.gz 234.3 kB Details

Built distribution (wheel)

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

Total release size: 556.0 kB

Release files / spring_dancer_sikits-0.3.0.tar.gz

Download URL spring_dancer_sikits-0.3.0.tar.gz
Size 234.3 kB
Tags Source
SHA-256 checksum
How to use checksums
0da31c1441262892848e69602b0ce1ccfe1015662b1d895c6c8ee686f38d3a19
BLAKE2b-256 checksum
How to use checksums
41947207acb69a453aabfdc1965fc7d6e15373076ab98f0df2db5806f0e8364b
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.3.0-py3-none-any.whl

Download URL spring_dancer_sikits-0.3.0-py3-none-any.whl
Size 321.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4989317f658689a674e6d67296106726ea15589ffe7c25a645870dbebb6bf6aa
BLAKE2b-256 checksum
How to use checksums
0dd5acbf3f5b931fc54375b68d13deda010495e532688392158069071c9c095d
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

This release

0.3.0 This release

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