rateslib 2.7.0__tar.gz → 2.7.1__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 (377) hide show
  1. {rateslib-2.7.0 → rateslib-2.7.1}/Cargo.lock +1 -1
  2. {rateslib-2.7.0 → rateslib-2.7.1}/Cargo.toml +1 -5
  3. {rateslib-2.7.0 → rateslib-2.7.1}/PKG-INFO +1 -16
  4. {rateslib-2.7.0 → rateslib-2.7.1}/pyproject.toml +20 -9
  5. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/_spec_loader.py +50 -22
  6. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/__instrument_spec.csv +25 -23
  7. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/fixings.py +18 -12
  8. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/dual/utils.py +16 -0
  9. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/enums/__init__.py +4 -0
  10. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/conventions/__init__.py +39 -1
  11. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/protocols/accrued.py +2 -1
  12. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/stir_future.py +3 -21
  13. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/protocols/analytic_greeks.py +46 -25
  14. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/scheduling/adjuster.py +1 -1
  15. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/scheduling/schedule.py +3 -10
  16. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/verify.py +1 -1
  17. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/volatility/__init__.py +4 -0
  18. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/volatility/ir/__init__.py +8 -1
  19. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/volatility/ir/base.py +25 -2
  20. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/volatility/ir/sabr.py +128 -13
  21. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/volatility/ir/spline.py +151 -43
  22. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/volatility/ir/utils.py +107 -16
  23. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/volatility/utils.py +1 -0
  24. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/curves/test_curves.py +19 -0
  25. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/instruments/test_instruments_bonds_legacy.py +76 -0
  26. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/instruments/test_instruments_legacy.py +429 -12
  27. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/periods/test_periods_legacy.py +65 -1
  28. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/test_default.py +1 -1
  29. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/test_dualpy.py +15 -1
  30. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/test_ir_volatility.py +368 -137
  31. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/test_solver.py +119 -3
  32. rateslib-2.7.0/.DS_Store +0 -0
  33. rateslib-2.7.0/python/.DS_Store +0 -0
  34. rateslib-2.7.0/python/rateslib/.DS_Store +0 -0
  35. rateslib-2.7.0/python/rateslib/_deprecations_record.txt +0 -8
  36. rateslib-2.7.0/python/rateslib/curves/.DS_Store +0 -0
  37. rateslib-2.7.0/python/rateslib/data/.DS_Store +0 -0
  38. rateslib-2.7.0/python/rateslib/dual/.DS_Store +0 -0
  39. rateslib-2.7.0/python/rateslib/enums/.DS_Store +0 -0
  40. rateslib-2.7.0/python/rateslib/fx/.DS_Store +0 -0
  41. rateslib-2.7.0/python/rateslib/fx_volatility/.DS_Store +0 -0
  42. rateslib-2.7.0/python/rateslib/instruments/.DS_Store +0 -0
  43. rateslib-2.7.0/python/rateslib/legs/.DS_Store +0 -0
  44. rateslib-2.7.0/python/rateslib/mutability/.DS_Store +0 -0
  45. rateslib-2.7.0/python/rateslib/periods/.DS_Store +0 -0
  46. rateslib-2.7.0/python/rateslib/scheduling/.DS_Store +0 -0
  47. rateslib-2.7.0/python/rateslib/serialization/.DS_Store +0 -0
  48. rateslib-2.7.0/python/rateslib/splines/.DS_Store +0 -0
  49. rateslib-2.7.0/python/rateslib/volatility/.DS_Store +0 -0
  50. rateslib-2.7.0/python/tests/.DS_Store +0 -0
  51. rateslib-2.7.0/requirements.txt +0 -28
  52. rateslib-2.7.0/rust/.DS_Store +0 -0
  53. rateslib-2.7.0/rust/curves/.DS_Store +0 -0
  54. rateslib-2.7.0/rust/dual/.DS_Store +0 -0
  55. rateslib-2.7.0/rust/fx/.DS_Store +0 -0
  56. rateslib-2.7.0/rust/scheduling/.DS_Store +0 -0
  57. rateslib-2.7.0/rust/tests/.DS_Store +0 -0
  58. {rateslib-2.7.0 → rateslib-2.7.1}/.aiignore +0 -0
  59. {rateslib-2.7.0 → rateslib-2.7.1}/.gitattributes +0 -0
  60. {rateslib-2.7.0 → rateslib-2.7.1}/.gitignore +0 -0
  61. {rateslib-2.7.0 → rateslib-2.7.1}/COMMERCIAL_LICENCE +0 -0
  62. {rateslib-2.7.0 → rateslib-2.7.1}/COMMERCIAL_LICENCE_ADDENDUM1 +0 -0
  63. {rateslib-2.7.0 → rateslib-2.7.1}/LICENCE +0 -0
  64. {rateslib-2.7.0 → rateslib-2.7.1}/README.md +0 -0
  65. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/__init__.py +0 -0
  66. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/curves/__init__.py +0 -0
  67. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/curves/_parsers.py +0 -0
  68. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/curves/academic/__init__.py +0 -0
  69. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/curves/academic/ns.py +0 -0
  70. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/curves/academic/nss.py +0 -0
  71. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/curves/academic/sw.py +0 -0
  72. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/curves/curves.py +0 -0
  73. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/curves/interpolation.py +0 -0
  74. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/curves/rs.py +0 -0
  75. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/curves/utils.py +0 -0
  76. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/aud_rfr.csv +0 -0
  77. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/cad_rfr.csv +0 -0
  78. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/corra.csv +0 -0
  79. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/estr.csv +0 -0
  80. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/eur_rfr.csv +0 -0
  81. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/gbp_rfr.csv +0 -0
  82. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/inr_rfr.csv +0 -0
  83. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/jpy_rfr.csv +0 -0
  84. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/nok_rfr.csv +0 -0
  85. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/nowa.csv +0 -0
  86. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/sek_rfr.csv +0 -0
  87. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/sofr.csv +0 -0
  88. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/sonia.csv +0 -0
  89. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/swestr.csv +0 -0
  90. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/historical/usd_rfr.csv +0 -0
  91. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/data/loader.py +0 -0
  92. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/default.py +0 -0
  93. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/dual/__init__.py +0 -0
  94. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/dual/ift.py +0 -0
  95. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/dual/newton.py +0 -0
  96. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/dual/quadratic.py +0 -0
  97. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/dual/variable.py +0 -0
  98. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/enums/generics.py +0 -0
  99. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/enums/parameters.py +0 -0
  100. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/errors.py +0 -0
  101. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/fx/__init__.py +0 -0
  102. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/fx/fx_forwards.py +0 -0
  103. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/fx/fx_rates.py +0 -0
  104. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/__init__.py +0 -0
  105. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/__init__.py +0 -0
  106. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/bill.py +0 -0
  107. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/bond_future.py +0 -0
  108. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/conventions/accrued.py +0 -0
  109. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/conventions/discounting.py +0 -0
  110. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/fixed_rate_bond.py +0 -0
  111. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/float_rate_note.py +0 -0
  112. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/index_fixed_rate_bond.py +0 -0
  113. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/protocols/__init__.py +0 -0
  114. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/protocols/cashflows.py +0 -0
  115. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/protocols/duration.py +0 -0
  116. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/protocols/oaspread.py +0 -0
  117. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/protocols/repo.py +0 -0
  118. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/bonds/protocols/ytm.py +0 -0
  119. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/cds.py +0 -0
  120. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/fee.py +0 -0
  121. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/fly.py +0 -0
  122. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/fra.py +0 -0
  123. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/fx_forward.py +0 -0
  124. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/fx_options/__init__.py +0 -0
  125. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/fx_options/brokerfly.py +0 -0
  126. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/fx_options/call_put.py +0 -0
  127. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/fx_options/risk_reversal.py +0 -0
  128. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/fx_options/straddle.py +0 -0
  129. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/fx_options/strangle.py +0 -0
  130. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/fx_options/vol_value.py +0 -0
  131. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/fx_swap.py +0 -0
  132. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/iirs.py +0 -0
  133. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/ir_options/__init__.py +0 -0
  134. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/ir_options/call_put.py +0 -0
  135. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/ir_options/risk_reversal.py +0 -0
  136. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/ir_options/straddle.py +0 -0
  137. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/ir_options/strangle.py +0 -0
  138. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/ir_options/vol_value.py +0 -0
  139. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/irs.py +0 -0
  140. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/loan.py +0 -0
  141. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/ndf.py +0 -0
  142. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/ndxcs.py +0 -0
  143. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/portfolio.py +0 -0
  144. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/protocols/__init__.py +0 -0
  145. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/protocols/analytic_delta.py +0 -0
  146. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/protocols/analytic_fixings.py +0 -0
  147. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/protocols/cashflows.py +0 -0
  148. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/protocols/fixings.py +0 -0
  149. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/protocols/kwargs.py +0 -0
  150. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/protocols/npv.py +0 -0
  151. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/protocols/pricing.py +0 -0
  152. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/protocols/rate.py +0 -0
  153. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/protocols/sensitivities.py +0 -0
  154. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/protocols/utils.py +0 -0
  155. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/sbs.py +0 -0
  156. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/spread.py +0 -0
  157. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/value.py +0 -0
  158. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/xcs.py +0 -0
  159. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/yoyis.py +0 -0
  160. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/zcis.py +0 -0
  161. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/instruments/zcs.py +0 -0
  162. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/legs/__init__.py +0 -0
  163. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/legs/amortization.py +0 -0
  164. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/legs/credit.py +0 -0
  165. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/legs/custom.py +0 -0
  166. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/legs/fixed.py +0 -0
  167. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/legs/float.py +0 -0
  168. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/legs/protocols/__init__.py +0 -0
  169. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/legs/protocols/analytic_delta.py +0 -0
  170. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/legs/protocols/analytic_fixings.py +0 -0
  171. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/legs/protocols/cashflows.py +0 -0
  172. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/legs/protocols/fixings.py +0 -0
  173. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/legs/protocols/npv.py +0 -0
  174. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/local_types.py +0 -0
  175. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/mutability/__init__.py +0 -0
  176. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/__init__.py +0 -0
  177. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/cashflow.py +0 -0
  178. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/credit.py +0 -0
  179. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/fixed_period.py +0 -0
  180. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/float_period.py +0 -0
  181. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/float_rate.py +0 -0
  182. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/fx_volatility.py +0 -0
  183. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/ir_volatility.py +0 -0
  184. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/parameters/__init__.py +0 -0
  185. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/parameters/credit.py +0 -0
  186. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/parameters/fx_volatility.py +0 -0
  187. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/parameters/index.py +0 -0
  188. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/parameters/ir_volatility.py +0 -0
  189. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/parameters/mtm.py +0 -0
  190. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/parameters/period.py +0 -0
  191. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/parameters/rate.py +0 -0
  192. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/parameters/settlement.py +0 -0
  193. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/protocols/__init__.py +0 -0
  194. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/protocols/analytic_delta.py +0 -0
  195. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/protocols/analytic_fixings.py +0 -0
  196. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/protocols/cashflows.py +0 -0
  197. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/protocols/fixings.py +0 -0
  198. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/protocols/npv.py +0 -0
  199. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/periods/utils.py +0 -0
  200. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/py.typed +0 -0
  201. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/rs.pyi +0 -0
  202. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/scheduling/__init__.py +0 -0
  203. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/scheduling/calendars.py +0 -0
  204. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/scheduling/convention.py +0 -0
  205. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/scheduling/dcfs.py +0 -0
  206. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/scheduling/frequency.py +0 -0
  207. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/scheduling/imm.py +0 -0
  208. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/scheduling/rollday.py +0 -0
  209. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/serialization/__init__.py +0 -0
  210. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/serialization/json.py +0 -0
  211. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/serialization/utils.py +0 -0
  212. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/solver.py +0 -0
  213. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/splines/__init__.py +0 -0
  214. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/splines/evaluate.py +0 -0
  215. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/utils/calendars.py +0 -0
  216. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/volatility/fx/__init__.py +0 -0
  217. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/volatility/fx/base.py +0 -0
  218. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/volatility/fx/delta_vol.py +0 -0
  219. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/volatility/fx/sabr.py +0 -0
  220. {rateslib-2.7.0 → rateslib-2.7.1}/python/rateslib/volatility/fx/utils.py +0 -0
  221. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/curves/test_curvesrs.py +0 -0
  222. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/curves/test_ns.py +0 -0
  223. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/curves/test_nss.py +0 -0
  224. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/curves/test_sw.py +0 -0
  225. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/legs/test_analytic_delta.py +0 -0
  226. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/legs/test_init.py +0 -0
  227. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/legs/test_leg_fixings.py +0 -0
  228. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/legs/test_legs_legacy.py +0 -0
  229. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/periods/test_fixings_exposure.py +0 -0
  230. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/periods/test_fixings_load.py +0 -0
  231. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/periods/test_float_rate.py +0 -0
  232. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/periods/test_periods_init.py +0 -0
  233. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/periods/test_static_npv.py +0 -0
  234. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/scheduling/test_calendars.py +0 -0
  235. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/scheduling/test_calendarsrs.py +0 -0
  236. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/scheduling/test_frequency.py +0 -0
  237. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/scheduling/test_imm.py +0 -0
  238. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/scheduling/test_schedule.py +0 -0
  239. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/scheduling/test_schedulers.py +0 -0
  240. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/serialization/test_json.py +0 -0
  241. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/serialization/test_pickle.py +0 -0
  242. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/serialization/test_repr.py +0 -0
  243. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/test_dual.py +0 -0
  244. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/test_dualrs.py +0 -0
  245. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/test_enums.py +0 -0
  246. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/test_fixings.py +0 -0
  247. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/test_fx.py +0 -0
  248. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/test_fx_volatility.py +0 -0
  249. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/test_fxrs.py +0 -0
  250. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/test_serialization.py +0 -0
  251. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/test_splines.py +0 -0
  252. {rateslib-2.7.0 → rateslib-2.7.1}/python/tests/test_to_fix.py +0 -0
  253. {rateslib-2.7.0 → rateslib-2.7.1}/rust/_README.txt +0 -0
  254. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/curve.rs +0 -0
  255. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/curve_py.rs +0 -0
  256. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/interpolation/interpolation_py.rs +0 -0
  257. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/interpolation/intp_flat_backward.rs +0 -0
  258. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/interpolation/intp_flat_forward.rs +0 -0
  259. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/interpolation/intp_linear.rs +0 -0
  260. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/interpolation/intp_linear_zero_rate.rs +0 -0
  261. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/interpolation/intp_log_cubic.rs +0 -0
  262. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/interpolation/intp_log_linear.rs +0 -0
  263. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/interpolation/intp_null.rs +0 -0
  264. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/interpolation/mod.rs +0 -0
  265. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/interpolation/utils.rs +0 -0
  266. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/mod.rs +0 -0
  267. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/nodes.rs +0 -0
  268. {rateslib-2.7.0 → rateslib-2.7.1}/rust/curves/serde.rs +0 -0
  269. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/docs.rs +0 -0
  270. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual.rs +0 -0
  271. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/add.rs +0 -0
  272. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/convert.rs +0 -0
  273. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/div.rs +0 -0
  274. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/eq.rs +0 -0
  275. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/from.rs +0 -0
  276. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/math_funcs.rs +0 -0
  277. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/mod.rs +0 -0
  278. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/mul.rs +0 -0
  279. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/neg.rs +0 -0
  280. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/num.rs +0 -0
  281. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/numeric_ops.rs +0 -0
  282. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/one.rs +0 -0
  283. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/ord.rs +0 -0
  284. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/pow.rs +0 -0
  285. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/rem.rs +0 -0
  286. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/signed.rs +0 -0
  287. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/sub.rs +0 -0
  288. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/sum.rs +0 -0
  289. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_ops/zero.rs +0 -0
  290. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/dual_py.rs +0 -0
  291. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/enums.rs +0 -0
  292. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/linalg/linalg_dual.rs +0 -0
  293. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/linalg/linalg_f64.rs +0 -0
  294. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/linalg/mod.rs +0 -0
  295. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/linalg_py.rs +0 -0
  296. {rateslib-2.7.0 → rateslib-2.7.1}/rust/dual/mod.rs +0 -0
  297. {rateslib-2.7.0 → rateslib-2.7.1}/rust/enums/mod.rs +0 -0
  298. {rateslib-2.7.0 → rateslib-2.7.1}/rust/enums/parameters.rs +0 -0
  299. {rateslib-2.7.0 → rateslib-2.7.1}/rust/enums/py/float_fixing_method.rs +0 -0
  300. {rateslib-2.7.0 → rateslib-2.7.1}/rust/enums/py/ir_option_metric.rs +0 -0
  301. {rateslib-2.7.0 → rateslib-2.7.1}/rust/enums/py/leg_index_base.rs +0 -0
  302. {rateslib-2.7.0 → rateslib-2.7.1}/rust/enums/py/mod.rs +0 -0
  303. {rateslib-2.7.0 → rateslib-2.7.1}/rust/fx/mod.rs +0 -0
  304. {rateslib-2.7.0 → rateslib-2.7.1}/rust/fx/rates/ccy.rs +0 -0
  305. {rateslib-2.7.0 → rateslib-2.7.1}/rust/fx/rates/fxpair.rs +0 -0
  306. {rateslib-2.7.0 → rateslib-2.7.1}/rust/fx/rates/fxrate.rs +0 -0
  307. {rateslib-2.7.0 → rateslib-2.7.1}/rust/fx/rates/mod.rs +0 -0
  308. {rateslib-2.7.0 → rateslib-2.7.1}/rust/fx/rates_py.rs +0 -0
  309. {rateslib-2.7.0 → rateslib-2.7.1}/rust/fx_volatility/mod.rs +0 -0
  310. {rateslib-2.7.0 → rateslib-2.7.1}/rust/fx_volatility/sabr_funcs.rs +0 -0
  311. {rateslib-2.7.0 → rateslib-2.7.1}/rust/json/json_py.rs +0 -0
  312. {rateslib-2.7.0 → rateslib-2.7.1}/rust/json/mod.rs +0 -0
  313. {rateslib-2.7.0 → rateslib-2.7.1}/rust/lib.rs +0 -0
  314. {rateslib-2.7.0 → rateslib-2.7.1}/rust/main.rs +0 -0
  315. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/adjuster.rs +0 -0
  316. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/cal.rs +0 -0
  317. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/calendar.rs +0 -0
  318. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/dateroll.rs +0 -0
  319. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/manager.rs +0 -0
  320. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/mod.rs +0 -0
  321. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/all.rs +0 -0
  322. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/bjs.rs +0 -0
  323. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/bjs_script.py +0 -0
  324. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/bus.rs +0 -0
  325. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/fed.rs +0 -0
  326. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/fed_script.py +0 -0
  327. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/ldn.rs +0 -0
  328. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/ldn_script.py +0 -0
  329. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/mex.rs +0 -0
  330. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/mex_script.py +0 -0
  331. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/mod.rs +0 -0
  332. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/mum.rs +0 -0
  333. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/mum_script.py +0 -0
  334. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/nsw.rs +0 -0
  335. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/nsw_script.py +0 -0
  336. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/nyc.rs +0 -0
  337. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/nyc_script.py +0 -0
  338. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/osl.rs +0 -0
  339. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/osl_script.py +0 -0
  340. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/stk.rs +0 -0
  341. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/stk_script.py +0 -0
  342. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/syd.rs +0 -0
  343. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/syd_script.py +0 -0
  344. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/tgt.rs +0 -0
  345. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/tgt_script.py +0 -0
  346. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/tro.rs +0 -0
  347. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/tro_script.py +0 -0
  348. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/tyo.rs +0 -0
  349. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/tyo_script.py +0 -0
  350. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/wlg.rs +0 -0
  351. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/wlg_script.py +0 -0
  352. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/zur.rs +0 -0
  353. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named/zur_script.py +0 -0
  354. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/named_cal.rs +0 -0
  355. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/calendars/union_cal.rs +0 -0
  356. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/convention.rs +0 -0
  357. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/frequency/frequency.rs +0 -0
  358. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/frequency/imm.rs +0 -0
  359. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/frequency/mod.rs +0 -0
  360. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/frequency/rollday.rs +0 -0
  361. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/mod.rs +0 -0
  362. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/py/adjuster.rs +0 -0
  363. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/py/calendar.rs +0 -0
  364. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/py/convention.rs +0 -0
  365. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/py/frequency.rs +0 -0
  366. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/py/imm.rs +0 -0
  367. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/py/mod.rs +0 -0
  368. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/py/rollday.rs +0 -0
  369. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/py/schedule.rs +0 -0
  370. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/schedule.rs +0 -0
  371. {rateslib-2.7.0 → rateslib-2.7.1}/rust/scheduling/serde.rs +0 -0
  372. {rateslib-2.7.0 → rateslib-2.7.1}/rust/splines/mod.rs +0 -0
  373. {rateslib-2.7.0 → rateslib-2.7.1}/rust/splines/spline.rs +0 -0
  374. {rateslib-2.7.0 → rateslib-2.7.1}/rust/splines/spline_py.rs +0 -0
  375. {rateslib-2.7.0 → rateslib-2.7.1}/rust/tests/dual1.rs +0 -0
  376. {rateslib-2.7.0 → rateslib-2.7.1}/rust/tests/mod.rs +0 -0
  377. {rateslib-2.7.0 → rateslib-2.7.1}/rust/tests/splines/mod.rs +0 -0
