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