Skip to content

SchmidtDSE/pkit_example

Repository files navigation

COcina Example

This project tests and demonstrates all Cocina functionality.

Quick Test Commands

# Basic functionality test
pixi run cocina job basic

# Advanced features test (environment-specific config, complex args, timing)
pixi run cocina job advanced --env dev

# Grouped jobs and constants access test
pixi run cocina job group.subjob --env prod

# Multiple jobs in sequence
pixi run cocina job basic advanced group.subjob

# Dry run validation
pixi run cocina job advanced --dry_run --env prod

What's Being Tested

Core Features

  • ConfigHandler: Main configuration and constants management
  • ConfigArgs: Job-specific configuration with structured argument access
  • CLI: Project initialization and job execution
  • Printer: Professional output with timestamps and logging
  • Timer: Performance monitoring and lap timing

Configuration Patterns

  • Environment overrides: dev.yaml, prod.yaml override main config
  • Job-specific config: Each job has its own YAML configuration
  • Complex arguments: Dict, list, and mixed argument patterns
  • Constants access: Protected constants from cocina_example/constants.py

Job Examples

basic.py

Tests fundamental features:

  • Simple argument parsing (args/kwargs)
  • ConfigHandler for main configuration access
  • Basic Printer usage

advanced.py

Tests sophisticated features:

  • Environment-specific job configuration
  • Complex nested arguments and options
  • Error handling and timing
  • Performance monitoring

group.subjob.py

Tests organizational features:

  • Grouped job structure
  • Constants access from package
  • Multi-step workflows
  • List/tuple argument patterns

Project Structure

cocina_example/
├── .cocina                      # Cocina configuration
├── config/
│   ├── config.yaml           # Main configuration
│   ├── dev.yaml              # Development environment
│   ├── prod.yaml             # Production environment
│   └── args/                 # Job configurations
│       ├── basic.yaml
│       ├── advanced.yaml
│       └── group/
│           └── subjob.yaml
├── jobs/                     # Job implementations
│   ├── basic.py
│   ├── advanced.py
│   └── group/
│       └── subjob.py
└── cocina_example/             # Package with constants
    ├── constants.py
    └── ...

For More Details

See Cocina Documentation for complete usage guide, API reference, and advanced patterns.

License

CC-BY-4.0

About

Example Project for ProjectKit

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages