iris-devtester 1.9.3__tar.gz → 1.10.2__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 (243) hide show
  1. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/PKG-INFO +42 -3
  2. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/README.md +41 -2
  3. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/SKILL.md +1 -1
  4. iris_devtester-1.10.2/docs/GETTING_STARTED.md +372 -0
  5. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/__init__.py +1 -1
  6. iris_devtester-1.10.2/iris_devtester/cli/__init__.py +58 -0
  7. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/cli/container.py +213 -20
  8. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/config/container_config.py +10 -4
  9. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/containers/iris_container.py +249 -17
  10. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/fixtures/__init__.py +21 -10
  11. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/fixtures/creator.py +18 -3
  12. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/fixtures/loader.py +5 -2
  13. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/fixtures/manifest.py +13 -4
  14. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/fixtures/validator.py +9 -3
  15. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester.egg-info/PKG-INFO +42 -3
  16. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester.egg-info/SOURCES.txt +1 -1
  17. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/pyproject.toml +1 -1
  18. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/conftest.py +14 -2
  19. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/ports/test_manual_port_override.py +30 -29
  20. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/ports/test_multi_project_isolation.py +5 -4
  21. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/ports/test_port_exhaustion.py +6 -6
  22. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/ports/test_port_persistence.py +3 -2
  23. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/ports/test_stale_cleanup.py +3 -2
  24. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_cpf_merge.py +13 -2
  25. iris_devtester-1.9.3/tests/integration/test_dat_fixtures_integration.py → iris_devtester-1.10.2/tests/integration/test_fixtures_integration.py +60 -22
  26. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/config/test_container_config.py +13 -2
  27. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_iris_container.py +47 -3
  28. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_password_preconfig.py +8 -0
  29. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_wait_strategies.py +2 -2
  30. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/utils/test_iris_container_adapter.py +1 -1
  31. iris_devtester-1.9.3/docs/GETTING_STARTED.md +0 -248
  32. iris_devtester-1.9.3/iris_devtester/cli/__init__.py +0 -29
  33. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/AGENTS.md +0 -0
  34. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/CLAUDE.md +0 -0
  35. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/CONSTITUTION.md +0 -0
  36. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/LICENSE +0 -0
  37. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/MANIFEST.in +0 -0
  38. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/LANGCHAIN_INTEGRATION_QUICKSTART.md +0 -0
  39. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/ROADMAP.md +0 -0
  40. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/SQL_VS_OBJECTSCRIPT.md +0 -0
  41. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/TROUBLESHOOTING.md +0 -0
  42. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/WHATS_NEW_v1.4.0.md +0 -0
  43. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/archive/AGENTIC_SANDBOX_ENHANCEMENT_REPORT.md +0 -0
  44. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/archive/IMPACT_ANALYSIS.md +0 -0
  45. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/archive/IRIS_DEVTESTER_POSITIONING_REPORT.md +0 -0
  46. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/archive/LANGCHAIN_INTEGRATION_STRATEGY.md +0 -0
  47. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/archive/LANGCHAIN_INTEGRATION_TEST_RESULTS.md +0 -0
  48. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/archive/PHASE_2_PLAN.md +0 -0
  49. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/archive/RAG_TEMPLATES_ANALYSIS.md +0 -0
  50. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/archive/README.md +0 -0
  51. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/archive/STRATEGIC_ROADMAP_SUMMARY.md +0 -0
  52. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/archive/feature-009-refactor-plan.md +0 -0
  53. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/development/BUG_REPORT.md +0 -0
  54. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/development/EXTRACTION_SUMMARY.md +0 -0
  55. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/development/FEATURE_006_SUMMARY.md +0 -0
  56. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/development/PHASE2_RESULTS.md +0 -0
  57. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/development/PRE_PUBLISH_REVIEW.md +0 -0
  58. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/development/PROGRESS.md +0 -0
  59. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/development/PYPI_READINESS.md +0 -0
  60. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/development/SESSION-INTEGRATION-TESTS.md +0 -0
  61. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/development/SESSION-SUMMARY.md +0 -0
  62. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/development/STATUS-002-PIVOTED.md +0 -0
  63. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/development/STATUS-003-COMPLETE.md +0 -0
  64. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/development/STATUS.md +0 -0
  65. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/development/V1_COMPLETION_PLAN.md +0 -0
  66. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/development/V1_RELEASE_SUMMARY.md +0 -0
  67. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/features/WSGI-ASGI-SERVER-SETUP.md +0 -0
  68. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/features/agent-skills.md +0 -0
  69. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/features/dat-fixtures.md +0 -0
  70. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/features/docker-compose.md +0 -0
  71. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/features/performance-monitoring.md +0 -0
  72. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/features/testcontainers.md +0 -0
  73. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/api-contract-synchronization.md +0 -0
  74. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/callin-service-requirement.md +0 -0
  75. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/cpf-merge-and-container-restarts.md +0 -0
  76. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/dat-fixtures-docker-exec-pattern.md +0 -0
  77. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/dat-restore-database-isolation-problem.md +0 -0
  78. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/dbapi-bulk-insert-performance-issue.md +0 -0
  79. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/dbapi-objectscript-limitation.md +0 -0
  80. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/dbapi-password-reset-limitation.md +0 -0
  81. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/dbapi-private-module-myth.md +0 -0
  82. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/docker-hub-image-naming.md +0 -0
  83. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/embedded-python-considerations.md +0 -0
  84. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/feature-002-pivot-summary.md +0 -0
  85. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/integration-test-dbapi-limitation.md +0 -0
  86. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/iris-backup-patterns.md +0 -0
  87. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/iris-container-performance.md +0 -0
  88. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/iris-container-readiness.md +0 -0
  89. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/iris-docker-sdk-environment-variables.md +0 -0
  90. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/iris-performance-monitoring-landscape.md +0 -0
  91. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/iris-security-users-api.md +0 -0
  92. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/password-reset-changeflag-fix.md +0 -0
  93. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/rag-templates-production-patterns.md +0 -0
  94. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/sql-task-manager-operations.md +0 -0
  95. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/test-isolation-fix-summary.md +0 -0
  96. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/test-isolation-investigation.md +0 -0
  97. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/docs/learnings/testcontainers-ryuk-lifecycle.md +0 -0
  98. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/examples/01_quickstart.py +0 -0
  99. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/examples/02_connection_management.py +0 -0
  100. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/examples/04_pytest_fixtures.py +0 -0
  101. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/examples/05_ci_cd.py +0 -0
  102. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/examples/08_auto_discovery.py +0 -0
  103. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/examples/09_enterprise.py +0 -0
  104. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/examples/10_docker_compose_integration.py +0 -0
  105. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/examples/langchain_integration_example.py +0 -0
  106. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/cli/__main__.py +0 -0
  107. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/cli/connection_commands.py +0 -0
  108. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/cli/container_commands.py +0 -0
  109. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/cli/fixture_commands.py +0 -0
  110. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/config/__init__.py +0 -0
  111. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/config/auto_discovery.py +0 -0
  112. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/config/container_state.py +0 -0
  113. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/config/defaults.py +0 -0
  114. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/config/discovery.py +0 -0
  115. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/config/models.py +0 -0
  116. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/config/presets.py +0 -0
  117. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/config/yaml_loader.py +0 -0
  118. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/connections/__init__.py +0 -0
  119. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/connections/auto_discovery.py +0 -0
  120. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/connections/connection.py +0 -0
  121. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/connections/dbapi.py +0 -0
  122. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/connections/jdbc.py +0 -0
  123. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/connections/manager.py +0 -0
  124. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/connections/models.py +0 -0
  125. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/connections/retry.py +0 -0
  126. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/containers/__init__.py +0 -0
  127. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/containers/cpf_manager.py +0 -0
  128. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/containers/models.py +0 -0
  129. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/containers/monitor_utils.py +0 -0
  130. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/containers/monitoring.py +0 -0
  131. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/containers/performance.py +0 -0
  132. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/containers/validation.py +0 -0
  133. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/containers/wait_strategies.py +0 -0
  134. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/fixtures/obj_export.py +0 -0
  135. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/integrations/__init__.py +0 -0
  136. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/integrations/langchain.py +0 -0
  137. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/ports/__init__.py +0 -0
  138. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/ports/assignment.py +0 -0
  139. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/ports/exceptions.py +0 -0
  140. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/ports/registry.py +0 -0
  141. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/testing/__init__.py +0 -0
  142. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/testing/fixtures.py +0 -0
  143. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/testing/helpers.py +0 -0
  144. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/testing/models.py +0 -0
  145. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/testing/schema_reset.py +0 -0
  146. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/utils/__init__.py +0 -0
  147. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/utils/container_port.py +0 -0
  148. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/utils/container_status.py +0 -0
  149. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/utils/dbapi_compat.py +0 -0
  150. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/utils/enable_callin.py +0 -0
  151. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/utils/health_checks.py +0 -0
  152. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/utils/iris_container_adapter.py +0 -0
  153. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/utils/password.py +0 -0
  154. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/utils/progress.py +0 -0
  155. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester/utils/test_connection.py +0 -0
  156. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester.egg-info/dependency_links.txt +0 -0
  157. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester.egg-info/entry_points.txt +0 -0
  158. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester.egg-info/requires.txt +0 -0
  159. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/iris_devtester.egg-info/top_level.txt +0 -0
  160. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/setup.cfg +0 -0
  161. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/__init__.py +0 -0
  162. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/__init__.py +0 -0
  163. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/cli/test_container_logs_contract.py +0 -0
  164. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/cli/test_container_remove_contract.py +0 -0
  165. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/cli/test_container_restart_contract.py +0 -0
  166. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/cli/test_container_start_contract.py +0 -0
  167. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/cli/test_container_status_contract.py +0 -0
  168. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/cli/test_container_stop_contract.py +0 -0
  169. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/cli/test_container_up_contract.py +0 -0
  170. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_agent_skills.py +0 -0
  171. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_cli_container_commands.py +0 -0
  172. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_cli_fixture_commands.py +0 -0
  173. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_connection_api.py +0 -0
  174. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_container_api.py +0 -0
  175. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_container_integration_contract.py +0 -0
  176. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_container_status_api.py +0 -0
  177. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_container_validation_api.py +0 -0
  178. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_enable_callin_api.py +0 -0
  179. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_fixture_creator_api.py +0 -0
  180. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_fixture_loader_api.py +0 -0
  181. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_fixture_validator_api.py +0 -0
  182. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_iriscontainer_attach.py +0 -0
  183. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_legacy_package_contract.py +0 -0
  184. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_modern_package_contract.py +0 -0
  185. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_monitoring_config_api.py +0 -0
  186. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_package_detection.py +0 -0
  187. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_port_registry_contract.py +0 -0
  188. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_preconfig_contract.py +0 -0
  189. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_reset_verification_contract.py +0 -0
  190. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_resource_monitoring_api.py +0 -0
  191. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_retry_logic_contract.py +0 -0
  192. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_task_manager_api.py +0 -0
  193. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_test_connection_api.py +0 -0
  194. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/contract/test_testing_fixtures_api.py +0 -0
  195. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/e2e/__init__.py +0 -0
  196. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/e2e/test_skill_workflow.py +0 -0
  197. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/__init__.py +0 -0
  198. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/conftest.py +0 -0
  199. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/ports/__init__.py +0 -0
  200. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_bug_fixes.py +0 -0
  201. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_bug_fixes_011.py +0 -0
  202. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_cli_container_integration.py +0 -0
  203. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_connection_integration.py +0 -0
  204. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_container_health_monitor.py +0 -0
  205. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_container_status_integration.py +0 -0
  206. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_container_validation.py +0 -0
  207. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_cpf_presets.py +0 -0
  208. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_cpf_security.py +0 -0
  209. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_custom_user_remediation.py +0 -0
  210. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_enable_callin_integration.py +0 -0
  211. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_fixture_export_patterns.py +0 -0
  212. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_fixture_performance.py +0 -0
  213. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_fixture_refresh.py +0 -0
  214. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_iriscontainer_attach_integration.py +0 -0
  215. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_monitor_utils_integration.py +0 -0
  216. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_monitoring_integration.py +0 -0
  217. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_password_preconfig_integration.py +0 -0
  218. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_password_reset_both_editions.py +0 -0
  219. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_password_reset_integration.py +0 -0
  220. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_password_reset_macos.py +0 -0
  221. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_password_reset_timing.py +0 -0
  222. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_password_reset_validation.py +0 -0
  223. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_proactive_password_reset.py +0 -0
  224. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_real_world_problems.py +0 -0
  225. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_reliable_password_reset.py +0 -0
  226. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/integration/test_test_connection_integration.py +0 -0
  227. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/__init__.py +0 -0
  228. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/config/test_config_hierarchy.py +0 -0
  229. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/config/test_yaml_loader.py +0 -0
  230. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_auto_discovery.py +0 -0
  231. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_config_discovery.py +0 -0
  232. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_connection_fallback.py +0 -0
  233. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_connection_info.py +0 -0
  234. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_cpf_manager.py +0 -0
  235. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_iris_config.py +0 -0
  236. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_manifest.py +0 -0
  237. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_monitoring_policy.py +0 -0
  238. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_password_preconfig_unit.py +0 -0
  239. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_performance_metrics.py +0 -0
  240. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_resource_thresholds.py +0 -0
  241. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_retry.py +0 -0
  242. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_schema_models.py +0 -0
  243. {iris_devtester-1.9.3 → iris_devtester-1.10.2}/tests/unit/test_validation_results.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris-devtester
