iris-devtester 1.19.1__tar.gz → 1.19.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 (271) hide show
  1. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/CHANGELOG.md +6 -0
  2. {iris_devtester-1.19.1/iris_devtester.egg-info → iris_devtester-1.19.2}/PKG-INFO +1 -1
  3. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/__init__.py +1 -1
  4. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/utils/dbapi_compat.py +7 -1
  5. {iris_devtester-1.19.1 → iris_devtester-1.19.2/iris_devtester.egg-info}/PKG-INFO +1 -1
  6. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/pyproject.toml +1 -1
  7. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/utils/test_dbapi_compat.py +68 -0
  8. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/AGENTS.md +0 -0
  9. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/CLAUDE.md +0 -0
  10. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/CONSTITUTION.md +0 -0
  11. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/LICENSE +0 -0
  12. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/MANIFEST.in +0 -0
  13. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/README.md +0 -0
  14. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/GETTING_STARTED.md +0 -0
  15. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/LANGCHAIN_INTEGRATION_QUICKSTART.md +0 -0
  16. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/ROADMAP.md +0 -0
  17. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/SQL_VS_OBJECTSCRIPT.md +0 -0
  18. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/TROUBLESHOOTING.md +0 -0
  19. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/WHATS_NEW_v1.4.0.md +0 -0
  20. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/archive/AGENTIC_SANDBOX_ENHANCEMENT_REPORT.md +0 -0
  21. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/archive/IMPACT_ANALYSIS.md +0 -0
  22. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/archive/IRIS_DEVTESTER_POSITIONING_REPORT.md +0 -0
  23. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/archive/LANGCHAIN_INTEGRATION_STRATEGY.md +0 -0
  24. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/archive/LANGCHAIN_INTEGRATION_TEST_RESULTS.md +0 -0
  25. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/archive/PHASE_2_PLAN.md +0 -0
  26. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/archive/RAG_TEMPLATES_ANALYSIS.md +0 -0
  27. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/archive/README.md +0 -0
  28. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/archive/STRATEGIC_ROADMAP_SUMMARY.md +0 -0
  29. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/archive/feature-009-refactor-plan.md +0 -0
  30. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/development/BUG_REPORT.md +0 -0
  31. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/development/EXTRACTION_SUMMARY.md +0 -0
  32. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/development/FEATURE_006_SUMMARY.md +0 -0
  33. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/development/PHASE2_RESULTS.md +0 -0
  34. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/development/PRE_PUBLISH_REVIEW.md +0 -0
  35. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/development/PROGRESS.md +0 -0
  36. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/development/PYPI_READINESS.md +0 -0
  37. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/development/SESSION-INTEGRATION-TESTS.md +0 -0
  38. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/development/SESSION-SUMMARY.md +0 -0
  39. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/development/STATUS-002-PIVOTED.md +0 -0
  40. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/development/STATUS-003-COMPLETE.md +0 -0
  41. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/development/STATUS.md +0 -0
  42. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/development/V1_COMPLETION_PLAN.md +0 -0
  43. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/development/V1_RELEASE_SUMMARY.md +0 -0
  44. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/features/WSGI-ASGI-SERVER-SETUP.md +0 -0
  45. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/features/agent-skills.md +0 -0
  46. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/features/dat-fixtures.md +0 -0
  47. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/features/docker-compose.md +0 -0
  48. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/features/performance-monitoring.md +0 -0
  49. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/features/testcontainers.md +0 -0
  50. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/api-contract-synchronization.md +0 -0
  51. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/callin-service-requirement.md +0 -0
  52. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/cpf-merge-and-container-restarts.md +0 -0
  53. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/dat-fixtures-docker-exec-pattern.md +0 -0
  54. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/dat-restore-database-isolation-problem.md +0 -0
  55. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/dbapi-bulk-insert-performance-issue.md +0 -0
  56. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/dbapi-objectscript-limitation.md +0 -0
  57. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/dbapi-password-reset-limitation.md +0 -0
  58. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/dbapi-private-module-myth.md +0 -0
  59. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/docker-hub-image-naming.md +0 -0
  60. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/embedded-python-considerations.md +0 -0
  61. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/feature-002-pivot-summary.md +0 -0
  62. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/integration-test-dbapi-limitation.md +0 -0
  63. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/iris-backup-patterns.md +0 -0
  64. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/iris-connection-access-denied-bug.md +0 -0
  65. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/iris-container-dind-port-mapping.md +0 -0
  66. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/iris-container-graceful-shutdown.md +0 -0
  67. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/iris-container-performance.md +0 -0
  68. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/iris-container-readiness.md +0 -0
  69. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/iris-container-volume-permissions.md +0 -0
  70. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/iris-docker-sdk-environment-variables.md +0 -0
  71. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/iris-performance-monitoring-landscape.md +0 -0
  72. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/iris-security-users-api.md +0 -0
  73. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/irishealth-editions.md +0 -0
  74. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/namespace-sql-vs-iris-connect.md +0 -0
  75. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/password-reset-changeflag-fix.md +0 -0
  76. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/rag-templates-production-patterns.md +0 -0
  77. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/sql-task-manager-operations.md +0 -0
  78. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/test-isolation-fix-summary.md +0 -0
  79. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/test-isolation-investigation.md +0 -0
  80. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/learnings/testcontainers-ryuk-lifecycle.md +0 -0
  81. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/docs/troubleshooting/table-not-found.md +0 -0
  82. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/examples/01_quickstart.py +0 -0
  83. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/examples/02_connection_management.py +0 -0
  84. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/examples/04_pytest_fixtures.py +0 -0
  85. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/examples/05_ci_cd.py +0 -0
  86. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/examples/08_auto_discovery.py +0 -0
  87. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/examples/09_enterprise.py +0 -0
  88. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/examples/10_docker_compose_integration.py +0 -0
  89. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/examples/langchain_integration_example.py +0 -0
  90. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/__main__.py +0 -0
  91. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/cli/__init__.py +0 -0
  92. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/cli/__main__.py +0 -0
  93. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/cli/connection_commands.py +0 -0
  94. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/cli/container.py +0 -0
  95. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/cli/container_commands.py +0 -0
  96. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/cli/dev_commands.py +0 -0
  97. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/cli/fixture_commands.py +0 -0
  98. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/config/__init__.py +0 -0
  99. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/config/auto_discovery.py +0 -0
  100. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/config/container_config.py +0 -0
  101. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/config/container_state.py +0 -0
  102. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/config/defaults.py +0 -0
  103. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/config/discovery.py +0 -0
  104. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/config/models.py +0 -0
  105. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/config/presets.py +0 -0
  106. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/config/yaml_loader.py +0 -0
  107. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/connections/__init__.py +0 -0
  108. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/connections/auto_discovery.py +0 -0
  109. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/connections/connection.py +0 -0
  110. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/connections/cursor_wrapper.py +0 -0
  111. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/connections/dbapi.py +0 -0
  112. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/connections/jdbc.py +0 -0
  113. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/connections/manager.py +0 -0
  114. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/connections/models.py +0 -0
  115. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/connections/retry.py +0 -0
  116. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/containers/__init__.py +0 -0
  117. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/containers/connection_info.py +0 -0
  118. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/containers/cpf_manager.py +0 -0
  119. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/containers/dev_instance.py +0 -0
  120. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/containers/iris_container.py +0 -0
  121. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/containers/models.py +0 -0
  122. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/containers/monitor_utils.py +0 -0
  123. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/containers/monitoring.py +0 -0
  124. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/containers/performance.py +0 -0
  125. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/containers/validation.py +0 -0
  126. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/containers/wait_strategies.py +0 -0
  127. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/diagnostics.py +0 -0
  128. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/fixtures/__init__.py +0 -0
  129. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/fixtures/creator.py +0 -0
  130. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/fixtures/loader.py +0 -0
  131. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/fixtures/manifest.py +0 -0
  132. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/fixtures/obj_export.py +0 -0
  133. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/fixtures/validator.py +0 -0
  134. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/integrations/__init__.py +0 -0
  135. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/integrations/langchain.py +0 -0
  136. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/ports/__init__.py +0 -0
  137. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/ports/assignment.py +0 -0
  138. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/ports/exceptions.py +0 -0
  139. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/ports/registry.py +0 -0
  140. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/testing/__init__.py +0 -0
  141. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/testing/fixtures.py +0 -0
  142. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/testing/helpers.py +0 -0
  143. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/testing/models.py +0 -0
  144. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/testing/schema_reset.py +0 -0
  145. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/utils/__init__.py +0 -0
  146. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/utils/container_port.py +0 -0
  147. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/utils/container_status.py +0 -0
  148. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/utils/enable_callin.py +0 -0
  149. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/utils/health_checks.py +0 -0
  150. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/utils/iris_container_adapter.py +0 -0
  151. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/utils/namespace.py +0 -0
  152. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/utils/password.py +0 -0
  153. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/utils/progress.py +0 -0
  154. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester/utils/test_connection.py +0 -0
  155. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester.egg-info/SOURCES.txt +0 -0
  156. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester.egg-info/dependency_links.txt +0 -0
  157. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester.egg-info/entry_points.txt +0 -0
  158. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester.egg-info/requires.txt +0 -0
  159. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/iris_devtester.egg-info/top_level.txt +0 -0
  160. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/setup.cfg +0 -0
  161. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/__init__.py +0 -0
  162. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/conftest.py +0 -0
  163. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/__init__.py +0 -0
  164. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/cli/test_container_logs_contract.py +0 -0
  165. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/cli/test_container_remove_contract.py +0 -0
  166. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/cli/test_container_restart_contract.py +0 -0
  167. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/cli/test_container_start_contract.py +0 -0
  168. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/cli/test_container_status_contract.py +0 -0
  169. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/cli/test_container_stop_contract.py +0 -0
  170. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/cli/test_container_up_contract.py +0 -0
  171. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_031_diagnostics.py +0 -0
  172. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_032_health_check.py +0 -0
  173. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_033_health_editions.py +0 -0
  174. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_034_cpf_password.py +0 -0
  175. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_035_graceful_shutdown.py +0 -0
  176. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_agent_skills.py +0 -0
  177. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_cli_container_commands.py +0 -0
  178. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_cli_fixture_commands.py +0 -0
  179. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_cli_ux_contract.py +0 -0
  180. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_connection_api.py +0 -0
  181. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_container_api.py +0 -0
  182. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_container_integration_contract.py +0 -0
  183. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_container_status_api.py +0 -0
  184. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_container_validation_api.py +0 -0
  185. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_dind_port_mapping.py +0 -0
  186. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_enable_callin_api.py +0 -0
  187. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_fixture_creator_api.py +0 -0
  188. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_fixture_loader_api.py +0 -0
  189. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_fixture_validator_api.py +0 -0
  190. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_iriscontainer_attach.py +0 -0
  191. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_legacy_package_contract.py +0 -0
  192. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_modern_package_contract.py +0 -0
  193. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_monitoring_config_api.py +0 -0
  194. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_package_detection.py +0 -0
  195. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_port_registry_contract.py +0 -0
  196. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_preconfig_contract.py +0 -0
  197. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_reset_verification_contract.py +0 -0
  198. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_resource_monitoring_api.py +0 -0
  199. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_retry_logic_contract.py +0 -0
  200. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_task_manager_api.py +0 -0
  201. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_test_connection_api.py +0 -0
  202. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/contract/test_testing_fixtures_api.py +0 -0
  203. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/e2e/__init__.py +0 -0
  204. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/e2e/test_port_registry_e2e.py +0 -0
  205. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/e2e/test_skill_workflow.py +0 -0
  206. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/__init__.py +0 -0
  207. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/conftest.py +0 -0
  208. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/ports/__init__.py +0 -0
  209. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/ports/test_manual_port_override.py +0 -0
  210. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/ports/test_multi_project_isolation.py +0 -0
  211. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/ports/test_port_exhaustion.py +0 -0
  212. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/ports/test_port_persistence.py +0 -0
  213. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/ports/test_stale_cleanup.py +0 -0
  214. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_bug_fixes.py +0 -0
  215. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_bug_fixes_011.py +0 -0
  216. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_cli_container_integration.py +0 -0
  217. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_connection_info_integration.py +0 -0
  218. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_connection_integration.py +0 -0
  219. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_container_health_monitor.py +0 -0
  220. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_container_status_integration.py +0 -0
  221. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_container_validation.py +0 -0
  222. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_cpf_merge.py +0 -0
  223. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_cpf_presets.py +0 -0
  224. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_cpf_security.py +0 -0
  225. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_custom_user_remediation.py +0 -0
  226. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_dev_instance.py +0 -0
  227. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_enable_callin_integration.py +0 -0
  228. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_fixture_export_patterns.py +0 -0
  229. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_fixture_performance.py +0 -0
  230. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_fixture_refresh.py +0 -0
  231. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_fixtures_integration.py +0 -0
  232. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_implicit_namespace.py +0 -0
  233. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_iriscontainer_attach_integration.py +0 -0
  234. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_monitor_utils_integration.py +0 -0
  235. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_monitoring_integration.py +0 -0
  236. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_password_preconfig_integration.py +0 -0
  237. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_password_reset_both_editions.py +0 -0
  238. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_password_reset_integration.py +0 -0
  239. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_password_reset_macos.py +0 -0
  240. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_password_reset_timing.py +0 -0
  241. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_password_reset_validation.py +0 -0
  242. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_proactive_password_reset.py +0 -0
  243. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_real_world_problems.py +0 -0
  244. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_reliable_password_reset.py +0 -0
  245. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/integration/test_test_connection_integration.py +0 -0
  246. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/__init__.py +0 -0
  247. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/config/test_config_hierarchy.py +0 -0
  248. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/config/test_container_config.py +0 -0
  249. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/config/test_yaml_loader.py +0 -0
  250. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_auto_discovery.py +0 -0
  251. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_config_discovery.py +0 -0
  252. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_connection_fallback.py +0 -0
  253. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_connection_info.py +0 -0
  254. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_cpf_manager.py +0 -0
  255. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_dev_instance_logic.py +0 -0
  256. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_iris_config.py +0 -0
  257. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_iris_connection_info.py +0 -0
  258. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_iris_container.py +0 -0
  259. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_manifest.py +0 -0
  260. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_monitoring_policy.py +0 -0
  261. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_namespace_utils.py +0 -0
  262. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_password_preconfig.py +0 -0
  263. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_password_preconfig_unit.py +0 -0
  264. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_performance_metrics.py +0 -0
  265. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_resource_thresholds.py +0 -0
  266. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_retry.py +0 -0
  267. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_schema_models.py +0 -0
  268. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_schema_reset_logic.py +0 -0
  269. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_validation_results.py +0 -0
  270. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/test_wait_strategies.py +0 -0
  271. {iris_devtester-1.19.1 → iris_devtester-1.19.2}/tests/unit/utils/test_iris_container_adapter.py +0 -0
