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.2.tar.gz (88.3 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.2-py3-none-any.whl (125.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: spring_dancer_sikits-0.1.2.tar.gz
  • Upload date:
  • Size: 88.3 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.2.tar.gz
Algorithm Hash digest
SHA256 1c2255e2afdf41b8ea99cf8c3d170ea7e5e96e406c3898e5378b77901c164acd
MD5 a1b368fb10a9d7fae275686a2236fddd
BLAKE2b-256 fee43446ff5e47408129415b81d41b6a15818363180782ef3acaf898a68736ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for spring_dancer_sikits-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1596080b82b601e882ca4053b82cf6ff61d75a0206d492c67896e28b028b9ba7
MD5 e547af54d20857b3c8b7c46146666e66
BLAKE2b-256 6073c919ca2a3667dce29933bb32152aa7f2a2e74ec80ca48b6ac16f48cf7ec2

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