3
- Version: 1.9.3
3
+ Version: 1.10.2
4
4
  Summary: Battle-tested InterSystems IRIS infrastructure utilities for Python development
5
5
  Author-email: InterSystems Community <community@intersystems.com>
6
6
  Maintainer-email: Thomas Dyar <thomas.dyar@intersystems.com>
@@ -107,9 +107,17 @@ def test_connection():
107
107
  assert cursor.fetchone()[0] == 1
108
108
  ```
109
109
 
110
- ## Container API
110
+ ## Container Editions
111
111
 
112
- ### Basic Usage
112
+ Three canonical container editions are available:
113
+
114
+ | Edition | Size | Use Case | Image |
115
+ |---------|------|----------|-------|
116
+ | **Community** | ~972MB | Development, testing | `intersystemsdc/iris-community` |
117
+ | **Enterprise** | ~1GB+ | Production testing | `containers.intersystems.com/intersystems/iris` |
118
+ | **Light** | **~580MB** | CI/CD pipelines | `caretdev/iris-community-light` |
119
+
120
+ ### Python API
113
121
  ```python
114
122
  from iris_devtester.containers import IRISContainer
115
123
 
@@ -117,11 +125,42 @@ from iris_devtester.containers import IRISContainer
117
125
  with IRISContainer.community() as iris:
