axis-synome 0.1.0.dev74__tar.gz → 0.1.0.dev76__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.dev74/src/axis_synome.egg-info → axis_synome-0.1.0.dev76}/PKG-INFO +1 -1
  2. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/_version.py +2 -2
  3. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/export_entities.py +39 -3
  4. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/assets_missing_from_atlas.py +4 -35
  5. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76/src/axis_synome.egg-info}/PKG-INFO +1 -1
  6. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/scripts/test_export_entities.py +32 -4
  7. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/.flake8 +0 -0
  8. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/AGENTS.md +0 -0
  9. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/CLAUDE.md +0 -0
  10. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/README.md +0 -0
  11. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/WRITING_SPECS.md +0 -0
  12. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/examples/01_prime_basics.py +0 -0
  13. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/examples/02_assets_and_tokens_of_a_prime.py +0 -0
  14. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/examples/03_inverse_lookups.py +0 -0
  15. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/examples/04_atlas_provenance.py +0 -0
  16. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/examples/05_feeding_a_formula.py +0 -0
  17. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/examples/README.md +0 -0
  18. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/pyproject.toml +0 -0
  19. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/setup.cfg +0 -0
  20. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/__init__.py +0 -0
  21. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/__init__.py +0 -0
  22. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/__main__.py +0 -0
  23. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/ast_normalizer.py +0 -0
  24. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/ast_utils.py +0 -0
  25. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/checks/numeric_fidelity.py +0 -0
  26. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/converters.py +0 -0
  27. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/entity_parser.py +0 -0
  28. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/formula_extraction.py +0 -0
  29. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/helpers.py +0 -0
  30. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/identity.py +0 -0
  31. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/latex/__init__.py +0 -0
  32. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/latex/converter.py +0 -0
  33. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/latex/formatter.py +0 -0
  34. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/latex/render.py +0 -0
  35. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/parse_expressions.py +0 -0
  36. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/statement_handler.py +0 -0
  37. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/validation.py +0 -0
  38. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/__init__.py +0 -0
  39. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/all_entities/__init__.py +0 -0
  40. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/all_entities/lending_markets.py +0 -0
  41. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/__init__.py +0 -0
  42. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/__init__.py +0 -0
  43. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/alm_proxies.py +0 -0
  44. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/asset_categories.py +0 -0
  45. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/assets.py +0 -0
  46. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/assets_by_prime.py +0 -0
  47. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/networks.py +0 -0
  48. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/primes.py +0 -0
  49. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/protocol_sets.py +0 -0
  50. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/tokens.py +0 -0
  51. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/types.py +0 -0
  52. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/__init__.py +0 -0
  53. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/asc.py +0 -0
  54. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/asc_collateral_ratio.py +0 -0
  55. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/asc_incentive.py +0 -0
  56. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/dab.py +0 -0
  57. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/latent_asc.py +0 -0
  58. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/ratio_latent_asc.py +0 -0
  59. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/resting_asc.py +0 -0
  60. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/codegen_test/__init__.py +0 -0
  61. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/codegen_test/entities/__init__.py +0 -0
  62. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/codegen_test/entities/agents.py +0 -0
  63. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/crypto_lending/__init__.py +0 -0
  64. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/crypto_lending/formulas/__init__.py +0 -0
  65. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/crypto_lending/formulas/lif.py +0 -0
  66. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/__init__.py +0 -0
  67. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/audit_firms.py +0 -0
  68. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/capital_types.py +0 -0
  69. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/protocol_risk.py +0 -0
  70. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/risk_categories.py +0 -0
  71. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/smart_contract_risk.py +0 -0
  72. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/__init__.py +0 -0
  73. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/administrative_rrc/__init__.py +0 -0
  74. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/administrative_rrc/administrative_risk.py +0 -0
  75. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/aggregate_rrc.py +0 -0
  76. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/audit_factor.py +0 -0
  77. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/capital_composition.py +0 -0
  78. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/entities/__init__.py +0 -0
  79. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/entities/lending_protocol.py +0 -0
  80. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/entities/precomputed_crr.py +0 -0
  81. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/examples/risk_capital_walkthrough.ipynb +0 -0
  82. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/financial_rrc/__init__.py +0 -0
  83. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/financial_rrc/entities.py +0 -0
  84. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/financial_rrc/perpetual_positions.py +0 -0
  85. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/__init__.py +0 -0
  86. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/__init__.py +0 -0
  87. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/asset_correlation_coefficient.py +0 -0
  88. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/capital_requirement_without_buffers.py +0 -0
  89. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/exposure_caps.py +0 -0
  90. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/fixed_crr_rrc.py +0 -0
  91. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/instance_financial_rrc.py +0 -0
  92. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/lending_rrc.py +0 -0
  93. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/pipeline.py +0 -0
  94. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/precomputed_crr_rrc.py +0 -0
  95. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/probability_of_default.py +0 -0
  96. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/required_risk_capital.py +0 -0
  97. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/instance_rrc.py +0 -0
  98. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/jrc_loss_allocation.py +0 -0
  99. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/lindy_factor.py +0 -0
  100. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/smart_contract_rrc/__init__.py +0 -0
  101. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/smart_contract_rrc/exceptions.py +0 -0
  102. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/smart_contract_rrc/smart_contract_risk.py +0 -0
  103. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/total_risk_capital.py +0 -0
  104. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/README.md +0 -0
  105. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/__init__.py +0 -0
  106. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/entities/__init__.py +0 -0
  107. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/entities/assessor_score.py +0 -0
  108. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/entities/assets.py +0 -0
  109. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/entities/mappings.py +0 -0
  110. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/formulas/__init__.py +0 -0
  111. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/formulas/crr.py +0 -0
  112. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/formulas/scoring.py +0 -0
  113. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_inspect/__init__.py +0 -0
  114. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_inspect/__main__.py +0 -0
  115. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_inspect/cli.py +0 -0
  116. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/__init__.py +0 -0
  117. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/correlation_matrix.py +0 -0
  118. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/evm_address.py +0 -0
  119. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/math_protocol.py +0 -0
  120. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/pendle_validation.py +0 -0
  121. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/references/__init__.py +0 -0
  122. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/references/graph.py +0 -0
  123. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/runtime/__init__.py +0 -0
  124. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/runtime/base.py +0 -0
  125. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/runtime/math.py +0 -0
  126. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/runtime/reference.py +0 -0
  127. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/validated_dataclass.py +0 -0
  128. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/validated_str.py +0 -0
  129. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_validator/__init__.py +0 -0
  130. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_validator/check_source_uuids.py +0 -0
  131. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_validator/checker.py +0 -0
  132. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_validator/flake8_plugin.py +0 -0
  133. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_validator/python_subset.py +0 -0
  134. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome.egg-info/SOURCES.txt +0 -0
  135. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome.egg-info/dependency_links.txt +0 -0
  136. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome.egg-info/entry_points.txt +0 -0
  137. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome.egg-info/requires.txt +0 -0
  138. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/src/axis_synome.egg-info/top_level.txt +0 -0
  139. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/__init__.py +0 -0
  140. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/conftest.py +0 -0
  141. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/mocks.py +0 -0
  142. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_alm_proxies.py +0 -0
  143. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_asc.py +0 -0
  144. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_asc_collateral_ratio.py +0 -0
  145. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_asc_incentive.py +0 -0
  146. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_asset_categories.py +0 -0
  147. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_dab.py +0 -0
  148. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_evm_address.py +0 -0
  149. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_latent_asc.py +0 -0
  150. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_prime_agent_data_validation.py +0 -0
  151. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_ratio_latent_asc.py +0 -0
  152. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_resting_asc.py +0 -0
  153. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/__init__.py +0 -0
  154. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/fixture_latex_chain.py +0 -0
  155. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/fixture_mixed_module.py +0 -0
  156. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/fixture_set_membership.py +0 -0
  157. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/graph_validator.py +0 -0
  158. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/latex/__init__.py +0 -0
  159. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/latex/test_formatter.py +0 -0
  160. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/latex/test_render.py +0 -0
  161. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/test_entity_parser.py +0 -0
  162. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/test_formula_extraction.py +0 -0
  163. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/test_helpers.py +0 -0
  164. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/test_parser.py +0 -0
  165. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/test_set_membership.py +0 -0
  166. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/__init__.py +0 -0
  167. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/administrative_rrc/test_administrative_risk.py +0 -0
  168. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/financial_rrc/__init__.py +0 -0
  169. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/financial_rrc/test_lending_rrc.py +0 -0
  170. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/financial_rrc/test_perpetual_positions.py +0 -0
  171. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/formulas/__init__.py +0 -0
  172. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/formulas/test_correlation_matrix.py +0 -0
  173. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/formulas/test_loss_given_default.py +0 -0
  174. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/smart_contract_rrc/__init__.py +0 -0
  175. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/smart_contract_rrc/test_exceptions.py +0 -0
  176. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/smart_contract_rrc/test_smart_contract_risk.py +0 -0
  177. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/test_a321_a322_integration.py +0 -0
  178. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/test_aggregate_rrc.py +0 -0
  179. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/test_capital_composition.py +0 -0
  180. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/test_instance_rrc.py +0 -0
  181. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/test_jrc_loss_allocation.py +0 -0
  182. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/test_total_risk_capital.py +0 -0
  183. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_inspect/__init__.py +0 -0
  184. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_inspect/test_cli.py +0 -0
  185. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_support/__init__.py +0 -0
  186. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_support/references/__init__.py +0 -0
  187. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_support/references/test_graph.py +0 -0
  188. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_support/runtime/__init__.py +0 -0
  189. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_support/runtime/test_base.py +0 -0
  190. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_support/runtime/test_math.py +0 -0
  191. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_validator/test_check_source_uuids.py +0 -0
  192. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_validator/test_checker.py +0 -0
  193. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_validator/test_flake8_plugin.py +0 -0
  194. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/__init__.py +0 -0
  195. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/entities/__init__.py +0 -0
  196. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/entities/test_assessor_score.py +0 -0
  197. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/formulas/__init__.py +0 -0
  198. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/formulas/test_crr.py +0 -0
  199. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/formulas/test_scoring.py +0 -0
  200. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/static/aave_ausdc/v1/crr_mapping.csv +0 -0
  201. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/static/aave_ausdc/v1/penalty.csv +0 -0
  202. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/static/aave_ausdc/v1/scorecards/Assessor_1_scores.csv +0 -0
  203. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/static/aave_ausdc/v1/scorecards/Assessor_2_scores.csv +0 -0
  204. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/static/aave_ausdc/v1/scorecards/Assessor_3_scores.csv +0 -0
  205. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/static/aave_ausdc/v1/weights.csv +0 -0
  206. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/suraf_client/__init__.py +0 -0
  207. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/suraf_client/suraf_client.py +0 -0
  208. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/suraf_client/test_suraf_client.py +0 -0
  209. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/tests/axis_synome/test_examples.py +0 -0
  210. {axis_synome-0.1.0.dev74 → axis_synome-0.1.0.dev76}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: axis-synome
