ffbb-data-client 2.4.14__tar.gz → 2.4.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.
Files changed (396) hide show
  1. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/workflows/ci.yml +14 -1
  2. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/workflows/publish.yml +37 -0
  3. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/AGENTS.md +9 -10
  4. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/PKG-INFO +5 -5
  5. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/README.md +4 -4
  6. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/architecture.rst +2 -1
  7. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/examples.rst +11 -24
  8. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/migration.rst +3 -3
  9. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/requirements.txt +0 -1
  10. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/__init__.py +19 -0
  11. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/api.py +27 -3
  12. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/clients/_mixins/competition.py +7 -6
  13. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/clients/_mixins/getters.py +31 -30
  14. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/clients/_mixins/organisme.py +5 -4
  15. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/clients/_search_facade.py +16 -3
  16. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/clients/meilisearch_client.py +12 -19
  17. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/config.py +7 -1
  18. ffbb_data_client-2.4.16/src/ffbb_data_client/exceptions.py +39 -0
  19. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/helpers/http_requests_utils.py +91 -47
  20. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_configuration_response.py +10 -17
  21. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/utils/retry_utils.py +26 -14
  22. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/utils/token_manager.py +12 -8
  23. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client.egg-info/PKG-INFO +5 -5
  24. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client.egg-info/SOURCES.txt +1 -0
  25. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client.egg-info/scm_file_list.json +1 -0
  26. ffbb_data_client-2.4.16/src/ffbb_data_client.egg-info/scm_version.json +8 -0
  27. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_201_unit_tests_core.py +2 -1
  28. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_207_coverage_clients_extended.py +18 -18
  29. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_208_new_methods_coverage.py +2 -2
  30. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_210_targeted_clients_helpers_coverage.py +21 -4
  31. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_search_many.py +24 -21
  32. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_v3_new_features.py +5 -5
  33. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/helpers/test_400_http_helpers.py +34 -1
  34. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/utils/test_302_retry_utils.py +8 -0
  35. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/utils/test_304_config.py +1 -1
  36. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/utils/test_305_token_manager.py +14 -1
  37. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/utils/test_307_coverage_gaps_utils.py +4 -4
  38. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tools/update_agents_md.py +3 -3
  39. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tox.ini +1 -1
  40. ffbb_data_client-2.4.14/src/ffbb_data_client.egg-info/scm_version.json +0 -8
  41. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.agents/rules/antigravity-rtk-rules.md +0 -0
  42. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.coveragerc +0 -0
  43. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.gitattributes +0 -0
  44. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/FUNDING.yml +0 -0
  45. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  46. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  47. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  48. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/dependabot.yml +0 -0
  49. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/scripts/ai-pr-reviewer.cjs +0 -0
  50. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/scripts/check_wrapper_parity.py +0 -0
  51. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/workflows/ai-pr-reviewer.yml +0 -0
  52. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/workflows/check_wrapper_parity.yml +0 -0
  53. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/workflows/codeql.yml +0 -0
  54. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/workflows/deploy-pages.yml +0 -0
  55. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/workflows/keep-ffbb-api-discovery-alive.yml +0 -0
  56. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/workflows/release-after-discovery-merge.yml +0 -0
  57. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.github/workflows/update-ffbb-api-discovery.yml +0 -0
  58. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.gitignore +0 -0
  59. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.isort.cfg +0 -0
  60. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.jules/bolt.md +0 -0
  61. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.omc/skills/codeql-security-hardening-expertise.md +0 -0
  62. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.omc/skills/pypi-immutable-release-workflow.md +0 -0
  63. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.omc/skills/terminal-output-hygiene-expertise.md +0 -0
  64. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.pre-commit-config.yaml +0 -0
  65. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/.readthedocs.yml +0 -0
  66. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/AUTHORS.rst +0 -0
  67. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/CHANGELOG.md +0 -0
  68. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/CODE_OF_CONDUCT.md +0 -0
  69. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/CONTRIBUTING.rst +0 -0
  70. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/DESIGN.md +0 -0
  71. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/Dockerfile +0 -0
  72. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/LICENSE.txt +0 -0
  73. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/LOCAL_CI_GUIDE.md +0 -0
  74. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/RELEASE_NOTES.md +0 -0
  75. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/SECURITY.md +0 -0
  76. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/data/api.ffbb.app.json +0 -0
  77. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/data/api_update_summary.md +0 -0
  78. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/data/collections.json +0 -0
  79. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/data/endpoint_discovery.json +0 -0
  80. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/data/field_dictionary.json +0 -0
  81. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/data/indexes.json +0 -0
  82. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/data/meilisearch-prod.ffbb.app.json +0 -0
  83. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/data/openapi.json +0 -0
  84. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/data/openapi_full.json +0 -0
  85. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/data/type_discovery_corrections.json +0 -0
  86. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/Makefile +0 -0
  87. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/_static/.gitignore +0 -0
  88. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/authors.rst +0 -0
  89. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/changelog.rst +0 -0
  90. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/conf.py +0 -0
  91. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/contributing.rst +0 -0
  92. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/data_dictionary.rst +0 -0
  93. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/index.rst +0 -0
  94. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/license.rst +0 -0
  95. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/readme.rst +0 -0
  96. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/test_strategy.md +0 -0
  97. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/docs/testing_conventions.md +0 -0
  98. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/examples/README.md +0 -0
  99. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/examples/complete_usage_example.py +0 -0
  100. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/examples/quick_start.py +0 -0
  101. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/examples/team_ranking_analysis.py +0 -0
  102. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/pyproject.toml +0 -0
  103. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/pytest.ini +0 -0
  104. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/run-ci-locally.sh +0 -0
  105. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/scripts/benchmark_concurrent_pagination.py +0 -0
  106. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/scripts/benchmark_search_organisme.py +0 -0
  107. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/scripts/discover_endpoints.py +0 -0
  108. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/scripts/discover_types.py +0 -0
  109. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/setup.cfg +0 -0
  110. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/setup.py +0 -0
  111. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/clients/__init__.py +0 -0
  112. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/clients/_helpers.py +0 -0
  113. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/clients/_mixins/__init__.py +0 -0
  114. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/clients/_mixins/external.py +0 -0
  115. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/clients/_mixins/list_methods.py +0 -0
  116. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/clients/_rest_facade.py +0 -0
  117. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/clients/api_ffbb_app_client.py +0 -0
  118. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/clients/ffbb_data_client.py +0 -0
  119. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/clients/meilisearch_ffbb_client.py +0 -0
  120. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/data/__init__.py +0 -0
  121. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/data/collections.json +0 -0
  122. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/data/endpoint_discovery.json +0 -0
  123. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/data/field_dictionary.json +0 -0
  124. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/data/indexes.json +0 -0
  125. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/data/openapi.json +0 -0
  126. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/helpers/__init__.py +0 -0
  127. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/helpers/http_requests_helper.py +0 -0
  128. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/helpers/meilisearch_client_extension.py +0 -0
  129. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/helpers/multi_search_query_helper.py +0 -0
  130. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/helpers/normalization.py +0 -0
  131. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/__init__.py +0 -0
  132. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/affiche.py +0 -0
  133. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/cartographie.py +0 -0
  134. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/categorie.py +0 -0
  135. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/categorie_type.py +0 -0
  136. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/clock.py +0 -0
  137. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/club_contacts.py +0 -0
  138. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/code.py +0 -0
  139. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/commune.py +0 -0
  140. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competition_fields.py +0 -0
  141. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competition_id.py +0 -0
  142. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competition_id_categorie.py +0 -0
  143. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competition_id_sexe.py +0 -0
  144. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competition_id_type_competition.py +0 -0
  145. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competition_id_type_competition_generique.py +0 -0
  146. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competition_origine.py +0 -0
  147. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competition_origine_categorie.py +0 -0
  148. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competition_origine_type_competition.py +0 -0
  149. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competition_origine_type_competition_generique.py +0 -0
  150. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competition_type.py +0 -0
  151. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competitions_facet_distribution.py +0 -0
  152. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competitions_facet_stats.py +0 -0
  153. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competitions_hit.py +0 -0
  154. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competitions_multi_search_query.py +0 -0
  155. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/competitions_query.py +0 -0
  156. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/configuration_models.py +0 -0
  157. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/contact_info.py +0 -0
  158. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/content_multi_search_query.py +0 -0
  159. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/coordonnees.py +0 -0
  160. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/coordonnees_type.py +0 -0
  161. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/document_flyer.py +0 -0
  162. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/document_flyer_type.py +0 -0
  163. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/engagement_contacts.py +0 -0
  164. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/engagements_facet_distribution.py +0 -0
  165. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/engagements_facet_stats.py +0 -0
  166. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/engagements_hit.py +0 -0
  167. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/engagements_multi_search_query.py +0 -0
  168. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/etat.py +0 -0
  169. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/external_competition_id.py +0 -0
  170. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/external_id.py +0 -0
  171. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/facet_distribution.py +0 -0
  172. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/facet_stats.py +0 -0
  173. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/field_set.py +0 -0
  174. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/folder.py +0 -0
  175. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/formation_session.py +0 -0
  176. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/formations_facet_distribution.py +0 -0
  177. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/formations_facet_stats.py +0 -0
  178. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/formations_hit.py +0 -0
  179. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/formations_multi_search_query.py +0 -0
  180. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/game_stats_model.py +0 -0
  181. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/game_stats_models.py +0 -0
  182. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/generic_search.py +0 -0
  183. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/geo.py +0 -0
  184. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/geo_sort_order.py +0 -0
  185. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_commune_response.py +0 -0
  186. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_competition_response.py +0 -0
  187. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_engagement_response.py +0 -0
  188. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_entraineur_response.py +0 -0
  189. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_formation_response.py +0 -0
  190. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_officiel_response.py +0 -0
  191. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_organisme_response.py +0 -0
  192. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_poule_response.py +0 -0
  193. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_pratique_response.py +0 -0
  194. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_rencontre_response.py +0 -0
  195. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_saisons_response.py +0 -0
  196. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_salle_response.py +0 -0
  197. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_terrain_response.py +0 -0
  198. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/get_tournoi_response.py +0 -0
  199. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/gradient_color.py +0 -0
  200. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/hit.py +0 -0
  201. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/id_engagement_equipe.py +0 -0
  202. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/id_organisme_equipe.py +0 -0
  203. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/id_organisme_equipe1_logo.py +0 -0
  204. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/id_poule.py +0 -0
  205. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/jour.py +0 -0
  206. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/label.py +0 -0
  207. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/labellisation.py +0 -0
  208. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/live.py +0 -0
  209. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/lives.py +0 -0
  210. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/logo.py +0 -0
  211. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/multi_search_queries.py +0 -0
  212. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/multi_search_query.py +0 -0
  213. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/multi_search_result_competitions.py +0 -0
  214. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/multi_search_result_engagements.py +0 -0
  215. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/multi_search_result_formations.py +0 -0
  216. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/multi_search_result_organismes.py +0 -0
  217. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/multi_search_result_pratiques.py +0 -0
  218. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/multi_search_result_rencontres.py +0 -0
  219. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/multi_search_result_salles.py +0 -0
  220. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/multi_search_result_terrains.py +0 -0
  221. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/multi_search_result_tournois.py +0 -0
  222. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/multi_search_results.py +0 -0
  223. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/multi_search_results_class.py +0 -0
  224. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/nature_sol.py +0 -0
  225. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/niveau.py +0 -0
  226. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/niveau_class.py +0 -0
  227. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/niveau_extractor.py +0 -0
  228. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/niveau_info.py +0 -0
  229. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/niveau_models.py +0 -0
  230. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/niveau_type.py +0 -0
  231. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/objectif.py +0 -0
  232. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/organisateur.py +0 -0
  233. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/organisateur_type.py +0 -0
  234. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/organisme_fields.py +0 -0
  235. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/organisme_id_pere.py +0 -0
  236. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/organismes_facet_distribution.py +0 -0
  237. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/organismes_facet_stats.py +0 -0
  238. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/organismes_hit.py +0 -0
  239. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/organismes_multi_search_query.py +0 -0
  240. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/organismes_query.py +0 -0
  241. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/phase_code.py +0 -0
  242. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/poule.py +0 -0
  243. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/poule_fields.py +0 -0
  244. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/poule_rencontre_item_model.py +0 -0
  245. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/poules_models.py +0 -0
  246. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/poules_query.py +0 -0
  247. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/pratique.py +0 -0
  248. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/pratiques_facet_distribution.py +0 -0
  249. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/pratiques_facet_stats.py +0 -0
  250. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/pratiques_hit.py +0 -0
  251. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/pratiques_hit_type.py +0 -0
  252. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/pratiques_multi_search_query.py +0 -0
  253. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/pratiques_type_class.py +0 -0
  254. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/publication_internet.py +0 -0
  255. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/purple_logo.py +0 -0
  256. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/query_fields_manager.py +0 -0
  257. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/ranking_engagement.py +0 -0
  258. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/rankings_models.py +0 -0
  259. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/rencontres_engagement.py +0 -0
  260. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/rencontres_facet_distribution.py +0 -0
  261. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/rencontres_facet_stats.py +0 -0
  262. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/rencontres_hit.py +0 -0
  263. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/rencontres_multi_search_query.py +0 -0
  264. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/saison.py +0 -0
  265. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/saison_fields.py +0 -0
  266. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/saisons_models.py +0 -0
  267. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/saisons_query.py +0 -0
  268. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/salle.py +0 -0
  269. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/salles_facet_distribution.py +0 -0
  270. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/salles_facet_stats.py +0 -0
  271. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/salles_hit.py +0 -0
  272. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/salles_multi_search_query.py +0 -0
  273. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/sexe.py +0 -0
  274. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/sexe_class.py +0 -0
  275. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/source.py +0 -0
  276. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/status.py +0 -0
  277. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/team_engagement.py +0 -0
  278. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/team_ranking.py +0 -0
  279. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/terrains_categorie_championnat_3x3_libelle.py +0 -0
  280. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/terrains_facet_distribution.py +0 -0
  281. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/terrains_facet_stats.py +0 -0
  282. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/terrains_hit.py +0 -0
  283. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/terrains_multi_search_query.py +0 -0
  284. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/terrains_name.py +0 -0
  285. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/terrains_sexe_enum.py +0 -0
  286. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/terrains_storage.py +0 -0
  287. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/tournoi_type_class.py +0 -0
  288. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/tournoi_type_enum.py +0 -0
  289. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/tournoi_types_3x3.py +0 -0
  290. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/tournoi_types_3x3_libelle.py +0 -0
  291. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/tournoi_types_3x3_libelle_enum.py +0 -0
  292. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/tournois_facet_distribution.py +0 -0
  293. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/tournois_facet_stats.py +0 -0
  294. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/tournois_hit.py +0 -0
  295. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/tournois_hit_type.py +0 -0
  296. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/tournois_libelle.py +0 -0
  297. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/tournois_multi_search_query.py +0 -0
  298. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/type_association.py +0 -0
  299. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/type_association_libelle.py +0 -0
  300. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/type_class.py +0 -0
  301. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/type_competition.py +0 -0
  302. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/type_competition_generique.py +0 -0
  303. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/type_enum.py +0 -0
  304. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/models/type_league.py +0 -0
  305. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/py.typed +0 -0
  306. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/utils/__init__.py +0 -0
  307. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/utils/cache_manager.py +0 -0
  308. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/utils/concurrency_utils.py +0 -0
  309. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/utils/converter_utils.py +0 -0
  310. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/utils/input_validation.py +0 -0
  311. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client/utils/secure_logging.py +0 -0
  312. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client.egg-info/dependency_links.txt +0 -0
  313. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client.egg-info/not-zip-safe +0 -0
  314. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client.egg-info/requires.txt +0 -0
  315. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/src/ffbb_data_client.egg-info/top_level.txt +0 -0
  316. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/conftest.py +0 -0
  317. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/e2e/__init__.py +0 -0
  318. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/e2e/conftest.py +0 -0
  319. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/integration/__init__.py +0 -0
  320. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/integration/conftest.py +0 -0
  321. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/integration/test_500_user_journey.py +0 -0
  322. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/integration/test_501_user_journey_v3.py +0 -0
  323. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/integration/test_502_enhanced_integration.py +0 -0
  324. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/integration/test_503_secure_logging.py +0 -0
  325. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/integration/test_504_input_validation.py +0 -0
  326. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/integration/test_505_retry_timeout.py +0 -0
  327. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/integration/test_506_raw_json_model_conversion.py +0 -0
  328. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/__init__.py +0 -0
  329. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/__init__.py +0 -0
  330. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_200_api_ffbb_app_client.py +0 -0
  331. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_202_meilisearch_client.py +0 -0
  332. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_203_meilisearch_client_extension.py +0 -0
  333. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_204_ffbb_data_client.py +0 -0
  334. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_205_meilisearch_ffbb_client.py +0 -0
  335. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_206_coverage_gaps_clients.py +0 -0
  336. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_209_automatic_token_resolution.py +0 -0
  337. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_api_optimizations.py +0 -0
  338. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_async_methods.py +0 -0
  339. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_meilisearch_async.py +0 -0
  340. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_v2_backport_search.py +0 -0
  341. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/clients/test_warm_cache.py +0 -0
  342. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/conftest.py +0 -0
  343. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/helpers/__init__.py +0 -0
  344. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/helpers/test_meilisearch_client_extension_recursive_pagination.py +0 -0
  345. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/helpers/test_meilisearch_pagination_concurrent.py +0 -0
  346. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/helpers/test_normalization.py +0 -0
  347. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/__init__.py +0 -0
  348. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_100_competition_id_categorie.py +0 -0
  349. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_101_competition_id_sexe.py +0 -0
  350. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_102_competition_id_type_competition.py +0 -0
  351. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_103_competition_id_type_competition_generique.py +0 -0
  352. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_104_competition_origine_categorie.py +0 -0
  353. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_105_competition_origine_type_competition_generique.py +0 -0
  354. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_106_competition_origine.py +0 -0
  355. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_107_id_engagement_equipe.py +0 -0
  356. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_108_id_organisme_equipe.py +0 -0
  357. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_109_id_organisme_equipe1_logo.py +0 -0
  358. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_110_labellisation.py +0 -0
  359. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_111_niveau_class.py +0 -0
  360. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_112_purple_logo.py +0 -0
  361. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_113_salle.py +0 -0
  362. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_114_tournoi_type_class.py +0 -0
  363. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_115_type_association_libelle.py +0 -0
  364. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_116_type_competition_generique.py +0 -0
  365. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_117_organisateur.py +0 -0
  366. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_118_competition_id.py +0 -0
  367. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_119_terrains_inner_models.py +0 -0
  368. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_120_pratiques_inner_models.py +0 -0
  369. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_121_to_dict_round_trip.py +0 -0
  370. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_122_coverage_gaps.py +0 -0
  371. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_123_missing_coverage.py +0 -0
  372. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_123_v2_backport.py +0 -0
  373. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_124_targeted_coverage_gains.py +0 -0
  374. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/models/test_dx_aliases.py +0 -0
  375. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/test_310_discover_endpoints.py +0 -0
  376. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/test_311_normalize_team_name.py +0 -0
  377. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/utils/__init__.py +0 -0
  378. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/utils/test_300_secure_logging.py +0 -0
  379. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/utils/test_301_input_validation.py +0 -0
  380. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/utils/test_303_cache_manager.py +0 -0
  381. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/utils/test_306_converter_utils.py +0 -0
  382. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/utils/test_308_converter_utils_extended.py +0 -0
  383. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/tests/unit/utils/test_309_concurrency_utils.py +0 -0
  384. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/website/assets/apple-touch-icon.png +0 -0
  385. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/website/assets/favicon-192x192.png +0 -0
  386. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/website/assets/favicon-48x48.png +0 -0
  387. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/website/assets/favicon-96x96.png +0 -0
  388. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/website/assets/favicon.ico +0 -0
  389. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/website/assets/logo.webp +0 -0
  390. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/website/css/style.css +0 -0
  391. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/website/favicon.ico +0 -0
  392. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/website/index.html +0 -0
  393. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/website/llms-full.txt +0 -0
  394. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/website/llms.txt +0 -0
  395. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/website/robots.txt +0 -0
  396. {ffbb_data_client-2.4.14 → ffbb_data_client-2.4.16}/website/sitemap.xml +0 -0
