kensho-kfinance 3.2.15__tar.gz → 3.2.16__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.

Potentially problematic release.


This version of kensho-kfinance might be problematic. Click here for more details.

Files changed (148) hide show
  1. {kensho_kfinance-3.2.15/kensho_kfinance.egg-info → kensho_kfinance-3.2.16}/PKG-INFO +1 -1
  2. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16/kensho_kfinance.egg-info}/PKG-INFO +1 -1
  3. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/CHANGELOG.md +3 -0
  4. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/models/decimal_with_unit.py +14 -2
  5. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/models/tests/test_decimal_with_unit.py +9 -0
  6. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/version.py +3 -3
  7. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/.coveragerc +0 -0
  8. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/.github/workflows/ci-lint.yml +0 -0
  9. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/.github/workflows/ci-test.yml +0 -0
  10. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/.github/workflows/python-publish.yml +0 -0
  11. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/.gitignore +0 -0
  12. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/.readthedocs.yaml +0 -0
  13. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/AUTHORS.md +0 -0
  14. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/CODE_OF_CONDUCT.md +0 -0
  15. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/CONTRIBUTING.md +0 -0
  16. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/LICENSE +0 -0
  17. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/README.md +0 -0
  18. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/docs/build_tool_calling_documentation.py +0 -0
  19. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/docs/conf.py +0 -0
  20. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/docs/index.rst +0 -0
  21. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/docs/kfinance.rst +0 -0
  22. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/docs/requirements.txt +0 -0
  23. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/docs/templates/apidoc/package.rst_t +0 -0
  24. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/docs/templates/apidoc/toc.rst_t +0 -0
  25. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/docs/tool_calling.rst +0 -0
  26. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/example_notebooks/basic_usage.ipynb +0 -0
  27. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/example_notebooks/tool_calling/langchain/anthropic_langchain_tool_calling.ipynb +0 -0
  28. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/example_notebooks/tool_calling/langchain/google_gemini_langchain_tool_calling.ipynb +0 -0
  29. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/example_notebooks/tool_calling/langchain/openai_langchain_tool_calling.ipynb +0 -0
  30. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/example_notebooks/tool_calling/non-langchain/anthropic_tool_calling.ipynb +0 -0
  31. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/example_notebooks/tool_calling/non-langchain/google_gemini_tool_calling.ipynb +0 -0
  32. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/example_notebooks/tool_calling/non-langchain/openai_langchain_tool_calling.ipynb +0 -0
  33. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/images/colab_logo_32px.png +0 -0
  34. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/justfile +0 -0
  35. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kensho_kfinance.egg-info/SOURCES.txt +0 -0
  36. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kensho_kfinance.egg-info/dependency_links.txt +0 -0
  37. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kensho_kfinance.egg-info/requires.txt +0 -0
  38. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kensho_kfinance.egg-info/top_level.txt +0 -0
  39. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/__init__.py +0 -0
  40. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/README.md +0 -0
  41. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/__init__.py +0 -0
  42. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/batch_request_handling.py +0 -0
  43. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/fetch.py +0 -0
  44. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/industry_models.py +0 -0
  45. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/kfinance.py +0 -0
  46. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/meta_classes.py +0 -0
  47. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/models/__init__.py +0 -0
  48. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/models/currency_models.py +0 -0
  49. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/models/date_and_period_models.py +0 -0
  50. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/models/tests/__init__.py +0 -0
  51. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/permission_models.py +0 -0
  52. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/server_thread.py +0 -0
  53. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/tests/__init__.py +0 -0
  54. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/tests/test_batch_requests.py +0 -0
  55. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/tests/test_client.py +0 -0
  56. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/tests/test_fetch.py +0 -0
  57. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/tests/test_group_objects.py +0 -0
  58. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/client/tests/test_objects.py +0 -0
  59. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/conftest.py +0 -0
  60. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/README.md +0 -0
  61. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/__init__.py +0 -0
  62. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/business_relationships/__init__.py +0 -0
  63. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/business_relationships/business_relationship_models.py +0 -0
  64. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/business_relationships/business_relationship_tools.py +0 -0
  65. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/business_relationships/tests/__init__.py +0 -0
  66. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/business_relationships/tests/test_business_relationship_tools.py +0 -0
  67. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/capitalizations/__init__.py +0 -0
  68. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/capitalizations/capitalization_models.py +0 -0
  69. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/capitalizations/capitalization_tools.py +0 -0
  70. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/capitalizations/tests/__init__.py +0 -0
  71. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/capitalizations/tests/test_capitalization_models.py +0 -0
  72. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/capitalizations/tests/test_capitalization_tools.py +0 -0
  73. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/companies/__init__.py +0 -0
  74. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/companies/company_identifiers.py +0 -0
  75. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/companies/company_models.py +0 -0
  76. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/companies/company_tools.py +0 -0
  77. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/companies/tests/__init__.py +0 -0
  78. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/companies/tests/test_company_tools.py +0 -0
  79. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/competitors/__init__.py +0 -0
  80. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/competitors/competitor_models.py +0 -0
  81. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/competitors/competitor_tools.py +0 -0
  82. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/competitors/tests/__init__.py +0 -0
  83. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/competitors/tests/test_competitor_tools.py +0 -0
  84. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/cusip_and_isin/__init__.py +0 -0
  85. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/cusip_and_isin/cusip_and_isin_tools.py +0 -0
  86. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/cusip_and_isin/tests/__init__.py +0 -0
  87. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/cusip_and_isin/tests/test_cusip_and_isin_tools.py +0 -0
  88. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/earnings/__init__.py +0 -0
  89. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/earnings/earning_models.py +0 -0
  90. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/earnings/earning_tools.py +0 -0
  91. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/earnings/tests/__init__.py +0 -0
  92. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/earnings/tests/test_earnings_tools.py +0 -0
  93. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/line_items/__init__.py +0 -0
  94. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/line_items/line_item_models.py +0 -0
  95. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/line_items/line_item_tools.py +0 -0
  96. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/line_items/tests/__init__.py +0 -0
  97. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/line_items/tests/test_line_item_tools.py +0 -0
  98. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/mergers_and_acquisitions/__init__.py +0 -0
  99. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/mergers_and_acquisitions/merger_and_acquisition_models.py +0 -0
  100. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/mergers_and_acquisitions/merger_and_acquisition_tools.py +0 -0
  101. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/mergers_and_acquisitions/tests/__init__.py +0 -0
  102. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/mergers_and_acquisitions/tests/test_merger_and_acquisition_tools.py +0 -0
  103. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/prices/__init__.py +0 -0
  104. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/prices/price_models.py +0 -0
  105. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/prices/price_tools.py +0 -0
  106. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/prices/tests/__init__.py +0 -0
  107. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/prices/tests/test_price_models.py +0 -0
  108. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/prices/tests/test_price_tools.py +0 -0
  109. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/segments/__init__.py +0 -0
  110. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/segments/segment_models.py +0 -0
  111. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/segments/segment_tools.py +0 -0
  112. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/segments/tests/__init__.py +0 -0
  113. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/segments/tests/test_segment_tools.py +0 -0
  114. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/statements/__init__.py +0 -0
  115. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/statements/statement_models.py +0 -0
  116. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/statements/statement_tools.py +0 -0
  117. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/statements/tests/__init__.py +0 -0
  118. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/domains/statements/tests/test_statement_tools.py +0 -0
  119. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/README.md +0 -0
  120. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/__init__.py +0 -0
  121. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/local_mcp/__init__.py +0 -0
  122. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/local_mcp/kfinance_mcp.py +0 -0
  123. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/local_mcp/local_mcp.py +0 -0
  124. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tests/__init__.py +0 -0
  125. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tests/test_example_notebook.py +0 -0
  126. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tool_calling/README.md +0 -0
  127. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tool_calling/__init__.py +0 -0
  128. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tool_calling/all_tools.py +0 -0
  129. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tool_calling/prompts.py +0 -0
  130. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tool_calling/static_tools/README.md +0 -0
  131. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tool_calling/static_tools/__init__.py +0 -0
  132. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tool_calling/static_tools/get_latest.py +0 -0
  133. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tool_calling/static_tools/get_n_quarters_ago.py +0 -0
  134. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tool_calling/static_tools/tests/__init__.py +0 -0
  135. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tool_calling/static_tools/tests/test_get_lastest.py +0 -0
  136. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tool_calling/static_tools/tests/test_get_n_quarters_ago.py +0 -0
  137. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tool_calling/tests/__init__.py +0 -0
  138. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tool_calling/tests/test_tool_calling_models.py +0 -0
  139. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/integrations/tool_calling/tool_calling_models.py +0 -0
  140. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/mcp.py +0 -0
  141. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/models/permission_models.py +0 -0
  142. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/kfinance/py.typed +0 -0
  143. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/pyproject.toml +0 -0
  144. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/scripts/copyright_line_check.sh +0 -0
  145. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/scripts/lint.sh +0 -0
  146. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/scripts/test.sh +0 -0
  147. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/setup.cfg +0 -0
  148. {kensho_kfinance-3.2.15 → kensho_kfinance-3.2.16}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kensho-kfinance