118
126
  conn = iris.get_connection()
119
127
 
128
+ # Light Edition (85% smaller, for CI/CD)
129
+ with IRISContainer.light() as iris:
130
+ conn = iris.get_connection()
131
+
120
132
  # Enterprise Edition (requires license)
121
133
  with IRISContainer.enterprise(license_key="/path/to/iris.key") as iris:
122
134
  conn = iris.get_connection()
135
+
136
+ # Specify version
137
+ with IRISContainer.community(version="2025.1") as iris:
138
+ conn = iris.get_connection()
139
+ ```
140
+
141
+ ### CLI Usage
142
+ ```bash
143
+ # Community (default)
144
+ iris-devtester container up
145
+
146
+ # Light edition for CI/CD
147
+ iris-devtester container up --edition light
148
+
149
+ # Enterprise edition with license
150
+ iris-devtester container up --edition enterprise --license /path/to/iris.key
151
+
152
+ # List running IRIS containers
153
+ iris-devtester container list
123
154
  ```
124
155
 
156
+ ### Light Edition Details
157
+
158
+ The Light edition removes components unnecessary for SQL-only workloads:
159
+ - **Removed**: Interoperability/Ensemble, Management Portal, DeepSee/BI, CSP/REST
160
+ - **Kept**: SQL engine, DBAPI, JDBC, ODBC, SQLAlchemy-IRIS support
161
+
162
+ Perfect for microservices, automated testing, and Python/SQL pipelines.
163
+
125
164
  ### Builder Methods
126
165
  ```python