@@ -60,8 +60,21 @@ jobs:
60
60
  pipx run --python '${{ steps.setup-python.outputs.python-path }}'
61
61
  tox -e type
62
62
 
63
+ dependency-audit:
64
+ runs-on: ubuntu-latest
65
+ steps:
66
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
67
+ - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
68
+ with:
69
+ python-version: "3.14"
70
+ cache: 'pip'
71
+ - name: Install package and auditor
72
+ run: python -m pip install . pip-audit
73
+ - name: Audit Python dependencies
74
+ run: python -m pip_audit
75
+
63
76
  build:
64
- needs: [lint, type-check]
77
+ needs: [lint, type-check, dependency-audit]
65
78
  runs-on: ubuntu-latest
66
79
  outputs:
67
80
  wheel-distribution: ${{ steps.wheel-distribution.outputs.path }}
@@ -13,8 +13,45 @@ env:
13
13
  FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
14
14
 
15
15
  jobs:
16
+ verify:
17
+ name: Verify Python ${{ matrix.python }}
18
+ runs-on: ubuntu-latest
19
+ strategy:
20
+ fail-fast: false
21
+ matrix:
22
+ include:
23
+ - python: "3.10"
24
+ toxenv: py310
25
+ - python: "3.11"
26
+ toxenv: py311
27
+ - python: "3.12"
28
+ toxenv: py312
29
+ - python: "3.13"
30
+ toxenv: py313
31
+ - python: "3.14"
32
+ toxenv: py314
33
+ steps:
34
+ - name: Checkout
35
+ uses: actions/checkout@v7
36
+ with:
37
+ fetch-depth: 0
38
+ - name: Set up Python
39
+ uses: actions/setup-python@v6
40
+ id: setup-python
41
+ with:
42
+ python-version: ${{ matrix.python }}
43
+ cache: 'pip'
44
+ - name: Run test suite
45
+ env:
46
+ API_FFBB_APP_BEARER_TOKEN: ${{ secrets.API_FFBB_APP_BEARER_TOKEN }}
47
+ MEILISEARCH_BEARER_TOKEN: ${{ secrets.MEILISEARCH_BEARER_TOKEN }}
48
+ run: >-
49
+ pipx run --python '${{ steps.setup-python.outputs.python-path }}'
50
+ tox -e ${{ matrix.toxenv }}
51
+
16
52
  build:
17
53
  name: Build distribution
54
+ needs: verify
18
55
  runs-on: ubuntu-latest
19
56
  permissions:
20
57
  attestations: write
@@ -1,8 +1,8 @@
1
1
  # FFBB Data Client SDK
2
2
 
3
3
  > ⚠️ **Fichier auto-généré** par `tools/update_agents_md.py` — ne pas modifier manuellement.
4
- > Dernière mise à jour : ffbb-data-client | SDK total : ~18803 lignes de code
5
- > (clients: 5980, models: 9805, utils: 2003, helpers: 1015)
4
+ > Dernière mise à jour : ffbb-data-client | SDK total : ~19037 lignes de code
5
+ > (clients: 6014, models: 9806, utils: 2061, helpers: 1156)
6
6
 
7
7
  ## Langue
8
8
  Tous les documents de travail (walkthrough.md, implementation_plan.md) DOIVENT être en français.
@@ -40,10 +40,9 @@ ou interroge l'API publique en cache en cas d'absence :
40
40
  documentation (`AGENTS.md`), de site/landing page ou autres tâches de synchronisation de
41
41
  manière autonome. Si vous estimez qu'une mise à jour automatique est pertinente ou non, prenez
42
42
  la décision par vous-même sans attendre la validation explicite de l'utilisateur.
