axis-synome 0.1.0.dev73__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.
- {axis_synome-0.1.0.dev73/src/axis_synome.egg-info → axis_synome-0.1.0.dev76}/PKG-INFO +1 -1
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/_version.py +2 -2
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/export_entities.py +67 -4
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/assets_missing_from_atlas.py +4 -35
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76/src/axis_synome.egg-info}/PKG-INFO +1 -1
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/scripts/test_export_entities.py +58 -5
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/.flake8 +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/AGENTS.md +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/CLAUDE.md +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/README.md +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/WRITING_SPECS.md +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/examples/01_prime_basics.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/examples/02_assets_and_tokens_of_a_prime.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/examples/03_inverse_lookups.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/examples/04_atlas_provenance.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/examples/05_feeding_a_formula.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/examples/README.md +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/pyproject.toml +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/setup.cfg +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/__main__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/ast_normalizer.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/ast_utils.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/checks/numeric_fidelity.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/converters.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/entity_parser.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/formula_extraction.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/helpers.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/identity.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/latex/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/latex/converter.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/latex/formatter.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/latex/render.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/parse_expressions.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/statement_handler.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/validation.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/all_entities/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/all_entities/lending_markets.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/alm_proxies.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/asset_categories.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/assets.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/assets_by_prime.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/networks.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/primes.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/protocol_sets.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/tokens.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/types.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/asc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/asc_collateral_ratio.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/asc_incentive.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/dab.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/latent_asc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/ratio_latent_asc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/resting_asc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/codegen_test/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/codegen_test/entities/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/codegen_test/entities/agents.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/crypto_lending/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/crypto_lending/formulas/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/crypto_lending/formulas/lif.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/audit_firms.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/capital_types.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/protocol_risk.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/risk_categories.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/smart_contract_risk.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/administrative_rrc/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/administrative_rrc/administrative_risk.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/aggregate_rrc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/audit_factor.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/capital_composition.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/entities/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/entities/lending_protocol.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/entities/precomputed_crr.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/examples/risk_capital_walkthrough.ipynb +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/financial_rrc/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/financial_rrc/entities.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/financial_rrc/perpetual_positions.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/asset_correlation_coefficient.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/capital_requirement_without_buffers.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/exposure_caps.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/fixed_crr_rrc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/instance_financial_rrc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/lending_rrc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/pipeline.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/precomputed_crr_rrc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/financial_rrc/probability_of_default.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/formulas/required_risk_capital.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/instance_rrc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/jrc_loss_allocation.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/lindy_factor.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/smart_contract_rrc/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/smart_contract_rrc/exceptions.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/smart_contract_rrc/smart_contract_risk.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/total_risk_capital.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/README.md +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/entities/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/entities/assessor_score.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/entities/assets.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/entities/mappings.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/formulas/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/formulas/crr.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/formulas/scoring.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_inspect/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_inspect/__main__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_inspect/cli.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/correlation_matrix.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/evm_address.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/math_protocol.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/pendle_validation.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/references/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/references/graph.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/runtime/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/runtime/base.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/runtime/math.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/runtime/reference.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/validated_dataclass.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/validated_str.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_validator/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_validator/check_source_uuids.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_validator/checker.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_validator/flake8_plugin.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_validator/python_subset.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome.egg-info/SOURCES.txt +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome.egg-info/dependency_links.txt +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome.egg-info/entry_points.txt +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome.egg-info/requires.txt +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome.egg-info/top_level.txt +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/conftest.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/mocks.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_alm_proxies.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_asc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_asc_collateral_ratio.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_asc_incentive.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_asset_categories.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_dab.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_evm_address.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_latent_asc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_prime_agent_data_validation.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_ratio_latent_asc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_resting_asc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/fixture_latex_chain.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/fixture_mixed_module.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/fixture_set_membership.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/graph_validator.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/latex/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/latex/test_formatter.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/latex/test_render.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/test_entity_parser.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/test_formula_extraction.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/test_helpers.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/test_parser.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/test_set_membership.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/administrative_rrc/test_administrative_risk.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/financial_rrc/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/financial_rrc/test_lending_rrc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/financial_rrc/test_perpetual_positions.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/formulas/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/formulas/test_correlation_matrix.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/formulas/test_loss_given_default.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/smart_contract_rrc/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/smart_contract_rrc/test_exceptions.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/smart_contract_rrc/test_smart_contract_risk.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/test_a321_a322_integration.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/test_aggregate_rrc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/test_capital_composition.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/test_instance_rrc.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/test_jrc_loss_allocation.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/test_total_risk_capital.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_inspect/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_inspect/test_cli.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_support/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_support/references/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_support/references/test_graph.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_support/runtime/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_support/runtime/test_base.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_support/runtime/test_math.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_validator/test_check_source_uuids.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_validator/test_checker.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_validator/test_flake8_plugin.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/entities/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/entities/test_assessor_score.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/formulas/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/formulas/test_crr.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/formulas/test_scoring.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/static/aave_ausdc/v1/crr_mapping.csv +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/static/aave_ausdc/v1/penalty.csv +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/static/aave_ausdc/v1/scorecards/Assessor_1_scores.csv +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/static/aave_ausdc/v1/scorecards/Assessor_2_scores.csv +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/static/aave_ausdc/v1/scorecards/Assessor_3_scores.csv +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/static/aave_ausdc/v1/weights.csv +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/suraf_client/__init__.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/suraf_client/suraf_client.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/suraf_client/test_suraf_client.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/test_examples.py +0 -0
- {axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/uv.lock +0 -0
|
@@ -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.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 1, 0, '
|
|
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,12 +157,75 @@ 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
|
|
|
163
199
|
|
|
164
200
|
def _axis_synome_git_commit() -> str:
|
|
165
|
-
|
|
201
|
+
"""Resolve the axis-synome commit for the exported contract's provenance.
|
|
202
|
+
|
|
203
|
+
Prefer the commit baked into ``_version.py`` at build time. Otherwise fall
|
|
204
|
+
back to ``git rev-parse`` only when running from the axis-synome source tree.
|
|
205
|
+
An installed wheel lives under ``site-packages`` (often nested inside a
|
|
206
|
+
consumer's git repository), and walking up from there would resolve that
|
|
207
|
+
consumer's HEAD, which is not our commit; return ``"unknown"`` instead.
|
|
208
|
+
"""
|
|
209
|
+
embedded = _build_embedded_commit()
|
|
210
|
+
if embedded:
|
|
211
|
+
return embedded
|
|
212
|
+
return _git_commit_from_checkout(Path(__file__).resolve().parents[2])
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
def _build_embedded_commit() -> str | None:
|
|
216
|
+
try:
|
|
217
|
+
from axis_synome._version import commit_id
|
|
218
|
+
except ImportError:
|
|
219
|
+
return None
|
|
220
|
+
return commit_id
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def _git_commit_from_checkout(repo_root: Path) -> str:
|
|
224
|
+
# Only trust git inside the axis-synome source tree. When installed as a
|
|
225
|
+
# wheel, repo_root points into site-packages, so a surrounding consumer
|
|
226
|
+
# repository's HEAD must never be mistaken for our commit.
|
|
227
|
+
if not (repo_root / "src" / "axis_synome").is_dir():
|
|
228
|
+
return "unknown"
|
|
166
229
|
try:
|
|
167
230
|
return subprocess.check_output(
|
|
168
231
|
["git", "rev-parse", "HEAD"], cwd=repo_root, text=True
|
|
@@ -233,7 +296,7 @@ def build_axis_synome_contract(
|
|
|
233
296
|
missing_proxy_keys.add((star, chain))
|
|
234
297
|
continue
|
|
235
298
|
|
|
236
|
-
contract_address = str(asset.address)
|
|
299
|
+
contract_address = _tracked_contract_address(chain, str(asset.address))
|
|
237
300
|
entry_key = (chain, contract_address, wallet)
|
|
238
301
|
if entry_key in seen_entry_keys:
|
|
239
302
|
raise ValueError(
|
|
@@ -278,7 +341,7 @@ def build_axis_synome_contract(
|
|
|
278
341
|
missing_proxy_keys.add((star, chain))
|
|
279
342
|
continue
|
|
280
343
|
|
|
281
|
-
contract_address = str(missing.address)
|
|
344
|
+
contract_address = _tracked_contract_address(chain, str(missing.address))
|
|
282
345
|
entry_key = (chain, contract_address, wallet)
|
|
283
346
|
if entry_key in seen_entry_keys:
|
|
284
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
|
-
|
|
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,
|
|
@@ -4,7 +4,13 @@ import sys
|
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
from typing import cast
|
|
6
6
|
|
|
7
|
-
from axis_synome
|
|
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
|
+
)
|
|
8
14
|
from axis_synome.spec.asc.entities.assets_by_prime import ASSETS_BY_PRIME, PrimeName
|
|
9
15
|
from axis_synome.spec.asc.entities.assets_missing_from_atlas import (
|
|
10
16
|
MISSING_FROM_ATLAS_BY_PRIME,
|
|
@@ -193,14 +199,22 @@ def test_export_covers_every_spec_position():
|
|
|
193
199
|
drops, duplicates, or invents. The downstream contract values are validated
|
|
194
200
|
end-to-end by the STL sentinel compatibility gates in CI.
|
|
195
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.
|
|
196
204
|
expected_contracts: list[str] = []
|
|
197
205
|
for prime in (PrimeName.SPARK, PrimeName.GROVE):
|
|
198
206
|
for asset in ASSETS_BY_PRIME.get(prime, []):
|
|
199
|
-
|
|
200
|
-
|
|
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
|
+
)
|
|
201
212
|
for missing in MISSING_FROM_ATLAS_BY_PRIME.get(prime, []):
|
|
202
|
-
|
|
203
|
-
|
|
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
|
+
)
|
|
204
218
|
|
|
205
219
|
exported_contracts = [e["contract_address"] for e in _exported_token_entries()]
|
|
206
220
|
assert sorted(exported_contracts) == sorted(expected_contracts)
|
|
@@ -232,3 +246,42 @@ def test_prime_to_star_round_trips_known_primes():
|
|
|
232
246
|
"""Sanity: the prime->star slug used to key the export is stable."""
|
|
233
247
|
assert _prime_to_star(PrimeName.SPARK) == "spark"
|
|
234
248
|
assert _prime_to_star(PrimeName.GROVE) == "grove"
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
def test_git_commit_from_checkout_ignores_foreign_repo(tmp_path):
|
|
252
|
+
"""A repo_root without src/axis_synome (e.g. an installed wheel nested in a
|
|
253
|
+
consumer repo) must not shell out to git and report that repo's HEAD."""
|
|
254
|
+
assert _git_commit_from_checkout(tmp_path) == "unknown"
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
def test_git_commit_prefers_build_embedded(monkeypatch):
|
|
258
|
+
"""When _version.py carries a build-time commit, it wins over any git probe."""
|
|
259
|
+
monkeypatch.setattr(export_entities, "_build_embedded_commit", lambda: "abc123")
|
|
260
|
+
assert _axis_synome_git_commit() == "abc123"
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
def test_git_commit_unknown_when_unembedded_and_not_in_checkout(monkeypatch):
|
|
264
|
+
"""No embedded commit and not in the source tree resolves to "unknown"."""
|
|
265
|
+
monkeypatch.setattr(export_entities, "_build_embedded_commit", lambda: None)
|
|
266
|
+
monkeypatch.setattr(export_entities, "_git_commit_from_checkout", lambda _root: "unknown")
|
|
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()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/examples/02_assets_and_tokens_of_a_prime.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/ast_normalizer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/formula_extraction.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/latex/__init__.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/latex/converter.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/latex/formatter.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/parse_expressions.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/parser/statement_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/all_entities/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/__init__.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/alm_proxies.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/assets.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/networks.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/primes.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/tokens.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/entities/types.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/__init__.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/asc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/dab.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/latent_asc.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/asc/formulas/resting_asc.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/codegen_test/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/crypto_lending/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/__init__.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/audit_firms.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/capital_types.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/protocol_risk.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/entities/risk_categories.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/risk_capital/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/entities/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/entities/assets.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/entities/mappings.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/formulas/__init__.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/formulas/crr.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec/suraf/formulas/scoring.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_inspect/__init__.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_inspect/__main__.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/evm_address.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/math_protocol.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/references/graph.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/runtime/__init__.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/runtime/base.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/runtime/math.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_support/validated_str.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_validator/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_validator/checker.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_validator/flake8_plugin.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome/spec_validator/python_subset.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/src/axis_synome.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_alm_proxies.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_asc_incentive.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_asset_categories.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_evm_address.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_latent_asc.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_ratio_latent_asc.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/asc/test_resting_asc.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/fixture_latex_chain.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/fixture_mixed_module.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/graph_validator.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/latex/__init__.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/latex/test_formatter.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/latex/test_render.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/test_entity_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/test_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/parser/test_set_membership.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/risk_capital/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_inspect/__init__.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_inspect/test_cli.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_support/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/spec_validator/test_checker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/entities/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/formulas/__init__.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/formulas/test_crr.py
RENAMED
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/formulas/test_scoring.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis_synome-0.1.0.dev73 → axis_synome-0.1.0.dev76}/tests/axis_synome/suraf/suraf_client/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|