3
- Version: 0.1.0.dev74
3
+ Version: 0.1.0.dev76
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.dev74'
22
- __version_tuple__ = version_tuple = (0, 1, 0, 'dev74')
21
+ __version__ = version = '0.1.0.dev76'
22
+ __version_tuple__ = version_tuple = (0, 1, 0, 'dev76')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -6,7 +6,7 @@ import json
6
6
  import re
7
7
  import subprocess
8
8
  from pathlib import Path
9
- from typing import Any
9
+ from typing import Any, Final
10
10
 
11
11
  from pydantic import BaseModel, ConfigDict, Field
12
12
 
@@ -157,6 +157,42 @@ def _allocation_type(protocol: Protocol) -> AllocationType:
157
157
  return AllocationType.ALLOCATION
158
158
 
159
159
 
160
+ # Centrifuge ERC-7540 vaults are not balanceOf-able: name/symbol/decimals/balanceOf
161
+ # revert on-chain. The proxy holds the vault's share() ERC20, which is what the
162
+ # allocation tracker reads. The Atlas Token Address for these instances is the vault,
163
+ # so the tracked contract address is resolved to the on-chain share() here. Keyed by
164
+ # (chain, vault address) because the same vault address is reused across chains with
165
+ # different share tokens. share() values verified on-chain (cast) on Ethereum and
166
+ # Avalanche.
167
+ _CENTRIFUGE_VAULT_SHARE: Final[dict[tuple[str, str], str]] = {
168
+ (
169
+ "mainnet",
170
+ "0x4880799ee5200fc58da299e965df644fbf46780b",
171
+ ): "0x5a0f93d040de44e78f251b03c43be9cf317dcf64",
172
+ (
173
+ "mainnet",
174
+ "0xfe6920eb6c421f1179ca8c8d4170530cdbdfd77a",
175
+ ): "0x8c213ee79581ff4984583c6a801e5263418c4b86",
176
+ (
177
+ "avalanche-c",
178
+ "0x1121f4e21ed8b9bc1bb9a2952cdd8639ac897784",
179
+ ): "0x58f93d6b1ef2f44ec379cb975657c132cbed3b6b",
180
+ (
181
+ "avalanche-c",
182
+ "0xfe6920eb6c421f1179ca8c8d4170530cdbdfd77a",
183
+ ): "0xa5d465251fbcc907f5dd6bb2145488dfc6a2627b",
184
+ }
185
+
186
+
187
+ def _tracked_contract_address(chain: str, address: str) -> str:
188
+ """Resolve the balanceOf-able contract address for a position.
189
+
190
+ Centrifuge ERC-7540 vault addresses are mapped to their share() ERC20 (the token
191
+ the proxy actually holds); every other address passes through unchanged.
192
+ """
193
+ return _CENTRIFUGE_VAULT_SHARE.get((chain, address.lower()), address.lower())
194
+
195
+
160
196
  def _version_from_package_metadata() -> str:
161
197
  return importlib.metadata.version("axis-synome")
162
198
 
@@ -260,7 +296,7 @@ def build_axis_synome_contract(
260
296
  missing_proxy_keys.add((star, chain))
261
297
  continue
262
298
 
263
- contract_address = str(asset.address).lower()
299
+ contract_address = _tracked_contract_address(chain, str(asset.address))
264
300
  entry_key = (chain, contract_address, wallet)
265
301
  if entry_key in seen_entry_keys:
266
302
  raise ValueError(
@@ -305,7 +341,7 @@ def build_axis_synome_contract(
305
341
  missing_proxy_keys.add((star, chain))
306
342
  continue
307
343
 
308
- contract_address = str(missing.address).lower()
344
+ contract_address = _tracked_contract_address(chain, str(missing.address))
309
345
  entry_key = (chain, contract_address, wallet)
310
346
  if entry_key in seen_entry_keys:
311
347
  raise ValueError(
@@ -381,17 +381,6 @@ SPARK_ARBITRUM_ASSET_USDC: Final[MissingAtlasAsset] = MissingAtlasAsset(
381
381
 
382
382
  # --- Grove ---
383
383
 
384
- GROVE_MAINNET_JANUS_HENDERSON: Final[MissingAtlasAsset] = MissingAtlasAsset(
385
- network=Network.ETHEREUM_MAINNET,
386
- address=EvmAddress("0x5a0F93D040De44e78F251b03c43be9CF317Dcf64"),
387
- protocol=Protocol.JANUS_HENDERSON,
388
- allocation_type=AllocationType.ALLOCATION,
389
- token_type=TokenType.ERC20,
390
- underlying_asset_address=USDC_MAINNET,
391
- )
392
- """Mainnet Janus Henderson. Absent (no Janus/Henderson docs in the Atlas)."""
393
-
394
-
395
384
  GROVE_MAINNET_CURVE_AUSD_USDC: Final[MissingAtlasAsset] = MissingAtlasAsset(
396
385
  network=Network.ETHEREUM_MAINNET,
397
386
  address=EvmAddress("0xE79C1C7E24755574438A26D5e062Ad2626C04662"),
@@ -416,16 +405,6 @@ GROVE_MAINNET_UNISWAP_AUSD_USDC: Final[MissingAtlasAsset] = MissingAtlasAsset(
416
405
  Address" (A.6.1.1.2.2.6.1.3.1.12.2 / 12.3), not a Token Address."""
417
406
 
418
407
 
419
- GROVE_AVALANCHE_JANUS_HENDERSON: Final[MissingAtlasAsset] = MissingAtlasAsset(
420
- network=Network.AVALANCHE,
421
- address=EvmAddress("0x58F93d6b1EF2F44eC379Cb975657C132CBeD3B6b"),
422
- protocol=Protocol.JANUS_HENDERSON,
423
- allocation_type=AllocationType.ALLOCATION,
424
- token_type=TokenType.ERC20,
425
- )
426
- """Avalanche Janus Henderson. Absent (no Janus/Henderson docs)."""
427
-
428
-
429
408
  GROVE_PLUME_CENTRIFUGE_FEEDER: Final[MissingAtlasAsset] = MissingAtlasAsset(
430
409
  network=Network.PLUME,
431
410
  address=EvmAddress("0xa5d465251fBCc907f5Dd6bB2145488DFC6a2627b"),
@@ -449,17 +428,6 @@ GROVE_PLUME_ASSET_USDC: Final[MissingAtlasAsset] = MissingAtlasAsset(
449
428
  of the ACRDX feeder, not a tracked position of its own."""
450
429
 
451
430
 
452
- GROVE_MAINNET_JANUS_HENDERSON_2: Final[MissingAtlasAsset] = MissingAtlasAsset(
453
- network=Network.ETHEREUM_MAINNET,
454
- address=EvmAddress("0x8c213ee79581Ff4984583C6a801e5263418C4b86"),
455
- protocol=Protocol.JANUS_HENDERSON,
456
- allocation_type=AllocationType.ALLOCATION,
457
- token_type=TokenType.ERC20,
458
- underlying_asset_address=USDC_MAINNET,
459
- )
460
- """Mainnet Janus Henderson (second feeder, distinct from 0x5a0F93D0…)."""
461
-
462
-
463
431
  GROVE_MAINNET_ASSET_DAI: Final[MissingAtlasAsset] = MissingAtlasAsset(
464
432
  network=Network.ETHEREUM_MAINNET,
465
433
  address=EvmAddress("0x6B175474E89094C44Da98b954EedeAC495271d0F"),
@@ -535,13 +503,14 @@ MISSING_FROM_ATLAS_BY_PRIME: Final[dict[PrimeName, list[MissingAtlasAsset]]] = {
535
503
  SPARK_ARBITRUM_ASSET_USDC,
536
504
  ],
537
505
  PrimeName.GROVE: [
538
- GROVE_MAINNET_JANUS_HENDERSON,
506
+ # Grove's Centrifuge JAAA/JTRSY share holdings are emitted from the
507
+ # Centrifuge instances in assets_by_prime.py (the ERC-7540 vault's share()
508
+ # is resolved at export time), so the former Janus-Henderson workaround
509
+ # entries for those share tokens are no longer listed here.
539
510
  GROVE_MAINNET_CURVE_AUSD_USDC,
540
511
  GROVE_MAINNET_UNISWAP_AUSD_USDC,
541
- GROVE_AVALANCHE_JANUS_HENDERSON,
542
512
  GROVE_PLUME_CENTRIFUGE_FEEDER,
543
513
  GROVE_PLUME_ASSET_USDC,
544
- GROVE_MAINNET_JANUS_HENDERSON_2,
545
514
  GROVE_MAINNET_ASSET_DAI,
546
515
  GROVE_MAINNET_POL_USDS,
547
516
  GROVE_MAINNET_RISK_CAPITAL_USDS,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: axis-synome
3
- Version: 0.1.0.dev74
3
+ Version: 0.1.0.dev76
4
4
  Summary: Axis specification modules (entities, formulas, validators)
5
5
  Author-email: Archon Tech <hello@archontech.ai>
6
6
  License: MIT
@@ -199,14 +199,22 @@ def test_export_covers_every_spec_position():
199
199
  drops, duplicates, or invents. The downstream contract values are validated
200
200
  end-to-end by the STL sentinel compatibility gates in CI.
201
201
  """
202
+ # Centrifuge ERC-7540 vault addresses are resolved to their share() ERC20 on
203
+ # export, so apply the same resolution when deriving the expectation.
202
204
  expected_contracts: list[str] = []
203
205
  for prime in (PrimeName.SPARK, PrimeName.GROVE):
204
206
  for asset in ASSETS_BY_PRIME.get(prime, []):
205
- if STL_CHAIN_BY_NETWORK.get(asset.network):
206
- expected_contracts.append(str(asset.address).lower())
207
+ chain = STL_CHAIN_BY_NETWORK.get(asset.network)
208
+ if chain:
209
+ expected_contracts.append(
210
+ export_entities._tracked_contract_address(chain, str(asset.address))
211
+ )
207
212
  for missing in MISSING_FROM_ATLAS_BY_PRIME.get(prime, []):
208
- if STL_CHAIN_BY_NETWORK.get(missing.network):
209
- expected_contracts.append(str(missing.address).lower())
213
+ chain = STL_CHAIN_BY_NETWORK.get(missing.network)
214
+ if chain:
215
+ expected_contracts.append(
216
+ export_entities._tracked_contract_address(chain, str(missing.address))
217
+ )
210
218
 
211
219
  exported_contracts = [e["contract_address"] for e in _exported_token_entries()]
212
220
  assert sorted(exported_contracts) == sorted(expected_contracts)
@@ -257,3 +265,23 @@ def test_git_commit_unknown_when_unembedded_and_not_in_checkout(monkeypatch):
257
265
  monkeypatch.setattr(export_entities, "_build_embedded_commit", lambda: None)
258
266
  monkeypatch.setattr(export_entities, "_git_commit_from_checkout", lambda _root: "unknown")
259
267
  assert _axis_synome_git_commit() == "unknown"
268
+
269
+
270
+ def test_tracked_contract_address_resolves_centrifuge_vault_to_share():
271
+ """Centrifuge ERC-7540 vaults resolve to their share() ERC20, keyed by chain
272
+ (the same vault address is reused across chains with different shares)."""
273
+ resolve = export_entities._tracked_contract_address
274
+ assert (
275
+ resolve("mainnet", "0xFE6920eB6C421f1179cA8c8d4170530CDBdfd77A")
276
+ == "0x8c213ee79581ff4984583c6a801e5263418c4b86"
277
+ )
278
+ assert (
279
+ resolve("avalanche-c", "0xFE6920eB6C421f1179cA8c8d4170530CDBdfd77A")
280
+ == "0xa5d465251fbcc907f5dd6bb2145488dfc6a2627b"
281
+ )
282
+
283
+
284
+ def test_tracked_contract_address_passes_through_non_vault():
285
+ """A non-vault address (e.g. Spark's direct JTRSY ERC20) is returned lowercased."""
286
+ addr = "0x8c213ee79581Ff4984583C6a801e5263418C4b86"
287
+ assert export_entities._tracked_contract_address("mainnet", addr) == addr.lower()