polyptych 0.2.1__tar.gz → 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. {polyptych-0.2.1 → polyptych-0.3.0}/CHANGELOG.md +12 -0
  2. {polyptych-0.2.1 → polyptych-0.3.0}/PKG-INFO +1 -1
  3. {polyptych-0.2.1 → polyptych-0.3.0}/image-presets.yaml +1 -0
  4. {polyptych-0.2.1 → polyptych-0.3.0}/pyproject.toml +1 -1
  5. {polyptych-0.2.1 → polyptych-0.3.0}/.gitignore +0 -0
  6. {polyptych-0.2.1 → polyptych-0.3.0}/CONTRIBUTING.md +0 -0
  7. {polyptych-0.2.1 → polyptych-0.3.0}/LICENSE +0 -0
  8. {polyptych-0.2.1 → polyptych-0.3.0}/NOTICE +0 -0
  9. {polyptych-0.2.1 → polyptych-0.3.0}/README.md +0 -0
  10. {polyptych-0.2.1 → polyptych-0.3.0}/SECURITY.md +0 -0
  11. {polyptych-0.2.1 → polyptych-0.3.0}/image_model_config.yaml +0 -0
  12. {polyptych-0.2.1 → polyptych-0.3.0}/model_config.yaml +0 -0
  13. {polyptych-0.2.1 → polyptych-0.3.0}/pipeline-presets.yaml +0 -0
  14. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/providers/gemini-best-practices.md +0 -0
  15. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/providers/openai-best-practices.md +0 -0
  16. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/providers/xai-best-practices.md +0 -0
  17. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/style-transfer/anime/anime-dark.md +0 -0
  18. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/style-transfer/editorial/scholarly-monograph.md +0 -0
  19. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/style-transfer/infographic/clean-minimalist.md +0 -0
  20. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/style-transfer/infographic/semi-flat-vector.md +0 -0
  21. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/style-transfer/noir/cinematic-illustrative-noir.md +0 -0
  22. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/style-transfer/period-art/attic-vase-pastoral.md +0 -0
  23. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/tasks/task-01-genre-classification.md +0 -0
  24. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/tasks/task-02-source-analysis.md +0 -0
  25. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/tasks/task-03-structure-planning.md +0 -0
  26. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/tasks/task-04-content-allocation.md +0 -0
  27. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/tasks/task-05-visual-design.md +0 -0
  28. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/tasks/task-06-slide-specification-fiction.md +0 -0
  29. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/tasks/task-06-slide-specification.md +0 -0
  30. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/tasks/task-07-image-generation.md +0 -0
  31. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/tasks/task-critique.md +0 -0
  32. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/tasks/task-i0-analysis.md +0 -0
  33. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/tasks/task-i1-design.md +0 -0
  34. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/tasks/task-i2-critique.md +0 -0
  35. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/tasks/task-i2-prompts.md +0 -0
  36. {polyptych-0.2.1 → polyptych-0.3.0}/prompts/tasks/task-i2-refine.md +0 -0
  37. {polyptych-0.2.1 → polyptych-0.3.0}/src/common/__init__.py +0 -0
  38. {polyptych-0.2.1 → polyptych-0.3.0}/src/common/compat.py +0 -0
  39. {polyptych-0.2.1 → polyptych-0.3.0}/src/common/logging_setup.py +0 -0
  40. {polyptych-0.2.1 → polyptych-0.3.0}/src/common/usage_log.py +0 -0
  41. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/__init__.py +0 -0
  42. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/_datafiles.py +0 -0
  43. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/batch_utils.py +0 -0
  44. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/clean_source.py +0 -0
  45. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/cli.py +0 -0
  46. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/client.py +0 -0
  47. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/concurrent_engine.py +0 -0
  48. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/cross_validate.py +0 -0
  49. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/ext.py +0 -0
  50. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/image_batch.py +0 -0
  51. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/logging_setup.py +0 -0
  52. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/model_config.py +0 -0
  53. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/models/__init__.py +0 -0
  54. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/models/infographic.py +0 -0
  55. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/models/slide.py +0 -0
  56. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/pipeline.py +0 -0
  57. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/pipeline_base.py +0 -0
  58. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/pipeline_config.py +0 -0
  59. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/pipeline_infographic.py +0 -0
  60. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/pipeline_task.py +0 -0
  61. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/presets.py +0 -0
  62. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/prompt_loader.py +0 -0
  63. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/providers/__init__.py +0 -0
  64. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/providers/anthropic.py +0 -0
  65. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/providers/base.py +0 -0
  66. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/providers/gemini.py +0 -0
  67. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/providers/openai.py +0 -0
  68. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/providers/vertex.py +0 -0
  69. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/providers/xai.py +0 -0
  70. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/ref_utils.py +0 -0
  71. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/run_config.py +0 -0
  72. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/task_registry.py +0 -0
  73. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/tasks/__init__.py +0 -0
  74. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/tasks/task_01_genre.py +0 -0
  75. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/tasks/task_02_analysis.py +0 -0
  76. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/tasks/task_03_structure.py +0 -0
  77. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/tasks/task_04_content.py +0 -0
  78. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/tasks/task_05_design.py +0 -0
  79. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/tasks/task_06_slides.py +0 -0
  80. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/tasks/task_07_prompts.py +0 -0
  81. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/tasks/task_i0_analysis.py +0 -0
  82. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/tasks/task_i1_design.py +0 -0
  83. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/tasks/task_i2_critique.py +0 -0
  84. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/tasks/task_i2_prompts.py +0 -0
  85. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/text_utils.py +0 -0
  86. {polyptych-0.2.1 → polyptych-0.3.0}/src/polyptych/usage_log.py +0 -0
  87. {polyptych-0.2.1 → polyptych-0.3.0}/tests/__init__.py +0 -0
  88. {polyptych-0.2.1 → polyptych-0.3.0}/tests/common/__init__.py +0 -0
  89. {polyptych-0.2.1 → polyptych-0.3.0}/tests/common/test_compat.py +0 -0
  90. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/__init__.py +0 -0
  91. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/conftest.py +0 -0
  92. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/mock_client.py +0 -0
  93. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/providers/__init__.py +0 -0
  94. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/providers/test_base.py +0 -0
  95. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/providers/test_helpers.py +0 -0
  96. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/slide/__init__.py +0 -0
  97. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/slide/conftest.py +0 -0
  98. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/slide/factories.py +0 -0
  99. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/slide/test_character_canon.py +0 -0
  100. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/slide/test_cross_validate.py +0 -0
  101. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/slide/test_local_manifest.py +0 -0
  102. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/slide/test_prompt_provider.py +0 -0
  103. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/slide/test_schema_ergonomics.py +0 -0
  104. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/slide/test_slide_image_paths.py +0 -0
  105. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/slide/test_slide_pipeline_flow.py +0 -0
  106. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/slide/test_task7_assembly.py +0 -0
  107. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/tasks/__init__.py +0 -0
  108. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/tasks/test_task_05_design.py +0 -0
  109. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_clean_source.py +0 -0
  110. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_cli.py +0 -0
  111. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_client.py +0 -0
  112. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_dependency_resolver.py +0 -0
  113. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_image_batch.py +0 -0
  114. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_infographic_critique.py +0 -0
  115. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_logging_setup.py +0 -0
  116. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_pipeline_base.py +0 -0
  117. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_pipeline_config.py +0 -0
  118. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_pipeline_infographic.py +0 -0
  119. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_pipeline_init.py +0 -0
  120. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_pipeline_resume.py +0 -0
  121. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_ref_utils.py +0 -0
  122. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_run_config.py +0 -0
  123. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_task_registry.py +0 -0
  124. {polyptych-0.2.1 → polyptych-0.3.0}/tests/polyptych/test_text_utils.py +0 -0
  125. {polyptych-0.2.1 → polyptych-0.3.0}/tests/test_concurrent_engine.py +0 -0
  126. {polyptych-0.2.1 → polyptych-0.3.0}/tests/test_concurrent_engine_ordering.py +0 -0
  127. {polyptych-0.2.1 → polyptych-0.3.0}/tests/test_datafiles.py +0 -0
  128. {polyptych-0.2.1 → polyptych-0.3.0}/tests/test_ext.py +0 -0
  129. {polyptych-0.2.1 → polyptych-0.3.0}/tests/test_model_config.py +0 -0
  130. {polyptych-0.2.1 → polyptych-0.3.0}/tests/test_presets.py +0 -0
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.3.0] - 2026-06-30
11
+
12
+ ### Added
13
+
14
+ - **`gem-lite` image preset** — an opt-in bundle targeting Google's Nano Banana 2
15
+ Lite (`gemini-3.1-flash-lite-image`), the cheapest/fastest member of the Nano
16
+ Banana 2 family. Resolves to `provider: gemini`, `size: 1K`, `aspect-ratio:
17
+ 16:9` with the Lite model id carried as an `image-model` override, so it works
18
+ without touching `image_model_config.yaml` or the provider defaults. Pinned to
19
+ 1K because Lite is 1K-only. Use it via `--image-preset gem-lite` when cheap,
20
+ high-volume image generation is needed; all defaults are unchanged.
21
+
10
22
  ## [0.2.1] - 2026-06-20
11
23
 
12
24
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: polyptych
3
- Version: 0.2.1
3
+ Version: 0.3.0
4
4
  Summary: Turn a source text into visual media — slide decks and single-page infographics, with multi-provider text and image generation
5
5
  Project-URL: Homepage, https://github.com/jdinkla/polyptych-studio
6
6
  Project-URL: Repository, https://github.com/jdinkla/polyptych-studio
@@ -21,6 +21,7 @@
21
21
 
22
22
  gem: { provider: "gemini", size: "1K", aspect-ratio: "16:9" }
23
23
  gem-2k: { provider: "gemini", size: "2K", aspect-ratio: "16:9" } # infographic-grade legibility
24
+ gem-lite: { provider: "gemini", size: "1K", aspect-ratio: "16:9", image-model: "gemini-3.1-flash-lite-image" } # Nano Banana 2 Lite: cheapest/fastest, 1K only
24
25
 
25
26
  # --- OpenAI gpt-image-2 -------------------------------------------------------
26
27
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "polyptych"
3
- version = "0.2.1"
3
+ version = "0.3.0"
4
4
  description = "Turn a source text into visual media — slide decks and single-page infographics, with multi-provider text and image generation"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes