iints-sdk-python35 1.5.4__tar.gz → 1.5.6__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 (280) hide show
  1. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/LICENSE +2 -2
  2. iints_sdk_python35-1.5.6/PKG-INFO +131 -0
  3. iints_sdk_python35-1.5.6/README.md +64 -0
  4. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/pyproject.toml +40 -39
  5. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/__init__.py +7 -3
  6. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/baseline.py +34 -0
  7. iints_sdk_python35-1.5.6/src/iints/api/registry.py +383 -0
  8. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/cli/cli.py +2049 -96
  9. iints_sdk_python35-1.5.6/src/iints/core/algorithms/imitation_controller.py +78 -0
  10. iints_sdk_python35-1.5.6/src/iints/core/algorithms/neural_controller.py +89 -0
  11. iints_sdk_python35-1.5.6/src/iints/core/devices/__init__.py +3 -0
  12. iints_sdk_python35-1.5.6/src/iints/core/devices/models.py +333 -0
  13. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/patient/bergman_model.py +28 -13
  14. iints_sdk_python35-1.5.6/src/iints/core/patient/profile.py +102 -0
  15. iints_sdk_python35-1.5.6/src/iints/core/physiology_variation.py +119 -0
  16. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/simulator.py +43 -8
  17. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/__init__.py +48 -1
  18. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/datasets.json +62 -5
  19. iints_sdk_python35-1.5.6/src/iints/data/demo/demo_cgm.csv +289 -0
  20. iints_sdk_python35-1.5.6/src/iints/data/physiology_residual_profiles.json +13953 -0
  21. iints_sdk_python35-1.5.6/src/iints/data/realism_dashboard.py +390 -0
  22. iints_sdk_python35-1.5.6/src/iints/data/realism_reference.py +229 -0
  23. iints_sdk_python35-1.5.6/src/iints/data/realism_references.json +56 -0
  24. iints_sdk_python35-1.5.6/src/iints/data/realism_validator.py +813 -0
  25. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/synthetic_mirror.py +183 -10
  26. iints_sdk_python35-1.5.6/src/iints/data/tidepool.py +268 -0
  27. iints_sdk_python35-1.5.6/src/iints/data/virtual_patients/reference_azt1d_t1d.yaml +12 -0
  28. iints_sdk_python35-1.5.6/src/iints/data/virtual_patients/reference_free_living_t1d.yaml +12 -0
  29. iints_sdk_python35-1.5.6/src/iints/data/virtual_patients/reference_hupa_ucm_t1d.yaml +12 -0
  30. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/highlevel.py +38 -25
  31. iints_sdk_python35-1.5.6/src/iints/jetson/__init__.py +25 -0
  32. iints_sdk_python35-1.5.6/src/iints/jetson/endurance.py +1138 -0
  33. iints_sdk_python35-1.5.6/src/iints/jetson/research_pipeline.py +230 -0
  34. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/live_patient/api.py +6 -0
  35. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/live_patient/edge_ops.py +204 -0
  36. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/live_patient/runtime.py +15 -14
  37. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/presets/evidence_sources.yaml +9 -1
  38. iints_sdk_python35-1.5.6/src/iints/presets/presets.json +476 -0
  39. iints_sdk_python35-1.5.6/src/iints/research/__init__.py +121 -0
  40. iints_sdk_python35-1.5.6/src/iints/research/control.py +151 -0
  41. iints_sdk_python35-1.5.6/src/iints/research/control_eval.py +258 -0
  42. iints_sdk_python35-1.5.6/src/iints/research/data_blend.py +98 -0
  43. iints_sdk_python35-1.5.6/src/iints/research/evaluation.py +285 -0
  44. iints_sdk_python35-1.5.6/src/iints/research/neural_control.py +185 -0
  45. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/scenarios/study_pack.py +31 -18
  46. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/utils/run_io.py +11 -0
  47. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/validation/run_validation.py +11 -0
  48. iints_sdk_python35-1.5.6/src/iints_sdk_python35.egg-info/PKG-INFO +131 -0
  49. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints_sdk_python35.egg-info/SOURCES.txt +28 -1
  50. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints_sdk_python35.egg-info/entry_points.txt +1 -1
  51. iints_sdk_python35-1.5.6/src/iints_sdk_python35.egg-info/requires.txt +53 -0
  52. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/tests/test_bergman.py +8 -0
  53. iints_sdk_python35-1.5.6/tests/test_ci_governance.py +28 -0
  54. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/tests/test_cli_cloud_import_security.py +22 -16
  55. iints_sdk_python35-1.5.6/tests/test_cli_demo_live.py +71 -0
  56. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/tests/test_cli_edge_runtime.py +37 -0
  57. iints_sdk_python35-1.5.6/tests/test_cli_onboarding.py +234 -0
  58. iints_sdk_python35-1.5.6/tests/test_cli_run_summary.py +36 -0
  59. iints_sdk_python35-1.5.6/tests/test_jetson_endurance.py +320 -0
  60. iints_sdk_python35-1.5.6/tests/test_physiology_variation.py +32 -0
  61. iints_sdk_python35-1.5.6/tests/test_plugin_system.py +89 -0
  62. iints_sdk_python35-1.5.6/tests/test_presets_realism.py +158 -0
  63. iints_sdk_python35-1.5.6/tests/test_research_realism_tools.py +53 -0
  64. iints_sdk_python35-1.5.6/tests/test_simulator_calibration.py +67 -0
  65. iints_sdk_python35-1.5.4/PKG-INFO +0 -200
  66. iints_sdk_python35-1.5.4/README.md +0 -134
  67. iints_sdk_python35-1.5.4/src/iints/api/registry.py +0 -103
  68. iints_sdk_python35-1.5.4/src/iints/core/devices/__init__.py +0 -3
  69. iints_sdk_python35-1.5.4/src/iints/core/devices/models.py +0 -160
  70. iints_sdk_python35-1.5.4/src/iints/core/patient/profile.py +0 -41
  71. iints_sdk_python35-1.5.4/src/iints/data/demo/demo_cgm.csv +0 -289
  72. iints_sdk_python35-1.5.4/src/iints/data/tidepool.py +0 -43
  73. iints_sdk_python35-1.5.4/src/iints/presets/presets.json +0 -114
  74. iints_sdk_python35-1.5.4/src/iints/research/__init__.py +0 -63
  75. iints_sdk_python35-1.5.4/src/iints/research/evaluation.py +0 -70
  76. iints_sdk_python35-1.5.4/src/iints_sdk_python35.egg-info/PKG-INFO +0 -200
  77. iints_sdk_python35-1.5.4/src/iints_sdk_python35.egg-info/requires.txt +0 -53
  78. iints_sdk_python35-1.5.4/tests/test_cli_onboarding.py +0 -92
  79. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/LICENSE-MIT-IINTS-LEGACY +0 -0
  80. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/NOTICE +0 -0
  81. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/setup.cfg +0 -0
  82. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/ai/__init__.py +0 -0
  83. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/ai/assistant.py +0 -0
  84. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/ai/backends/__init__.py +0 -0
  85. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/ai/backends/base.py +0 -0
  86. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/ai/backends/mistral_api.py +0 -0
  87. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/ai/backends/ollama.py +0 -0
  88. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/ai/cli.py +0 -0
  89. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/ai/mdmp_guard.py +0 -0
  90. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/ai/model_catalog.py +0 -0
  91. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/ai/prepare.py +0 -0
  92. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/ai/prompts.py +0 -0
  93. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/__init__.py +0 -0
  94. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/algorithm_xray.py +0 -0
  95. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/booth_demo.py +0 -0
  96. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/carelink_workbench.py +0 -0
  97. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/clinical_benchmark.py +0 -0
  98. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/clinical_metrics.py +0 -0
  99. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/clinical_tir_analyzer.py +0 -0
  100. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/diabetes_metrics.py +0 -0
  101. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/edge_efficiency.py +0 -0
  102. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/edge_performance_monitor.py +0 -0
  103. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/eucys_results.py +0 -0
  104. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/explainability.py +0 -0
  105. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/explainable_ai.py +0 -0
  106. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/hardware_benchmark.py +0 -0
  107. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/metrics.py +0 -0
  108. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/population_report.py +0 -0
  109. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/poster.py +0 -0
  110. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/reporting.py +0 -0
  111. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/safety_index.py +0 -0
  112. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/sensor_filtering.py +0 -0
  113. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/study_analysis.py +0 -0
  114. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/study_engine.py +0 -0
  115. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/study_experiment.py +0 -0
  116. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/study_poster.py +0 -0
  117. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/study_protocol.py +0 -0
  118. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/analysis/validator.py +0 -0
  119. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/api/__init__.py +0 -0
  120. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/api/base_algorithm.py +0 -0
  121. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/api/template_algorithm.py +0 -0
  122. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/assets/iints_logo.png +0 -0
  123. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/cli/__init__.py +0 -0
  124. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/cli/patient_cli.py +0 -0
  125. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/__init__.py +0 -0
  126. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/algorithms/__init__.py +0 -0
  127. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/algorithms/battle_runner.py +0 -0
  128. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/algorithms/clinical_baseline.py +0 -0
  129. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/algorithms/correction_bolus.py +0 -0
  130. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/algorithms/discovery.py +0 -0
  131. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/algorithms/fixed_basal_bolus.py +0 -0
  132. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/algorithms/hybrid_algorithm.py +0 -0
  133. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/algorithms/lstm_algorithm.py +0 -0
  134. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/algorithms/mock_algorithms.py +0 -0
  135. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/algorithms/pid_controller.py +0 -0
  136. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/algorithms/standard_pump_algo.py +0 -0
  137. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/device.py +0 -0
  138. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/device_manager.py +0 -0
  139. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/patient/__init__.py +0 -0
  140. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/patient/models.py +0 -0
  141. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/patient/patient_factory.py +0 -0
  142. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/safety/__init__.py +0 -0
  143. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/safety/config.py +0 -0
  144. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/safety/input_validator.py +0 -0
  145. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/safety/supervisor.py +0 -0
  146. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/simulation/__init__.py +0 -0
  147. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/simulation/scenario_parser.py +0 -0
  148. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/core/supervisor.py +0 -0
  149. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/adapter.py +0 -0
  150. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/certify.py +0 -0
  151. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/column_mapper.py +0 -0
  152. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/contracts.py +0 -0
  153. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/demo/__init__.py +0 -0
  154. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/guardians.py +0 -0
  155. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/importer.py +0 -0
  156. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/ingestor.py +0 -0
  157. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/mdmp_visualizer.py +0 -0
  158. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/nightscout.py +0 -0
  159. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/quality_checker.py +0 -0
  160. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/registry.py +0 -0
  161. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/runner.py +0 -0
  162. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/study_corruption.py +0 -0
  163. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/universal_parser.py +0 -0
  164. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/virtual_patients/clinic_safe_baseline.yaml +0 -0
  165. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/virtual_patients/clinic_safe_hyper_challenge.yaml +0 -0
  166. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/virtual_patients/clinic_safe_hypo_prone.yaml +0 -0
  167. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/virtual_patients/clinic_safe_midnight.yaml +0 -0
  168. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/virtual_patients/clinic_safe_pizza.yaml +0 -0
  169. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/virtual_patients/clinic_safe_stress_meal.yaml +0 -0
  170. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/virtual_patients/default_patient.yaml +0 -0
  171. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/data/virtual_patients/patient_559_config.yaml +0 -0
  172. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/demo_assets.py +0 -0
  173. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/emulation/__init__.py +0 -0
  174. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/emulation/legacy_base.py +0 -0
  175. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/emulation/medtronic_780g.py +0 -0
  176. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/emulation/omnipod_5.py +0 -0
  177. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/emulation/tandem_controliq.py +0 -0
  178. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/learning/__init__.py +0 -0
  179. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/learning/autonomous_optimizer.py +0 -0
  180. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/learning/learning_system.py +0 -0
  181. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/live_patient/__init__.py +0 -0
  182. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/live_patient/daemon.py +0 -0
  183. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/live_patient/edge_benchmark.py +0 -0
  184. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/live_patient/long_study.py +0 -0
  185. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/live_patient/service_export.py +0 -0
  186. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/live_patient/uno_q.py +0 -0
  187. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/mdmp/__init__.py +0 -0
  188. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/mdmp/backend.py +0 -0
  189. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/metrics.py +0 -0
  190. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/population/__init__.py +0 -0
  191. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/population/generator.py +0 -0
  192. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/population/runner.py +0 -0
  193. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/presets/__init__.py +0 -0
  194. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/presets/forecast_calibration_profiles.yaml +0 -0
  195. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/presets/golden_benchmark.yaml +0 -0
  196. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/presets/safety_contract_default.yaml +0 -0
  197. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/presets/validation_profiles.yaml +0 -0
  198. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/research/audit.py +0 -0
  199. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/research/calibration_gate.py +0 -0
  200. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/research/config.py +0 -0
  201. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/research/dataset.py +0 -0
  202. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/research/losses.py +0 -0
  203. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/research/metrics.py +0 -0
  204. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/research/model_registry.py +0 -0
  205. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/research/predictor.py +0 -0
  206. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/scenarios/__init__.py +0 -0
  207. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/scenarios/generator.py +0 -0
  208. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/templates/__init__.py +0 -0
  209. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/templates/default_algorithm.py +0 -0
  210. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/templates/demos/__init__.py +0 -0
  211. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/templates/demos/live_stage_demo.py +0 -0
  212. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/templates/scenarios/__init__.py +0 -0
  213. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/templates/scenarios/chaos_insulin_stacking.json +0 -0
  214. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/templates/scenarios/chaos_runaway_ai.json +0 -0
  215. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/templates/scenarios/example_scenario.json +0 -0
  216. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/templates/scenarios/exercise_stress.json +0 -0
  217. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/templates/uno_q/README.md +0 -0
  218. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/templates/uno_q/iints_supervisor_bridge.ino +0 -0
  219. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/utils/__init__.py +0 -0
  220. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/utils/csv_safety.py +0 -0
  221. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/utils/plotting.py +0 -0
  222. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/utils/url_safety.py +0 -0
  223. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/validation/__init__.py +0 -0
  224. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/validation/golden.py +0 -0
  225. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/validation/replay.py +0 -0
  226. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/validation/safety_contract.py +0 -0
  227. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/validation/schemas.py +0 -0
  228. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/visualization/__init__.py +0 -0
  229. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/visualization/cockpit.py +0 -0
  230. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints/visualization/uncertainty_cloud.py +0 -0
  231. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints_sdk_python35.egg-info/dependency_links.txt +0 -0
  232. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/iints_sdk_python35.egg-info/top_level.txt +0 -0
  233. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_ai/__init__.py +0 -0
  234. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_ai/lineage.py +0 -0
  235. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/__init__.py +0 -0
  236. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/audit.py +0 -0
  237. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/bias_hooks.py +0 -0
  238. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/bundle.py +0 -0
  239. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/certification.py +0 -0
  240. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/cli.py +0 -0
  241. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/compare.py +0 -0
  242. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/conformance.py +0 -0
  243. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/contracts.py +0 -0
  244. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/crypto.py +0 -0
  245. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/data/conformance/vectors/delegation.json +0 -0
  246. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/data/conformance/vectors/fingerprint.json +0 -0
  247. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/data/conformance/vectors/grading.json +0 -0
  248. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/data/conformance/vectors/signing.json +0 -0
  249. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/delegate.py +0 -0
  250. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/diffing.py +0 -0
  251. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/drift.py +0 -0
  252. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/exceptions.py +0 -0
  253. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/fingerprint.py +0 -0
  254. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/fingerprint_store.py +0 -0
  255. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/hf.py +0 -0
  256. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/keys/mdmp_pub_v1.pem +0 -0
  257. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/llm_provenance.py +0 -0
  258. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/migrate.py +0 -0
  259. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/policy.py +0 -0
  260. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/prov.py +0 -0
  261. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/registry.py +0 -0
  262. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/runner.py +0 -0
  263. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/schema_export.py +0 -0
  264. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/synthetic.py +0 -0
  265. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/trust.py +0 -0
  266. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_core/visualizer.py +0 -0
  267. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_flavors/__init__.py +0 -0
  268. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_integrations/__init__.py +0 -0
  269. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_integrations/dvc.py +0 -0
  270. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_integrations/mlflow.py +0 -0
  271. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/src/mdmp_integrations/wandb.py +0 -0
  272. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/tests/test_cli_algorithm_loading.py +0 -0
  273. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/tests/test_cli_booth_demo.py +0 -0
  274. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/tests/test_cli_carelink_workbench.py +0 -0
  275. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/tests/test_cli_demo_export.py +0 -0
  276. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/tests/test_cli_expo_tools.py +0 -0
  277. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/tests/test_cli_patient_runtime.py +0 -0
  278. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/tests/test_cli_poster.py +0 -0
  279. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/tests/test_install_doctor.py +0 -0
  280. {iints_sdk_python35-1.5.4 → iints_sdk_python35-1.5.6}/tests/test_population.py +0 -0