3
- Version: 3.2.15
3
+ Version: 3.2.16
4
4
  Summary: Python CLI for kFinance
5
5
  Author-email: Luke Brown <luke.brown@kensho.com>, Michelle Keoy <michelle.keoy@kensho.com>, Keith Page <keith.page@kensho.com>, Matthew Rosen <matthew.rosen@kensho.com>, Nick Roshdieh <nick.roshdieh@kensho.com>
6
6
  Project-URL: source, https://github.com/kensho-technologies/kfinance
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kensho-kfinance
3
- Version: 3.2.15
3
+ Version: 3.2.16
4
4
  Summary: Python CLI for kFinance
5
5
  Author-email: Luke Brown <luke.brown@kensho.com>, Michelle Keoy <michelle.keoy@kensho.com>, Keith Page <keith.page@kensho.com>, Matthew Rosen <matthew.rosen@kensho.com>, Nick Roshdieh <nick.roshdieh@kensho.com>
6
6
  Project-URL: source, https://github.com/kensho-technologies/kfinance
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## v3.2.16
4
+ - Allow None and "NaN" for DecimalWithValue
5
+
3
6
  ## v3.2.15
4
7
  - Add smart line item validation with intelligent suggestions and descriptions to reduce token consumption by 75%
5
8
 
@@ -2,7 +2,7 @@ from copy import deepcopy
2
2
  from decimal import Decimal
