ffbb-data-client 2.4.4__tar.gz → 2.4.6__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 (386) hide show
  1. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/CHANGELOG.md +10 -0
  2. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/PKG-INFO +1 -1
  3. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/RELEASE_NOTES.md +15 -1
  4. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/api.py +11 -0
  5. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/helpers/http_requests_utils.py +65 -142
  6. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client.egg-info/PKG-INFO +1 -1
  7. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client.egg-info/scm_version.json +2 -2
  8. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.agents/rules/antigravity-rtk-rules.md +0 -0
  9. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.coveragerc +0 -0
  10. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.gitattributes +0 -0
  11. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/FUNDING.yml +0 -0
  12. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  13. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  14. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  15. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/dependabot.yml +0 -0
  16. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/scripts/ai-pr-reviewer.cjs +0 -0
  17. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/scripts/check_wrapper_parity.py +0 -0
  18. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/workflows/ai-pr-reviewer.yml +0 -0
  19. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/workflows/check_wrapper_parity.yml +0 -0
  20. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/workflows/ci.yml +0 -0
  21. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/workflows/codeql.yml +0 -0
  22. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/workflows/deploy-pages.yml +0 -0
  23. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/workflows/keep-ffbb-api-discovery-alive.yml +0 -0
  24. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/workflows/publish.yml +0 -0
  25. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/workflows/release-after-discovery-merge.yml +0 -0
  26. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.github/workflows/update-ffbb-api-discovery.yml +0 -0
  27. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.gitignore +0 -0
  28. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.isort.cfg +0 -0
  29. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.jules/bolt.md +0 -0
  30. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.pre-commit-config.yaml +0 -0
  31. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/.readthedocs.yml +0 -0
  32. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/AGENTS.md +0 -0
  33. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/AUTHORS.rst +0 -0
  34. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/CODE_OF_CONDUCT.md +0 -0
  35. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/CONTRIBUTING.rst +0 -0
  36. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/DESIGN.md +0 -0
  37. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/Dockerfile +0 -0
  38. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/LICENSE.txt +0 -0
  39. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/LOCAL_CI_GUIDE.md +0 -0
  40. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/README.md +0 -0
  41. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/SECURITY.md +0 -0
  42. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/data/api.ffbb.app.json +0 -0
  43. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/data/api_update_summary.md +0 -0
  44. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/data/collections.json +0 -0
  45. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/data/endpoint_discovery.json +0 -0
  46. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/data/indexes.json +0 -0
  47. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/data/meilisearch-prod.ffbb.app.json +0 -0
  48. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/data/openapi.json +0 -0
  49. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/data/openapi_full.json +0 -0
  50. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/data/type_discovery_corrections.json +0 -0
  51. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/Makefile +0 -0
  52. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/_static/.gitignore +0 -0
  53. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/architecture.rst +0 -0
  54. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/authors.rst +0 -0
  55. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/changelog.rst +0 -0
  56. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/conf.py +0 -0
  57. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/contributing.rst +0 -0
  58. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/examples.rst +0 -0
  59. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/index.rst +0 -0
  60. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/license.rst +0 -0
  61. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/migration.rst +0 -0
  62. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/readme.rst +0 -0
  63. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/requirements.txt +0 -0
  64. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/test_strategy.md +0 -0
  65. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/docs/testing_conventions.md +0 -0
  66. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/examples/README.md +0 -0
  67. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/examples/complete_usage_example.py +0 -0
  68. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/examples/quick_start.py +0 -0
  69. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/examples/team_ranking_analysis.py +0 -0
  70. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/pyproject.toml +0 -0
  71. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/pytest.ini +0 -0
  72. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/run-ci-locally.sh +0 -0
  73. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/scripts/benchmark_concurrent_pagination.py +0 -0
  74. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/scripts/benchmark_search_organisme.py +0 -0
  75. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/scripts/discover_endpoints.py +0 -0
  76. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/scripts/discover_types.py +0 -0
  77. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/setup.cfg +0 -0
  78. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/setup.py +0 -0
  79. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/__init__.py +0 -0
  80. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/clients/__init__.py +0 -0
  81. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/clients/_helpers.py +0 -0
  82. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/clients/_mixins/__init__.py +0 -0
  83. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/clients/_mixins/competition.py +0 -0
  84. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/clients/_mixins/external.py +0 -0
  85. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/clients/_mixins/getters.py +0 -0
  86. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/clients/_mixins/list_methods.py +0 -0
  87. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/clients/_mixins/organisme.py +0 -0
  88. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/clients/_rest_facade.py +0 -0
  89. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/clients/_search_facade.py +0 -0
  90. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/clients/api_ffbb_app_client.py +0 -0
  91. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/clients/ffbb_data_client.py +0 -0
  92. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/clients/meilisearch_client.py +0 -0
  93. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/clients/meilisearch_ffbb_client.py +0 -0
  94. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/config.py +0 -0
  95. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/data/__init__.py +0 -0
  96. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/data/collections.json +0 -0
  97. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/data/endpoint_discovery.json +0 -0
  98. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/data/indexes.json +0 -0
  99. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/data/openapi.json +0 -0
  100. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/helpers/__init__.py +0 -0
  101. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/helpers/http_requests_helper.py +0 -0
  102. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/helpers/meilisearch_client_extension.py +0 -0
  103. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/helpers/multi_search_query_helper.py +0 -0
  104. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/helpers/normalization.py +0 -0
  105. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/__init__.py +0 -0
  106. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/affiche.py +0 -0
  107. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/cartographie.py +0 -0
  108. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/categorie.py +0 -0
  109. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/categorie_type.py +0 -0
  110. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/clock.py +0 -0
  111. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/club_contacts.py +0 -0
  112. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/code.py +0 -0
  113. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/commune.py +0 -0
  114. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competition_fields.py +0 -0
  115. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competition_id.py +0 -0
  116. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competition_id_categorie.py +0 -0
  117. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competition_id_sexe.py +0 -0
  118. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competition_id_type_competition.py +0 -0
  119. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competition_id_type_competition_generique.py +0 -0
  120. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competition_origine.py +0 -0
  121. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competition_origine_categorie.py +0 -0
  122. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competition_origine_type_competition.py +0 -0
  123. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competition_origine_type_competition_generique.py +0 -0
  124. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competition_type.py +0 -0
  125. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competitions_facet_distribution.py +0 -0
  126. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competitions_facet_stats.py +0 -0
  127. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competitions_hit.py +0 -0
  128. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competitions_multi_search_query.py +0 -0
  129. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/competitions_query.py +0 -0
  130. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/configuration_models.py +0 -0
  131. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/contact_info.py +0 -0
  132. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/content_multi_search_query.py +0 -0
  133. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/coordonnees.py +0 -0
  134. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/coordonnees_type.py +0 -0
  135. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/document_flyer.py +0 -0
  136. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/document_flyer_type.py +0 -0
  137. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/engagement_contacts.py +0 -0
  138. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/engagements_facet_distribution.py +0 -0
  139. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/engagements_facet_stats.py +0 -0
  140. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/engagements_hit.py +0 -0
  141. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/engagements_multi_search_query.py +0 -0
  142. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/etat.py +0 -0
  143. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/external_competition_id.py +0 -0
  144. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/external_id.py +0 -0
  145. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/facet_distribution.py +0 -0
  146. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/facet_stats.py +0 -0
  147. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/field_set.py +0 -0
  148. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/folder.py +0 -0
  149. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/formation_session.py +0 -0
  150. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/formations_facet_distribution.py +0 -0
  151. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/formations_facet_stats.py +0 -0
  152. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/formations_hit.py +0 -0
  153. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/formations_multi_search_query.py +0 -0
  154. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/game_stats_model.py +0 -0
  155. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/game_stats_models.py +0 -0
  156. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/generic_search.py +0 -0
  157. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/geo.py +0 -0
  158. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/geo_sort_order.py +0 -0
  159. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_commune_response.py +0 -0
  160. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_competition_response.py +0 -0
  161. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_configuration_response.py +0 -0
  162. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_engagement_response.py +0 -0
  163. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_entraineur_response.py +0 -0
  164. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_formation_response.py +0 -0
  165. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_officiel_response.py +0 -0
  166. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_organisme_response.py +0 -0
  167. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_poule_response.py +0 -0
  168. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_pratique_response.py +0 -0
  169. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_rencontre_response.py +0 -0
  170. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_saisons_response.py +0 -0
  171. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_salle_response.py +0 -0
  172. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_terrain_response.py +0 -0
  173. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/get_tournoi_response.py +0 -0
  174. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/gradient_color.py +0 -0
  175. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/hit.py +0 -0
  176. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/id_engagement_equipe.py +0 -0
  177. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/id_organisme_equipe.py +0 -0
  178. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/id_organisme_equipe1_logo.py +0 -0
  179. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/id_poule.py +0 -0
  180. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/jour.py +0 -0
  181. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/label.py +0 -0
  182. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/labellisation.py +0 -0
  183. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/live.py +0 -0
  184. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/lives.py +0 -0
  185. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/logo.py +0 -0
  186. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/multi_search_queries.py +0 -0
  187. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/multi_search_query.py +0 -0
  188. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/multi_search_result_competitions.py +0 -0
  189. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/multi_search_result_engagements.py +0 -0
  190. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/multi_search_result_formations.py +0 -0
  191. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/multi_search_result_organismes.py +0 -0
  192. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/multi_search_result_pratiques.py +0 -0
  193. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/multi_search_result_rencontres.py +0 -0
  194. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/multi_search_result_salles.py +0 -0
  195. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/multi_search_result_terrains.py +0 -0
  196. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/multi_search_result_tournois.py +0 -0
  197. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/multi_search_results.py +0 -0
  198. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/multi_search_results_class.py +0 -0
  199. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/nature_sol.py +0 -0
  200. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/niveau.py +0 -0
  201. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/niveau_class.py +0 -0
  202. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/niveau_extractor.py +0 -0
  203. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/niveau_info.py +0 -0
  204. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/niveau_models.py +0 -0
  205. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/niveau_type.py +0 -0
  206. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/objectif.py +0 -0
  207. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/organisateur.py +0 -0
  208. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/organisateur_type.py +0 -0
  209. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/organisme_fields.py +0 -0
  210. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/organisme_id_pere.py +0 -0
  211. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/organismes_facet_distribution.py +0 -0
  212. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/organismes_facet_stats.py +0 -0
  213. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/organismes_hit.py +0 -0
  214. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/organismes_multi_search_query.py +0 -0
  215. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/organismes_query.py +0 -0
  216. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/phase_code.py +0 -0
  217. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/poule.py +0 -0
  218. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/poule_fields.py +0 -0
  219. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/poule_rencontre_item_model.py +0 -0
  220. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/poules_models.py +0 -0
  221. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/poules_query.py +0 -0
  222. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/pratique.py +0 -0
  223. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/pratiques_facet_distribution.py +0 -0
  224. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/pratiques_facet_stats.py +0 -0
  225. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/pratiques_hit.py +0 -0
  226. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/pratiques_hit_type.py +0 -0
  227. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/pratiques_multi_search_query.py +0 -0
  228. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/pratiques_type_class.py +0 -0
  229. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/publication_internet.py +0 -0
  230. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/purple_logo.py +0 -0
  231. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/query_fields_manager.py +0 -0
  232. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/ranking_engagement.py +0 -0
  233. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/rankings_models.py +0 -0
  234. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/rencontres_engagement.py +0 -0
  235. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/rencontres_facet_distribution.py +0 -0
  236. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/rencontres_facet_stats.py +0 -0
  237. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/rencontres_hit.py +0 -0
  238. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/rencontres_multi_search_query.py +0 -0
  239. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/saison.py +0 -0
  240. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/saison_fields.py +0 -0
  241. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/saisons_models.py +0 -0
  242. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/saisons_query.py +0 -0
  243. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/salle.py +0 -0
  244. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/salles_facet_distribution.py +0 -0
  245. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/salles_facet_stats.py +0 -0
  246. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/salles_hit.py +0 -0
  247. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/salles_multi_search_query.py +0 -0
  248. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/sexe.py +0 -0
  249. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/sexe_class.py +0 -0
  250. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/source.py +0 -0
  251. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/status.py +0 -0
  252. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/team_engagement.py +0 -0
  253. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/team_ranking.py +0 -0
  254. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/terrains_categorie_championnat_3x3_libelle.py +0 -0
  255. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/terrains_facet_distribution.py +0 -0
  256. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/terrains_facet_stats.py +0 -0
  257. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/terrains_hit.py +0 -0
  258. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/terrains_multi_search_query.py +0 -0
  259. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/terrains_name.py +0 -0
  260. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/terrains_sexe_enum.py +0 -0
  261. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/terrains_storage.py +0 -0
  262. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/tournoi_type_class.py +0 -0
  263. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/tournoi_type_enum.py +0 -0
  264. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/tournoi_types_3x3.py +0 -0
  265. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/tournoi_types_3x3_libelle.py +0 -0
  266. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/tournoi_types_3x3_libelle_enum.py +0 -0
  267. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/tournois_facet_distribution.py +0 -0
  268. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/tournois_facet_stats.py +0 -0
  269. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/tournois_hit.py +0 -0
  270. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/tournois_hit_type.py +0 -0
  271. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/tournois_libelle.py +0 -0
  272. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/tournois_multi_search_query.py +0 -0
  273. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/type_association.py +0 -0
  274. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/type_association_libelle.py +0 -0
  275. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/type_class.py +0 -0
  276. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/type_competition.py +0 -0
  277. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/type_competition_generique.py +0 -0
  278. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/type_enum.py +0 -0
  279. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/models/type_league.py +0 -0
  280. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/py.typed +0 -0
  281. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/utils/__init__.py +0 -0
  282. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/utils/cache_manager.py +0 -0
  283. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/utils/concurrency_utils.py +0 -0
  284. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/utils/converter_utils.py +0 -0
  285. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/utils/input_validation.py +0 -0
  286. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/utils/retry_utils.py +0 -0
  287. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/utils/secure_logging.py +0 -0
  288. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client/utils/token_manager.py +0 -0
  289. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client.egg-info/SOURCES.txt +0 -0
  290. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client.egg-info/dependency_links.txt +0 -0
  291. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client.egg-info/not-zip-safe +0 -0
  292. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client.egg-info/requires.txt +0 -0
  293. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client.egg-info/scm_file_list.json +0 -0
  294. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/src/ffbb_data_client.egg-info/top_level.txt +0 -0
  295. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/conftest.py +0 -0
  296. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/e2e/__init__.py +0 -0
  297. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/e2e/conftest.py +0 -0
  298. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/integration/__init__.py +0 -0
  299. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/integration/conftest.py +0 -0
  300. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/integration/test_500_user_journey.py +0 -0
  301. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/integration/test_501_user_journey_v3.py +0 -0
  302. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/integration/test_502_enhanced_integration.py +0 -0
  303. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/integration/test_503_secure_logging.py +0 -0
  304. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/integration/test_504_input_validation.py +0 -0
  305. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/integration/test_505_retry_timeout.py +0 -0
  306. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/integration/test_506_raw_json_model_conversion.py +0 -0
  307. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/__init__.py +0 -0
  308. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/__init__.py +0 -0
  309. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_200_api_ffbb_app_client.py +0 -0
  310. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_201_unit_tests_core.py +0 -0
  311. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_202_meilisearch_client.py +0 -0
  312. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_203_meilisearch_client_extension.py +0 -0
  313. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_204_ffbb_data_client.py +0 -0
  314. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_205_meilisearch_ffbb_client.py +0 -0
  315. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_206_coverage_gaps_clients.py +0 -0
  316. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_207_coverage_clients_extended.py +0 -0
  317. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_208_new_methods_coverage.py +0 -0
  318. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_209_automatic_token_resolution.py +0 -0
  319. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_210_targeted_clients_helpers_coverage.py +0 -0
  320. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_async_methods.py +0 -0
  321. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_meilisearch_async.py +0 -0
  322. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_search_many.py +0 -0
  323. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_v2_backport_search.py +0 -0
  324. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_v3_new_features.py +0 -0
  325. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/clients/test_warm_cache.py +0 -0
  326. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/conftest.py +0 -0
  327. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/helpers/__init__.py +0 -0
  328. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/helpers/test_400_http_helpers.py +0 -0
  329. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/helpers/test_meilisearch_client_extension_recursive_pagination.py +0 -0
  330. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/helpers/test_meilisearch_pagination_concurrent.py +0 -0
  331. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/helpers/test_normalization.py +0 -0
  332. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/__init__.py +0 -0
  333. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_100_competition_id_categorie.py +0 -0
  334. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_101_competition_id_sexe.py +0 -0
  335. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_102_competition_id_type_competition.py +0 -0
  336. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_103_competition_id_type_competition_generique.py +0 -0
  337. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_104_competition_origine_categorie.py +0 -0
  338. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_105_competition_origine_type_competition_generique.py +0 -0
  339. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_106_competition_origine.py +0 -0
  340. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_107_id_engagement_equipe.py +0 -0
  341. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_108_id_organisme_equipe.py +0 -0
  342. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_109_id_organisme_equipe1_logo.py +0 -0
  343. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_110_labellisation.py +0 -0
  344. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_111_niveau_class.py +0 -0
  345. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_112_purple_logo.py +0 -0
  346. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_113_salle.py +0 -0
  347. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_114_tournoi_type_class.py +0 -0
  348. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_115_type_association_libelle.py +0 -0
  349. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_116_type_competition_generique.py +0 -0
  350. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_117_organisateur.py +0 -0
  351. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_118_competition_id.py +0 -0
  352. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_119_terrains_inner_models.py +0 -0
  353. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_120_pratiques_inner_models.py +0 -0
  354. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_121_to_dict_round_trip.py +0 -0
  355. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_122_coverage_gaps.py +0 -0
  356. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_123_missing_coverage.py +0 -0
  357. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_123_v2_backport.py +0 -0
  358. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_124_targeted_coverage_gains.py +0 -0
  359. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/models/test_dx_aliases.py +0 -0
  360. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/test_310_discover_endpoints.py +0 -0
  361. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/utils/__init__.py +0 -0
  362. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/utils/test_300_secure_logging.py +0 -0
  363. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/utils/test_301_input_validation.py +0 -0
  364. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/utils/test_302_retry_utils.py +0 -0
  365. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/utils/test_303_cache_manager.py +0 -0
  366. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/utils/test_304_config.py +0 -0
  367. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/utils/test_305_token_manager.py +0 -0
  368. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/utils/test_306_converter_utils.py +0 -0
  369. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/utils/test_307_coverage_gaps_utils.py +0 -0
  370. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/utils/test_308_converter_utils_extended.py +0 -0
  371. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tests/unit/utils/test_309_concurrency_utils.py +0 -0
  372. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tools/update_agents_md.py +0 -0
  373. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/tox.ini +0 -0
  374. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/website/assets/apple-touch-icon.png +0 -0
  375. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/website/assets/favicon-192x192.png +0 -0
  376. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/website/assets/favicon-48x48.png +0 -0
  377. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/website/assets/favicon-96x96.png +0 -0
  378. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/website/assets/favicon.ico +0 -0
  379. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/website/assets/logo.webp +0 -0
  380. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/website/css/style.css +0 -0
  381. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/website/favicon.ico +0 -0
  382. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/website/index.html +0 -0
  383. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/website/llms-full.txt +0 -0
  384. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/website/llms.txt +0 -0
  385. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/website/robots.txt +0 -0
  386. {ffbb_data_client-2.4.4 → ffbb_data_client-2.4.6}/website/sitemap.xml +0 -0
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.4.6] - 2026-08-29
11
+
12
+ ### Performance & Modern Standards (FastAPI Lifespan)
13
+ - **FastAPI Lifespan Context Manager**: Gestion propre du cycle de vie startup/shutdown avec fermeture asynchrone des sockets HTTP et pools de connexions lors de l'arrêt du serveur REST.
14
+
15
+ ## [2.4.5] - 2026-08-29
16
+
17
+ ### Security & Hardening (CodeQL / SSRF Pipeline Unification)
18
+ - **SSRF Elimination (CWE-918)**: Unification de l'ensemble des requêtes HTTP (sync & async) au travers de `make_http_request_with_retry` et élimination des appels directs non encapsulés à `session.get()` / `session.post()`.
19
+
10
20
  ## [2.4.4] - 2026-08-29
