axis-synome 0.1.0.dev72__tar.gz → 0.1.0.dev74__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 (210) hide show
  1. {axis_synome-0.1.0.dev72/src/axis_synome.egg-info → axis_synome-0.1.0.dev74}/PKG-INFO +1 -1
  2. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/_version.py +2 -2
  3. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/export_entities.py +34 -2
  4. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/entities/assets_by_prime.py +8 -7
  5. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/entities/assets_missing_from_atlas.py +0 -15
  6. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74/src/axis_synome.egg-info}/PKG-INFO +1 -1
  7. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/scripts/test_export_entities.py +63 -2
  8. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/.flake8 +0 -0
  9. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/AGENTS.md +0 -0
  10. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/CLAUDE.md +0 -0
  11. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/README.md +0 -0
  12. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/WRITING_SPECS.md +0 -0
  13. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/examples/01_prime_basics.py +0 -0
  14. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/examples/02_assets_and_tokens_of_a_prime.py +0 -0
  15. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/examples/03_inverse_lookups.py +0 -0
  16. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/examples/04_atlas_provenance.py +0 -0
  17. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/examples/05_feeding_a_formula.py +0 -0
  18. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/examples/README.md +0 -0
  19. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/pyproject.toml +0 -0
  20. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/setup.cfg +0 -0
  21. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/__init__.py +0 -0
  22. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/__init__.py +0 -0
  23. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/__main__.py +0 -0
  24. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/ast_normalizer.py +0 -0
  25. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/ast_utils.py +0 -0
  26. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/checks/numeric_fidelity.py +0 -0
  27. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/converters.py +0 -0
  28. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/entity_parser.py +0 -0
  29. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/formula_extraction.py +0 -0
  30. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/helpers.py +0 -0
  31. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/identity.py +0 -0
  32. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/latex/__init__.py +0 -0
  33. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/latex/converter.py +0 -0
  34. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/latex/formatter.py +0 -0
  35. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/latex/render.py +0 -0
  36. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/parse_expressions.py +0 -0
  37. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/statement_handler.py +0 -0
  38. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/parser/validation.py +0 -0
  39. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/__init__.py +0 -0
  40. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/all_entities/__init__.py +0 -0
  41. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/all_entities/lending_markets.py +0 -0
  42. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/__init__.py +0 -0
  43. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/entities/__init__.py +0 -0
  44. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/entities/alm_proxies.py +0 -0
  45. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/entities/asset_categories.py +0 -0
  46. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/entities/assets.py +0 -0
  47. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/entities/networks.py +0 -0
  48. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/entities/primes.py +0 -0
  49. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/entities/protocol_sets.py +0 -0
  50. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/entities/tokens.py +0 -0
  51. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/entities/types.py +0 -0
  52. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/formulas/__init__.py +0 -0
  53. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/formulas/asc.py +0 -0
  54. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/formulas/asc_collateral_ratio.py +0 -0
  55. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/formulas/asc_incentive.py +0 -0
  56. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/formulas/dab.py +0 -0
  57. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/formulas/latent_asc.py +0 -0
  58. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/formulas/ratio_latent_asc.py +0 -0
  59. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/asc/formulas/resting_asc.py +0 -0
  60. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/codegen_test/__init__.py +0 -0
  61. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/codegen_test/entities/__init__.py +0 -0
  62. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/codegen_test/entities/agents.py +0 -0
  63. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/crypto_lending/__init__.py +0 -0
  64. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/crypto_lending/formulas/__init__.py +0 -0
  65. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/crypto_lending/formulas/lif.py +0 -0
  66. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/entities/__init__.py +0 -0
  67. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/entities/audit_firms.py +0 -0
  68. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/entities/capital_types.py +0 -0
  69. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/entities/protocol_risk.py +0 -0
  70. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/entities/risk_categories.py +0 -0
  71. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/entities/smart_contract_risk.py +0 -0
  72. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/__init__.py +0 -0
  73. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/administrative_rrc/__init__.py +0 -0
  74. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/administrative_rrc/administrative_risk.py +0 -0
  75. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/aggregate_rrc.py +0 -0
  76. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/audit_factor.py +0 -0
  77. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/capital_composition.py +0 -0
  78. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/entities/__init__.py +0 -0
  79. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/entities/lending_protocol.py +0 -0
  80. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/entities/precomputed_crr.py +0 -0
  81. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/examples/risk_capital_walkthrough.ipynb +0 -0
  82. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/financial_rrc/__init__.py +0 -0
  83. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/financial_rrc/entities.py +0 -0
  84. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/financial_rrc/perpetual_positions.py +0 -0
  85. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/formulas/__init__.py +0 -0
  86. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/__init__.py +0 -0
  87. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/asset_correlation_coefficient.py +0 -0
  88. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/capital_requirement_without_buffers.py +0 -0
  89. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/exposure_caps.py +0 -0
  90. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/fixed_crr_rrc.py +0 -0
  91. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/instance_financial_rrc.py +0 -0
  92. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/lending_rrc.py +0 -0
  93. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/pipeline.py +0 -0
  94. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/precomputed_crr_rrc.py +0 -0
  95. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/probability_of_default.py +0 -0
  96. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/formulas/required_risk_capital.py +0 -0
  97. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/instance_rrc.py +0 -0
  98. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/jrc_loss_allocation.py +0 -0
  99. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/lindy_factor.py +0 -0
  100. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/smart_contract_rrc/__init__.py +0 -0
  101. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/smart_contract_rrc/exceptions.py +0 -0
  102. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/smart_contract_rrc/smart_contract_risk.py +0 -0
  103. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/risk_capital/total_risk_capital.py +0 -0
  104. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/suraf/README.md +0 -0
  105. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/suraf/__init__.py +0 -0
  106. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/suraf/entities/__init__.py +0 -0
  107. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/suraf/entities/assessor_score.py +0 -0
  108. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/suraf/entities/assets.py +0 -0
  109. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/suraf/entities/mappings.py +0 -0
  110. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/suraf/formulas/__init__.py +0 -0
  111. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/suraf/formulas/crr.py +0 -0
  112. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec/suraf/formulas/scoring.py +0 -0
  113. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_inspect/__init__.py +0 -0
  114. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_inspect/__main__.py +0 -0
  115. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_inspect/cli.py +0 -0
  116. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_support/__init__.py +0 -0
  117. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_support/correlation_matrix.py +0 -0
  118. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_support/evm_address.py +0 -0
  119. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_support/math_protocol.py +0 -0
  120. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_support/pendle_validation.py +0 -0
  121. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_support/references/__init__.py +0 -0
  122. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_support/references/graph.py +0 -0
  123. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_support/runtime/__init__.py +0 -0
  124. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_support/runtime/base.py +0 -0
  125. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_support/runtime/math.py +0 -0
  126. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_support/runtime/reference.py +0 -0
  127. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_support/validated_dataclass.py +0 -0
  128. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_support/validated_str.py +0 -0
  129. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_validator/__init__.py +0 -0
  130. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_validator/check_source_uuids.py +0 -0
  131. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_validator/checker.py +0 -0
  132. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_validator/flake8_plugin.py +0 -0
  133. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome/spec_validator/python_subset.py +0 -0
  134. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome.egg-info/SOURCES.txt +0 -0
  135. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome.egg-info/dependency_links.txt +0 -0
  136. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome.egg-info/entry_points.txt +0 -0
  137. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome.egg-info/requires.txt +0 -0
  138. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/src/axis_synome.egg-info/top_level.txt +0 -0
  139. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/asc/__init__.py +0 -0
  140. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/asc/conftest.py +0 -0
  141. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/asc/mocks.py +0 -0
  142. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/asc/test_alm_proxies.py +0 -0
  143. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/asc/test_asc.py +0 -0
  144. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/asc/test_asc_collateral_ratio.py +0 -0
  145. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/asc/test_asc_incentive.py +0 -0
  146. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/asc/test_asset_categories.py +0 -0
  147. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/asc/test_dab.py +0 -0
  148. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/asc/test_evm_address.py +0 -0
  149. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/asc/test_latent_asc.py +0 -0
  150. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/asc/test_prime_agent_data_validation.py +0 -0
  151. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/asc/test_ratio_latent_asc.py +0 -0
  152. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/asc/test_resting_asc.py +0 -0
  153. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/parser/__init__.py +0 -0
  154. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/parser/fixture_latex_chain.py +0 -0
  155. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/parser/fixture_mixed_module.py +0 -0
  156. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/parser/fixture_set_membership.py +0 -0
  157. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/parser/graph_validator.py +0 -0
  158. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/parser/latex/__init__.py +0 -0
  159. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/parser/latex/test_formatter.py +0 -0
  160. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/parser/latex/test_render.py +0 -0
  161. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/parser/test_entity_parser.py +0 -0
  162. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/parser/test_formula_extraction.py +0 -0
  163. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/parser/test_helpers.py +0 -0
  164. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/parser/test_parser.py +0 -0
  165. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/parser/test_set_membership.py +0 -0
  166. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/__init__.py +0 -0
  167. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/administrative_rrc/test_administrative_risk.py +0 -0
  168. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/financial_rrc/__init__.py +0 -0
  169. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/financial_rrc/test_lending_rrc.py +0 -0
  170. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/financial_rrc/test_perpetual_positions.py +0 -0
  171. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/formulas/__init__.py +0 -0
  172. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/formulas/test_correlation_matrix.py +0 -0
  173. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/formulas/test_loss_given_default.py +0 -0
  174. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/smart_contract_rrc/__init__.py +0 -0
  175. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/smart_contract_rrc/test_exceptions.py +0 -0
  176. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/smart_contract_rrc/test_smart_contract_risk.py +0 -0
  177. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/test_a321_a322_integration.py +0 -0
  178. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/test_aggregate_rrc.py +0 -0
  179. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/test_capital_composition.py +0 -0
  180. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/test_instance_rrc.py +0 -0
  181. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/test_jrc_loss_allocation.py +0 -0
  182. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/risk_capital/test_total_risk_capital.py +0 -0
  183. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/spec_inspect/__init__.py +0 -0
  184. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/spec_inspect/test_cli.py +0 -0
  185. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/spec_support/__init__.py +0 -0
  186. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/spec_support/references/__init__.py +0 -0
  187. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/spec_support/references/test_graph.py +0 -0
  188. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/spec_support/runtime/__init__.py +0 -0
  189. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/spec_support/runtime/test_base.py +0 -0
  190. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/spec_support/runtime/test_math.py +0 -0
  191. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/spec_validator/test_check_source_uuids.py +0 -0
  192. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/spec_validator/test_checker.py +0 -0
  193. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/spec_validator/test_flake8_plugin.py +0 -0
  194. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/__init__.py +0 -0
  195. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/entities/__init__.py +0 -0
  196. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/entities/test_assessor_score.py +0 -0
  197. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/formulas/__init__.py +0 -0
  198. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/formulas/test_crr.py +0 -0
  199. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/formulas/test_scoring.py +0 -0
  200. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/static/aave_ausdc/v1/crr_mapping.csv +0 -0
  201. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/static/aave_ausdc/v1/penalty.csv +0 -0
  202. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/static/aave_ausdc/v1/scorecards/Assessor_1_scores.csv +0 -0
  203. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/static/aave_ausdc/v1/scorecards/Assessor_2_scores.csv +0 -0
  204. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/static/aave_ausdc/v1/scorecards/Assessor_3_scores.csv +0 -0
  205. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/static/aave_ausdc/v1/weights.csv +0 -0
  206. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/suraf_client/__init__.py +0 -0
  207. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/suraf_client/suraf_client.py +0 -0
  208. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/suraf/suraf_client/test_suraf_client.py +0 -0
  209. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/tests/axis_synome/test_examples.py +0 -0
  210. {axis_synome-0.1.0.dev72 → axis_synome-0.1.0.dev74}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: axis-synome