43
- - **Protocole Strict Pre-Commit & Re-Stage (Zéro échec de CI)** :
44
- 1. Toujours appliquer `.rstrip() + "\n"` dans les générateurs de fichiers (RST, MD, JSON).
45
- 2. Exécuter systématiquement `rtk pre-commit run --all-files`.
46
- 3. Si un hook (end-of-file-fixer, black, isort...) modifie un fichier sur disque : **OBLIGATION de ré-indexer (`rtk git add -u`) et de ré-exécuter `rtk pre-commit run --all-files`** jusqu'à un passage 100% propre avant de créer le commit (`git commit`).
43
+ - **Validation pre-commit systématique (Zéro échec de CI)** : Pour éviter tout échec de build ou de formatage en CI,
44
+ exécutez systématiquement la validation complète locale via `rtk pre-commit run --all-files` avant de pousser
45
+ tout commit vers origin. Résolvez toutes les alertes (formatage, imports `isort`, typage) localement.
47
46
 
48
47
 
49
48
  ## Karpathy Guidelines (Règles de développement)
@@ -70,13 +69,13 @@ Ces directives inspirées d'Andrej Karpathy visent à éliminer les erreurs de c
70
69
  ```
71
70
  src/ffbb_data_client/
72
71
  ├── __init__.py # Point d'entrée du SDK, expose FFBBDataClient et FFBBTokens
73
- ├── clients/ # Clients d'API (REST et Meilisearch) et façades (≈5980 lignes)
72
+ ├── clients/ # Clients d'API (REST et Meilisearch) et façades (≈6014 lignes)
74
73
  ├── config.py # Configuration centralisée (URLs, Headers, Endpoints, Facettes)
75
74
  ├── data/ # Ressources et données statiques
76
- ├── helpers/ # Méthodes utilitaires pour requêtes HTTP et mapping (≈1015 lignes)
77
- ├── models/ # Modèles de données Pydantic type-safe (≈9805 lignes)
75
+ ├── helpers/ # Méthodes utilitaires pour requêtes HTTP et mapping (≈1156 lignes)
76
+ ├── models/ # Modèles de données Pydantic type-safe (≈9806 lignes)
78
77
  ├── py.typed # Marqueur pour la compatibilité avec mypy
79
- └── utils/ # Gestionnaires transversaux (cache, jetons de sécurité, validation) (≈2003 lignes)
78
+ └── utils/ # Gestionnaires transversaux (cache, jetons de sécurité, validation) (≈2061 lignes)
80
79
  ```
81
80
 
82
81
  ## Conventions de code
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ffbb-data-client
3
- Version: 2.4.14
3
+ Version: 2.4.16
4
4
  Summary: API FFBB — SDK Python moderne & asynchrone pour les donnees officielles de la Federation Francaise de BasketBall (clubs, classements, calendriers, lives, Meilisearch). Alternative moderne a ffbb-api-client.
5
5
  Home-page: https://github.com/nickdesi/ffbb-data-client
6
6
  Author: nickdesi
@@ -94,7 +94,7 @@ Dynamic: license-file
94
94
  `ffbb_data_client` simplifie l'accès aux API FFBB et à leurs index Meilisearch avec :
95
95
 
96
96
  - une façade unique : `FFBBDataClient` ;
97
- - des modèles Pydantic v2 typés ;
97
+ - des modèles typés, avec validation Pydantic v2 sur les contrats sensibles ;
98
98
  - une API utilisable en synchrone ou en `async/await` ;
99
99
  - une gestion automatique des tokens via `TokenManager` ;
100
100
  - du cache HTTP configurable via `hishel` ;
@@ -154,7 +154,7 @@ lives = client.get_lives()
154
154
  | API FFBB | clubs, compétitions, organismes, saisons, poules, classements, rencontres, lives |
155
155
  | Entités additionnelles | EDF (matches, joueurs, rosters, équipes), Genius Sport, Rematch Videos |