11
21
 
12
22
  ### Security & Hardening (CodeQL / SSRF Resolution)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ffbb-data-client
3
- Version: 2.4.4
3
+ Version: 2.4.6
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
@@ -1,6 +1,20 @@
1
1
  # Release Notes - FFBB Data Client
2
2
 
3
- ## Version 2.4.4 (Latest Release)
3
+ ## Version 2.4.6 (Latest Release)
4
+
5
+ ### 🚀 FastAPI Lifespan & Connection Cleanup
6
+ - Implemented modern `@asynccontextmanager` lifespan on FastAPI app to guarantee non-leaking HTTP connection pools on server shutdown.
7
+
8
+ ---
9
+
10
+ ## Version 2.4.5
11
+
12
+ ### 🔒 Complete CodeQL Pipeline Unification
13
+ - **Zero Raw Sinks**: All sync and async requests now route through sanitized retry wrappers.
14
+
15
+ ---
16
+
17
+ ## Version 2.4.4
4
18
 
5
19
  ### 🔒 Complete CodeQL SSRF Mitigation (CWE-918)
6
20
  - **SSRF Taint Graph Elimination**: Reconstructed HTTP request targets via parsed components in `http_requests_utils.py` and `retry_utils.py`.
@@ -7,6 +7,7 @@ and hosts the official documentation website at /.
7
7
  from __future__ import annotations
