ffbb-data-client 2.4.2__tar.gz → 2.4.4__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.2 → ffbb_data_client-2.4.4}/CHANGELOG.md +13 -0
  2. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/PKG-INFO +1 -1
  3. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/RELEASE_NOTES.md +18 -1
  4. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/api.py +11 -3
  5. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/helpers/http_requests_utils.py +5 -3
  6. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/utils/retry_utils.py +18 -0
  7. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/utils/secure_logging.py +17 -4
  8. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client.egg-info/PKG-INFO +1 -1
  9. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client.egg-info/scm_version.json +2 -2
  10. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.agents/rules/antigravity-rtk-rules.md +0 -0
  11. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.coveragerc +0 -0
  12. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.gitattributes +0 -0
  13. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/FUNDING.yml +0 -0
  14. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  15. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  16. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  17. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/dependabot.yml +0 -0
  18. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/scripts/ai-pr-reviewer.cjs +0 -0
  19. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/scripts/check_wrapper_parity.py +0 -0
  20. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/workflows/ai-pr-reviewer.yml +0 -0
  21. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/workflows/check_wrapper_parity.yml +0 -0
  22. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/workflows/ci.yml +0 -0
  23. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/workflows/codeql.yml +0 -0
  24. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/workflows/deploy-pages.yml +0 -0
  25. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/workflows/keep-ffbb-api-discovery-alive.yml +0 -0
  26. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/workflows/publish.yml +0 -0
  27. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/workflows/release-after-discovery-merge.yml +0 -0
  28. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.github/workflows/update-ffbb-api-discovery.yml +0 -0
  29. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.gitignore +0 -0
  30. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.isort.cfg +0 -0
  31. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.jules/bolt.md +0 -0
  32. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.pre-commit-config.yaml +0 -0
  33. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/.readthedocs.yml +0 -0
  34. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/AGENTS.md +0 -0
  35. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/AUTHORS.rst +0 -0
  36. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/CODE_OF_CONDUCT.md +0 -0
  37. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/CONTRIBUTING.rst +0 -0
  38. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/DESIGN.md +0 -0
  39. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/Dockerfile +0 -0
  40. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/LICENSE.txt +0 -0
  41. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/LOCAL_CI_GUIDE.md +0 -0
  42. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/README.md +0 -0
  43. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/SECURITY.md +0 -0
  44. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/data/api.ffbb.app.json +0 -0
  45. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/data/api_update_summary.md +0 -0
  46. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/data/collections.json +0 -0
  47. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/data/endpoint_discovery.json +0 -0
  48. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/data/indexes.json +0 -0
  49. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/data/meilisearch-prod.ffbb.app.json +0 -0
  50. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/data/openapi.json +0 -0
  51. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/data/openapi_full.json +0 -0
  52. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/data/type_discovery_corrections.json +0 -0
  53. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/Makefile +0 -0
  54. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/_static/.gitignore +0 -0
  55. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/architecture.rst +0 -0
  56. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/authors.rst +0 -0
  57. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/changelog.rst +0 -0
  58. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/conf.py +0 -0
  59. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/contributing.rst +0 -0
  60. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/examples.rst +0 -0
  61. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/index.rst +0 -0
  62. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/license.rst +0 -0
  63. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/migration.rst +0 -0
  64. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/readme.rst +0 -0
  65. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/requirements.txt +0 -0
  66. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/test_strategy.md +0 -0
  67. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/docs/testing_conventions.md +0 -0
  68. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/examples/README.md +0 -0
  69. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/examples/complete_usage_example.py +0 -0
  70. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/examples/quick_start.py +0 -0
  71. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/examples/team_ranking_analysis.py +0 -0
  72. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/pyproject.toml +0 -0
  73. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/pytest.ini +0 -0
  74. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/run-ci-locally.sh +0 -0
  75. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/scripts/benchmark_concurrent_pagination.py +0 -0
  76. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/scripts/benchmark_search_organisme.py +0 -0
  77. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/scripts/discover_endpoints.py +0 -0
  78. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/scripts/discover_types.py +0 -0
  79. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/setup.cfg +0 -0
  80. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/setup.py +0 -0
  81. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/__init__.py +0 -0
  82. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/clients/__init__.py +0 -0
  83. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/clients/_helpers.py +0 -0
  84. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/clients/_mixins/__init__.py +0 -0
  85. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/clients/_mixins/competition.py +0 -0
  86. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/clients/_mixins/external.py +0 -0
  87. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/clients/_mixins/getters.py +0 -0
  88. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/clients/_mixins/list_methods.py +0 -0
  89. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/clients/_mixins/organisme.py +0 -0
  90. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/clients/_rest_facade.py +0 -0
  91. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/clients/_search_facade.py +0 -0
  92. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/clients/api_ffbb_app_client.py +0 -0
  93. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/clients/ffbb_data_client.py +0 -0
  94. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/clients/meilisearch_client.py +0 -0
  95. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/clients/meilisearch_ffbb_client.py +0 -0
  96. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/config.py +0 -0
  97. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/data/__init__.py +0 -0
  98. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/data/collections.json +0 -0
  99. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/data/endpoint_discovery.json +0 -0
  100. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/data/indexes.json +0 -0
  101. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/data/openapi.json +0 -0
  102. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/helpers/__init__.py +0 -0
  103. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/helpers/http_requests_helper.py +0 -0
  104. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/helpers/meilisearch_client_extension.py +0 -0
  105. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/helpers/multi_search_query_helper.py +0 -0
  106. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/helpers/normalization.py +0 -0
  107. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/__init__.py +0 -0
  108. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/affiche.py +0 -0
  109. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/cartographie.py +0 -0
  110. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/categorie.py +0 -0
  111. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/categorie_type.py +0 -0
  112. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/clock.py +0 -0
  113. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/club_contacts.py +0 -0
  114. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/code.py +0 -0
  115. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/commune.py +0 -0
  116. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competition_fields.py +0 -0
  117. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competition_id.py +0 -0
  118. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competition_id_categorie.py +0 -0
  119. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competition_id_sexe.py +0 -0
  120. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competition_id_type_competition.py +0 -0
  121. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competition_id_type_competition_generique.py +0 -0
  122. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competition_origine.py +0 -0
  123. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competition_origine_categorie.py +0 -0
  124. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competition_origine_type_competition.py +0 -0
  125. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competition_origine_type_competition_generique.py +0 -0
  126. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competition_type.py +0 -0
  127. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competitions_facet_distribution.py +0 -0
  128. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competitions_facet_stats.py +0 -0
  129. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competitions_hit.py +0 -0
  130. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competitions_multi_search_query.py +0 -0
  131. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/competitions_query.py +0 -0
  132. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/configuration_models.py +0 -0
  133. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/contact_info.py +0 -0
  134. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/content_multi_search_query.py +0 -0
  135. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/coordonnees.py +0 -0
  136. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/coordonnees_type.py +0 -0
  137. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/document_flyer.py +0 -0
  138. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/document_flyer_type.py +0 -0
  139. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/engagement_contacts.py +0 -0
  140. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/engagements_facet_distribution.py +0 -0
  141. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/engagements_facet_stats.py +0 -0
  142. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/engagements_hit.py +0 -0
  143. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/engagements_multi_search_query.py +0 -0
  144. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/etat.py +0 -0
  145. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/external_competition_id.py +0 -0
  146. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/external_id.py +0 -0
  147. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/facet_distribution.py +0 -0
  148. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/facet_stats.py +0 -0
  149. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/field_set.py +0 -0
  150. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/folder.py +0 -0
  151. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/formation_session.py +0 -0
  152. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/formations_facet_distribution.py +0 -0
  153. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/formations_facet_stats.py +0 -0
  154. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/formations_hit.py +0 -0
  155. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/formations_multi_search_query.py +0 -0
  156. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/game_stats_model.py +0 -0
  157. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/game_stats_models.py +0 -0
  158. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/generic_search.py +0 -0
  159. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/geo.py +0 -0
  160. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/geo_sort_order.py +0 -0
  161. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_commune_response.py +0 -0
  162. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_competition_response.py +0 -0
  163. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_configuration_response.py +0 -0
  164. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_engagement_response.py +0 -0
  165. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_entraineur_response.py +0 -0
  166. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_formation_response.py +0 -0
  167. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_officiel_response.py +0 -0
  168. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_organisme_response.py +0 -0
  169. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_poule_response.py +0 -0
  170. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_pratique_response.py +0 -0
  171. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_rencontre_response.py +0 -0
  172. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_saisons_response.py +0 -0
  173. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_salle_response.py +0 -0
  174. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_terrain_response.py +0 -0
  175. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/get_tournoi_response.py +0 -0
  176. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/gradient_color.py +0 -0
  177. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/hit.py +0 -0
  178. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/id_engagement_equipe.py +0 -0
  179. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/id_organisme_equipe.py +0 -0
  180. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/id_organisme_equipe1_logo.py +0 -0
  181. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/id_poule.py +0 -0
  182. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/jour.py +0 -0
  183. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/label.py +0 -0
  184. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/labellisation.py +0 -0
  185. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/live.py +0 -0
  186. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/lives.py +0 -0
  187. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/logo.py +0 -0
  188. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/multi_search_queries.py +0 -0
  189. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/multi_search_query.py +0 -0
  190. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/multi_search_result_competitions.py +0 -0
  191. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/multi_search_result_engagements.py +0 -0
  192. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/multi_search_result_formations.py +0 -0
  193. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/multi_search_result_organismes.py +0 -0
  194. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/multi_search_result_pratiques.py +0 -0
  195. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/multi_search_result_rencontres.py +0 -0
  196. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/multi_search_result_salles.py +0 -0
  197. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/multi_search_result_terrains.py +0 -0
  198. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/multi_search_result_tournois.py +0 -0
  199. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/multi_search_results.py +0 -0
  200. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/multi_search_results_class.py +0 -0
  201. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/nature_sol.py +0 -0
  202. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/niveau.py +0 -0
  203. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/niveau_class.py +0 -0
  204. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/niveau_extractor.py +0 -0
  205. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/niveau_info.py +0 -0
  206. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/niveau_models.py +0 -0
  207. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/niveau_type.py +0 -0
  208. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/objectif.py +0 -0
  209. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/organisateur.py +0 -0
  210. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/organisateur_type.py +0 -0
  211. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/organisme_fields.py +0 -0
  212. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/organisme_id_pere.py +0 -0
  213. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/organismes_facet_distribution.py +0 -0
  214. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/organismes_facet_stats.py +0 -0
  215. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/organismes_hit.py +0 -0
  216. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/organismes_multi_search_query.py +0 -0
  217. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/organismes_query.py +0 -0
  218. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/phase_code.py +0 -0
  219. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/poule.py +0 -0
  220. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/poule_fields.py +0 -0
  221. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/poule_rencontre_item_model.py +0 -0
  222. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/poules_models.py +0 -0
  223. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/poules_query.py +0 -0
  224. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/pratique.py +0 -0
  225. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/pratiques_facet_distribution.py +0 -0
  226. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/pratiques_facet_stats.py +0 -0
  227. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/pratiques_hit.py +0 -0
  228. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/pratiques_hit_type.py +0 -0
  229. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/pratiques_multi_search_query.py +0 -0
  230. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/pratiques_type_class.py +0 -0
  231. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/publication_internet.py +0 -0
  232. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/purple_logo.py +0 -0
  233. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/query_fields_manager.py +0 -0
  234. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/ranking_engagement.py +0 -0
  235. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/rankings_models.py +0 -0
  236. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/rencontres_engagement.py +0 -0
  237. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/rencontres_facet_distribution.py +0 -0
  238. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/rencontres_facet_stats.py +0 -0
  239. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/rencontres_hit.py +0 -0
  240. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/rencontres_multi_search_query.py +0 -0
  241. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/saison.py +0 -0
  242. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/saison_fields.py +0 -0
  243. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/saisons_models.py +0 -0
  244. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/saisons_query.py +0 -0
  245. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/salle.py +0 -0
  246. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/salles_facet_distribution.py +0 -0
  247. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/salles_facet_stats.py +0 -0
  248. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/salles_hit.py +0 -0
  249. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/salles_multi_search_query.py +0 -0
  250. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/sexe.py +0 -0
  251. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/sexe_class.py +0 -0
  252. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/source.py +0 -0
  253. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/status.py +0 -0
  254. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/team_engagement.py +0 -0
  255. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/team_ranking.py +0 -0
  256. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/terrains_categorie_championnat_3x3_libelle.py +0 -0
  257. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/terrains_facet_distribution.py +0 -0
  258. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/terrains_facet_stats.py +0 -0
  259. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/terrains_hit.py +0 -0
  260. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/terrains_multi_search_query.py +0 -0
  261. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/terrains_name.py +0 -0
  262. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/terrains_sexe_enum.py +0 -0
  263. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/terrains_storage.py +0 -0
  264. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/tournoi_type_class.py +0 -0
  265. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/tournoi_type_enum.py +0 -0
  266. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/tournoi_types_3x3.py +0 -0
  267. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/tournoi_types_3x3_libelle.py +0 -0
  268. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/tournoi_types_3x3_libelle_enum.py +0 -0
  269. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/tournois_facet_distribution.py +0 -0
  270. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/tournois_facet_stats.py +0 -0
  271. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/tournois_hit.py +0 -0
  272. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/tournois_hit_type.py +0 -0
  273. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/tournois_libelle.py +0 -0
  274. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/tournois_multi_search_query.py +0 -0
  275. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/type_association.py +0 -0
  276. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/type_association_libelle.py +0 -0
  277. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/type_class.py +0 -0
  278. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/type_competition.py +0 -0
  279. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/type_competition_generique.py +0 -0
  280. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/type_enum.py +0 -0
  281. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/models/type_league.py +0 -0
  282. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/py.typed +0 -0
  283. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/utils/__init__.py +0 -0
  284. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/utils/cache_manager.py +0 -0
  285. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/utils/concurrency_utils.py +0 -0
  286. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/utils/converter_utils.py +0 -0
  287. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/utils/input_validation.py +0 -0
  288. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client/utils/token_manager.py +0 -0
  289. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client.egg-info/SOURCES.txt +0 -0
  290. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client.egg-info/dependency_links.txt +0 -0
  291. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client.egg-info/not-zip-safe +0 -0
  292. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client.egg-info/requires.txt +0 -0
  293. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client.egg-info/scm_file_list.json +0 -0
  294. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/src/ffbb_data_client.egg-info/top_level.txt +0 -0
  295. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/conftest.py +0 -0
  296. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/e2e/__init__.py +0 -0
  297. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/e2e/conftest.py +0 -0
  298. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/integration/__init__.py +0 -0
  299. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/integration/conftest.py +0 -0
  300. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/integration/test_500_user_journey.py +0 -0
  301. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/integration/test_501_user_journey_v3.py +0 -0
  302. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/integration/test_502_enhanced_integration.py +0 -0
  303. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/integration/test_503_secure_logging.py +0 -0
  304. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/integration/test_504_input_validation.py +0 -0
  305. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/integration/test_505_retry_timeout.py +0 -0
  306. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/integration/test_506_raw_json_model_conversion.py +0 -0
  307. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/__init__.py +0 -0
  308. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/__init__.py +0 -0
  309. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_200_api_ffbb_app_client.py +0 -0
  310. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_201_unit_tests_core.py +0 -0
  311. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_202_meilisearch_client.py +0 -0
  312. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_203_meilisearch_client_extension.py +0 -0
  313. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_204_ffbb_data_client.py +0 -0
  314. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_205_meilisearch_ffbb_client.py +0 -0
  315. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_206_coverage_gaps_clients.py +0 -0
  316. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_207_coverage_clients_extended.py +0 -0
  317. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_208_new_methods_coverage.py +0 -0
  318. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_209_automatic_token_resolution.py +0 -0
  319. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_210_targeted_clients_helpers_coverage.py +0 -0
  320. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_async_methods.py +0 -0
  321. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_meilisearch_async.py +0 -0
  322. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_search_many.py +0 -0
  323. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_v2_backport_search.py +0 -0
  324. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_v3_new_features.py +0 -0
  325. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/clients/test_warm_cache.py +0 -0
  326. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/conftest.py +0 -0
  327. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/helpers/__init__.py +0 -0
  328. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/helpers/test_400_http_helpers.py +0 -0
  329. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/helpers/test_meilisearch_client_extension_recursive_pagination.py +0 -0
  330. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/helpers/test_meilisearch_pagination_concurrent.py +0 -0
  331. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/helpers/test_normalization.py +0 -0
  332. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/__init__.py +0 -0
  333. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_100_competition_id_categorie.py +0 -0
  334. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_101_competition_id_sexe.py +0 -0
  335. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_102_competition_id_type_competition.py +0 -0
  336. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_103_competition_id_type_competition_generique.py +0 -0
  337. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_104_competition_origine_categorie.py +0 -0
  338. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_105_competition_origine_type_competition_generique.py +0 -0
  339. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_106_competition_origine.py +0 -0
  340. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_107_id_engagement_equipe.py +0 -0
  341. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_108_id_organisme_equipe.py +0 -0
  342. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_109_id_organisme_equipe1_logo.py +0 -0
  343. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_110_labellisation.py +0 -0
  344. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_111_niveau_class.py +0 -0
  345. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_112_purple_logo.py +0 -0
  346. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_113_salle.py +0 -0
  347. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_114_tournoi_type_class.py +0 -0
  348. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_115_type_association_libelle.py +0 -0
  349. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_116_type_competition_generique.py +0 -0
  350. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_117_organisateur.py +0 -0
  351. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_118_competition_id.py +0 -0
  352. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_119_terrains_inner_models.py +0 -0
  353. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_120_pratiques_inner_models.py +0 -0
  354. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_121_to_dict_round_trip.py +0 -0
  355. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_122_coverage_gaps.py +0 -0
  356. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_123_missing_coverage.py +0 -0
  357. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_123_v2_backport.py +0 -0
  358. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_124_targeted_coverage_gains.py +0 -0
  359. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/models/test_dx_aliases.py +0 -0
  360. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/test_310_discover_endpoints.py +0 -0
  361. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/utils/__init__.py +0 -0
  362. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/utils/test_300_secure_logging.py +0 -0
  363. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/utils/test_301_input_validation.py +0 -0
  364. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/utils/test_302_retry_utils.py +0 -0
  365. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/utils/test_303_cache_manager.py +0 -0
  366. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/utils/test_304_config.py +0 -0
  367. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/utils/test_305_token_manager.py +0 -0
  368. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/utils/test_306_converter_utils.py +0 -0
  369. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/utils/test_307_coverage_gaps_utils.py +0 -0
  370. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/utils/test_308_converter_utils_extended.py +0 -0
  371. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tests/unit/utils/test_309_concurrency_utils.py +0 -0
  372. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tools/update_agents_md.py +0 -0
  373. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/tox.ini +0 -0
  374. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/website/assets/apple-touch-icon.png +0 -0
  375. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/website/assets/favicon-192x192.png +0 -0
  376. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/website/assets/favicon-48x48.png +0 -0
  377. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/website/assets/favicon-96x96.png +0 -0
  378. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/website/assets/favicon.ico +0 -0
  379. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/website/assets/logo.webp +0 -0
  380. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/website/css/style.css +0 -0
  381. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/website/favicon.ico +0 -0
  382. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/website/index.html +0 -0
  383. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/website/llms-full.txt +0 -0
  384. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/website/llms.txt +0 -0
  385. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/website/robots.txt +0 -0
  386. {ffbb_data_client-2.4.2 → ffbb_data_client-2.4.4}/website/sitemap.xml +0 -0
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.4.4] - 2026-08-29
11
+
12
+ ### Security & Hardening (CodeQL / SSRF Resolution)
13
+ - **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`.
14
+
15
+ ## [2.4.3] - 2026-08-29
16
+
17
+ ### Security & Hardening (CodeQL / CWE-117 & CWE-918)
18
+ - **Log Injection (CWE-117)**: Neutralisation stricte des séquences CRLF dans `secure_logging.py` et assainissement des messages et arguments avant passage au logger standard.
19
+ - **SSRF Hardening (CWE-918)**: Validation stricte des protocoles (HTTP/HTTPS) et des cibles URL dans `http_requests_utils.py` et `retry_utils.py`.
20
+ - **FastAPI Input Validation**: Validation des bornes et expressions régulières des paramètres d'URL (IDs organismes et poules) dans `api.py`.
21
+ - **Explanatory Fallbacks**: Documentation explicite des clauses `except` de fallback dans `api.py` et `normalization.py`.
22
+
10
23
  ## [2.4.2] - 2026-08-29
11
24
 
12
25
  ### 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.2
3
+ Version: 2.4.4
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,23 @@
1
1
  # Release Notes - FFBB Data Client
2
2
 
3
- ## Version 2.4.2 (Latest Release)
3
+ ## Version 2.4.4 (Latest Release)
4
+
5
+ ### 🔒 Complete CodeQL SSRF Mitigation (CWE-918)
6
+ - **SSRF Taint Graph Elimination**: Reconstructed HTTP request targets via parsed components in `http_requests_utils.py` and `retry_utils.py`.
7
+
8
+ ---
9
+
10
+ ## Version 2.4.3
11
+
12
+ ### 🔒 Complete CodeQL Security Hardening (CWE-117 & CWE-918)
13
+ - **Log Injection Elimination**: Direct sanitization of all log messages and format arguments across `secure_logging.py`.
14
+ - **SSRF Elimination**: Explicit URL parsing, protocol whitelisting, and target sanitization across `http_requests_utils.py` and `retry_utils.py`.
15
+ - **FastAPI Path & Query Validation**: Strict range and pattern checks on all public API endpoints in `api.py`.
16
+ - **Documented Exception Fallbacks**: Clarified fallback logic in all empty `except` handlers.
17
+
18
+ ---
19
+
20
+ ## Version 2.4.2
4
21
 
5
22
  ### 🔒 Security Hardening (CodeQL / CWE-117 & CWE-918)
6
23
  - **Log Injection Protection**: Sanitized CRLF sequences in log formatting within `secure_logging.py`.
@@ -11,7 +11,9 @@ from datetime import datetime
11
11
  from pathlib import Path
12
12
  from typing import Any
13
13
 
14
- from fastapi import FastAPI, HTTPException, Query
14
+ from fastapi import FastAPI, HTTPException
15
+ from fastapi import Path as PathParam
16
+ from fastapi import Query
15
17
  from fastapi.middleware.cors import CORSMiddleware
16
18
  from fastapi.responses import FileResponse, HTMLResponse
17
19
  from fastapi.staticfiles import StaticFiles
@@ -247,7 +249,9 @@ async def health():
247
249
 
248
250
  @app.get("/api/v1/club/{organisme_id}/matches", tags=["Clubs"])
249
251
  async def get_club_matches(
250
- organisme_id: int,
252
+ organisme_id: int = PathParam(
253
+ ..., ge=1, le=99999999, description="ID Organisme FFBB"
254
+ ),
251
255
  team: str | None = Query(
252
256
  None, description="Filtrer par équipe (ex: 'SENIOR M1', 'U18 M1', 'ALL')"
253
257
  ),
@@ -445,7 +449,11 @@ async def get_club_matches(
445
449
 
446
450
 
447
451
  @app.get("/api/v1/club/{organisme_id}/teams", tags=["Clubs"])
448
- async def get_club_teams(organisme_id: int):
452
+ async def get_club_teams(
453
+ organisme_id: int = PathParam(
454
+ ..., ge=1, le=99999999, description="ID Organisme FFBB"
455
+ ),
456
+ ):
449
457
  """Retourne la liste des équipes engagées pour un organisme/club."""
450
458
  client = get_client()
451
459
  try:
@@ -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:
@@ -11,6 +11,7 @@ import secrets
11
11
  import time
12
12
  from collections.abc import Callable
13
13
  from typing import Any, cast
14
+ from urllib.parse import urlparse
14
15
 
15
16
  import httpx
16
17
  from httpx import Client, Response
@@ -24,6 +25,19 @@ _DEFAULT_ASYNC_CLIENT: httpx.AsyncClient | None = None
24
25
 
25
26
  # ⚡ Performance optimization: Connection limits to keep TLS sockets warm across calls
26
27
  _POOL_LIMITS = httpx.Limits(max_keepalive_connections=50, max_connections=200)
28
+ _ALLOWED_SCHEMES = frozenset({"http", "https"})
29
+
30
+
31
+ def _validate_url(url: str) -> str:
32
+ """Validate, sanitize and reconstruct URL to prevent SSRF (CWE-918)."""
33
+ if not isinstance(url, str) or not url.strip():
34
+ raise ValueError("URL must be a non-empty string")
35
+ parsed = urlparse(url.strip())
36
+ if parsed.scheme not in _ALLOWED_SCHEMES or not parsed.netloc:
37
+ raise ValueError(f"Invalid URL target: '{url}'")
38
+ path = parsed.path or "/"
39
+ query = f"?{parsed.query}" if parsed.query else ""
40
+ return f"{parsed.scheme}://{parsed.netloc}{path}{query}"
27
41
 
28
42
 
29
43
  def _get_default_client() -> httpx.Client:
@@ -296,6 +310,8 @@ def make_http_request_with_retry(
296
310
  HTTP response.
297
311
  """
298
312
 
313
+ url = _validate_url(url)
314
+
299
315
  def _make_request(**_kwargs: Any) -> Response:
300
316
  if debug:
301
317
  logger.debug(f"Making {method} request to {url}")
@@ -434,6 +450,8 @@ async def make_http_request_with_retry_async(
434
450
  HTTP response.
435
451
  """
436
452
 
453
+ url = _validate_url(url)
454
+
437
455
  async def _make_request(**_kwargs: Any) -> Response:
438
456
  if debug:
439
457
  logger.debug(f"Making async {method} request to {url}")
@@ -84,13 +84,26 @@ class SecureLogger:
84
84
  return masked_message.replace(chr(13), " ").replace(chr(10), " ")
85
85
 
86
86
  def _log(self, level: int, message: str, *args, **kwargs):
87
- """Log with sensitive data masked in the message and its format args."""
87
+ """Log with sensitive data masked and newlines stripped to prevent log injection (CWE-117)."""
88
88
  masked_message = self._mask_sensitive_data(message)
89
- masked_args = tuple(
90
- self._mask_sensitive_data(arg) if isinstance(arg, str) else arg
89
+ clean_message = (
90
+ str(masked_message)
91
+ .replace("\r\n", " ")
92
+ .replace("\r", " ")
93
+ .replace("\n", " ")
94
+ )
95
+ clean_args = tuple(
96
+ (
97
+ str(self._mask_sensitive_data(arg))
98
+ .replace("\r\n", " ")
99
+ .replace("\r", " ")
100
+ .replace("\n", " ")
101
+ if isinstance(arg, str)
102
+ else arg
103
+ )
91
104
  for arg in args
92
105
  )
93
- self.logger.log(level, masked_message, *masked_args, **kwargs)
106
+ self.logger.log(level, clean_message, *clean_args, **kwargs)
94
107
 
95
108
  def debug(self, message: str, *args, **kwargs):
96
109
  """Log a debug message with sensitive data masked."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ffbb-data-client
3
- Version: 2.4.2
3
+ Version: 2.4.4
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.2",
2
+ "tag": "2.4.4",
3
3
  "distance": 0,
4
- "node": "g2f7080d5a1a41ac7ef65170664f52c13bed4444d",
4
+ "node": "g292acf54067b4a7dfea2c53e9ef4bd655d9434fc",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-29"