156
156
  | Recherche | organismes, compétitions, rencontres, salles, terrains, pratiques, tournois, engagements et formations |
157
- | REST typé | récupération de ressources individuelles avec modèles Pydantic v2 |
157
+ | REST typé | récupération de ressources individuelles avec modèles typés et conversion contrôlée |
158
158
  | Async | méthodes `*_async()` — source de vérité ; sync délègue via `_run_async()` |
159
159
  | Cache | cache HTTP `hishel`, sessions `httpx` réutilisées, retries configurables, SQLite séparés sync/async |
160
160
  | Sécurité | masquage des tokens dans les logs, CodeQL scanning, Dependabot |
@@ -229,7 +229,7 @@ entraineur = client.get_entraineur(44444)
229
229
 
230
230
  Les assets Directus et autres collections peuvent être exploités via les méthodes REST/listing dédiées exposées par le client lorsque disponibles.
231
231
 
232
- Les réponses sont converties en modèles Pydantic lorsque le schéma est connu, ce qui apporte validation, autocomplétion et sérialisation propre.
232
+ Les réponses sont converties en modèles typés lorsque le schéma est connu. Les contrats sensibles, notamment la configuration des tokens, utilisent une validation Pydantic stricte.
233
233
 
234
234
  ---
235
235
 
@@ -283,7 +283,7 @@ src/ffbb_data_client/
283
283
  │ ├── api_ffbb_app_client.py # Client REST FFBB (async source of truth)
284
284
  │ └── meilisearch_ffbb_client.py # Client recherche Meilisearch
285
285
  ├── helpers/ # Requêtes HTTP, multi-search, conversions
286
- ├── models/ # Modèles Pydantic v2
286
+ ├── models/ # Modèles typés (dataclasses et Pydantic v2)
287
287
  ├── utils/ # cache (sync/async séparés), tokens, logging sécurisé
288
288
  └── data/ # schémas et métadonnées embarqués
289
289
  ```
@@ -38,7 +38,7 @@
38
38
  `ffbb_data_client` simplifie l'accès aux API FFBB et à leurs index Meilisearch avec :
39
39
 
40
40
  - une façade unique : `FFBBDataClient` ;
41
- - des modèles Pydantic v2 typés ;
41
+ - des modèles typés, avec validation Pydantic v2 sur les contrats sensibles ;
42
42
  - une API utilisable en synchrone ou en `async/await` ;
43
43
  - une gestion automatique des tokens via `TokenManager` ;
44
44
  - du cache HTTP configurable via `hishel` ;
@@ -98,7 +98,7 @@ lives = client.get_lives()
98
98
  | API FFBB | clubs, compétitions, organismes, saisons, poules, classements, rencontres, lives |
99
99
  | Entités additionnelles | EDF (matches, joueurs, rosters, équipes), Genius Sport, Rematch Videos |
100
100
  | Recherche | organismes, compétitions, rencontres, salles, terrains, pratiques, tournois, engagements et formations |
101
- | REST typé | récupération de ressources individuelles avec modèles Pydantic v2 |
101
+ | REST typé | récupération de ressources individuelles avec modèles typés et conversion contrôlée |
102
102
  | Async | méthodes `*_async()` — source de vérité ; sync délègue via `_run_async()` |
103
103
  | Cache | cache HTTP `hishel`, sessions `httpx` réutilisées, retries configurables, SQLite séparés sync/async |
104
104
  | Sécurité | masquage des tokens dans les logs, CodeQL scanning, Dependabot |
@@ -173,7 +173,7 @@ entraineur = client.get_entraineur(44444)
173
173
 
174
174
  Les assets Directus et autres collections peuvent être exploités via les méthodes REST/listing dédiées exposées par le client lorsque disponibles.
175
175
 
176
- Les réponses sont converties en modèles Pydantic lorsque le schéma est connu, ce qui apporte validation, autocomplétion et sérialisation propre.
176
+ Les réponses sont converties en modèles typés lorsque le schéma est connu. Les contrats sensibles, notamment la configuration des tokens, utilisent une validation Pydantic stricte.
177
177
 
178
178
  ---
179
179
 
@@ -227,7 +227,7 @@ src/ffbb_data_client/
227
227
  │ ├── api_ffbb_app_client.py # Client REST FFBB (async source of truth)
228
228
  │ └── meilisearch_ffbb_client.py # Client recherche Meilisearch
229
229
  ├── helpers/ # Requêtes HTTP, multi-search, conversions
230
- ├── models/ # Modèles Pydantic v2
230
+ ├── models/ # Modèles typés (dataclasses et Pydantic v2)
231
231
  ├── utils/ # cache (sync/async séparés), tokens, logging sécurisé
232
232
  └── data/ # schémas et métadonnées embarqués
233
233
  ```
