ffbb-data-client 2.4.19__tar.gz → 2.4.20__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 (399) hide show
  1. ffbb_data_client-2.4.20/PKG-INFO +375 -0
  2. ffbb_data_client-2.4.20/README.md +319 -0
  3. ffbb_data_client-2.4.20/src/ffbb_data_client.egg-info/PKG-INFO +375 -0
  4. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client.egg-info/scm_version.json +2 -2
  5. ffbb_data_client-2.4.19/PKG-INFO +0 -377
  6. ffbb_data_client-2.4.19/README.md +0 -321
  7. ffbb_data_client-2.4.19/src/ffbb_data_client.egg-info/PKG-INFO +0 -377
  8. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.agents/rules/antigravity-rtk-rules.md +0 -0
  9. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.coveragerc +0 -0
  10. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.gitattributes +0 -0
  11. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/FUNDING.yml +0 -0
  12. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  13. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  14. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  15. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/dependabot.yml +0 -0
  16. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/scripts/ai-pr-reviewer.cjs +0 -0
  17. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/scripts/check_wrapper_parity.py +0 -0
  18. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/workflows/ai-pr-reviewer.yml +0 -0
  19. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/workflows/check_wrapper_parity.yml +0 -0
  20. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/workflows/ci.yml +0 -0
  21. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/workflows/codeql.yml +0 -0
  22. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/workflows/deploy-pages.yml +0 -0
  23. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/workflows/keep-ffbb-api-discovery-alive.yml +0 -0
  24. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/workflows/publish.yml +0 -0
  25. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/workflows/release-after-discovery-merge.yml +0 -0
  26. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.github/workflows/update-ffbb-api-discovery.yml +0 -0
  27. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.gitignore +0 -0
  28. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.isort.cfg +0 -0
  29. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.jules/bolt.md +0 -0
  30. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.omc/skills/codeql-security-hardening-expertise.md +0 -0
  31. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.omc/skills/pypi-immutable-release-workflow.md +0 -0
  32. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.omc/skills/terminal-output-hygiene-expertise.md +0 -0
  33. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.pre-commit-config.yaml +0 -0
  34. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/.readthedocs.yml +0 -0
  35. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/AGENTS.md +0 -0
  36. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/AUTHORS.rst +0 -0
  37. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/CHANGELOG.md +0 -0
  38. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/CODE_OF_CONDUCT.md +0 -0
  39. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/CONTRIBUTING.rst +0 -0
  40. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/DESIGN.md +0 -0
  41. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/Dockerfile +0 -0
  42. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/LICENSE.txt +0 -0
  43. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/LOCAL_CI_GUIDE.md +0 -0
  44. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/RELEASE_NOTES.md +0 -0
  45. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/SECURITY.md +0 -0
  46. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/data/api.ffbb.app.json +0 -0
  47. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/data/api_update_summary.md +0 -0
  48. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/data/collections.json +0 -0
  49. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/data/endpoint_discovery.json +0 -0
  50. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/data/field_dictionary.json +0 -0
  51. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/data/indexes.json +0 -0
  52. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/data/meilisearch-prod.ffbb.app.json +0 -0
  53. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/data/openapi.json +0 -0
  54. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/data/openapi_full.json +0 -0
  55. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/data/type_discovery_corrections.json +0 -0
  56. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/Makefile +0 -0
  57. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/_static/.gitignore +0 -0
  58. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/architecture.rst +0 -0
  59. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/authors.rst +0 -0
  60. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/changelog.rst +0 -0
  61. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/conf.py +0 -0
  62. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/contributing.rst +0 -0
  63. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/data_dictionary.rst +0 -0
  64. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/examples.rst +0 -0
  65. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/index.rst +0 -0
  66. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/license.rst +0 -0
  67. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/migration.rst +0 -0
  68. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/readme.rst +0 -0
  69. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/requirements.txt +0 -0
  70. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/test_strategy.md +0 -0
  71. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/docs/testing_conventions.md +0 -0
  72. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/examples/README.md +0 -0
  73. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/examples/complete_usage_example.py +0 -0
  74. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/examples/quick_start.py +0 -0
  75. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/examples/team_ranking_analysis.py +0 -0
  76. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/pyproject.toml +0 -0
  77. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/pytest.ini +0 -0
  78. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/run-ci-locally.sh +0 -0
  79. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/scripts/benchmark_concurrent_pagination.py +0 -0
  80. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/scripts/benchmark_search_organisme.py +0 -0
  81. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/scripts/discover_endpoints.py +0 -0
  82. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/scripts/discover_types.py +0 -0
  83. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/setup.cfg +0 -0
  84. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/setup.py +0 -0
  85. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/__init__.py +0 -0
  86. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/api.py +0 -0
  87. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/clients/__init__.py +0 -0
  88. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/clients/_helpers.py +0 -0
  89. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/clients/_mixins/__init__.py +0 -0
  90. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/clients/_mixins/competition.py +0 -0
  91. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/clients/_mixins/external.py +0 -0
  92. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/clients/_mixins/getters.py +0 -0
  93. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/clients/_mixins/list_methods.py +0 -0
  94. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/clients/_mixins/organisme.py +0 -0
  95. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/clients/_rest_facade.py +0 -0
  96. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/clients/_search_facade.py +0 -0
  97. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/clients/api_ffbb_app_client.py +0 -0
  98. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/clients/ffbb_data_client.py +0 -0
  99. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/clients/meilisearch_client.py +0 -0
  100. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/clients/meilisearch_ffbb_client.py +0 -0
  101. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/config.py +0 -0
  102. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/data/__init__.py +0 -0
  103. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/data/collections.json +0 -0
  104. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/data/endpoint_discovery.json +0 -0
  105. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/data/field_dictionary.json +0 -0
  106. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/data/indexes.json +0 -0
  107. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/data/openapi.json +0 -0
  108. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/exceptions.py +0 -0
  109. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/helpers/__init__.py +0 -0
  110. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/helpers/http_requests_helper.py +0 -0
  111. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/helpers/http_requests_utils.py +0 -0
  112. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/helpers/meilisearch_client_extension.py +0 -0
  113. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/helpers/multi_search_query_helper.py +0 -0
  114. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/helpers/normalization.py +0 -0
  115. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/__init__.py +0 -0
  116. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/affiche.py +0 -0
  117. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/cartographie.py +0 -0
  118. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/categorie.py +0 -0
  119. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/categorie_type.py +0 -0
  120. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/clock.py +0 -0
  121. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/club_contacts.py +0 -0
  122. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/code.py +0 -0
  123. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/commune.py +0 -0
  124. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competition_fields.py +0 -0
  125. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competition_id.py +0 -0
  126. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competition_id_categorie.py +0 -0
  127. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competition_id_sexe.py +0 -0
  128. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competition_id_type_competition.py +0 -0
  129. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competition_id_type_competition_generique.py +0 -0
  130. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competition_origine.py +0 -0
  131. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competition_origine_categorie.py +0 -0
  132. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competition_origine_type_competition.py +0 -0
  133. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competition_origine_type_competition_generique.py +0 -0
  134. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competition_type.py +0 -0
  135. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competitions_facet_distribution.py +0 -0
  136. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competitions_facet_stats.py +0 -0
  137. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competitions_hit.py +0 -0
  138. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competitions_multi_search_query.py +0 -0
  139. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/competitions_query.py +0 -0
  140. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/configuration_models.py +0 -0
  141. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/contact_info.py +0 -0
  142. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/content_multi_search_query.py +0 -0
  143. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/coordonnees.py +0 -0
  144. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/coordonnees_type.py +0 -0
  145. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/document_flyer.py +0 -0
  146. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/document_flyer_type.py +0 -0
  147. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/engagement_contacts.py +0 -0
  148. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/engagements_facet_distribution.py +0 -0
  149. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/engagements_facet_stats.py +0 -0
  150. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/engagements_hit.py +0 -0
  151. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/engagements_multi_search_query.py +0 -0
  152. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/etat.py +0 -0
  153. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/external_competition_id.py +0 -0
  154. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/external_id.py +0 -0
  155. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/facet_distribution.py +0 -0
  156. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/facet_stats.py +0 -0
  157. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/field_set.py +0 -0
  158. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/folder.py +0 -0
  159. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/formation_session.py +0 -0
  160. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/formations_facet_distribution.py +0 -0
  161. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/formations_facet_stats.py +0 -0
  162. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/formations_hit.py +0 -0
  163. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/formations_multi_search_query.py +0 -0
  164. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/game_stats_model.py +0 -0
  165. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/game_stats_models.py +0 -0
  166. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/generic_search.py +0 -0
  167. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/geo.py +0 -0
  168. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/geo_sort_order.py +0 -0
  169. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_commune_response.py +0 -0
  170. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_competition_response.py +0 -0
  171. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_configuration_response.py +0 -0
  172. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_engagement_response.py +0 -0
  173. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_entraineur_response.py +0 -0
  174. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_formation_response.py +0 -0
  175. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_officiel_response.py +0 -0
  176. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_organisme_response.py +0 -0
  177. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_poule_response.py +0 -0
  178. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_pratique_response.py +0 -0
  179. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_rencontre_response.py +0 -0
  180. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_saisons_response.py +0 -0
  181. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_salle_response.py +0 -0
  182. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_terrain_response.py +0 -0
  183. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/get_tournoi_response.py +0 -0
  184. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/gradient_color.py +0 -0
  185. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/hit.py +0 -0
  186. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/id_engagement_equipe.py +0 -0
  187. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/id_organisme_equipe.py +0 -0
  188. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/id_organisme_equipe1_logo.py +0 -0
  189. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/id_poule.py +0 -0
  190. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/jour.py +0 -0
  191. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/label.py +0 -0
  192. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/labellisation.py +0 -0
  193. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/live.py +0 -0
  194. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/lives.py +0 -0
  195. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/logo.py +0 -0
  196. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/multi_search_queries.py +0 -0
  197. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/multi_search_query.py +0 -0
  198. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/multi_search_result_competitions.py +0 -0
  199. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/multi_search_result_engagements.py +0 -0
  200. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/multi_search_result_formations.py +0 -0
  201. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/multi_search_result_organismes.py +0 -0
  202. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/multi_search_result_pratiques.py +0 -0
  203. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/multi_search_result_rencontres.py +0 -0
  204. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/multi_search_result_salles.py +0 -0
  205. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/multi_search_result_terrains.py +0 -0
  206. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/multi_search_result_tournois.py +0 -0
  207. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/multi_search_results.py +0 -0
  208. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/multi_search_results_class.py +0 -0
  209. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/nature_sol.py +0 -0
  210. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/niveau.py +0 -0
  211. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/niveau_class.py +0 -0
  212. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/niveau_extractor.py +0 -0
  213. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/niveau_info.py +0 -0
  214. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/niveau_models.py +0 -0
  215. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/niveau_type.py +0 -0
  216. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/objectif.py +0 -0
  217. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/organisateur.py +0 -0
  218. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/organisateur_type.py +0 -0
  219. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/organisme_fields.py +0 -0
  220. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/organisme_id_pere.py +0 -0
  221. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/organismes_facet_distribution.py +0 -0
  222. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/organismes_facet_stats.py +0 -0
  223. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/organismes_hit.py +0 -0
  224. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/organismes_multi_search_query.py +0 -0
  225. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/organismes_query.py +0 -0
  226. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/phase_code.py +0 -0
  227. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/poule.py +0 -0
  228. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/poule_fields.py +0 -0
  229. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/poule_rencontre_item_model.py +0 -0
  230. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/poules_models.py +0 -0
  231. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/poules_query.py +0 -0
  232. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/pratique.py +0 -0
  233. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/pratiques_facet_distribution.py +0 -0
  234. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/pratiques_facet_stats.py +0 -0
  235. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/pratiques_hit.py +0 -0
  236. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/pratiques_hit_type.py +0 -0
  237. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/pratiques_multi_search_query.py +0 -0
  238. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/pratiques_type_class.py +0 -0
  239. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/publication_internet.py +0 -0
  240. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/purple_logo.py +0 -0
  241. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/query_fields_manager.py +0 -0
  242. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/ranking_engagement.py +0 -0
  243. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/rankings_models.py +0 -0
  244. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/rencontres_engagement.py +0 -0
  245. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/rencontres_facet_distribution.py +0 -0
  246. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/rencontres_facet_stats.py +0 -0
  247. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/rencontres_hit.py +0 -0
  248. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/rencontres_multi_search_query.py +0 -0
  249. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/saison.py +0 -0
  250. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/saison_fields.py +0 -0
  251. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/saisons_models.py +0 -0
  252. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/saisons_query.py +0 -0
  253. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/salle.py +0 -0
  254. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/salles_facet_distribution.py +0 -0
  255. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/salles_facet_stats.py +0 -0
  256. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/salles_hit.py +0 -0
  257. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/salles_multi_search_query.py +0 -0
  258. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/sexe.py +0 -0
  259. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/sexe_class.py +0 -0
  260. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/source.py +0 -0
  261. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/status.py +0 -0
  262. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/team_engagement.py +0 -0
  263. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/team_ranking.py +0 -0
  264. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/terrains_categorie_championnat_3x3_libelle.py +0 -0
  265. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/terrains_facet_distribution.py +0 -0
  266. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/terrains_facet_stats.py +0 -0
  267. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/terrains_hit.py +0 -0
  268. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/terrains_multi_search_query.py +0 -0
  269. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/terrains_name.py +0 -0
  270. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/terrains_sexe_enum.py +0 -0
  271. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/terrains_storage.py +0 -0
  272. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/tournoi_type_class.py +0 -0
  273. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/tournoi_type_enum.py +0 -0
  274. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/tournoi_types_3x3.py +0 -0
  275. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/tournoi_types_3x3_libelle.py +0 -0
  276. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/tournoi_types_3x3_libelle_enum.py +0 -0
  277. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/tournois_facet_distribution.py +0 -0
  278. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/tournois_facet_stats.py +0 -0
  279. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/tournois_hit.py +0 -0
  280. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/tournois_hit_type.py +0 -0
  281. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/tournois_libelle.py +0 -0
  282. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/tournois_multi_search_query.py +0 -0
  283. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/type_association.py +0 -0
  284. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/type_association_libelle.py +0 -0
  285. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/type_class.py +0 -0
  286. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/type_competition.py +0 -0
  287. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/type_competition_generique.py +0 -0
  288. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/type_enum.py +0 -0
  289. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/models/type_league.py +0 -0
  290. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/py.typed +0 -0
  291. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/utils/__init__.py +0 -0
  292. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/utils/cache_manager.py +0 -0
  293. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/utils/concurrency_utils.py +0 -0
  294. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/utils/converter_utils.py +0 -0
  295. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/utils/input_validation.py +0 -0
  296. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/utils/retry_utils.py +0 -0
  297. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/utils/secure_logging.py +0 -0
  298. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client/utils/token_manager.py +0 -0
  299. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client.egg-info/SOURCES.txt +0 -0
  300. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client.egg-info/dependency_links.txt +0 -0
  301. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client.egg-info/not-zip-safe +0 -0
  302. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client.egg-info/requires.txt +0 -0
  303. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client.egg-info/scm_file_list.json +0 -0
  304. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/src/ffbb_data_client.egg-info/top_level.txt +0 -0
  305. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/conftest.py +0 -0
  306. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/e2e/__init__.py +0 -0
  307. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/e2e/conftest.py +0 -0
  308. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/integration/__init__.py +0 -0
  309. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/integration/conftest.py +0 -0
  310. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/integration/test_500_user_journey.py +0 -0
  311. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/integration/test_501_user_journey_v3.py +0 -0
  312. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/integration/test_502_enhanced_integration.py +0 -0
  313. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/integration/test_503_secure_logging.py +0 -0
  314. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/integration/test_504_input_validation.py +0 -0
  315. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/integration/test_505_retry_timeout.py +0 -0
  316. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/integration/test_506_raw_json_model_conversion.py +0 -0
  317. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/__init__.py +0 -0
  318. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/__init__.py +0 -0
  319. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_200_api_ffbb_app_client.py +0 -0
  320. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_201_unit_tests_core.py +0 -0
  321. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_202_meilisearch_client.py +0 -0
  322. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_203_meilisearch_client_extension.py +0 -0
  323. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_204_ffbb_data_client.py +0 -0
  324. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_205_meilisearch_ffbb_client.py +0 -0
  325. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_206_coverage_gaps_clients.py +0 -0
  326. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_207_coverage_clients_extended.py +0 -0
  327. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_208_new_methods_coverage.py +0 -0
  328. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_209_automatic_token_resolution.py +0 -0
  329. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_210_targeted_clients_helpers_coverage.py +0 -0
  330. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_api_optimizations.py +0 -0
  331. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_async_methods.py +0 -0
  332. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_meilisearch_async.py +0 -0
  333. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_search_many.py +0 -0
  334. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_v2_backport_search.py +0 -0
  335. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_v3_new_features.py +0 -0
  336. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_v4_aiter_and_contacts.py +0 -0
  337. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/clients/test_warm_cache.py +0 -0
  338. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/conftest.py +0 -0
  339. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/helpers/__init__.py +0 -0
  340. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/helpers/test_400_http_helpers.py +0 -0
  341. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/helpers/test_meilisearch_client_extension_recursive_pagination.py +0 -0
  342. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/helpers/test_meilisearch_pagination_concurrent.py +0 -0
  343. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/helpers/test_normalization.py +0 -0
  344. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/__init__.py +0 -0
  345. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_100_competition_id_categorie.py +0 -0
  346. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_101_competition_id_sexe.py +0 -0
  347. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_102_competition_id_type_competition.py +0 -0
  348. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_103_competition_id_type_competition_generique.py +0 -0
  349. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_104_competition_origine_categorie.py +0 -0
  350. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_105_competition_origine_type_competition_generique.py +0 -0
  351. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_106_competition_origine.py +0 -0
  352. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_107_id_engagement_equipe.py +0 -0
  353. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_108_id_organisme_equipe.py +0 -0
  354. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_109_id_organisme_equipe1_logo.py +0 -0
  355. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_110_labellisation.py +0 -0
  356. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_111_niveau_class.py +0 -0
  357. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_112_purple_logo.py +0 -0
  358. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_113_salle.py +0 -0
  359. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_114_tournoi_type_class.py +0 -0
  360. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_115_type_association_libelle.py +0 -0
  361. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_116_type_competition_generique.py +0 -0
  362. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_117_organisateur.py +0 -0
  363. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_118_competition_id.py +0 -0
  364. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_119_terrains_inner_models.py +0 -0
  365. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_120_pratiques_inner_models.py +0 -0
  366. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_121_to_dict_round_trip.py +0 -0
  367. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_122_coverage_gaps.py +0 -0
  368. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_123_missing_coverage.py +0 -0
  369. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_123_v2_backport.py +0 -0
  370. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_124_targeted_coverage_gains.py +0 -0
  371. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/models/test_dx_aliases.py +0 -0
  372. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/test_310_discover_endpoints.py +0 -0
  373. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/test_311_normalize_team_name.py +0 -0
  374. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/utils/__init__.py +0 -0
  375. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/utils/test_300_secure_logging.py +0 -0
  376. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/utils/test_301_input_validation.py +0 -0
  377. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/utils/test_302_retry_utils.py +0 -0
  378. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/utils/test_303_cache_manager.py +0 -0
  379. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/utils/test_304_config.py +0 -0
  380. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/utils/test_305_token_manager.py +0 -0
  381. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/utils/test_306_converter_utils.py +0 -0
  382. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/utils/test_307_coverage_gaps_utils.py +0 -0
  383. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/utils/test_308_converter_utils_extended.py +0 -0
  384. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tests/unit/utils/test_309_concurrency_utils.py +0 -0
  385. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tools/update_agents_md.py +0 -0
  386. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/tox.ini +0 -0
  387. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/website/assets/apple-touch-icon.png +0 -0
  388. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/website/assets/favicon-192x192.png +0 -0
  389. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/website/assets/favicon-48x48.png +0 -0
  390. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/website/assets/favicon-96x96.png +0 -0
  391. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/website/assets/favicon.ico +0 -0
  392. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/website/assets/logo.webp +0 -0
  393. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/website/css/style.css +0 -0
  394. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/website/favicon.ico +0 -0
  395. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/website/index.html +0 -0
  396. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/website/llms-full.txt +0 -0
  397. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/website/llms.txt +0 -0
  398. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/website/robots.txt +0 -0
  399. {ffbb_data_client-2.4.19 → ffbb_data_client-2.4.20}/website/sitemap.xml +0 -0