8
8
 
9
9
  import re
10
+ from contextlib import asynccontextmanager
10
11
  from datetime import datetime
11
12
  from pathlib import Path
12
13
  from typing import Any
@@ -19,6 +20,7 @@ from fastapi.responses import FileResponse, HTMLResponse
19
20
  from fastapi.staticfiles import StaticFiles
20
21
 
21
22
  from .clients.ffbb_data_client import FFBBDataClient
23
+ from .utils.retry_utils import aclose_default_clients
22
24
 
23
25
  # Directories
24
26
  _BASE_DIR = Path(__file__).resolve().parent.parent.parent
@@ -26,12 +28,21 @@ _WEBSITE_DIR = _BASE_DIR / "website"
26
28
  if not _WEBSITE_DIR.exists():
27
29
  _WEBSITE_DIR = Path("/app/website")
28
30
 
31
+
32
+ @asynccontextmanager
33
+ async def lifespan(app: FastAPI):
34
+ """Lifespan context manager for startup and graceful shutdown (FastAPI/Context7 standard)."""
35
+ yield
36
+ await aclose_default_clients()
37
+
38
+
29
39
  app = FastAPI(
30
40
  title="FFBB Data Client API",
31
41
  description="API REST moderne & asynchrone pour les données officielles de la Fédération Française de BasketBall.",
32
42
  version="1.0.0",
33
43
  docs_url="/docs",
34
44
  redoc_url="/redoc",
45
+ lifespan=lifespan,
35
46
  )