@@ -64,7 +64,8 @@ Usage:
64
64
 
65
65
  .. code-block:: python
66
66
 
67
- from ffbb_data_client import Live, MultiSearchQuery, CompetitionType
67
+ from ffbb_data_client import MultiSearchQuery
68
+ from ffbb_data_client.models import CompetitionType, Live
68
69
 
69
70
  # Create search queries
70
71
  query = MultiSearchQuery("basketball")
@@ -77,7 +77,7 @@ Cache Management
77
77
  from ffbb_data_client.utils.cache_manager import CacheManager
78
78
 
79
79
  # Clear token cache
80
- CacheManager().clear()
80
+ CacheManager().clear_cache()
81
81
 
82
82
  Configuration Management (v1.2.0+)
83
83
  ====================================
@@ -296,8 +296,7 @@ Robust Error Handling
296
296
 
297
297
  .. code-block:: python
298
298
 
299
- from ffbb_data_client import FFBBDataClient
300
- import requests
299
+ from ffbb_data_client import FFBBDataClient, FFBBError
301
300
 
302
301
  try:
303
302
  client = FFBBDataClient.create(MEILISEARCH_TOKEN, API_TOKEN)
@@ -307,8 +306,8 @@ Robust Error Handling
307
306
 
308
307
  except ValueError as e:
309
308
  print(f"Configuration error: {e}")
310
- except requests.RequestException as e:
311
- print(f"Network error: {e}")
309
+ except FFBBError as e:
310
+ print(f"FFBB error: {e}")
312
311
  except Exception as e:
313
312
  print(f"Unexpected error: {e}")
314
313
 
@@ -320,30 +319,18 @@ Using Cached Sessions
320
319
 
321
320
  .. code-block:: python
322
321
 
323
- from requests_cache import CachedSession
324
322
  from ffbb_data_client import FFBBDataClient
323
+ from ffbb_data_client.utils.cache_manager import CacheConfig, CacheManager
325
324
 
326
- # Create custom cached session
327
- cached_session = CachedSession(
328
- 'ffbb_cache',
329
- backend='sqlite',
330
- expire_after=3600 # 1 hour cache
331
- )
332
-
333
- # Create client with custom session
334
- api_client = ApiFFBBAppClient(
335
- bearer_token=API_TOKEN,
336
- cached_session=cached_session
337
- )
325
+ cache = CacheManager(CacheConfig(backend="sqlite", expire_after=3600))
338
326
 