127
166
  # Set a custom container name (for debugging, logs, multiple containers)
@@ -43,9 +43,17 @@ def test_connection():
43
43
  assert cursor.fetchone()[0] == 1
44
44
  ```
45
45
 
46
- ## Container API
46
+ ## Container Editions
47
47
 
48
- ### Basic Usage
48
+ Three canonical container editions are available:
49
+
50
+ | Edition | Size | Use Case | Image |
51
+ |---------|------|----------|-------|
52
+ | **Community** | ~972MB | Development, testing | `intersystemsdc/iris-community` |
53
+ | **Enterprise** | ~1GB+ | Production testing | `containers.intersystems.com/intersystems/iris` |
54
+ | **Light** | **~580MB** | CI/CD pipelines | `caretdev/iris-community-light` |
55
+
56
+ ### Python API
49
57
  ```python
50
58
  from iris_devtester.containers import IRISContainer
51
59
 
@@ -53,11 +61,42 @@ from iris_devtester.containers import IRISContainer
53
61
  with IRISContainer.community() as iris:
54
62
  conn = iris.get_connection()
55
63
 
64
+ # Light Edition (85% smaller, for CI/CD)
65
+ with IRISContainer.light() as iris:
66
+ conn = iris.get_connection()
67
+
56
68
  # Enterprise Edition (requires license)