@@ -5,6 +5,12 @@ All notable changes to iris-devtester will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.19.2] - 2026-07-30 - Fix connect_function ImportError when module absent from sys.modules
9
+
10
+ ### Fixed
11
+
12
+ - **`DBAPIPackageInfo.connect_function` raises after `patch.dict` exit** (`utils/dbapi_compat.py`): `patch.dict(sys.modules, ...)` deletes keys that were absent before the patch when it exits — the common case for unit tests that mock `intersystems_iris` before it has been imported. The 1.19.1 `@property` resolved the MagicMock poisoning but left `sys.modules.get()` returning `None` in this scenario, raising `ImportError: IRIS DBAPI module 'intersystems_iris' is no longer in sys.modules`. The module was importable the whole time. Fixed by falling back to `importlib.import_module(import_path)` when `sys.modules.get()` returns `None`.
13
+
8
14
  ## [1.19.1] - 2026-07-30 - Fix dbapi_compat singleton poisoning under test mocks
9
15
 
10
16
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris-devtester
3
- Version: 1.19.1
3
+ Version: 1.19.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>
@@ -26,7 +26,7 @@ LangChain Integration:
26
26
  ... # Build your RAG app...
27
27
  """
28
28
 
29
- __version__ = "1.19.1"
29
+ __version__ = "1.19.2"
30
30
  __author__ = "InterSystems Community"
31
31
  __license__ = "MIT"
32
32
 
@@ -65,11 +65,17 @@ class DBAPIPackageInfo:
65
65
  Resolving at call time (not at detection time) ensures that test patches
66
66
  applied via patch.dict(sys.modules, ...) take effect for exactly the
67
67
  duration of the patch and do not poison the singleton after the patch exits.
68
+
69
+ patch.dict removes keys that were absent before the patch, so after exit
70
+ the module may be gone from sys.modules even though it is importable.
71
+ Fall back to importlib.import_module() in that case rather than raising.
68
72
  See IDT-BUG-dbapi-adapter-singleton.md.
69
73
  """