339
- meilisearch_client = MeilisearchFFBBClient(
340
- bearer_token=MEILISEARCH_TOKEN,
341
- cached_session=cached_session
327
+ client = FFBBDataClient.create(
328
+ api_bearer_token=API_TOKEN,
329
+ meilisearch_bearer_token=MEILISEARCH_TOKEN,
330
+ cached_session=cache.session,
331
+ async_cached_session=cache.async_session,
342
332
  )
343
333
 
344
- # Create main client
345
- client = FFBBDataClient(api_client, meilisearch_client)
346
-
347
334
  Data Export and Processing
348
335
  ==========================
349
336
 
@@ -102,12 +102,12 @@ Migration from v1.1.x to v1.2.0 (Upcoming)
102
102
  tokens = TokenManager.get_tokens(use_cache=False)
103
103
 
104
104
  # Use CacheManager directly for cache operations
105
- CacheManager().clear()
105
+ CacheManager().clear_cache()
106
106
 
107
107
  **Migration Steps:**
108
108
 
109
109
  1. Update TokenManager.get_tokens() calls to use cache_config parameter
110
- 2. Replace TokenManager.clear_cache() with CacheManager().clear()
110
+ 2. Replace TokenManager.clear_cache() with CacheManager().clear_cache()
111
111
  3. Import CacheManager from ffbb_data_client.utils.cache_manager
112
112
 
113
113
  ---
@@ -165,4 +165,4 @@ Token Management Updates
165
165
  # After v1.2.0
166
166
  tokens = TokenManager.get_tokens(use_cache=False)
167
167
  from ffbb_data_client.utils.cache_manager import CacheManager
168
- CacheManager().clear()
168
+ CacheManager().clear_cache()
@@ -4,7 +4,6 @@ pydantic>=2.13.4
4
4
  python-dateutil>=2.9.0.post0
5
5
  python-dotenv>=1.2.2
6
6
  readme_renderer[md]>=44.0
7
- requests_cache
8
7
  # Requirements file for ReadTheDocs, check .readthedocs.yml.
9
8
  # To build the module reference correctly, make sure every external package
10
9
  # under `install_requires` in `setup.cfg` is also listed here!
@@ -10,6 +10,16 @@ from .clients.api_ffbb_app_client import ApiFFBBAppClient
10
10
  from .clients.ffbb_data_client import FFBBDataClient
11
11
  from .clients.meilisearch_client import MeilisearchClient
12
12
  from .clients.meilisearch_ffbb_client import MeilisearchFFBBClient
13
+ from .exceptions import (
14
+ FFBBAuthenticationError,
15
+ FFBBError,
16
+ FFBBHTTPError,
17
+ FFBBNotFoundError,
18
+ FFBBRateLimitError,
19
+ FFBBResponseValidationError,
20
+ FFBBServerError,
21
+ FFBBTransportError,
22
+ )
13
23
  from .helpers.meilisearch_client_extension import MeilisearchClientExtension
14
24
  from .helpers.multi_search_query_helper import generate_queries
15
25
  from .models.club_contacts import ClubContacts
@@ -76,6 +86,15 @@ __all__ = [
76
86
  "FFBBDataClient",
77
87
  "MeilisearchClient",
78
88
  "MeilisearchFFBBClient",
89
+ # Exceptions
90
+ "FFBBError",
91
+ "FFBBHTTPError",
92
+ "FFBBNotFoundError",
93
+ "FFBBAuthenticationError",
94
+ "FFBBRateLimitError",
95
+ "FFBBServerError",
96
+ "FFBBTransportError",
97
+ "FFBBResponseValidationError",
79
98
  # Helpers
80
99
  "MeilisearchClientExtension",
81
100
  "generate_queries",
@@ -8,6 +8,7 @@ from __future__ import annotations
8
8
 
9
9
  import asyncio
10
10
  import logging
11
+ import os
11
12
  import re
12
13
  import time
13
14
  from collections import OrderedDict
@@ -112,11 +113,18 @@ l'ensemble des données publiques de la **Fédération Française de BasketBall*
112
113
  lifespan=lifespan,
113
114
  )
114
115
 
115
- # Enable CORS for all origins
116
+ _cors_origins = [
117
+ origin.strip()
118
+ for origin in os.getenv(
119
+ "FFBB_CORS_ORIGINS", "http://localhost:3000,http://localhost:8000"
120
+ ).split(",")
121
+ if origin.strip()
122
+ ]
123
+
116
124
  app.add_middleware(
117
125
  CORSMiddleware,
118
- allow_origins=["*"],
119
- allow_credentials=True,
126
+ allow_origins=_cors_origins,
127
+ allow_credentials=False,
120
128
  allow_methods=["*"],
121
129
  allow_headers=["*"],
122
130
  )
@@ -849,9 +857,25 @@ async def get_club_matches(
849
857
  except Exception:
850
858
  _logo_cache[s_opp_org] = None
851
859
 
860
+ parsed_cat = parse_categorie(f"{local_team_raw} {comp_nom}".strip())
861
+ team_category = parsed_cat.categorie or "SENIOR"
862
+ team_gender = parsed_cat.sexe or "M"
863
+ if "MIXTE" in f"{local_team_raw} {comp_nom}".upper():
864
+ team_gender = "MIXTE"
865
+
866
+ m_num = re.search(r"[- ](\d+)$", (local_team_raw or "").strip())
867
+ team_num = (
868
+ int(m_num.group(1))
869
+ if m_num
870
+ else (parsed_cat.numero_equipe if parsed_cat.numero_equipe else 1)
871
+ )
872
+
852
873
  match_data: dict[str, Any] = {
853
874
  "ffbbMatchId": m_id,
854
875
  "team": scba_team,
876
+ "sexe": team_gender,
877
+ "categorie": team_category,
878
+ "numeroEquipe": team_num,
855
879
  "opponent": opponent,
856
880
  "date": format_french_date(date_iso),
857
881
  "dateISO": date_iso,
@@ -10,6 +10,7 @@ from ...config import (
10
10
  ENDPOINT_POULES,
11
11
  ENDPOINT_SAISONS,
12
12
  )
13
+ from ...exceptions import FFBBNotFoundError
13
14
  from ...helpers.http_requests_utils import http_get_json_async, url_with_params
14
15
  from ...models.field_set import FieldSet
15
16
  from ...models.get_competition_response import GetCompetitionResponse
@@ -75,13 +76,13 @@ class CompetitionMixin:
75
76
  final_url,
76
77
  self.headers,
77
78
  debug=self.debug,
78
- cached_session=self.async_cached_session or self.async_cached_session,
79
+ cached_session=cached_session or self.async_cached_session,
79
80
  )
80
81
  actual_data = data.get("data") if data and isinstance(data, dict) else data
81
82
  if actual_data:
82
83
  return GetCompetitionResponse.from_dict(actual_data)
83
84
  return None
84
- except Exception as e:
85
+ except FFBBNotFoundError as e:
85
86
  if self.debug:
86
87
  self.logger.error(f"Error in get_competition_async: {e}")
87
88
  return None
@@ -129,13 +130,13 @@ class CompetitionMixin:
129
130
  final_url,
130
131
  self.headers,
131
132
  debug=self.debug,
132
- cached_session=self.async_cached_session or self.async_cached_session,
133
+ cached_session=cached_session or self.async_cached_session,
133
134
  )
134
135
  actual_data = data.get("data") if data and isinstance(data, dict) else data
135
136
  if actual_data:
136
137
  return GetPouleResponse.from_dict(actual_data)
137
138
  return None
138
- except Exception as e:
139
+ except FFBBNotFoundError as e:
139
140
  if self.debug:
140
141
  self.logger.error(f"Error in get_poule_async: {e}")
141
142
  return None
@@ -205,13 +206,13 @@ class CompetitionMixin:
205
206
  final_url,
206
207
  self.headers,
207
208
  debug=self.debug,
208
- cached_session=self.async_cached_session or self.async_cached_session,
209
+ cached_session=cached_session or self.async_cached_session,
209
210
  )
210
211
  actual_data = data.get("data") if data and isinstance(data, dict) else data
211
212
  if actual_data and isinstance(actual_data, list):
212
213
  return GetSaisonsResponse.from_list(actual_data)
213
214
  return []
214
- except Exception as e:
215
+ except FFBBNotFoundError as e:
215
216
  if self.debug:
216
217
  self.logger.error(f"Error in get_saisons_async: {e}")
217
218
  return []