36
47
 
37
48
  # Enable CORS for all origins
@@ -182,53 +182,30 @@ def http_get(
182
182
  logger.debug(f"Making GET request to {url}")
183
183
  start_time = time.time()
184
184
 
185
- # Use retry logic if configured
186
- if retry_config and timeout_config:
187
- response = make_http_request_with_retry(
188
- "GET",
189
- url,
190
- headers,
191
- cached_session=cached_session,
192
- retry_config=retry_config,
193
- timeout_config=timeout_config,
194
- debug=debug,
195
- )
196
- else:
197
- # Fallback to reusable client to keep connections warm across calls.
198
- if cached_session:
199
- response = cached_session.get(
200
- url, headers=headers, timeout=_build_timeout(timeout_config or timeout)
201
- )
202
- else:
203
- response = _get_default_sync_client(timeout).get(
204
- url, headers=headers, timeout=_build_timeout(timeout_config or timeout)
205
- )
185
+ t_config = timeout_config or TimeoutConfig(total_timeout=timeout)
186
+ r_config = retry_config or RetryConfig(max_attempts=0)
187
+
188
+ response = make_http_request_with_retry(
189
+ "GET",
190
+ url,
191
+ headers,
192
+ cached_session=cached_session,
193
+ retry_config=r_config,
194
+ timeout_config=t_config,
195
+ debug=debug,
196
+ )
206
197
 
207
198
  if response.status_code in (401, 403) and "Authorization" in headers:
208
199
  if _handle_token_refresh(url, headers, debug):
209
- if retry_config and timeout_config:
210
- response = make_http_request_with_retry(
211
- "GET",
212
- url,
213
- headers,
214
- cached_session=cached_session,
215
- retry_config=retry_config,
216
- timeout_config=timeout_config,
217
- debug=debug,
218
- )
219
- else:
220
- if cached_session:
221
- response = cached_session.get(
222
- url,
223
- headers=headers,
224
- timeout=_build_timeout(timeout_config or timeout),
225
- )
226
- else:
227
- response = _get_default_sync_client(timeout).get(
228
- url,
229
- headers=headers,
230
- timeout=_build_timeout(timeout_config or timeout),
231
- )
200
+ response = make_http_request_with_retry(
201
+ "GET",
202
+ url,
203
+ headers,
204
+ cached_session=cached_session,
205
+ retry_config=r_config,
206
+ timeout_config=t_config,
207
+ debug=debug,
208
+ )
232
209
 
233
210
  if debug:
234
211
  end_time = time.time()
@@ -272,63 +249,32 @@ def http_post(
272
249
  logger.debug(f"Making POST request to {url} {data_str}")
273
250
  start_time = time.time()
274
251
 
275
- # Use retry logic if configured
276
- if retry_config and timeout_config:
277
- response = make_http_request_with_retry(
278
- "POST",
279
- url,
280
- headers,
281
- data=data,
282
- cached_session=cached_session,
283
- retry_config=retry_config,
284
- timeout_config=timeout_config,
285
- debug=debug,
286
- )
287
- else:
288
- # Fallback to reusable client to keep connections warm across calls.
289
- if cached_session:
290
- response = cached_session.post(
291
- url,
292
- headers=headers,
293
- json=data,
294
- timeout=_build_timeout(timeout_config or timeout),
295
- )
296
- else:
297
- response = _get_default_sync_client(timeout).post(
298
- url,
299
- headers=headers,
300
- json=data,
301
- timeout=_build_timeout(timeout_config or timeout),
302
- )
252
+ t_config = timeout_config or TimeoutConfig(total_timeout=timeout)
253
+ r_config = retry_config or RetryConfig(max_attempts=0)
254
+
255
+ response = make_http_request_with_retry(
256
+ "POST",
257
+ url,
258
+ headers,
259
+ data=data,
260
+ cached_session=cached_session,
261
+ retry_config=r_config,
262
+ timeout_config=t_config,
263
+ debug=debug,
264
+ )
303
265
 
304
266
  if response.status_code in (401, 403) and "Authorization" in headers:
305
267
  if _handle_token_refresh(url, headers, debug):
306
- if retry_config and timeout_config:
307
- response = make_http_request_with_retry(
308
- "POST",
309
- url,
310
- headers,
311
- data=data,
312
- cached_session=cached_session,
313
- retry_config=retry_config,
314
- timeout_config=timeout_config,
315
- debug=debug,
316
- )
317
- else:
318
- if cached_session:
319
- response = cached_session.post(
320
- url,
321
- headers=headers,
322
- json=data,
323
- timeout=_build_timeout(timeout_config or timeout),
324
- )
325
- else:
326
- response = _get_default_sync_client(timeout).post(
327
- url,
328
- headers=headers,
329
- json=data,
330
- timeout=_build_timeout(timeout_config or timeout),
331
- )
268
+ response = make_http_request_with_retry(
269
+ "POST",
270
+ url,
271
+ headers,
272
+ data=data,
273
+ cached_session=cached_session,
274
+ retry_config=r_config,
275
+ timeout_config=t_config,
276
+ debug=debug,
277
+ )
332
278
 
333
279
  if debug:
334
280
  end_time = time.time()
@@ -437,53 +383,30 @@ async def http_get_async(
437
383
  logger.debug(f"Making async GET request to {url}")
438
384
  start_time = time.time()
439
385
 
440
- # Use retry logic if configured
441
- if retry_config and timeout_config:
442
- response = await make_http_request_with_retry_async(
443
- "GET",
444
- url,
445
- headers,
446
- cached_session=cached_session,
447
- retry_config=retry_config,
448
- timeout_config=timeout_config,
449
- debug=debug,
450
- )
451
- else:
452
- # Fallback to reusable async client to keep connections warm across calls.
453
- if cached_session:
454
- response = await cached_session.get(
455
- url, headers=headers, timeout=_build_timeout(timeout_config or timeout)
456
- )
457
- else:
458
- response = await (await _get_default_async_client(timeout)).get(
459
- url, headers=headers, timeout=_build_timeout(timeout_config or timeout)
460
- )
386
+ t_config = timeout_config or TimeoutConfig(total_timeout=timeout)
387
+ r_config = retry_config or RetryConfig(max_attempts=0)
388
+
389
+ response = await make_http_request_with_retry_async(
390
+ "GET",
391
+ url,
392
+ headers,
393
+ cached_session=cached_session,
394
+ retry_config=r_config,
395
+ timeout_config=t_config,
396
+ debug=debug,
397
+ )
461
398
 
462
399
  if response.status_code in (401, 403) and "Authorization" in headers:
463
400
  if _handle_token_refresh(url, headers, debug):
464
- if retry_config and timeout_config:
465
- response = await make_http_request_with_retry_async(
466
- "GET",
467
- url,
468
- headers,
469
- cached_session=cached_session,
470
- retry_config=retry_config,
471
- timeout_config=timeout_config,
472
- debug=debug,
473
- )
474
- else:
475
- if cached_session:
476
- response = await cached_session.get(
477
- url,
478
- headers=headers,
479
- timeout=_build_timeout(timeout_config or timeout),
480
- )
481
- else:
482
- response = await (await _get_default_async_client(timeout)).get(
483
- url,
484
- headers=headers,
485
- timeout=_build_timeout(timeout_config or timeout),
486
- )
401
+ response = await make_http_request_with_retry_async(
402
+ "GET",
403
+ url,
404
+ headers,
405
+ cached_session=cached_session,
406
+ retry_config=r_config,
407
+ timeout_config=t_config,
408
+ debug=debug,
409
+ )
487
410
 
488
411
  if debug:
489
412
  end_time = time.time()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ffbb-data-client
3
- Version: 2.4.4
3
+ Version: 2.4.6
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
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "2.4.4",
2
+ "tag": "2.4.6",
3
3
  "distance": 0,
4
- "node": "g292acf54067b4a7dfea2c53e9ef4bd655d9434fc",
4
+ "node": "g8d5b32a68ca61206b31b4a637fa74be95d173f57",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-29"