57
69
  with IRISContainer.enterprise(license_key="/path/to/iris.key") as iris:
58
70
  conn = iris.get_connection()
71
+
72
+ # Specify version
73
+ with IRISContainer.community(version="2025.1") as iris:
74
+ conn = iris.get_connection()
75
+ ```
76
+
77
+ ### CLI Usage
78
+ ```bash
79
+ # Community (default)
80
+ iris-devtester container up
81
+
82
+ # Light edition for CI/CD
83
+ iris-devtester container up --edition light
84
+
85
+ # Enterprise edition with license
86
+ iris-devtester container up --edition enterprise --license /path/to/iris.key
87
+
88
+ # List running IRIS containers
89
+ iris-devtester container list
59
90
  ```
60
91
 
92
+ ### Light Edition Details
93
+
94
+ The Light edition removes components unnecessary for SQL-only workloads:
95
+ - **Removed**: Interoperability/Ensemble, Management Portal, DeepSee/BI, CSP/REST
96
+ - **Kept**: SQL engine, DBAPI, JDBC, ODBC, SQLAlchemy-IRIS support
97
+
98
+ Perfect for microservices, automated testing, and Python/SQL pipelines.
99
+
61
100
  ### Builder Methods
62
101
  ```python
63
102
  # Set a custom container name (for debugging, logs, multiple containers)
@@ -3,7 +3,7 @@ name: iris-devtester
3
3
  description: Battle-tested InterSystems IRIS infrastructure utilities for Python database testing.
4
4
  triggers: [iris, database, testing, container, fixture, gof, connection, remediation]
5
5
  metadata:
6
- version: 1.9.3
6
+ version: 1.10.0
7
7
  author: InterSystems Community
8
8
  principles: [library-first, dbapi-first, isolation-by-default, fail-fast]
9
9
  ---