@@ -164,8 +164,8 @@ the Work or Derivative Works thereof, You may choose to offer,
164
164
  and charge a fee for, acceptance of support, warranty, indemnity,
165
165
  or other liability obligations and/or rights consistent with this
166
166
  License. However, in accepting such obligations, You may act only
167
- on Your own behalf and on Your sole responsibility, not on behalf
168
- of any other Contributor, and only if You agree to indemnify,
167
+ on Your own behalf and on Your sole responsibility, not on behalf of
168
+ any other Contributor, and only if You agree to indemnify,
169
169
  defend, and hold each Contributor harmless for any liability
170
170
  incurred by, or claims asserted against, such Contributor by reason
171
171
  of your accepting any such warranty or additional liability.
@@ -0,0 +1,131 @@
1
+ Metadata-Version: 2.4
2
+ Name: iints-sdk-python35
3
+ Version: 1.5.6
4
+ Summary: A pre-clinical Edge-AI SDK for diabetes management validation.
5
+ Author-email: Rune Bobbaers <rune.bobbaers@gmail.com>
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/python35/IINTS-SDK
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3.14
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Development Status :: 5 - Production/Stable
16
+ Requires-Python: <3.15,>=3.10
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ License-File: NOTICE
20
+ License-File: LICENSE-MIT-IINTS-LEGACY
21
+ Requires-Dist: fastapi<1.0.0,>=0.115.0
22
+ Requires-Dist: numpy<3.0.0,>=1.24.0
23
+ Requires-Dist: pandas<3.0.0,>=2.0.0
24
+ Requires-Dist: pydantic<3.0.0,>=2.0.0
25
+ Requires-Dist: PyYAML<7.0.0,>=6.0.0
26
+ Requires-Dist: rich<16.0.0,>=12.0.0
27
+ Requires-Dist: scipy<2.0.0,>=1.9.0
28
+ Requires-Dist: typer[all]<1.0.0,>=0.9.0
29
+ Requires-Dist: uvicorn<1.0.0,>=0.30.0
30
+ Provides-Extra: edge
31
+ Requires-Dist: pyserial<4.0,>=3.5; extra == "edge"
32
+ Provides-Extra: reports
33
+ Requires-Dist: fpdf2<3.0.0,>=2.8.0; extra == "reports"
34
+ Requires-Dist: matplotlib<4.0.0,>=3.5.0; extra == "reports"
35
+ Requires-Dist: openpyxl<4.0.0,>=3.0.0; extra == "reports"
36
+ Requires-Dist: pillow<13.0.0,>=12.1.1; extra == "reports"
37
+ Requires-Dist: seaborn<1.0.0,>=0.11.0; extra == "reports"
38
+ Provides-Extra: full
39
+ Requires-Dist: fpdf2<3.0.0,>=2.8.0; extra == "full"
40
+ Requires-Dist: matplotlib<4.0.0,>=3.5.0; extra == "full"
41
+ Requires-Dist: openpyxl<4.0.0,>=3.0.0; extra == "full"
42
+ Requires-Dist: pyserial<4.0,>=3.5; extra == "full"
43
+ Requires-Dist: pillow<13.0.0,>=12.1.1; extra == "full"
44
+ Requires-Dist: seaborn<1.0.0,>=0.11.0; extra == "full"
45
+ Provides-Extra: dev
46
+ Requires-Dist: pytest<10.0.0,>=7.0.0; extra == "dev"
47
+ Requires-Dist: hypothesis<7.0.0,>=6.0.0; extra == "dev"
48
+ Requires-Dist: flake8<8.0.0,>=7.0.0; extra == "dev"
49
+ Requires-Dist: httpx<1.0.0,>=0.27.0; extra == "dev"
50
+ Requires-Dist: mypy<3.0.0,>=1.8.0; extra == "dev"
51
+ Requires-Dist: pandas-stubs<3.0.0,>=2.0.0; extra == "dev"
52
+ Requires-Dist: types-PyYAML<7.0.0,>=6.0.0; extra == "dev"
53
+ Requires-Dist: types-psutil<8.0.0,>=7.0.0; extra == "dev"
54
+ Provides-Extra: torch
55
+ Requires-Dist: torch<3.0.0,>=1.9.0; extra == "torch"
56
+ Provides-Extra: nightscout
57
+ Requires-Dist: py-nightscout; extra == "nightscout"
58
+ Provides-Extra: research
59
+ Requires-Dist: torch<3.0.0,>=2.0.0; extra == "research"
60
+ Requires-Dist: pyarrow<25.0.0,>=12.0.0; extra == "research"
61
+ Requires-Dist: h5py<4.0.0,>=3.10.0; extra == "research"
62
+ Requires-Dist: onnx<2.0.0,>=1.16.0; extra == "research"
63
+ Requires-Dist: onnxscript<1.0.0,>=0.1.0; extra == "research"
64
+ Provides-Extra: mdmp
65
+ Requires-Dist: cryptography<49.0.0,>=42.0.0; extra == "mdmp"
66
+ Dynamic: license-file
67
+
68
+ # IINTS-AF SDK
69
+
70
+ [![EUCYS 2026](https://img.shields.io/badge/EUCYS-2026%20Selected-gold?style=flat)](https://www.uni-kiel.de/en/eucys2026)
71
+ [![PyPI version](https://badge.fury.io/py/iints-sdk-python35.svg)](https://badge.fury.io/py/iints-sdk-python35)
72
+ [![CI](https://github.com/python35/IINTS-SDK/actions/workflows/python-package.yml/badge.svg)](https://github.com/python35/IINTS-SDK/actions/workflows/python-package.yml)
73
+ [![Docs](https://img.shields.io/badge/docs-IINTS--AF-0a66c2?style=flat)](https://python35.github.io/IINTS-SDK/)
74
+
75
+ > "Code shouldn't be a secret when it's managing a life."
76
+
77
+ Open-source research platform for insulin delivery algorithm simulation and validation.
78
+
79
+ ---
80
+
81
+ ## What It Does
82
+
83
+ - **Simulate** virtual patients across thousands of scenarios before any algorithm reaches a real device
84
+ - **Certify** datasets cryptographically — traceable, consented, reproducible
85
+ - **Understand** results with audit-ready reports and local AI explanation via Ministral
86
+
87
+ ---
88
+
89
+ ## Install
90
+
91
+ ```bash
92
+ pip install "iints-sdk-python35[full,mdmp]"
93
+ iints doctor --smoke-run
94
+ ```
95
+
96
+ **Raspberry Pi / Arduino UNO Q:**
97
+ ```bash
98
+ pip install "iints-sdk-python35[edge,mdmp]"
99
+ iints edge quickstart --board raspberry_pi
100
+ iints edge quickstart --board uno_q
101
+ ```
102
+
103
+ ---
104
+
105
+ ## Quick Start
106
+
107
+ ```bash
108
+ iints quickstart --project-name my_study
109
+ cd my_study
110
+ iints presets run --name baseline_t1d --algo algorithms/example_algorithm.py
111
+ iints ai report results/<run_id>
112
+ ```
113
+
114
+ Full documentation: [python35.github.io/IINTS-SDK](https://python35.github.io/IINTS-SDK/)
115
+
116
+ ---
117
+
118
+ ## Live Demo
119
+
120
+ For a Zoom call, jury walkthrough, or sponsor demo where you want to show both the code and the generated outputs in one terminal flow:
121
+
122
+ ```bash
123
+ iints demo-live --output-dir results/live_demo
124
+ ```
125
+
126
+ That exports the showable demo script, prints the key SDK calls, runs the demo, and lists the poster plus proof artifacts to open next.
127
+
128
+ ---
129
+
130
+ > Research software. Not a medical device. MIT Licensed.
131
+ > *Built by a 17-year-old with type 1 diabetes.*
@@ -0,0 +1,64 @@
1
+ # IINTS-AF SDK
2
+
3
+ [![EUCYS 2026](https://img.shields.io/badge/EUCYS-2026%20Selected-gold?style=flat)](https://www.uni-kiel.de/en/eucys2026)
4
+ [![PyPI version](https://badge.fury.io/py/iints-sdk-python35.svg)](https://badge.fury.io/py/iints-sdk-python35)
5
+ [![CI](https://github.com/python35/IINTS-SDK/actions/workflows/python-package.yml/badge.svg)](https://github.com/python35/IINTS-SDK/actions/workflows/python-package.yml)
6
+ [![Docs](https://img.shields.io/badge/docs-IINTS--AF-0a66c2?style=flat)](https://python35.github.io/IINTS-SDK/)
7
+
8
+ > "Code shouldn't be a secret when it's managing a life."
9
+
10
+ Open-source research platform for insulin delivery algorithm simulation and validation.
11
+
12
+ ---
13
+
14
+ ## What It Does
15
+
16
+ - **Simulate** virtual patients across thousands of scenarios before any algorithm reaches a real device
17
+ - **Certify** datasets cryptographically — traceable, consented, reproducible
18
+ - **Understand** results with audit-ready reports and local AI explanation via Ministral
19
+
20
+ ---
21
+
22
+ ## Install
23
+
24
+ ```bash
25
+ pip install "iints-sdk-python35[full,mdmp]"
26
+ iints doctor --smoke-run
27
+ ```
28
+
29
+ **Raspberry Pi / Arduino UNO Q:**
30
+ ```bash
31
+ pip install "iints-sdk-python35[edge,mdmp]"
32
+ iints edge quickstart --board raspberry_pi
33
+ iints edge quickstart --board uno_q
34
+ ```
35
+
36
+ ---
37
+
38
+ ## Quick Start
39
+
40
+ ```bash
41
+ iints quickstart --project-name my_study
42
+ cd my_study
43
+ iints presets run --name baseline_t1d --algo algorithms/example_algorithm.py
44
+ iints ai report results/<run_id>
45
+ ```
46
+
47
+ Full documentation: [python35.github.io/IINTS-SDK](https://python35.github.io/IINTS-SDK/)
48
+
49
+ ---
50
+
51
+ ## Live Demo
52
+
53
+ For a Zoom call, jury walkthrough, or sponsor demo where you want to show both the code and the generated outputs in one terminal flow:
54
+
55
+ ```bash
56
+ iints demo-live --output-dir results/live_demo
57
+ ```
58
+
59
+ That exports the showable demo script, prints the key SDK calls, runs the demo, and lists the poster plus proof artifacts to open next.
60
+
61
+ ---
62
+
63
+ > Research software. Not a medical device. MIT Licensed.
64
+ > *Built by a 17-year-old with type 1 diabetes.*
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "iints-sdk-python35"
7
- version = "1.5.4"
7
+ version = "1.5.6"
8
8
  authors = [
9
9
  { name="Rune Bobbaers", email="rune.bobbaers@gmail.com" },
10
10
  ]
@@ -12,72 +12,73 @@ description = "A pre-clinical Edge-AI SDK for diabetes management validation."
12
12
  readme = "README.md"
13
13
  license = "Apache-2.0"
14
14
  license-files = ["LICENSE", "NOTICE", "LICENSE-MIT-IINTS-LEGACY"]
15
- requires-python = ">=3.10"
15
+ requires-python = ">=3.10,<3.15"
16
16
  classifiers = [
17
17
  "Programming Language :: Python :: 3",
18
18
  "Programming Language :: Python :: 3.10",
19
19
  "Programming Language :: Python :: 3.11",
20
20
  "Programming Language :: Python :: 3.12",
21
21
  "Programming Language :: Python :: 3.13",
22
+ "Programming Language :: Python :: 3.14",
22
23
  "Operating System :: OS Independent",
23
24
  "Development Status :: 5 - Production/Stable",
24
25
  ]
25
26
  dependencies = [
26
- "fastapi>=0.115.0",
27
- "numpy>=1.24.0",
28
- "pandas>=2.0.0",
29
- "pydantic>=2.0.0",
30
- "PyYAML",
31
- "rich>=12.0.0",
32
- "scipy>=1.9.0",
33
- "typer[all]",
34
- "uvicorn>=0.30.0",
27
+ "fastapi>=0.115.0,<1.0.0",
28
+ "numpy>=1.24.0,<3.0.0",
29
+ "pandas>=2.0.0,<3.0.0",
30
+ "pydantic>=2.0.0,<3.0.0",
31
+ "PyYAML>=6.0.0,<7.0.0",
32
+ "rich>=12.0.0,<16.0.0",
33
+ "scipy>=1.9.0,<2.0.0",
34
+ "typer[all]>=0.9.0,<1.0.0",
35
+ "uvicorn>=0.30.0,<1.0.0",
35
36
  ]
36
37
 
37
38
  [project.optional-dependencies]
38
39
  edge = [
39
- "pyserial>=3.5",
40
+ "pyserial>=3.5,<4.0",
40
41
  ]
41
42
  reports = [
42
- "fpdf2>=2.8.0",
43
- "matplotlib>=3.5.0",
44
- "openpyxl>=3.0.0",
45
- "pillow>=12.1.1",
46
- "seaborn>=0.11.0",
43
+ "fpdf2>=2.8.0,<3.0.0",
44
+ "matplotlib>=3.5.0,<4.0.0",
45
+ "openpyxl>=3.0.0,<4.0.0",
46
+ "pillow>=12.1.1,<13.0.0",
47
+ "seaborn>=0.11.0,<1.0.0",
47
48
  ]
48
49
  full = [
49
- "fpdf2>=2.8.0",
50
- "matplotlib>=3.5.0",
51
- "openpyxl>=3.0.0",
52
- "pyserial>=3.5",
53
- "pillow>=12.1.1",
54
- "seaborn>=0.11.0",
50
+ "fpdf2>=2.8.0,<3.0.0",
51
+ "matplotlib>=3.5.0,<4.0.0",
52
+ "openpyxl>=3.0.0,<4.0.0",
53
+ "pyserial>=3.5,<4.0",
54
+ "pillow>=12.1.1,<13.0.0",
55
+ "seaborn>=0.11.0,<1.0.0",
55
56
  ]
56
57
  dev = [
57
- "pytest>=7.0.0",
58
- "hypothesis>=6.0.0",
59
- "flake8",
60
- "httpx>=0.27.0",
61
- "mypy",
62
- "pandas-stubs",
63
- "types-PyYAML",
64
- "types-psutil",
58
+ "pytest>=7.0.0,<10.0.0",
59
+ "hypothesis>=6.0.0,<7.0.0",
60
+ "flake8>=7.0.0,<8.0.0",
61
+ "httpx>=0.27.0,<1.0.0",
62
+ "mypy>=1.8.0,<3.0.0",
63
+ "pandas-stubs>=2.0.0,<3.0.0",
64
+ "types-PyYAML>=6.0.0,<7.0.0",
65
+ "types-psutil>=7.0.0,<8.0.0",
65
66
  ]
66
67
  torch = [
67
- "torch>=1.9.0",
68
+ "torch>=1.9.0,<3.0.0",
68
69
  ]
69
70
  nightscout = [
70
71
  "py-nightscout",
71
72
  ]
72
73
  research = [
73
- "torch>=2.0.0",
74
- "pyarrow>=12.0.0",
75
- "h5py>=3.10.0",
76
- "onnx>=1.16.0",
77
- "onnxscript>=0.1.0",
74
+ "torch>=2.0.0,<3.0.0",
75
+ "pyarrow>=12.0.0,<25.0.0",
76
+ "h5py>=3.10.0,<4.0.0",
77
+ "onnx>=1.16.0,<2.0.0",
78
+ "onnxscript>=0.1.0,<1.0.0",
78
79
  ]
79
80
  mdmp = [
80
- "cryptography>=42.0.0",
81
+ "cryptography>=42.0.0,<49.0.0",
81
82
  ]
82
83
 
83
84
  [project.scripts]
@@ -87,7 +88,7 @@ iints-sdk-doctor = "iints_sdk_python35_doctor:main"
87
88
  [project.entry-points."iints.algorithms"]
88
89
  "PID Controller" = "iints.core.algorithms.pid_controller:PIDController"
89
90
  "Fixed Basal Bolus" = "iints.core.algorithms.fixed_basal_bolus:FixedBasalBolus"
90
- "Correction Bolus" = "iints.core.algorithms.correction_bolus:CorrectionBolusAlgorithm"
91
+ "Correction Bolus" = "iints.core.algorithms.correction_bolus:CorrectionBolus"
91
92
  "Standard Pump" = "iints.core.algorithms.standard_pump_algo:StandardPumpAlgorithm"
92
93
  "Mock Constant Dose" = "iints.core.algorithms.mock_algorithms:ConstantDoseAlgorithm"
93
94
  "Mock Random Dose" = "iints.core.algorithms.mock_algorithms:RandomDoseAlgorithm"
@@ -11,7 +11,7 @@ except ImportError: # pragma: no cover - Python < 3.8 fallback
11
11
  try:
12
12
  __version__ = version("iints-sdk-python35")
13
13
  except PackageNotFoundError: # pragma: no cover - source tree fallback
14
- __version__ = "1.5.4"
14
+ __version__ = "1.5.6"
15
15
 
16
16
  # Note to developers: this SDK is currently maintained by a single author.
17
17
  # Please report bugs via GitHub issues and feel free to contribute fixes via PRs.
@@ -47,7 +47,7 @@ except Exception: # pragma: no cover - fallback if torch/device manager import
47
47
  def get_device(self):
48
48
  return self._device
49
49
  from .core.safety import SafetyConfig, SafetySupervisor
50
- from .core.devices.models import SensorModel, PumpModel
50
+ from .core.devices.models import SENSOR_PROFILES, SensorModel, PumpModel, create_sensor_model
51
51
  from .core.algorithms.standard_pump_algo import StandardPumpAlgorithm
52
52
  from .core.algorithms.mock_algorithms import (
53
53
  ConstantDoseAlgorithm,
@@ -74,7 +74,7 @@ from .data.importer import (
74
74
  summarize_carelink_csv,
75
75
  )
76
76
  from .data.nightscout import NightscoutConfig, import_nightscout
77
- from .data.tidepool import TidepoolClient, load_openapi_spec
77
+ from .data.tidepool import TidepoolClient, TidepoolConfig, import_tidepool, load_openapi_spec
78
78
  from .data.guardians import mdmp_gate, MDMPGateError
79
79
  from .data.synthetic_mirror import generate_synthetic_mirror, SyntheticMirrorArtifact
80
80
  from .data.study_corruption import AVAILABLE_STUDY_CORRUPTIONS, apply_study_corruptions, write_corrupted_study_csv
@@ -224,6 +224,8 @@ __all__ = [
224
224
  "SafetyConfig",
225
225
  "SensorModel",
226
226
  "PumpModel",
227
+ "SENSOR_PROFILES",
228
+ "create_sensor_model",
227
229
  "StandardPumpAlgorithm",
228
230
  "ConstantDoseAlgorithm",
229
231
  "RandomDoseAlgorithm",
@@ -247,6 +249,8 @@ __all__ = [
247
249
  "NightscoutConfig",
248
250
  "import_nightscout",
249
251
  "TidepoolClient",
252
+ "TidepoolConfig",
253
+ "import_tidepool",
250
254
  "load_openapi_spec",
251
255
  "mdmp_gate",
252
256
  "MDMPGateError",
@@ -27,6 +27,32 @@ def compute_metrics(results_df: pd.DataFrame) -> Dict[str, float]:
27
27
  return metrics.to_dict()
28
28
 
29
29
 
30
+ def _run_context(
31
+ *,
32
+ requested_duration_minutes: int,
33
+ safety_report: Dict[str, Any],
34
+ ) -> Dict[str, Any]:
35
+ terminated_early = bool(safety_report.get("terminated_early", False))
36
+ termination = safety_report.get("termination_reason", {})
37
+ completed_duration_minutes = requested_duration_minutes
38
+ termination_reason = ""
39
+ if isinstance(termination, dict):
40
+ completed_duration_minutes = int(
41
+ termination.get("current_time_minutes", requested_duration_minutes)
42
+ )
43
+ termination_reason = str(termination.get("reason", ""))
44
+ return {
45
+ "requested_duration_minutes": int(requested_duration_minutes),
46
+ "completed_duration_minutes": int(completed_duration_minutes),
47
+ "completion_ratio_pct": round(
48
+ (completed_duration_minutes / max(requested_duration_minutes, 1)) * 100.0,
49
+ 2,
50
+ ),
51
+ "terminated_early": terminated_early,
52
+ "termination_reason": termination_reason,
53
+ }
54
+
55
+
30
56
  def run_baseline_comparison(
31
57
  patient_params: Dict[str, Any],
32
58
  stress_event_payloads: List[Dict[str, Any]],
@@ -44,6 +70,10 @@ def run_baseline_comparison(
44
70
  rows.append(
45
71
  {
46
72
  "algorithm": primary_label,
73
+ **_run_context(
74
+ requested_duration_minutes=duration,
75
+ safety_report=primary_safety,
76
+ ),
47
77
  "tir_70_180": primary_metrics.get("tir_70_180", 0.0),
48
78
  "tir_below_70": primary_metrics.get("tir_below_70", 0.0),
49
79
  "tir_above_180": primary_metrics.get("tir_above_180", 0.0),
@@ -74,6 +104,10 @@ def run_baseline_comparison(
74
104
  rows.append(
75
105
  {
76
106
  "algorithm": label,
107
+ **_run_context(
108
+ requested_duration_minutes=duration,
109
+ safety_report=safety_report,
110
+ ),
77
111
  "tir_70_180": metrics.get("tir_70_180", 0.0),
78
112
  "tir_below_70": metrics.get("tir_below_70", 0.0),
79
113
  "tir_above_180": metrics.get("tir_above_180", 0.0),