3
- Version: 0.1.0.dev72
3
+ Version: 0.1.0.dev74
4
4
  Summary: Axis specification modules (entities, formulas, validators)
5
5
  Author-email: Archon Tech <hello@archontech.ai>
6
6
  License: MIT
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.1.0.dev72'
22
- __version_tuple__ = version_tuple = (0, 1, 0, 'dev72')
21
+ __version__ = version = '0.1.0.dev74'
22
+ __version_tuple__ = version_tuple = (0, 1, 0, 'dev74')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -162,7 +162,34 @@ def _version_from_package_metadata() -> str:
162
162
 
163
163
 
164
164
  def _axis_synome_git_commit() -> str:
165
- repo_root = Path(__file__).resolve().parents[2]
165
+ """Resolve the axis-synome commit for the exported contract's provenance.
166
+
167
+ Prefer the commit baked into ``_version.py`` at build time. Otherwise fall
168
+ back to ``git rev-parse`` only when running from the axis-synome source tree.
169
+ An installed wheel lives under ``site-packages`` (often nested inside a
170
+ consumer's git repository), and walking up from there would resolve that
171
+ consumer's HEAD, which is not our commit; return ``"unknown"`` instead.
172
+ """
173
+ embedded = _build_embedded_commit()
174
+ if embedded:
175
+ return embedded
176
+ return _git_commit_from_checkout(Path(__file__).resolve().parents[2])
177
+
178
+
179
+ def _build_embedded_commit() -> str | None:
180
+ try:
181
+ from axis_synome._version import commit_id
182
+ except ImportError:
183
+ return None
184
+ return commit_id
185
+
186
+
187
+ def _git_commit_from_checkout(repo_root: Path) -> str:
188
+ # Only trust git inside the axis-synome source tree. When installed as a
189
+ # wheel, repo_root points into site-packages, so a surrounding consumer
190
+ # repository's HEAD must never be mistaken for our commit.
191
+ if not (repo_root / "src" / "axis_synome").is_dir():
192
+ return "unknown"
166
193
  try:
167
194
  return subprocess.check_output(
168
195
  ["git", "rev-parse", "HEAD"], cwd=repo_root, text=True
@@ -353,7 +380,12 @@ def export_axis_synome_contract(
353
380
 
354
381
  data_path.write_text(config.model_dump_json(indent=2, by_alias=True), encoding="utf-8")
355
382
 
356
- schema = AxisSynomeContract.model_json_schema(by_alias=True)
383
+ # Generate the schema in serialization mode so its property names use the
384
+ # serialization aliases (ASSETS_BY_PRIME, AlmProxy) that the emitted data
385
+ # actually uses. With the default (validation) mode the schema would use the
386
+ # Python field names (entries, proxies) and the data would fail to validate
387
+ # against its own schema.
388
+ schema = AxisSynomeContract.model_json_schema(by_alias=True, mode="serialization")
357
389
  schema_path.write_text(json.dumps(schema, indent=2), encoding="utf-8")
358
390
 
359
391
 
@@ -61,14 +61,15 @@ GROVE_MONAD_UNISWAP_AUSD_USDC: Final[Asset] = Asset(
61
61
  address=EvmAddress("0x6B405DCA74897c9442d369DcF6c0EC230f7E1c7C"),
62
62
  source="A.6.1.1.2.2.6.1.3.1.12.1.2.2.1",
63
63
  underlying_asset=Token.USDC,
64
- underlying_asset_address=EvmAddress("0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"),
64
+ underlying_asset_address=EvmAddress("0x754704Bc059F8C67012fEd69BC8A327a5aafb603"),
65
65
  underlying_asset_source="A.6.1.1.2.2.6.1.3.1.12.1.2.2.2",
66
66
  categories={AssetCategory.CASH_STABLECOIN},
67
67
  )
68
- """Monad Uniswap AUSD/USDC pool. The Atlas Underlying Asset Address node records
69
- USDC (0xA0b8…), which is the asset supplied by the Grove Liquidity Layer; the
70
- token name carries no "LP" marker so the export derives token_type
71
- "uni_v3_pool"."""
68
+ """Monad Uniswap AUSD/USDC pool. The pool and its tokens live on Monad, so the
69
+ Atlas Underlying Asset Address node records the Monad-native USDC
70
+ (0x754704Bc…), not mainnet USDC; a consumer reading the underlying on Monad
71
+ needs the chain-local token. The token name carries no "LP" marker so the
72
+ export derives token_type "uni_v3_pool"."""
72
73
 
73
74
 
74
75
  ASSETS_BY_PRIME: dict[PrimeName, list[Asset]] = {
@@ -391,10 +392,10 @@ ASSETS_BY_PRIME: dict[PrimeName, list[Asset]] = {
391
392
  token=Token.A_BAS_USDC,
392
393
  network=Network.BASE,
393
394
  protocol=Protocol.AAVE,
394
- address=EvmAddress("0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"),
395
+ address=EvmAddress("0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB"),
395
396
  source="A.6.1.1.1.2.6.1.3.2.3.1.2.2.1",
396
397
  underlying_asset=Token.USDC,
397
- underlying_asset_address=EvmAddress("0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB"),
398
+ underlying_asset_address=EvmAddress("0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"),
398
399
  underlying_asset_source="A.6.1.1.1.2.6.1.3.2.3.1.2.2.2",
399
400
  categories={AssetCategory.LENDING_MARKET},
400
401
  ),
@@ -347,20 +347,6 @@ SPARK_MAINNET_RISK_CAPITAL_USDS: Final[MissingAtlasAsset] = MissingAtlasAsset(
347
347
  Atlas A.6.1.1.1.2.6.1.2.1.1.1.3.1.1.2."""
348
348
 
349
349
 
350
- SPARK_BASE_AAVE_ATOKEN: Final[MissingAtlasAsset] = MissingAtlasAsset(
351
- network=Network.BASE,
352
- address=EvmAddress("0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB"),
353
- protocol=Protocol.AAVE,
354
- allocation_type=AllocationType.ALLOCATION,
355
- token_type=TokenType.ATOKEN,
356
- underlying_asset_address=EvmAddress("0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"),
357
- )
358
- """Base Aave aToken ("skip — existing worker"). NB: the Atlas-backed A_BAS_USDC
359
- entry in assets_by_prime currently uses 0x833589… (the USDC underlying) as its
360
- contract address; per entries.go that address is an idle asset and this
361
- 0x4e65fE4D… is the aTokens — flagged for reviewers."""
362
-
363
-
364
350
  SPARK_BASE_POL_PROXY: Final[MissingAtlasAsset] = MissingAtlasAsset(
365
351
  network=Network.BASE,
366
352
  address=EvmAddress("0x5875eEE11Cf8398102FdAd704C9E96607675467a"),
@@ -544,7 +530,6 @@ MISSING_FROM_ATLAS_BY_PRIME: Final[dict[PrimeName, list[MissingAtlasAsset]]] = {
544
530
  SPARK_MAINNET_POL_USDS,
545
531
  SPARK_MAINNET_ASSET_PYUSD,
546
532
  SPARK_MAINNET_RISK_CAPITAL_USDS,
547
- SPARK_BASE_AAVE_ATOKEN,
548
533
  SPARK_BASE_POL_PROXY,
549
534
  SPARK_ARBITRUM_POL_PROXY,
550
535
  SPARK_ARBITRUM_ASSET_USDC,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: axis-synome
3
- Version: 0.1.0.dev72
3
+ Version: 0.1.0.dev74
4
4
  Summary: Axis specification modules (entities, formulas, validators)
5
5
  Author-email: Archon Tech <hello@archontech.ai>
6
6
  License: MIT
@@ -2,8 +2,15 @@ import json
2
2
  import subprocess
3
3
  import sys
4
4
  from pathlib import Path
5
-
6
- from axis_synome.export_entities import _prime_to_star, build_axis_synome_contract
5
+ from typing import cast
6
+
7
+ from axis_synome import export_entities
8
+ from axis_synome.export_entities import (
9
+ _axis_synome_git_commit,
10
+ _git_commit_from_checkout,
11
+ _prime_to_star,
12
+ build_axis_synome_contract,
13
+ )
7
14
  from axis_synome.spec.asc.entities.assets_by_prime import ASSETS_BY_PRIME, PrimeName
8
15
  from axis_synome.spec.asc.entities.assets_missing_from_atlas import (
9
16
  MISSING_FROM_ATLAS_BY_PRIME,
@@ -62,6 +69,41 @@ def test_export_entities_outputs_contract_and_schema(tmp_path: Path):
62
69
  assert schema["title"] == "AxisSynomeContract"
63
70
 
64
71
 
72
+ def test_schema_property_names_match_emitted_data(tmp_path: Path):
73
+ """The exported schema must describe the keys the data actually uses
74
+ (ASSETS_BY_PRIME, AlmProxy), not the Python field names. Guards against
75
+ generating the schema in validation mode, which emits `entries`/`proxies`
76
+ and makes the contract fail to validate against its own schema."""
77
+ repo_root = Path(__file__).resolve().parents[4]
78
+ out_path = tmp_path / "axis_synome_entities.json"
79
+ schema_path = tmp_path / "axis_synome_entities.schema.json"
80
+ _run_export(repo_root, out_path, schema_path)
81
+
82
+ schema = json.loads(schema_path.read_text(encoding="utf-8"))
83
+
84
+ # Collect every property name declared anywhere in the schema (incl. $defs).
85
+ prop_names: set[str] = set()
86
+
87
+ def walk(node: object) -> None:
88
+ if isinstance(node, dict):
89
+ mapping = cast(dict[str, object], node)
90
+ props = mapping.get("properties")
91
+ if isinstance(props, dict):
92
+ prop_names.update(cast(dict[str, object], props).keys())
93
+ for value in mapping.values():
94
+ walk(value)
95
+ elif isinstance(node, list):
96
+ for value in cast(list[object], node):
97
+ walk(value)
98
+
99
+ walk(schema)
100
+
101
+ assert "ASSETS_BY_PRIME" in prop_names
102
+ assert "AlmProxy" in prop_names
103
+ assert "entries" not in prop_names
104
+ assert "proxies" not in prop_names
105
+
106
+
65
107
  def test_export_keeps_alm_proxy_and_additional_proxies():
66
108
  """Both the canonical ALM Proxy and the SubProxy must be exported per
67
109
  (star, chain); the SubProxy must not replace the ALM Proxy."""
@@ -196,3 +238,22 @@ def test_prime_to_star_round_trips_known_primes():
196
238
  """Sanity: the prime->star slug used to key the export is stable."""
197
239
  assert _prime_to_star(PrimeName.SPARK) == "spark"
198
240
  assert _prime_to_star(PrimeName.GROVE) == "grove"
241
+
242
+
243
+ def test_git_commit_from_checkout_ignores_foreign_repo(tmp_path):
244
+ """A repo_root without src/axis_synome (e.g. an installed wheel nested in a
245
+ consumer repo) must not shell out to git and report that repo's HEAD."""
246
+ assert _git_commit_from_checkout(tmp_path) == "unknown"
247
+
248
+
249
+ def test_git_commit_prefers_build_embedded(monkeypatch):
250
+ """When _version.py carries a build-time commit, it wins over any git probe."""
251
+ monkeypatch.setattr(export_entities, "_build_embedded_commit", lambda: "abc123")
252
+ assert _axis_synome_git_commit() == "abc123"
253
+
254
+
255
+ def test_git_commit_unknown_when_unembedded_and_not_in_checkout(monkeypatch):
256
+ """No embedded commit and not in the source tree resolves to "unknown"."""
257
+ monkeypatch.setattr(export_entities, "_build_embedded_commit", lambda: None)
258
+ monkeypatch.setattr(export_entities, "_git_commit_from_checkout", lambda _root: "unknown")
259
+ assert _axis_synome_git_commit() == "unknown"