@@ -0,0 +1,375 @@
1
+ Metadata-Version: 2.4
2
+ Name: ffbb-data-client
3
+ Version: 2.4.20
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
+ Home-page: https://github.com/nickdesi/ffbb-data-client
6
+ Author: nickdesi
7
+ Author-email: nicolas.desimone@gmail.com
8
+ License: Apache-2.0
9
+ Project-URL: Homepage, https://nickdesi.github.io/ffbb-data-client/
10
+ Project-URL: Documentation, https://nickdesi.github.io/ffbb-data-client/
11
+ Project-URL: Source, https://github.com/nickdesi/ffbb-data-client
12
+ Project-URL: Changelog, https://github.com/nickdesi/ffbb-data-client/blob/master/CHANGELOG.md
13
+ Project-URL: Tracker, https://github.com/nickdesi/ffbb-data-client/issues
14
+ Project-URL: Release Notes, https://github.com/nickdesi/ffbb-data-client/blob/master/RELEASE_NOTES.md
15
+ Keywords: ffbb-api,api-ffbb,ffbb,api,basketball,basket-france,statistiques,python-sdk,pydantic,asynchrone,meilisearch,ffbb-api-client,ffbb-api-client-v2,open-data-basket,live-scores
16
+ Platform: any
17
+ Classifier: Development Status :: 4 - Beta
18
+ Classifier: Programming Language :: Python
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Programming Language :: Python :: 3.14
25
+ Classifier: Intended Audience :: Developers
26
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
+ Classifier: Topic :: Software Development :: Libraries
28
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
29
+ Classifier: Framework :: AsyncIO
30
+ Classifier: Operating System :: OS Independent
31
+ Classifier: Natural Language :: French
32
+ Requires-Python: >=3.10
33
+ Description-Content-Type: text/markdown; charset=UTF-8
34
+ License-File: LICENSE.txt
35
+ Requires-Dist: python-dotenv>=1.2.2
36
+ Requires-Dist: python-dateutil>=2.9.0.post0
37
+ Requires-Dist: httpx>=0.28.1
38
+ Requires-Dist: hishel[async]>=1.3.0
39
+ Requires-Dist: pydantic>=2.13.4
40
+ Provides-Extra: server
41
+ Requires-Dist: fastapi>=0.115.0; extra == "server"
42
+ Requires-Dist: uvicorn[standard]>=0.34.0; extra == "server"
43
+ Requires-Dist: starlette>=0.45.0; extra == "server"
44
+ Provides-Extra: testing
45
+ Requires-Dist: setuptools>=82.0.1; extra == "testing"
46
+ Requires-Dist: coverage>=7.13.5; extra == "testing"
47
+ Requires-Dist: pytest>=9.0.3; extra == "testing"
48
+ Requires-Dist: pytest-xdist>=3.8.0; extra == "testing"
49
+ Requires-Dist: pytest-cov>=7.1.0; extra == "testing"
50
+ Requires-Dist: respx>=0.23.1; extra == "testing"
51
+ Requires-Dist: pytest-asyncio>=1.3.0; extra == "testing"
52
+ Requires-Dist: readme_renderer[md]>=44.0; extra == "testing"
53
+ Provides-Extra: typing
54
+ Requires-Dist: types-python-dateutil>=2.9.0.20260408; extra == "typing"
55
+ Dynamic: license-file
56
+
57
+ <div align="center">
58
+
59
+ <img src="https://raw.githubusercontent.com/nickdesi/ffbb-data-client/master/website/assets/logo.webp" alt="FFBB Data Client Logo" width="160" style="margin-bottom: 12px; border-radius: 20px; box-shadow: 0 8px 24px rgba(255, 107, 0, 0.25);" />
60
+
61
+ # 🏀 FFBB Data Client
62
+ ### L'API Officielle du Basket Français en Python & Recherche Meilisearch
63
+
64
+ **Le SDK Python moderne, ultra-rapide, asynchrone et typé pour exploiter l'API de la Fédération Française de BasketBall (FFBB) : clubs, compétitions nationales & régionales, scores en direct (lives), classements, calendriers, gymnases/salles et détection de niveau.**
65
+
66
+ *Alternative officielle, haute performance et maintenue aux anciens packages obsolètes `ffbb-api-client` et `ffbb-api-client-v2`.*
67
+
68
+ <p align="center">
69
+ <a href="https://pypi.org/project/ffbb-data-client/"><img src="https://img.shields.io/pypi/v/ffbb-data-client?color=ff6b00&label=PyPI%20Release&logo=python&logoColor=white&style=for-the-badge" alt="PyPI version" /></a>
70
+ <a href="https://pypi.org/project/ffbb-data-client/"><img src="https://img.shields.io/pypi/pyversions/ffbb-data-client?logo=python&logoColor=white&style=for-the-badge&color=238636" alt="Python versions" /></a>
71
+ <a href="https://github.com/nickdesi/ffbb-data-client/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/nickdesi/ffbb-data-client/ci.yml?branch=master&label=CI%20Build&logo=github&style=for-the-badge" alt="CI Status" /></a>
72
+ <a href="https://coveralls.io/github/nickdesi/ffbb-data-client?branch=master"><img src="https://img.shields.io/coveralls/github/nickdesi/ffbb-data-client/master?style=for-the-badge&logo=coveralls" alt="Coverage" /></a>
73
+ </p>
74
+
75
+ <p align="center">
76
+ <a href="https://github.com/nickdesi/FFBB-MCP-Server"><img src="https://img.shields.io/badge/MCP-Ready-0969da.svg?logo=modelcontextprotocol&logoColor=white&style=flat-square" alt="MCP Ready" /></a>
77
+ <a href="https://github.com/nickdesi/ffbb-data-client/blob/master/LICENSE.txt"><img src="https://img.shields.io/badge/License-Apache--2.0-blue.svg?style=flat-square" alt="License" /></a>
78
+ <a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/Code%20Style-Black-000000.svg?style=flat-square" alt="Code Style: Black" /></a>
79
+ <a href="https://github.com/astral-sh/uv"><img src="https://img.shields.io/badge/Fast%20Packaging-uv-de5fe9.svg?style=flat-square" alt="Packaged with uv" /></a>
80
+ <a href="https://github.com/nickdesi/ffbb-data-client/stargazers"><img src="https://img.shields.io/github/stars/nickdesi/ffbb-data-client?style=flat-square&color=gold" alt="GitHub Stars" /></a>
81
+ <a href="https://ffbb-api.desimone.fr/"><img src="https://img.shields.io/badge/Web-ffbb--api.desimone.fr-blue?style=flat-square&logo=googlechrome&logoColor=white" alt="API Website" /></a>
82
+ </p>
83
+
84
+ ---
85
+
86
+ [⚡ Démarrage Rapide](#-démarrage-rapide-30-secondes) •
87
+ [📍 Recherche Géo & Clubs](#-recherche-géographique--clubs-de-france) •
88
+ [🔥 Cas d'Usage](#-recettes--cas-dusage-concrets) •
89
+ [🧵 Streaming Async](#-haute-performance--streaming-asynchrone) •
90
+ [🤖 Intégration IA / MCP](#-ia-agents--mcp-server) •
91
+ [🌐 API REST](#-serveur-rest-fastapi-embarqué) •
92
+ [📖 Documentation](https://nickdesi.github.io/ffbb-data-client/)
93
+
94
+ </div>
95
+
96
+ <!-- DISCOVERY_METRICS:START -->
97
+ > 🔄 **Cartographie API FFBB Synchronisée en Direct** : `162` collections Directus OpenAPI cartographiées, `13` index Meilisearch surveillés quotidiennement.
98
+ <!-- DISCOVERY_METRICS:END -->
99
+
100
+ ---
101
+
102
+ ## 🏆 Pourquoi choisir `ffbb-data-client` ?
103
+
104
+ | Fonctionnalité | Anciens clients (`ffbb-api-client`) | **`ffbb-data-client` (v2.4+)** |
105
+ | :--- | :---: | :---: |
106
+ | **Bypass WAF BunnyCDN** (anti-403) | ❌ Bloqué en 403 Forbidden | ✅ **Garanti (okhttp/4.12.0 emulated)** |
107
+ | **Architecture Asynchrone Native** | ❌ 100% bloquant / synchrone | ✅ **Async native (`async/await` + `aiter`)** |
108
+ | **Modèles de Données & Typage** | ❌ Dictionnaires bruts sans type | ✅ **Dataclasses & Pydantic v2 validés** |
109
+ | **Recherche Meilisearch Instantanée** | ❌ Partielle ou absente | ✅ **Multi-index (Clubs, Salles, Poules, 3x3)** |
110
+ | **Recherche Géographique par GPS** | ❌ Non disponible | ✅ **Rayon kilométrique autour de coordonnées** |
111
+ | **Streaming de Masse (Pagination auto)** | ❌ Manuelle, risque d'OOM | ✅ **Générateurs streaming `aiter_all_*`** |
112
+ | **Résolution d'Adresses de Salles** | ❌ Nom brut souvent vide | ✅ **Résolution physique complète (Gymnase, Rue, CP, Ville)** |
113
+ | **Compatibilité IA & Agents MCP** | ❌ Incompatible | ✅ **Connecteur natif Model Context Protocol** |
114
+ | **Couverture de Tests & Fiabilité** | ⚠️ < 30% | ✅ **680+ tests unitaires & 100% Zero-Red CI** |
115
+
116
+ ---
117
+
118
+ ## 📦 Installation
119
+
120
+ Installez la dernière version stable via `pip` ou `uv` :
121
+
122
+ ```bash
123
+ # Via pip standard
124
+ pip install ffbb-data-client
125
+
126
+ # Via uv (recommandé pour la rapidité)
127
+ uv add ffbb-data-client
128
+ ```
129
+
130
+ ### Options supplémentaires
131
+
132
+ ```bash
133
+ # Avec le serveur d'API REST FastAPI intégré
134
+ pip install "ffbb-data-client[server]"
135
+
136
+ # Pour le développement local et la suite de tests complète
137
+ pip install "ffbb-data-client[testing]"
138
+ ```
139
+
140
+ *Prérequis : Python `>=3.10`.*
141
+
142
+ ---
143
+
144
+ ## ⚡ Démarrage Rapide (30 secondes)
145
+
146
+ Aucun compte développeur ni clé d'API compliquée : `FFBBDataClient.create()` résout et rafraîchit automatiquement les tokens publics nécessaires :
147
+
148
+ ```python
149
+ from ffbb_data_client import FFBBDataClient
150
+
151
+ # Initialisation en une seule ligne (zéro configuration requise)
152
+ client = FFBBDataClient.create()
153
+
154
+ # 1. Rechercher un club de basket en France
155
+ clubs = client.search_organismes("Clermont", limit=3)
156
+ for club in clubs.hits:
157
+ print(f"🏀 {club.nom} ({club.codePostal} {club.commune}) - ID: {club.id}")
158
+
159
+ # 2. Consulter les scores et matchs en direct (Lives FFBB)
160
+ lives = client.get_lives()
161
+ print(f"Matchs suivis en direct : {len(lives)}")
162
+
163
+ # 3. Explorer les rencontres d'une compétition (ex: Nationale 1 Masculine)
164
+ rencontres = client.search_rencontres("NM1", limit=5)
165
+ for m in rencontres.hits:
166
+ print(f"📅 {m.date_rencontre} : {m.equipe1} vs {m.equipe2}")
167
+ ```
168
+
169
+ ---
170
+
171
+ ## 📍 Recherche Géographique & Clubs de France
172
+
173
+ Idéal pour concevoir des applications mobiles, des cartes interactives ou des annuaires de basketball :
174
+
175
+ ### 🌍 Trouver tous les clubs autour d'un point GPS
176
+
177
+ ```python
178
+ # Exemple : Clubs dans un rayon de 20 km autour de Lyon / Clermont-Ferrand
179
+ clubs = client.search_organismes_by_geo(
180
+ lat=45.7772,
181
+ lng=3.0870,
182
+ radius_km=20,
183
+ limit=15,
184
+ )
185
+
186
+ for club in clubs.hits:
187
+ print(f"📍 {club.nom} à {club.commune} [{club.geo}]")
188
+ ```
189
+
190
+ ### 🔍 Recherche ciblée par Code Postal, Ville ou Catégorie
191
+
192
+ ```python
193
+ # Filtrer par département ou code postal
194
+ organismes = client.search_organismes(
195
+ "Basket",
196
+ filter=['codePostal = "63000"'],
197
+ sort=["nom:asc"],
198
+ limit=10,
199
+ )
200
+ ```
201
+
202
+ ---
203
+
204
+ ## 🔥 Recettes & Cas d'Usage Concrets
205
+
206
+ <details>
207
+ <summary><b>1. Suivre les classements et résultats d'une poule</b></summary>
208
+
209
+ ```python
210
+ from ffbb_data_client import FFBBDataClient
211
+
212
+ client = FFBBDataClient.create()
213
+
214
+ # Récupération complète d'une poule de championnat
215
+ poule = client.get_poule(11111)
216
+
217
+ print(f"Championnat : {poule.nom}")
218
+ for rk in poule.classement or []:
219
+ print(f"#{rk.position} {rk.organisme_nom} - {rk.points} pts ({rk.victoires}V - {rk.defaites}D)")
220
+ ```
221
+ </details>
222
+
223
+ <details>
224
+ <summary><b>2. Résoudre l'adresse complète et exacte d'un gymnase</b></summary>
225
+
226
+ ```python
227
+ # Fini les adresses partielles : résolution déterministe certifiée FFBB
228
+ salles = client.search_salles("Maison des Sports", limit=3)
229
+ for salle in salles.hits:
230
+ print(f"🏟️ {salle.nom} : {salle.adresse}, {salle.codePostal} {salle.ville}")
231
+ ```
232
+ </details>
233
+
234
+ <details>
235
+ <summary><b>3. Détection automatique du niveau et de la catégorie (U13, R1, D2...)</b></summary>
236
+
237
+ ```python
238
+ from ffbb_data_client import NiveauExtractor, NiveauType
239
+
240
+ # Détection intelligente du niveau hiérarchique
241
+ niveau = NiveauExtractor.extract_niveau("RÉGIONALE MASCULINE SENIORS - DIVISION 2")
242
+ print(niveau.type) # NiveauType.REGIONAL
243
+ print(niveau.division) # 2
244
+ ```
245
+ </details>
246
+
247
+ <details>
248
+ <summary><b>4. Extraire les contacts d'un club (Président, Correspondant, Email)</b></summary>
249
+
250
+ ```python
251
+ # Contacts administratifs officiels
252
+ contacts = client.get_club_contacts(organisme_id=9326)
253
+ if contacts:
254
+ print(f"Club : {contacts.club_contact.nom}")
255
+ print(f"Email : {contacts.club_contact.email}")
256
+ for membre in contacts.membres:
257
+ print(f" - {membre.role} : {membre.prenom} {membre.nom} ({membre.email})")
258
+ ```
259
+ </details>
260
+
261
+ ---
262
+
263
+ ## 🧵 Haute Performance & Streaming Asynchrone
264
+
265
+ Pour traiter de gros volumes de données sans saturer la mémoire vive ni bloquer la boucle d'événements :
266
+
267
+ ```python
268
+ import asyncio
269
+ from ffbb_data_client import FFBBDataClient
270
+
271
+ async def main():
272
+ client = FFBBDataClient.create()
273
+
274
+ # Streaming asynchrone mémoire-constant (aiter)
275
+ count = 0
276
+ async for rencontre in client.aiter_all_rencontres(page_size=100, max_items=500):
277
+ count += 1
278
+ if count % 100 == 0:
279
+ print(f"Traitement du match #{count} : {rencontre.id}")
280
+
281
+ # Recherche asynchrone non-bloquante
282
+ results = await client.search_organismes_async("ASVEL")
283
+ print(f"Résultats trouvés : {results.estimated_total_hits}")
284
+
285
+ asyncio.run(main())
286
+ ```
287
+
288
+ ---
289
+
290
+ ## 🤖 IA, Agents & MCP Server
291
+
292
+ Le SDK `ffbb-data-client` est le moteur officiel du serveur **Model Context Protocol (MCP)** pour le basket français.
293
+
294
+ Il permet aux LLMs (**Claude**, **ChatGPT**, **Cursor**, **Gemini**, **Antigravity**) d'interagir nativement avec les championnats de basket :
295
+
296
+ * 💬 *"Quels sont les prochains matchs du SCBA ce week-end ?"*
297
+ * 💬 *"Donne-moi le classement de la Poule Haute U13M2."*
298
+ * 💬 *"Quelle est l'adresse exacte de la salle pour le match de samedi ?"*
299
+
300
+ 👉 Découvrez le projet dédié : **[FFBB-MCP-Server](https://github.com/nickdesi/FFBB-MCP-Server)**
301
+
302
+ ---
303
+
304
+ ## 🌐 Serveur REST FastAPI Embarqué
305
+
306
+ Besoin d'une API web pour votre application React, Vue, Next.js ou mobile ? `ffbb-data-client` intègre une API FastAPI prête à l'emploi :
307
+
308
+ ```bash
309
+ # Démarrer le serveur API local
310
+ uvicorn ffbb_data_client.api:app --host 0.0.0.0 --port 8000 --reload
311
+ ```
312
+
313
+ Accédez ensuite à la documentation Swagger interactive sur `http://localhost:8000/docs` !
314
+
315
+ *Endpoints phares :*
316
+ - `GET /health` : Statut de santé et horodatage UTC.
317
+ - `GET /api/v1/club/{id}/matches` : Calendrier optimisé du club avec adresses de salles résolues.
318
+ - `GET /api/v1/lives` : Matchs en direct agrégés.
319
+
320
+ ---
321
+
322
+ ## 📚 Référence des Principales Méthodes
323
+
324
+ | Domaine | Méthode Synchrone | Méthode Asynchrone | Description |
325
+ | :--- | :--- | :--- | :--- |
326
+ | **Multi-Search** | `client.multi_search()` | `client.multi_search_async()` | Recherche globale simultanée sur tous les index |
327
+ | **Clubs / Organismes** | `client.search_organismes()` | `client.search_organismes_async()` | Recherche Meilisearch des clubs |
328
+ | **Géo-Localisation** | `client.search_organismes_by_geo()` | `client.search_organismes_by_geo_async()` | Recherche de clubs par rayon GPS |
329
+ | **Contacts Club** | `client.get_club_contacts()` | `client.get_club_contacts_async()` | Fiche contacts, président, emails officiels |
330
+ | **Rencontres** | `client.search_rencontres()` | `client.search_rencontres_async()` | Recherche des matchs et résultats |
331
+ | **Streaming Matchs** | — | `client.aiter_all_rencontres()` | Générateur asynchrone paginé |
332
+ | **Salles / Gymnases** | `client.search_salles()` | `client.search_salles_async()` | Gymnases, adresses certifiées et coordonnées |
333
+ | **Compétitions** | `client.search_competitions()` | `client.search_competitions_async()` | Championnats nationaux, régionaux, départementaux |
334
+ | **Poules & Classements**| `client.get_poule()` | `client.get_poule_async()` | Classement complet et calendrier d'une poule |
335
+ | **Tournois 3x3** | `client.search_tournois()` | `client.search_tournois_async()` | Tournois homologués 3x3 FFBB |
336
+ | **Scores en Direct** | `client.get_lives()` | `client.get_lives_async()` | Flux des matchs live en cours |
337
+
338
+ ---
339
+
340
+ ## 🛠️ Robustesse, CI/CD & Découverte Quotidienne
341
+
342
+ * **Protection BunnyCDN** : User-Agent garanti `okhttp/4.12.0` pour éviter tout blocage WAF 403.
343
+ * **Découverte Quotidienne du Schéma** : Un cron GitHub Actions analyse chaque matin à 5h17 UTC l'OpenAPI spec officielle de la FFBB et détecte automatiquement tout nouveau champ ou collection Directus.
344
+ * **Cache Intelligent Sécurisé** : Gestionnaire de cache HTTP `hishel` avec SQLite distinct pour les flux synchrones et asynchrones.
345
+ * **CodeQL & Zéro Dette** : Conformité aux normes de sécurité, zéro alerte d'injection de log, 100% typé.
346
+
347
+ ---
348
+
349
+ ## 🤝 Contribuer
350
+
351
+ Les contributions, signalements de bugs et suggestions sont les bienvenus !
352
+
353
+ 1. **Forkez** le projet.
354
+ 2. Créez une branche (`git checkout -b feat/ma-nouvelle-fonctionnalite`).
355
+ 3. Installez l'environnement de développement : `pip install -e ".[testing]"`.
356
+ 4. Vérifiez que tous les tests passent : `pytest tests/` et `pre-commit run --all-files`.
357
+ 5. Ouvrez une **Pull Request** claire et documentée.
358
+
359
+ ---
360
+
361
+ ## 📄 Licence
362
+
363
+ Distribué sous la licence **Apache-2.0**. Voir [`LICENSE.txt`](LICENSE.txt) pour plus de détails.
364
+
365
+ ---
366
+
367
+ <div align="center">
368
+
369
+ **Développé avec passion pour la communauté du basketball français. 🇫🇷🏀**
370
+
371
+ Si cette bibliothèque vous est utile, n'hésitez pas à **ajouter une étoile ⭐** sur GitHub pour encourager le projet !
372
+
373
+ [![GitHub stars](https://img.shields.io/github/stars/nickdesi/ffbb-data-client?style=social)](https://github.com/nickdesi/ffbb-data-client/stargazers)
374
+
375
+ </div>