74
+ import importlib
75
+
70
76
  module = sys.modules.get(self.import_path)
71
77
  if module is None:
72
- raise ImportError(f"IRIS DBAPI module '{self.import_path}' is no longer in sys.modules")
78
+ module = importlib.import_module(self.import_path)
73
79
  return getattr(module, self.connect_attr)
74
80
 
75
81
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris-devtester
3
- Version: 1.19.1
3
+ Version: 1.19.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>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "iris-devtester"
7
- version = "1.19.1"
7
+ version = "1.19.2"
8
8
  description = "Battle-tested InterSystems IRIS infrastructure utilities for Python development"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -21,6 +21,74 @@ def reset_adapter():
21
21
  dc.reset_adapter()
22
22
 
23
23
 
24
+ class TestModuleAbsentAfterPatch:
25
+ """patch.dict removes keys that were absent before the patch on exit.
26
+
27
+ The module is importable but not in sys.modules. connect_function must
28
+ import it rather than raising ImportError.
29
+ """
30
+
31
+ def test_connect_function_importable_when_absent_from_sys_modules(self):
32
+ """If import_path was absent pre-patch, it's deleted post-patch; must still resolve."""
33
+ import importlib
34
+
35
+ # Ensure the module is absent from sys.modules, then mock it
36
+ real_module = sys.modules.pop("intersystems_iris", None)
37
+ fake = MagicMock()
38
+ fake.connect = object() # sentinel
39
+
40
+ try:
41
+ assert "intersystems_iris" not in sys.modules, "pre-condition: key must be absent"
42
+ with patch.dict(sys.modules, {"intersystems_iris": fake}):
43
+ dc.reset_adapter()
44
+ dc.get_package_info() # singleton built while mock is present
45
+
46
+ # After patch.dict exit the key is gone (was absent before)
47
+ assert "intersystems_iris" not in sys.modules
48
+
49
+ # connect_function must import the real module, not raise
50
+ info = dc.get_package_info()
51
+ # Should not raise; real module is importable
52
+ fn = info.connect_function
53
+ assert not isinstance(fn, MagicMock), (
54
+ "connect_function returned MagicMock after patch exit with absent key"
55
+ )
56
+ finally:
57
+ # Restore original state
58
+ if real_module is not None:
59
+ sys.modules["intersystems_iris"] = real_module
60
+ elif "intersystems_iris" in sys.modules:
61
+ del sys.modules["intersystems_iris"]
62
+
63
+ def test_connect_function_does_not_raise_when_module_absent_from_sys_modules(self):
64
+ """connect_function must not raise ImportError when module absent but importable."""
65
+ import importlib
66
+
67
+ real_module = sys.modules.pop("intersystems_iris", None)
68
+ fake = MagicMock()
69
+ fake.connect = MagicMock()
70
+
71
+ try:
72
+ with patch.dict(sys.modules, {"intersystems_iris": fake}):
73
+ dc.reset_adapter()
74
+ info = dc.get_package_info()
75
+
76
+ assert "intersystems_iris" not in sys.modules
77
+
78
+ # Must not raise
79
+ dc.reset_adapter()
80
+ try:
81
+ info2 = dc.get_package_info()
82
+ _ = info2.connect_function
83
+ except ImportError as e:
84
+ pytest.fail(f"connect_function raised ImportError for importable module: {e}")
85
+ finally:
86
+ if real_module is not None:
87
+ sys.modules["intersystems_iris"] = real_module
88
+ elif "intersystems_iris" in sys.modules:
89
+ del sys.modules["intersystems_iris"]
90
+
91
+
24
92
  class TestSingletonPoisoning:
25
93
  """Fix #1: connect resolved at call time, not detection time."""
26
94
 
File without changes