3
3
  from typing import Any
4
4
 
5
- from pydantic import BaseModel, Field, model_validator
5
+ from pydantic import BaseModel, Field, field_validator, model_validator
6
6
  from typing_extensions import Self
7
7
 
8
8
  from kfinance.client.models.currency_models import ISO_CODE_TO_CURRENCY
@@ -20,11 +20,23 @@ class DecimalWithUnit(BaseModel):
20
20
  existing subclass like `Money` or `Shares` or create a new one.
21
21
  """
22
22
 
23
- value: Decimal
23
+ value: Decimal = Field(allow_inf_nan=True)
24
24
  unit: str
25
25
  # exclude conventional_decimals from serialization
26
26
  conventional_decimals: int = Field(exclude=True)
27
27
 
28
+ @field_validator("value", mode="before")
29
+ @classmethod
30
+ def convert_none_to_nan(cls, v: Any) -> Any:
31
+ """Convert None values to NaN.
32
+
33
+ Price data can include None for open prices.
34
+ https://kfinance.kensho.com/api/v1/pricing/37284793/2003-01-01/2024-12-31/month/adjusted
35
+ """
36
+ if v is None:
37
+ return Decimal("NaN")
38
+ return v
39
+
28
40
  @model_validator(mode="after")
29
41
  def quantize_value(self) -> Self:
30
42
  """Quantize the value at the end of the deserialization.
@@ -32,6 +32,15 @@ class TestDecimalWithUnit:
32
32
  )
33
33
  assert dwu.value == expected_value
34
34
 
35
+ @pytest.mark.parametrize("value", [None, "NaN"])
36
+ def test_null_nan_allowed(self, value: str | None):
37
+ """
38
+ WHEN a DecimalWithUnit gets deserialized with None or "NaN"
39
+ THEN the deserialized value is Decimal("NaN")
40
+ """
41
+ dwu = DecimalWithUnit.model_validate(dict(value=value, conventional_decimals=1, unit="foo"))
42
+ assert dwu.value.is_nan()
43
+
35
44
 
36
45
  class TestMoney:
37
46
  @pytest.mark.parametrize("currency, expected_conventional_decimals", [("USD", 2), ("BIF", 0)])
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '3.2.15'
32
- __version_tuple__ = version_tuple = (3, 2, 15)
31
+ __version__ = version = '3.2.16'
32
+ __version_tuple__ = version_tuple = (3, 2, 16)
33
33
 
34
- __commit_id__ = commit_id = 'ga3e6ee4d3'
34
+ __commit_id__ = commit_id = 'g3610e6423'