@@ -523,7 +523,7 @@ dependencies = [
523
523
 
524
524
  [[package]]
525
525
  name = "rateslib"
526
- version = "2.7.0"
526
+ version = "2.7.1"
527
527
  dependencies = [
528
528
  "auto_ops",
529
529
  "bincode",
@@ -1,17 +1,13 @@
1
1
  [package]
2
2
  name = "rateslib"
3
- version = "2.7.0"
3
+ version = "2.7.1"
4
4
  edition = "2021"
5
5
  exclude = [
6
6
  ".github/*",
7
7
  "benches/*",
8
8
  "benchmarks/*",
9
9
  "notebooks/*",
10
- ".readthedocs.yaml",
11
10
  "docs/*",
12
- "PACKAGING.md",
13
- "PIP_FREEZE.txt",
14
- "requirements-minimum.txt",
15
11
  "robots.txt",
16
12
  ]
17
13
  readme = "README.md"
@@ -1,27 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rateslib
3
- Version: 2.7.0
3
+ Version: 2.7.1
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
7
7
  Requires-Dist: numpy>=1.21.5,<3.0
8
8
  Requires-Dist: matplotlib>=3.5.1,<4.0
9
9
  Requires-Dist: pandas>=1.4.1,<4.0
10
- Requires-Dist: pandas>=3.0,<4.0 ; extra == 'dev'
11
- Requires-Dist: pytest>=9.0,<10.0 ; extra == 'dev'
12
- Requires-Dist: coverage>=7.6.1,<8.0 ; extra == 'dev'
13
- Requires-Dist: ruff>=0.6.3,<1.0 ; extra == 'dev'
14
- Requires-Dist: mypy>=1.13,<1.20 ; extra == 'dev'
15
- Requires-Dist: pandas-stubs>2.0,<4.0 ; extra == 'dev'
16
- Requires-Dist: sphinx>=9.0,<10.0 ; extra == 'dev'
17
- Requires-Dist: sphinx-automodapi>=0.16.0,<1.0 ; extra == 'dev'
18
- Requires-Dist: sphinxcontrib-googleanalytics>=0.4,<1.0 ; extra == 'dev'
19
- Requires-Dist: sphinx-tabs>=3.4,<4.0 ; extra == 'dev'
20
- Requires-Dist: pydata-sphinx-theme>=0.15.4,<1.0 ; extra == 'dev'
21
- Requires-Dist: nbsphinx>=0.9.5,<1.0 ; extra == 'dev'
22
- Requires-Dist: jupyterlab>=4.0,<5.0 ; extra == 'dev'
23
- Requires-Dist: pickleshare>=0.7.5,<1.0 ; extra == 'dev'
24
- Provides-Extra: dev
25
10
  License-File: LICENCE
26
11
  License-File: COMMERCIAL_LICENCE
27
12
  License-File: COMMERCIAL_LICENCE_ADDENDUM1
@@ -15,7 +15,7 @@ features = ["pyo3/extension-module"]
15
15
 
16
16
  [project]
17
17
  name = "rateslib"
18
- version = "2.7.0"
18
+ version = "2.7.1"
19
19
  description = "A fixed income library for trading interest rates"
20
20
  readme = "README.md"
21
21
  authors = [{ name = "J H M Darbyshire"}]
@@ -33,23 +33,29 @@ classifiers = [
33
33
  "Programming Language :: Python :: Implementation :: PyPy",
34
34
  ]
35
35
 
36
- [project.optional-dependencies]
37
- dev = [
38
- # testing
39
- "pandas>=3.0,<4.0",
36
+ [dependency-groups]
37
+ test = [
38
+ # "pandas>=3.0,<4.0",
40
39
  "pytest>=9.0,<10.0",
40
+ "pytest-env>=1.0,<2.0",
41
41
  "coverage>=7.6.1,<8.0",
42
- # style/linting
42
+ ]
43
+ lint = [
43
44
  "ruff>=0.6.3,<1.0",
45
+ ]
46
+ typing = [
44
47
  "mypy>=1.13,<1.20",
45
48
  "pandas-stubs>2.0,<4.0",
46
- # doc building
47
- "sphinx>=9.0,<10.0",
49
+ ]
50
+ docs = [
51
+ "sphinx>=9.0,<10.0; python_version >= '3.11'",
48
52
  "sphinx-automodapi>=0.16.0,<1.0",
49
53
  "sphinxcontrib-googleanalytics>=0.4,<1.0",
50
54
  "sphinx-tabs>=3.4,<4.0",
51
55
  "pydata-sphinx-theme>=0.15.4,<1.0",
52
56
  "nbsphinx>=0.9.5,<1.0",
57
+ ]
58
+ gui = [
53
59
  "jupyterlab>=4.0,<5.0",
54
60
  "pickleshare>=0.7.5,<1.0",
55
61
  ]
@@ -57,7 +63,9 @@ dev = [
57
63
  [tool.pytest.ini_options]
58
64
  # pythonpath = [".", "python/rateslib"]
59
65
  minversion = "8.0"
60
- addopts = "--ignore-glob=*_ignore.py" # use -s to show print capture, use -q for quiet, use -v for verbose
66
+ addopts = [
67
+ "--ignore-glob=*_ignore.py",
68
+ ] # use -s to show print capture, use -q for quiet, use -v for verbose
61
69
  testpaths = [
62
70
  "python/tests",
63
71
  ]
@@ -66,6 +74,9 @@ filterwarnings = [
66
74
  "ignore::PendingDeprecationWarning"
67
75
  ]
68
76
 
77
+ [tool.pytest_env]
78
+ MPLBACKEND = "Agg"
79
+
69
80
  [tool.setuptools]
70
81
  packages = ["rateslib"]
71
82
 
@@ -737,7 +737,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
737
737
  "convention": "actacticma",
738
738
  "payment_lag_exchange": 0,
739
739
  "settle": 1,
740
- "ex_div": 1,
740
+ "ex_div": "-1b",
741
741
  "calc_mode": "us_gb",
742
742
  },
743
743
  "us_gbi": {
@@ -753,7 +753,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
753
753
  "index_method": "daily",
754
754
  "index_lag": 3,
755
755
  "settle": 1,
756
- "ex_div": 1,
756
+ "ex_div": "-1b",
757
757
  "calc_mode": "us_gb",
758
758
  },
759
759
  "us_corp": {
@@ -767,7 +767,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
767
767
  "convention": "30u360",
768
768
  "payment_lag_exchange": 0,
769
769
  "settle": 1,
770
- "ex_div": 1,
770
+ "ex_div": "-1b",
771
771
  "calc_mode": "us_corp",
772
772
  },
773
773
  "us_muni": {
@@ -781,7 +781,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
781
781
  "convention": "30u360",
782
782
  "payment_lag_exchange": 0,
783
783
  "settle": 1,
784
- "ex_div": 1,
784
+ "ex_div": "-1b",
785
785
  "calc_mode": "us_muni",
786
786
  },
787
787
  "us_gb_tsy": {
@@ -795,7 +795,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
795
795
  "convention": "actacticma",
796
796
  "payment_lag_exchange": 0,
797
797
  "settle": 1,
798
- "ex_div": 1,
798
+ "ex_div": "-1b",
799
799
  "calc_mode": "us_gb_tsy",
800
800
  },
801
801
  "uk_gb": {
@@ -809,9 +809,23 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
809
809
  "convention": "actacticma",
810
810
  "payment_lag_exchange": 0,
811
811
  "settle": 1,
812
- "ex_div": 7,
812
+ "ex_div": "-7b",
813
813
  "calc_mode": "uk_gb",
814
814
  },
815
+ "au_gb": {
816
+ "frequency": "s",
817
+ "stub": "longfront",
818
+ "eom": False,
819
+ "modifier": "none",
820
+ "calendar": "syd",
821
+ "payment_lag": 0,
822
+ "currency": "aud",
823
+ "convention": "actacticma",
824
+ "payment_lag_exchange": 0,
825
+ "settle": 2,
826
+ "ex_div": "-8d",
827
+ "calc_mode": "au_gb",
828
+ },
815
829
  "nz_gb": {
816
830
  "frequency": "s",
817
831
  "stub": "shortfront",
@@ -823,9 +837,23 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
823
837
  "convention": "actacticma",
824
838
  "payment_lag_exchange": 0,
825
839
  "settle": 1,
826
- "ex_div": 8,
840
+ "ex_div": "-8b",
827
841
  "calc_mode": "nz_gb",
828
842
  },
843
+ "cn_gb": {
844
+ "frequency": "s",
845
+ "stub": "shortfront",
846
+ "eom": False,
847
+ "modifier": "none",
848
+ "calendar": "bjs",
849
+ "payment_lag": 0,
850
+ "currency": "cny",
851
+ "convention": "actacticma",
852
+ "payment_lag_exchange": 0,
853
+ "settle": 1,
854
+ "ex_div": "-1b",
855
+ "calc_mode": "cn_gb",
856
+ },
829
857
  "de_gb": {
830
858
  "frequency": "a",
831
859
  "stub": "longfront",
@@ -837,7 +865,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
837
865
  "convention": "actacticma",
838
866
  "payment_lag_exchange": 0,
839
867
  "settle": 2,
840
- "ex_div": 1,
868
+ "ex_div": "-1b",
841
869
  "calc_mode": "de_gb",
842
870
  },
843
871
  "fr_gb": {
@@ -851,7 +879,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
851
879
  "convention": "actacticma",
852
880
  "payment_lag_exchange": 0,
853
881
  "settle": 2,
854
- "ex_div": 1,
882
+ "ex_div": "-1b",
855
883
  "calc_mode": "fr_gb",
856
884
  },
857
885
  "nl_gb": {
@@ -865,7 +893,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
865
893
  "convention": "actacticma",
866
894
  "payment_lag_exchange": 0,
867
895
  "settle": 2,
868
- "ex_div": 1,
896
+ "ex_div": "-1b",
869
897
  "calc_mode": "nl_gb",
870
898
  },
871
899
  "it_gb": {
@@ -879,7 +907,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
879
907
  "convention": "actacticma",
880
908
  "payment_lag_exchange": 0,
881
909
  "settle": 2,
882
- "ex_div": 1,
910
+ "ex_div": "-1b",
883
911
  "calc_mode": "it_gb",
884
912
  },
885
913
  "ch_gb": {
@@ -893,7 +921,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
893
921
  "convention": "30e360",
894
922
  "payment_lag_exchange": 0,
895
923
  "settle": 1,
896
- "ex_div": 1,
924
+ "ex_div": "-1b",
897
925
  "calc_mode": "ch_gb",
898
926
  },
899
927
  "se_gb": {
@@ -907,7 +935,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
907
935
  "convention": "actacticma",
908
936
  "payment_lag_exchange": 0,
909
937
  "settle": 2,
910
- "ex_div": 5,
938
+ "ex_div": "-5b",
911
939
  "calc_mode": "se_gb",
912
940
  },
913
941
  "no_gb": {
@@ -921,7 +949,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
921
949
  "convention": "actacticma_stub365f",
922
950
  "payment_lag_exchange": 0,
923
951
  "settle": 1,
924
- "ex_div": 1,
952
+ "ex_div": "-1b",
925
953
  "calc_mode": "no_gb",
926
954
  },
927
955
  "ca_gb": {
@@ -935,7 +963,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
935
963
  "convention": "actacticma_stub365f",
936
964
  "payment_lag_exchange": 0,
937
965
  "settle": 1,
938
- "ex_div": 1,
966
+ "ex_div": "-1b",
939
967
  "calc_mode": "ca_gb",
940
968
  },
941
969
  "ca_gbi": {
@@ -951,7 +979,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
951
979
  "index_method": "daily",
952
980
  "index_lag": 3,
953
981
  "settle": 1,
954
- "ex_div": 1,
982
+ "ex_div": "-1b",
955
983
  "calc_mode": "ca_gb",
956
984
  },
957
985
  "us_gbb": {
@@ -963,7 +991,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
963
991
  "convention": "act360",
964
992
  "payment_lag_exchange": 0,
965
993
  "settle": 1,
966
- "ex_div": 0,
994
+ "ex_div": "0b",
967
995
  "calc_mode": "us_gbb",
968
996
  },
969
997
  "se_gbb": {
@@ -975,7 +1003,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
975
1003
  "convention": "act360",
976
1004
  "payment_lag_exchange": 0,
977
1005
  "settle": 2,
978
- "ex_div": 0,
1006
+ "ex_div": "0b",
979
1007
  "calc_mode": "se_gbb",
980
1008
  },
981
1009
  "no_gbb": {
@@ -987,7 +1015,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
987
1015
  "convention": "act365f",
988
1016
  "payment_lag_exchange": 0,
989
1017
  "settle": 2,
990
- "ex_div": 0,
1018
+ "ex_div": "0b",
991
1019
  "calc_mode": "no_gbb",
992
1020
  },
993
1021
  "uk_gbb": {
@@ -999,7 +1027,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
999
1027
  "convention": "act365f",
1000
1028
  "payment_lag_exchange": 0,
1001
1029
  "settle": 1,
1002
- "ex_div": 0,
1030
+ "ex_div": "0b",
1003
1031
  "calc_mode": "uk_gbb",
1004
1032
  },
1005
1033
  "uk_gbi": {
@@ -1015,7 +1043,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
1015
1043
  "index_method": "daily",
1016
1044
  "index_lag": 3,
1017
1045
  "settle": 1,
1018
- "ex_div": 7,
1046
+ "ex_div": "-7b",
1019
1047
  "calc_mode": "uk_gb",
1020
1048
  },
1021
1049
  "sek_fra3": {
@@ -1101,7 +1129,7 @@ INSTRUMENT_SPECS: dict[str, dict[str, Any]] = {
1101
1129
  "spread_compound_method": "none_simple",
1102
1130
  "fixing_method": "rfr_observation_shift(5)",
1103
1131
  "settle": 1,
1104
- "ex_div": 1,
1132
+ "ex_div": "1b",
1105
1133
  },
1106
1134
  "usd_stir": {
1107
1135
  "frequency": "q",
@@ -1,7 +1,7 @@
1
1
  kind,meta,meta,meta,meta,meta,meta,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,base_derivative,fixed,float,float,float,float,fixed,float,float,float,float,float,exchange,exchange,exchange,exchange,exchange,exchange,exchange,exchange,xcs,xcs,xcs,index,index,index,index,index,index,index,index,bond,bond,bond,stir,cds,bondfuture,fx,fx
2
2
  leg,meta,meta,meta,meta,meta,meta,leg1,leg1,leg1,leg1,leg1,leg1,leg1,leg1,leg1,leg1,leg1,leg1,leg1,leg1,leg1,leg2,leg2,leg2,leg2,leg2,leg2,leg2,leg2,leg2,leg2,leg2,leg2,leg2,leg2,leg2,leg1,leg1,leg1,leg1,leg1,leg2,leg2,leg2,leg2,leg2,leg2,leg1,leg1,leg2,leg2,leg1,leg2,leg1,leg2,leg1,leg2,leg2,leg1,leg1,leg1,leg1,leg2,leg2,leg2,leg2,leg1,leg1,leg1,leg1,leg1,leg1,leg1,leg1
3
3
  kwarg,currency,instrument,sub_type,bloomberg_ticker,eval,description,effective,termination,frequency,stub,front_stub,back_stub,roll,eom,modifier,calendar,payment_lag,notional,currency,amortization,convention,effective,termination,frequency,stub,front_stub,back_stub,roll,eom,modifier,calendar,payment_lag,notional,currency,amortization,convention,fixed_rate,float_spread,spread_compound_method,rate_fixings,fixing_method,fixed_rate,float_spread,spread_compound_method,rate_fixings,fixing_method,fixing_series,initial_exchange,final_exchange,initial_exchange,final_exchange,fx_fixings,fx_fixings,payment_lag_exchange,payment_lag_exchange,fixed,fixed,mtm,index_method,index_fixings,index_base,index_lag,index_method,index_fixings,index_base,index_lag,settle,ex_div,calc_mode,nominal,premium_accrued,coupon,pair,delivery_lag
4
- dtype,str,str,str,str,str,str,str,str,str,str,str,str,str,boolean,str,str,Int64,float,str,float,str,str,str,str,str,str,str,str,boolean,str,str,Int64,float,str,float,str,float,float,str,str,str,float,float,str,str,str,str,boolean,boolean,boolean,boolean,str,str,Int64,Int64,boolean,boolean,boolean,str,str,float,Int64,str,str,float,Int64,Int64,Int64,str,float,boolean,float,str,Int64
4
+ dtype,str,str,str,str,str,str,str,str,str,str,str,str,str,boolean,str,str,Int64,float,str,float,str,str,str,str,str,str,str,str,boolean,str,str,Int64,float,str,float,str,float,float,str,str,str,float,float,str,str,str,str,boolean,boolean,boolean,boolean,str,str,Int64,Int64,boolean,boolean,boolean,str,str,float,Int64,str,str,float,Int64,Int64,str,str,float,boolean,float,str,Int64
5
5
  test,TES,none,none,none,none,A test column,,,m,longfront,,,,FALSE,p,"nyc,tgt,ldn",4,,tes,,yearsmonths,,,m,longback,,,1,FALSE,mp,"nyc,tgt,ldn",3,,,,one,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
6
6
  eurusd_call,eurusd,fx_call,,,2b,Currency call option,,,,,,,,,mf,tgt|fed,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,eurusd,2
7
7
  us_ig_cds,usd,cds,,,,,,,q,shortfront,,,20,FALSE,fex,nyc,0,,usd,,act360,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
@@ -51,34 +51,36 @@ aud_sbs36,aud,sbs,,,2b,,,,q,shortfront,,,,FALSE,mf,syd,0,,aud,,act365f,,,s,,,,,,
51
51
  aud_sbs31,aud,sbs,,,2b,,,,q,shortfront,,,,FALSE,mf,syd,0,,aud,,act365f,,,m,,,,,,,,,,,,,,,none_simple,,ibor(0),,,none_simple,,ibor(0),,,,,,,,,,,,,,,,,,,,,,,,,,,,
52
52
  nzd_sbs36,nzd,sbs,,,2b,,,,q,shortfront,,,,FALSE,mf,wlg,0,,nzd,,act365f,,,s,,,,,,,,,,,,,,,none_simple,,ibor(0),,,none_simple,,ibor(0),,,,,,,,,,,,,,,,,,,,,,,,,,,,
53
53
  nzd_sbs31,nzd,sbs,,,2b,,,,q,shortfront,,,,FALSE,mf,wlg,0,,nzd,,act365f,,,m,,,,,,,,,,,,,,,none_simple,,ibor(0),,,none_simple,,ibor(0),,,,,,,,,,,,,,,,,,,,,,,,,,,,
54
- us_gb,usd,frb,,,,,,,s,shortfront,,,,TRUE,none,nyc,0,,usd,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,1,us_gb,,,,,
55
- us_gbi,usd,ifrb,,,,,,,s,shortfront,,,,TRUE,none,nyc,0,,usd,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,daily,,,3,,,,,1,1,us_gb,,,,,
56
- us_corp,usd,frb,,,,,,,s,shortfront,,,,TRUE,none,nyc,0,,usd,,30u360,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,1,us_corp,,,,,
57
- us_muni,usd,frb,,,,,,,s,shortfront,,,,TRUE,none,nyc,0,,usd,,30u360,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,1,us_muni,,,,,
58
- us_gb_tsy,usd,frb,,,,,,,s,shortfront,,,,TRUE,none,nyc,0,,usd,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,1,us_gb_tsy,,,,,
59
- uk_gb,gbp,frb,,,,,,,s,longfront,,,,FALSE,none,ldn,0,,gbp,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,7,uk_gb,,,,,
60
- nz_gb,nzd,frb,,,,,,,s,shortfront,,,,FALSE,none,wlg,0,,nzd,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,8,nz_gb,,,,,
61
- de_gb,eur,frb,,,,,,,a,longfront,,,,FALSE,none,tgt,0,,eur,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,1,de_gb,,,,,
62
- fr_gb,eur,frb,,,,,,,a,shortfront,,,,FALSE,none,tgt,0,,eur,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,1,fr_gb,,,,,
63
- nl_gb,eur,frb,,,,,,,a,shortfront,,,,FALSE,none,tgt,0,,eur,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,1,nl_gb,,,,,
64
- it_gb,eur,frb,,,,,,,s,shortfront,,,,FALSE,none,tgt,0,,eur,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,1,it_gb,,,,,
65
- ch_gb,chf,frb,,,,,,,a,shortfront,,,,FALSE,none,zur,0,,chf,,30e360,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,1,ch_gb,,,,,
66
- se_gb,sek,frb,,,,,,,a,shortfront,,,,FALSE,none,stk,0,,sek,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,5,se_gb,,,,,
67
- no_gb,nok,frb,,,,,,,a,shortfront,,,,FALSE,none,osl,0,,nok,,actacticma_stub365f,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,1,no_gb,,,,,
68
- ca_gb,cad,frb,,,,,,,s,shortfront,,,,FALSE,none,tro,0,,cad,,actacticma_stub365f,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,1,ca_gb,,,,,
69
- ca_gbi,cad,ifrb,,,,,,,s,shortfront,,,,FALSE,none,tro,0,,cad,,actacticma_stub365f,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,daily,,,3,,,,,1,1,ca_gb,,,,,
70
- us_gbb,usd,bill,,,,,,,,,,,,TRUE,none,nyc,0,,usd,,act360,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,0,us_gbb,,,,,
71
- se_gbb,sek,bill,,,,,,,,,,,,FALSE,none,stk,0,,sek,,act360,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,0,se_gbb,,,,,
72
- no_gbb,nok,bill,,,,,,,,,,,,FALSE,none,osl,0,,nok,,act365f,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,0,no_gbb,,,,,
73
- uk_gbb,gbp,bill,,,,,,,,,,,,TRUE,none,ldn,0,,gbp,,act365f,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,0,uk_gbb,,,,,
74
- uk_gbi,gbp,ifrb,,,,,,,s,shortfront,,,,FALSE,none,ldn,0,,gbp,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,daily,,,3,,,,,1,7,uk_gb,,,,,
54
+ us_gb,usd,frb,,,,,,,s,shortfront,,,,TRUE,none,nyc,0,,usd,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,-1b,us_gb,,,,,
55
+ us_gbi,usd,ifrb,,,,,,,s,shortfront,,,,TRUE,none,nyc,0,,usd,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,daily,,,3,,,,,1,-1b,us_gb,,,,,
56
+ us_corp,usd,frb,,,,,,,s,shortfront,,,,TRUE,none,nyc,0,,usd,,30u360,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,-1b,us_corp,,,,,
57
+ us_muni,usd,frb,,,,,,,s,shortfront,,,,TRUE,none,nyc,0,,usd,,30u360,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,-1b,us_muni,,,,,
58
+ us_gb_tsy,usd,frb,,,,,,,s,shortfront,,,,TRUE,none,nyc,0,,usd,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,-1b,us_gb_tsy,,,,,
59
+ uk_gb,gbp,frb,,,,,,,s,longfront,,,,FALSE,none,ldn,0,,gbp,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,-7b,uk_gb,,,,,
60
+ au_gb,aud,frb,,,,,,,s,longfront,,,,FALSE,none,syd,0,,aud,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,-8d,au_gb,,,,,
61
+ nz_gb,nzd,frb,,,,,,,s,shortfront,,,,FALSE,none,wlg,0,,nzd,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,-8b,nz_gb,,,,,
62
+ cn_gb,cny,frb,,,,,,,s,shortfront,,,,FALSE,none,bjs,0,,cny,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,-1b,cn_gb,,,,,
63
+ de_gb,eur,frb,,,,,,,a,longfront,,,,FALSE,none,tgt,0,,eur,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,-1b,de_gb,,,,,
64
+ fr_gb,eur,frb,,,,,,,a,shortfront,,,,FALSE,none,tgt,0,,eur,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,-1b,fr_gb,,,,,
65
+ nl_gb,eur,frb,,,,,,,a,shortfront,,,,FALSE,none,tgt,0,,eur,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,-1b,nl_gb,,,,,
66
+ it_gb,eur,frb,,,,,,,s,shortfront,,,,FALSE,none,tgt,0,,eur,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,-1b,it_gb,,,,,
67
+ ch_gb,chf,frb,,,,,,,a,shortfront,,,,FALSE,none,zur,0,,chf,,30e360,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,-1b,ch_gb,,,,,
68
+ se_gb,sek,frb,,,,,,,a,shortfront,,,,FALSE,none,stk,0,,sek,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,-5b,se_gb,,,,,
69
+ no_gb,nok,frb,,,,,,,a,shortfront,,,,FALSE,none,osl,0,,nok,,actacticma_stub365f,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,-1b,no_gb,,,,,
70
+ ca_gb,cad,frb,,,,,,,s,shortfront,,,,FALSE,none,tro,0,,cad,,actacticma_stub365f,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,-1b,ca_gb,,,,,
71
+ ca_gbi,cad,ifrb,,,,,,,s,shortfront,,,,FALSE,none,tro,0,,cad,,actacticma_stub365f,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,daily,,,3,,,,,1,-1b,ca_gb,,,,,
72
+ us_gbb,usd,bill,,,,,,,,,,,,TRUE,none,nyc,0,,usd,,act360,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,0b,us_gbb,,,,,
73
+ se_gbb,sek,bill,,,,,,,,,,,,FALSE,none,stk,0,,sek,,act360,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,0b,se_gbb,,,,,
74
+ no_gbb,nok,bill,,,,,,,,,,,,FALSE,none,osl,0,,nok,,act365f,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,2,0b,no_gbb,,,,,
75
+ uk_gbb,gbp,bill,,,,,,,,,,,,TRUE,none,ldn,0,,gbp,,act365f,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,1,0b,uk_gbb,,,,,
76
+ uk_gbi,gbp,ifrb,,,,,,,s,shortfront,,,,FALSE,none,ldn,0,,gbp,,actacticma,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,,,,,daily,,,3,,,,,1,-7b,uk_gb,,,,,
75
77
  sek_fra3,sek,fra,,,,,,3m,q,,,,,FALSE,mf,stk,0,,sek,,act360,,,,,,,,,,,,,,,,,,,,,,,none_simple,,ibor(2),,,,,,,,,,,,,,,,,,,,,,,,,,,,
76
78
  eur_fra3,eur,fra,,,,,,3m,q,,,,,FALSE,mf,tgt,0,,eur,,act360,,,,,,,,,,,,,,,,,,,,,,,none_simple,,ibor(2),,,,,,,,,,,,,,,,,,,,,,,,,,,,
77
79
  eur_fra6,eur,fra,,,,,,6m,s,,,,,FALSE,mf,tgt,0,,eur,,act360,,,,,,,,,,,,,,,,,,,,,,,none_simple,,ibor(2),,,,,,,,,,,,,,,,,,,,,,,,,,,,
78
80
  eur_fra1,eur,fra,,,,,,1m,m,,,,,FALSE,mf,tgt,0,,eur,,act360,,,,,,,,,,,,,,,,,,,,,,,none_simple,,ibor(2),,,,,,,,,,,,,,,,,,,,,,,,,,,,
79
81
  nok_fra3,nok,fra,,,,,,3m,q,,,,,FALSE,mf,osl,0,,nok,,act360,,,,,,,,,,,,,,,,,,,,,,,none_simple,,ibor(2),,,,,,,,,,,,,,,,,,,,,,,,,,,,
80
82
  nok_fra6,nok,fra,,,,,,6m,s,,,,,FALSE,mf,osl,0,,nok,,act360,,,,,,,,,,,,,,,,,,,,,,,none_simple,,ibor(2),,,,,,,,,,,,,,,,,,,,,,,,,,,,
81
- usd_frn5,usd,frn,,,,,,,q,,,,,FALSE,mf,nyc,0,,usd,,act360,,,,,,,,,,,,,,,,,,none_simple,,rfr_observation_shift(5),,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,
83
+ usd_frn5,usd,frn,,,,,,,q,,,,,FALSE,mf,nyc,0,,usd,,act360,,,,,,,,,,,,,,,,,,none_simple,,rfr_observation_shift(5),,,,,,,,,,,,,,,,,,,,,,,,,,1,1b,,,,,,
82
84
  usd_stir,usd,stir,,SFR,3m SOFR Futures convention,,,,q,,,,imm,FALSE,mf,nyc,0,,usd,,actacticma,,,,,,,,,,,,,,,,,,,,,,,none_simple,,rfr_payment_delay,usd_rfr,,,,,,,,,,,,,,,,,,,,,,,1000000,,,,
83
85
  usd_stir1,usd,stir,,SF1,1m Avergaed SOFR Futures,,,,m,,,,som,FALSE,mf,nyc,0,,usd,,actacticma,,,,,,,,,,,,,,,,,,,,,,,none_simple,,rfr_payment_delay_avg,usd_rfr,,,,,,,,,,,,,,,,,,,,,,,5000400,,,,
84
86
  eur_stir,eur,stir,,KTR,3m ESTR Futures,,,,q,,,,imm,FALSE,mf,tgt,0,,eur,,actacticma,,,,,,,,,,,,,,,,,,,,,,,none_simple,,rfr_payment_delay,eur_rfr,,,,,,,,,,,,,,,,,,,,,,,1000000,,,,
@@ -1292,15 +1292,21 @@ class IRSSeries:
1292
1292
 
1293
1293
  .. ipython:: python
1294
1294
 
1295
- fxi = FXIndex(
1296
- pair="eurusd",
1297
- calendar="tgt|fed", # <- Spot FX measures settlement dates according to this calendar
1295
+ irss = IRSSeries(
1296
+ currency="nok",
1298
1297
  settle=2,
1299
- isda_mtm_calendar="ldn", # <- MTM XCS FX fixing dates are determined according to this calendar
1300
- isda_mtm_settle=-2,
1298
+ calendar="osl",
1299
+ convention="30e360",
1300
+ leg2_convention="act360",
1301
+ frequency="A",
1302
+ leg2_frequency="Q",
1303
+ leg2_fixing_method="Ibor(2)",
1304
+ eom=False,
1305
+ modifier="MF",
1306
+ payment_lag=0
1301
1307
  )
1302
- fxi.delivery(dt(2025, 7, 3))
1303
- fxi.isda_fixing_date(dt(2025, 7, 3))
1308
+ irss.settle
1309
+
1304
1310
 
1305
1311
  .. role:: red
1306
1312
 
@@ -1324,7 +1330,7 @@ class IRSSeries:
1324
1330
  leg2_frequency: str, :green:`optional (set by 'defaults')`
1325
1331
  The leg2_frequency passed to the :class:`~rateslib.instruments.IRS`
1326
1332
  leg2_fixing_method: FloatFixingMethod, str, :green:`optional (set by 'defaults')`
1327
- The :class:`~rateslib.enums.parameters.FloatFixingMethod` describing the determination
1333
+ The :class:`~rateslib.enums.FloatFixingMethod` describing the determination
1328
1334
  of the floating rate for each period.
1329
1335
  eom : bool, :green:`optional`
1330
1336
  The eom passed to the :class:`~rateslib.instruments.IRS`
@@ -1393,25 +1399,25 @@ class IRSSeries:
1393
1399
 
1394
1400
  @property
1395
1401
  def convention(self) -> Convention:
1396
- """The :class:`rateslib.scheduling.Convention` of leg1 of
1402
+ """The :class:`~rateslib.scheduling.Convention` of leg1 of
1397
1403
  the associated :class:`~rateslib.instruments.IRS`"""
1398
1404
  return self._convention
1399
1405
 
1400
1406
  @property
1401
1407
  def leg2_convention(self) -> Convention:
1402
- """The :class:`rateslib.scheduling.Convention` of leg2 of
1408
+ """The :class:`~rateslib.scheduling.Convention` of leg2 of
1403
1409
  the associated :class:`~rateslib.instruments.IRS`"""
1404
1410
  return self._leg2_convention
1405
1411
 
1406
1412
  @property
1407
1413
  def modifier(self) -> Adjuster:
1408
- """The :class:`rateslib.scheduling.Adjuster` for accrual modification
1414
+ """The :class:`~rateslib.scheduling.Adjuster` for accrual modification
1409
1415
  of the associated :class:`~rateslib.instruments.IRS`"""
1410
1416
  return self._modifier
1411
1417
 
1412
1418
  @property
1413
1419
  def payment_lag(self) -> Adjuster | int | str_:
1414
- """The :class:`rateslib.scheduling.Adjuster` for payment date modification
1420
+ """The :class:`~rateslib.scheduling.Adjuster` for payment date modification
1415
1421
  of the associated :class:`~rateslib.instruments.IRS`"""
1416
1422
  return self._payment_lag
1417
1423
 
@@ -58,6 +58,22 @@ def _dual_float(val: DualTypes) -> float:
58
58
  raise e
59
59
 
60
60
 
61
+ def _dual_round(val: DualTypes, ndigits: int) -> DualTypes:
62
+ """Overload for the round() builtin to handle Duals: ONLY impacting the real quantity"""
63
+ try:
64
+ return round(val, ndigits) # type: ignore[arg-type]
65
+ except TypeError as e: # val is not Number but a Variable
66
+ if isinstance(val, Dual):
67
+ return Dual.vars_from(val, round(val.real, ndigits), val.vars, val.dual)
68
+ elif isinstance(val, Dual2):
69
+ return Dual2.vars_from(
70
+ val, round(val.real, ndigits), val.vars, val.dual, val.dual2.ravel()
71
+ )
72
+ elif isinstance(val, Variable):
73
+ return Variable(round(val.real, ndigits), vars=val.vars, dual=val.dual)
74
+ raise e
75
+
76
+
61
77
  def _float_or_none(val: DualTypes | None | NoInput | Result[DualTypes]) -> float | None:
62
78
  if val is None or isinstance(val, NoInput | Err):
63
79
  return None
@@ -19,6 +19,8 @@ from rateslib.enums.parameters import (
19
19
  IROptionMetric,
20
20
  LegIndexBase,
21
21
  LegMtm,
22
+ OptionPricingModel,
23
+ OptionType,
22
24
  SpreadCompoundMethod,
23
25
  SwaptionSettlementMethod,
24
26
  )
@@ -31,6 +33,8 @@ __all__ = [
31
33
  "SwaptionSettlementMethod",
32
34
  "FXOptionMetric",
33
35
  "IROptionMetric",
36
+ "OptionPricingModel",
37
+ "OptionType",
34
38
  "LegMtm",
35
39
  "LegIndexBase",
36
40
  "NoInput",
@@ -29,7 +29,9 @@ if TYPE_CHECKING:
29
29
  YtmDiscountFunction,
30
30
  YtmStubDiscountFunction,
31
31
  )
32
- from rateslib.local_types import Any # pragma: no cover
32
+ from rateslib.local_types import ( # pragma: no cover
33
+ Any,
34
+ )
33
35
 
34
36
 
35
37
  class BondCalcMode:
@@ -395,6 +397,7 @@ class BondCalcMode:
395
397
  """ # noqa: E501, W293
396
398
 
397
399
  _settle_accrual: AccrualFunction
400
+ # _settle_accrual_rounding: int | None
398
401
  _ytm_accrual: AccrualFunction
399
402
  _v1: YtmStubDiscountFunction
400
403
  _v2: YtmDiscountFunction
@@ -413,6 +416,7 @@ class BondCalcMode:
413
416
  c1: str | CashflowFunction,
414
417
  ci: str | CashflowFunction,
415
418
  cn: str | CashflowFunction,
419
+ # settle_accrual_rounding: int_ = NoInput(0),
416
420
  ):
417
421
  self._kwargs: dict[str, str] = {}
418
422
  for name, func, _map in zip(
@@ -437,6 +441,13 @@ class BondCalcMode:
437
441
  setattr(self, f"_{name}", func)
438
442
  self._kwargs[name] = "custom"
439
443
 
444
+ # if isinstance(settle_accrual_rounding, NoInput):
445
+ # self._settle_accrual_rounding = None
446
+ # self._kwargs["settle_accrual_rounding"] = "none"
447
+ # else:
448
+ # self._settle_accrual_rounding = settle_accrual_rounding
449
+ # self._kwargs["settle_accrual_rounding"] = str(settle_accrual_rounding)
450
+
440
451
  @property
441
452
  def kwargs(self) -> dict[str, str]:
442
453
  """String representation of the parameters for the calculation convention."""
@@ -511,6 +522,18 @@ UK_GB = BondCalcMode(
511
522
  cn="cashflow",
512
523
  )
513
524
 
525
+ CN_GB = BondCalcMode(
526
+ # Chinese government bond conventions
527
+ settle_accrual="linear_days",
528
+ ytm_accrual="linear_days",
529
+ v1="compounding",
530
+ v2="regular",
531
+ v3="compounding",
532
+ c1="cashflow",
533
+ ci="cashflow",
534
+ cn="cashflow",
535
+ )
536
+
514
537
  NZ_GB = BondCalcMode(
515
538
  # New Zealand government bond conventions
516
539
  settle_accrual="linear_days",
@@ -523,6 +546,19 @@ NZ_GB = BondCalcMode(
523
546
  cn="cashflow",
524
547
  )
525
548
 
549
+ AU_GB = BondCalcMode(
550
+ # Australian government bond conventions
551
+ settle_accrual="linear_days",
552
+ # settle_accrual_rounding=3,
553
+ ytm_accrual="linear_days",
554
+ v1="compounding_final_simple_act365f",
555
+ v2="regular",
556
+ v3="compounding",
557
+ c1="cashflow",
558
+ ci="cashflow",
559
+ cn="cashflow",
560
+ )
561
+
526
562
  US_GB = BondCalcMode(
527
563
  # US Treasury street convention
528
564
  settle_accrual="linear_days_long_front_split",
@@ -698,6 +734,8 @@ NO_GBB = BillCalcMode(
698
734
  BOND_MODE_MAP = {
699
735
  "uk_gb": UK_GB,
700
736
  "nz_gb": NZ_GB,
737
+ "au_gb": AU_GB,
738
+ "cn_gb": CN_GB,
701
739
  "us_gb": US_GB,
702
740
  "de_gb": DE_GB,
703
741
  "fr_gb": FR_GB,
@@ -80,4 +80,5 @@ class _WithAccrued(Protocol):
80
80
  calculation mode specific to the :class:`~rateslib.instruments.BondCalcMode`.
81
81
 
82
82
  """ # noqa: E501
83
- return self._accrued(settlement, self.kwargs.meta["calc_mode"]._settle_accrual)
83
+ value = self._accrued(settlement, self.kwargs.meta["calc_mode"]._settle_accrual)
84
+ return value