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