@@ -0,0 +1,372 @@
1
+ # Getting Started with iris-devtester
2
+
3
+ **Version**: 1.10.1
4
+ **Package**: [iris-devtester on PyPI](https://pypi.org/project/iris-devtester/)
5
+
6
+ ## What Is This?
7
+
8
+ `iris-devtester` is a Python testing toolkit for InterSystems IRIS databases. It provides:
9
+
10
+ - **Container Management**: Start/stop IRIS containers with one command
11
+ - **Connection Handling**: DBAPI-first connections with automatic retry
12
+ - **Fixture Loading**: Load .DAT fixtures for reproducible test data
13
+ - **pytest Integration**: Ready-to-use fixtures for test isolation
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ # Basic installation (DBAPI support)
19
+ pip install iris-devtester
20
+
21
+ # With all features (JDBC, fixtures, testing)
22
+ pip install "iris-devtester[all]"
23
+ ```
24
+
25
+ ## Quick Start
26
+
27
+ ### CLI Usage (Recommended for CI/CD)
28
+
29
+ ```bash
30
+ # Start an IRIS container (zero-config)
31
+ iris-devtester container up
32
+
33
+ # Start light edition (85% smaller, ideal for CI/CD)
34
+ iris-devtester container up --edition light
35
+
36
+ # List running containers
37
+ iris-devtester container list
38
+
39
+ # Test database connectivity
40
+ iris-devtester test-connection
41
+
42
+ # View container status
43
+ iris-devtester container status
44
+
45
+ # Stop and remove when done
46
+ iris-devtester container stop
47
+ iris-devtester container remove
48
+ ```
49
+
50
+ ### Python API Usage
51
+
52
+ ```python
53
+ from iris_devtester.containers import IRISContainer
54
+
55
+ # Start a container with context manager (auto-cleanup)
56
+ with IRISContainer.community() as iris:
57
+ conn = iris.get_connection()
58
+ cursor = conn.cursor()
59
+ cursor.execute("SELECT $ZVERSION")
60
+ print(cursor.fetchone()[0])
61
+ ```
62
+
63
+ ### pytest Integration
64
+
65
+ ```python
66
+ # conftest.py
67
+ from iris_devtester.testing import iris_db
68
+
69
+ # Use the fixture in tests
70
+ def test_database_query(iris_db):
71
+ conn = iris_db.get_connection()
72
+ cursor = conn.cursor()
73
+ cursor.execute("SELECT 1+1")
74
+ assert cursor.fetchone()[0] == 2
75
+ ```
76
+
77
+ ## Container Editions
78
+
79
+ Choose the right edition for your use case:
80
+
81
+ | Edition | Size | Use Case | Factory Method |
82
+ |---------|------|----------|----------------|
83
+ | **Community** | ~3.5GB | Full-featured development | `IRISContainer.community()` |
84
+ | **Light** | ~580MB | CI/CD pipelines (6x smaller) | `IRISContainer.light()` |
85
+ | **Enterprise** | ~1GB+ | Licensed production features | `IRISContainer.enterprise(license_key=...)` |
86
+
87
+ ### Light Edition Details
88
+
89
+ The light edition (`caretdev/iris-community-light`) is optimized for CI/CD:
90
+
91
+ - **85% smaller** than full community edition
92
+ - **Removes**: Interoperability, Management Portal, DeepSee/BI, CSP/REST
93
+ - **Keeps**: SQL engine, DBAPI, JDBC, ODBC, SQLAlchemy-IRIS
94
+ - **Multi-arch**: Supports both ARM64 (Apple Silicon) and x86
95
+
96
+ ```bash
97
+ # CLI
98
+ iris-devtester container up --edition light
99
+
100
+ # Python
101
+ with IRISContainer.light() as iris:
102
+ conn = iris.get_connection()
103
+ ```
104
+
105
+ ### Enterprise Edition
106
+
107
+ For licensed IRIS with enterprise features:
108
+
109
+ ```bash
110
+ # CLI
111
+ iris-devtester container up --edition enterprise --license ~/.iris/iris.key
112
+
113
+ # Python
114
+ with IRISContainer.enterprise(license_key="/path/to/iris.key") as iris:
115
+ conn = iris.get_connection()
116
+ ```
117
+
118
+ ## CLI Command Reference
119
+
120
+ ### Container Commands
121
+
122
+ ```bash
123
+ iris-devtester container --help
124
+
125
+ # Available commands:
126
+ up Create and start container
127
+ list List IRIS containers
128
+ status Check container health
129
+ start Start existing container
130
+ stop Stop container
131
+ restart Restart container
132
+ remove Remove container
133
+ logs View container logs
134
+ reset-password Reset IRIS user password
135
+ enable-callin Enable CallIn service (for DBAPI)
136
+ test-connection Test database connectivity
137
+ ```
138
+
139
+ ### Common Options
140
+
141
+ ```bash
142
+ # Custom container name
143
+ iris-devtester container up --name my-project-db
144
+
145
+ # Specify edition
146
+ iris-devtester container up --edition light
147
+
148
+ # JSON output (for scripting/agents)
149
+ iris-devtester container list --format json
150
+ iris-devtester container status --format json
151
+ ```
152
+
153
+ ### Exit Codes
154
+
155
+ For automation and AI agents:
156
+
157
+ | Code | Meaning |
158
+ |------|---------|
159
+ | 0 | Success |
160
+ | 1 | General error |
161
+ | 2 | Not found / Config error |
162
+ | 5 | Timeout |
163
+
164
+ ## Configuration
165
+
166
+ ### Environment Variables
167
+
168
+ ```bash
169
+ export IRIS_HOST=localhost
170
+ export IRIS_PORT=1972
171
+ export IRIS_NAMESPACE=USER
172
+ export IRIS_USERNAME=_SYSTEM
173
+ export IRIS_PASSWORD=SYS
174
+ ```
175
+
176
+ ### YAML Configuration
177
+
178
+ Create `iris-config.yml`:
179
+
180
+ ```yaml
181
+ container_name: my-iris-db
182
+ edition: community
183
+ superserver_port: 1972
184
+ webserver_port: 52773
185
+ namespace: USER
186
+ password: SYS
187
+ ```
188
+
189
+ Then use:
190
+
191
+ ```bash
192
+ iris-devtester container up --config iris-config.yml
193
+ ```
194
+
195
+ ## Common Workflows
196
+
197
+ ### Local Development
198
+
199
+ ```bash
200
+ # Start container once
201
+ iris-devtester container up --name dev-iris
202
+
203
+ # Run your tests
204
+ pytest
205
+
206
+ # Container persists between test runs
207
+ # Stop when done for the day
208
+ iris-devtester container stop
209
+ ```
210
+
211
+ ### CI/CD Pipeline
212
+
213
+ ```yaml
214
+ # GitHub Actions example
215
+ jobs:
216
+ test:
217
+ runs-on: ubuntu-latest
218
+ steps:
219
+ - uses: actions/checkout@v4
220
+ - uses: actions/setup-python@v5
221
+ with:
222
+ python-version: '3.11'
223
+
224
+ - name: Install dependencies
225
+ run: pip install -e ".[test]"
226
+
227
+ - name: Start IRIS (light edition for speed)
228
+ run: iris-devtester container up --edition light
229
+
230
+ - name: Run tests
231
+ run: pytest
232
+
233
+ - name: Cleanup
234
+ if: always()
235
+ run: iris-devtester container remove --force
236
+ ```
237
+
238
+ ### Fixture-Based Testing
239
+
240
+ ```bash
241
+ # Create fixture from existing data
242
+ iris-devtester fixture create --namespace USER --output ./fixtures/baseline
243
+
244
+ # Load fixture into test database
245
+ iris-devtester fixture load --fixture ./fixtures/baseline
246
+ ```
247
+
248
+ ## Troubleshooting
249
+
250
+ ### "Access Denied" Errors
251
+
252
+ Usually caused by expired passwords. Fix:
253
+
254
+ ```bash
255
+ iris-devtester container reset-password
256
+ iris-devtester test-connection
257
+ ```
258
+
259
+ ### Container Won't Start
260
+
261
+ Check if port is in use:
262
+
263
+ ```bash
264
+ # List all IRIS containers
265
+ iris-devtester container list --all
266
+
267
+ # Remove old container
268
+ iris-devtester container remove old-container --force
269
+ ```
270
+
271
+ ### DBAPI Connection Fails
272
+
273
+ Ensure CallIn service is enabled:
274
+
275
+ ```bash
276
+ iris-devtester container enable-callin
277
+ ```
278
+
279
+ ## For AI Agents
280
+
281
+ This CLI is designed to be agent-friendly:
282
+
283
+ 1. **Self-documenting**: `iris-devtester --help` shows all options
284
+ 2. **Structured output**: `--format json` for machine-readable data
285
+ 3. **Clear exit codes**: 0=success, non-zero=failure
286
+ 4. **Idempotent operations**: Safe to run commands multiple times
287
+
288
+ Example agent workflow:
289
+
290
+ ```bash
291
+ # Check if container exists
292
+ iris-devtester container list --format json
293
+
294
+ # Start if not running
295
+ iris-devtester container up --edition light
296
+
297
+ # Verify connectivity
298
+ iris-devtester test-connection
299
+
300
+ # Run tests
301
+ pytest tests/
302
+ ```
303
+
304
+ ## When to Use docker-compose Instead
305
+
306
+ `iris-devtester` manages **single IRIS containers**. For these scenarios, use `docker-compose` directly:
307
+
308
+ | Scenario | Why docker-compose |
309
+ |----------|-------------------|
310
+ | **Sharded clusters** | Multiple shards + router require coordinated networking |
311
+ | **Mirrored pairs** | Primary + backup with failover configuration |
312
+ | **ECP configurations** | Application servers + database servers |
313
+ | **Multi-service stacks** | IRIS + web server + cache + queue |
314
+ | **Custom networking** | Specific network topologies or bridges |
315
+
316
+ ### Example: Sharded IRIS Cluster
317
+
318
+ For a sharded HNSW vector search setup with 8 shards:
319
+
320
+ ```yaml
321
+ # docker-compose.yaml
322
+ services:
323
+ iris-router:
324
+ image: intersystemsdc/iris-community:latest
325
+ ports:
326
+ - "1972:1972"
327
+ # Router configuration...
328
+
329
+ iris-shard-1:
330
+ image: intersystemsdc/iris-community:latest
331
+ # Shard 1 configuration...
332
+
333
+ iris-shard-2:
334
+ image: intersystemsdc/iris-community:latest
335
+ # Shard 2 configuration...
336
+
337
+ # ... more shards
338
+ ```
339
+
340
+ Then use:
341
+
342
+ ```bash
343
+ docker-compose up -d
344
+ # Wait for cluster to be ready
345
+ docker-compose logs -f iris-router
346
+ ```
347
+
348
+ ### Custom Images with iris-devtester
349
+
350
+ For **single containers** with custom images, use the `--image` option:
351
+
352
+ ```bash
353
+ # Custom registry
354
+ iris-devtester container up --image myregistry.io/iris:custom
355
+
356
+ # Specific IRIS version
357
+ iris-devtester container up --image intersystemsdc/iris-community:2024.1
358
+
359
+ # IRIS with ZPM pre-installed
360
+ iris-devtester container up --image intersystemsdc/iris-community:2024.1-zpm
361
+ ```
362
+
363
+ ## Next Steps
364
+
365
+ - [README.md](../README.md) - Full package documentation
366
+ - [TROUBLESHOOTING.md](TROUBLESHOOTING.md) - Common issues and solutions
367
+ - [CONSTITUTION.md](../CONSTITUTION.md) - Design principles
368
+ - [SKILL.md](../SKILL.md) - AI agent skill manifest
369
+
370
+ ---
371
+
372
+ **Questions?** Open an issue on [GitHub](https://github.com/intersystems-community/iris-devtester/issues)
@@ -26,7 +26,7 @@ LangChain Integration:
26
26
  ... # Build your RAG app...
27
27
  """
28
28
 
29
- __version__ = "1.9.3"
29
+ __version__ = "1.10.1"
30
30
  __author__ = "InterSystems Community"
31
31
  __license__ = "MIT"
32
32
 
@@ -0,0 +1,58 @@
1
+ """CLI commands for iris-devtester."""
2
+
3
+ import click
4
+
5
+ from iris_devtester import __version__
6
+
7
+ from .connection_commands import test_connection
8
+ from .container import container_group as container
9
+ from .fixture_commands import fixture
10
+
11
+
12
+ @click.group()
13
+ @click.version_option(version=__version__, prog_name="iris-devtester")
14
+ def main():
15
+ """
16
+ iris-devtester - Python testing toolkit for InterSystems IRIS databases.
17
+
18
+ \b
19
+ WHAT THIS TOOL DOES:
20
+ Manages IRIS database containers, fixtures, and connections for testing.
21
+ Designed for CI/CD pipelines, local development, and AI agent automation.
22
+
23
+ \b
24
+ CONTAINER EDITIONS:
25
+ community Full IRIS Community (~3.5GB) - default, all features
26
+ light Minimal for CI/CD (~580MB) - SQL/DBAPI only, 6x smaller
27
+ enterprise Licensed IRIS - requires iris.key file
28
+
29
+ \b
30
+ QUICK START:
31
+ iris-devtester container up # Start community
32
+ iris-devtester container up --edition light # Start light (CI/CD)
33
+ iris-devtester container list # List containers
34
+ iris-devtester test-connection # Verify connectivity
35
+ iris-devtester container status # Check health
36
+
37
+ \b
38
+ COMMON WORKFLOWS:
39
+ Local dev: container up → test-connection → (your tests)
40
+ CI/CD: container up --edition light → test-connection → pytest
41
+ Fixtures: fixture load --fixture ./data → (verify data)
42
+
43
+ \b
44
+ FOR AI AGENTS:
45
+ All commands support --help for detailed options. Commands return
46
+ structured exit codes (0=success, 1=error, 2=not found, 5=timeout).
47
+ Use 'container list --format json' for machine-readable output.
48
+ """
49
+ pass
50
+
51
+
52
+ # Register subcommands
53
+ main.add_command(fixture)
54
+ main.add_command(container)
55
+ main.add_command(test_connection)
56
+
57
+
58
+ __all__ = ["main", "fixture", "container", "test_connection"]