xplia 1.0.1__py3-none-any.whl
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.
- venv/Lib/site-packages/_distutils_hack/__init__.py +222 -0
- venv/Lib/site-packages/_distutils_hack/override.py +1 -0
- venv/Lib/site-packages/pip/__init__.py +13 -0
- venv/Lib/site-packages/pip/__main__.py +24 -0
- venv/Lib/site-packages/pip/__pip-runner__.py +50 -0
- venv/Lib/site-packages/pip/_internal/__init__.py +19 -0
- venv/Lib/site-packages/pip/_internal/build_env.py +311 -0
- venv/Lib/site-packages/pip/_internal/cache.py +292 -0
- venv/Lib/site-packages/pip/_internal/cli/__init__.py +4 -0
- venv/Lib/site-packages/pip/_internal/cli/autocompletion.py +171 -0
- venv/Lib/site-packages/pip/_internal/cli/base_command.py +236 -0
- venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py +1074 -0
- venv/Lib/site-packages/pip/_internal/cli/command_context.py +27 -0
- venv/Lib/site-packages/pip/_internal/cli/main.py +79 -0
- venv/Lib/site-packages/pip/_internal/cli/main_parser.py +134 -0
- venv/Lib/site-packages/pip/_internal/cli/parser.py +294 -0
- venv/Lib/site-packages/pip/_internal/cli/progress_bars.py +68 -0
- venv/Lib/site-packages/pip/_internal/cli/req_command.py +508 -0
- venv/Lib/site-packages/pip/_internal/cli/spinners.py +159 -0
- venv/Lib/site-packages/pip/_internal/cli/status_codes.py +6 -0
- venv/Lib/site-packages/pip/_internal/commands/__init__.py +132 -0
- venv/Lib/site-packages/pip/_internal/commands/cache.py +222 -0
- venv/Lib/site-packages/pip/_internal/commands/check.py +54 -0
- venv/Lib/site-packages/pip/_internal/commands/completion.py +121 -0
- venv/Lib/site-packages/pip/_internal/commands/configuration.py +282 -0
- venv/Lib/site-packages/pip/_internal/commands/debug.py +199 -0
- venv/Lib/site-packages/pip/_internal/commands/download.py +147 -0
- venv/Lib/site-packages/pip/_internal/commands/freeze.py +108 -0
- venv/Lib/site-packages/pip/_internal/commands/hash.py +59 -0
- venv/Lib/site-packages/pip/_internal/commands/help.py +41 -0
- venv/Lib/site-packages/pip/_internal/commands/index.py +139 -0
- venv/Lib/site-packages/pip/_internal/commands/inspect.py +92 -0
- venv/Lib/site-packages/pip/_internal/commands/install.py +778 -0
- venv/Lib/site-packages/pip/_internal/commands/list.py +368 -0
- venv/Lib/site-packages/pip/_internal/commands/search.py +174 -0
- venv/Lib/site-packages/pip/_internal/commands/show.py +189 -0
- venv/Lib/site-packages/pip/_internal/commands/uninstall.py +113 -0
- venv/Lib/site-packages/pip/_internal/commands/wheel.py +183 -0
- venv/Lib/site-packages/pip/_internal/configuration.py +381 -0
- venv/Lib/site-packages/pip/_internal/distributions/__init__.py +21 -0
- venv/Lib/site-packages/pip/_internal/distributions/base.py +39 -0
- venv/Lib/site-packages/pip/_internal/distributions/installed.py +23 -0
- venv/Lib/site-packages/pip/_internal/distributions/sdist.py +150 -0
- venv/Lib/site-packages/pip/_internal/distributions/wheel.py +34 -0
- venv/Lib/site-packages/pip/_internal/exceptions.py +733 -0
- venv/Lib/site-packages/pip/_internal/index/__init__.py +2 -0
- venv/Lib/site-packages/pip/_internal/index/collector.py +505 -0
- venv/Lib/site-packages/pip/_internal/index/package_finder.py +1029 -0
- venv/Lib/site-packages/pip/_internal/index/sources.py +223 -0
- venv/Lib/site-packages/pip/_internal/locations/__init__.py +467 -0
- venv/Lib/site-packages/pip/_internal/locations/_distutils.py +173 -0
- venv/Lib/site-packages/pip/_internal/locations/_sysconfig.py +213 -0
- venv/Lib/site-packages/pip/_internal/locations/base.py +81 -0
- venv/Lib/site-packages/pip/_internal/main.py +12 -0
- venv/Lib/site-packages/pip/_internal/metadata/__init__.py +127 -0
- venv/Lib/site-packages/pip/_internal/metadata/_json.py +84 -0
- venv/Lib/site-packages/pip/_internal/metadata/base.py +688 -0
- venv/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py +4 -0
- venv/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py +55 -0
- venv/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +224 -0
- venv/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +188 -0
- venv/Lib/site-packages/pip/_internal/metadata/pkg_resources.py +270 -0
- venv/Lib/site-packages/pip/_internal/models/__init__.py +2 -0
- venv/Lib/site-packages/pip/_internal/models/candidate.py +34 -0
- venv/Lib/site-packages/pip/_internal/models/direct_url.py +237 -0
- venv/Lib/site-packages/pip/_internal/models/format_control.py +80 -0
- venv/Lib/site-packages/pip/_internal/models/index.py +28 -0
- venv/Lib/site-packages/pip/_internal/models/installation_report.py +53 -0
- venv/Lib/site-packages/pip/_internal/models/link.py +581 -0
- venv/Lib/site-packages/pip/_internal/models/scheme.py +31 -0
- venv/Lib/site-packages/pip/_internal/models/search_scope.py +132 -0
- venv/Lib/site-packages/pip/_internal/models/selection_prefs.py +51 -0
- venv/Lib/site-packages/pip/_internal/models/target_python.py +110 -0
- venv/Lib/site-packages/pip/_internal/models/wheel.py +92 -0
- venv/Lib/site-packages/pip/_internal/network/__init__.py +2 -0
- venv/Lib/site-packages/pip/_internal/network/auth.py +561 -0
- venv/Lib/site-packages/pip/_internal/network/cache.py +69 -0
- venv/Lib/site-packages/pip/_internal/network/download.py +186 -0
- venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py +210 -0
- venv/Lib/site-packages/pip/_internal/network/session.py +519 -0
- venv/Lib/site-packages/pip/_internal/network/utils.py +96 -0
- venv/Lib/site-packages/pip/_internal/network/xmlrpc.py +60 -0
- venv/Lib/site-packages/pip/_internal/operations/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/operations/build/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/operations/build/build_tracker.py +124 -0
- venv/Lib/site-packages/pip/_internal/operations/build/metadata.py +39 -0
- venv/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py +41 -0
- venv/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py +74 -0
- venv/Lib/site-packages/pip/_internal/operations/build/wheel.py +37 -0
- venv/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py +46 -0
- venv/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py +102 -0
- venv/Lib/site-packages/pip/_internal/operations/check.py +187 -0
- venv/Lib/site-packages/pip/_internal/operations/freeze.py +255 -0
- venv/Lib/site-packages/pip/_internal/operations/install/__init__.py +2 -0
- venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py +46 -0
- venv/Lib/site-packages/pip/_internal/operations/install/wheel.py +740 -0
- venv/Lib/site-packages/pip/_internal/operations/prepare.py +743 -0
- venv/Lib/site-packages/pip/_internal/pyproject.py +179 -0
- venv/Lib/site-packages/pip/_internal/req/__init__.py +92 -0
- venv/Lib/site-packages/pip/_internal/req/constructors.py +506 -0
- venv/Lib/site-packages/pip/_internal/req/req_file.py +552 -0
- venv/Lib/site-packages/pip/_internal/req/req_install.py +874 -0
- venv/Lib/site-packages/pip/_internal/req/req_set.py +119 -0
- venv/Lib/site-packages/pip/_internal/req/req_uninstall.py +650 -0
- venv/Lib/site-packages/pip/_internal/resolution/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/resolution/base.py +20 -0
- venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +600 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +141 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +555 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +730 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +155 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +255 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +80 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +165 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +299 -0
- venv/Lib/site-packages/pip/_internal/self_outdated_check.py +242 -0
- venv/Lib/site-packages/pip/_internal/utils/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/utils/_jaraco_text.py +109 -0
- venv/Lib/site-packages/pip/_internal/utils/_log.py +38 -0
- venv/Lib/site-packages/pip/_internal/utils/appdirs.py +52 -0
- venv/Lib/site-packages/pip/_internal/utils/compat.py +63 -0
- venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +165 -0
- venv/Lib/site-packages/pip/_internal/utils/datetime.py +11 -0
- venv/Lib/site-packages/pip/_internal/utils/deprecation.py +120 -0
- venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +87 -0
- venv/Lib/site-packages/pip/_internal/utils/egg_link.py +72 -0
- venv/Lib/site-packages/pip/_internal/utils/encoding.py +36 -0
- venv/Lib/site-packages/pip/_internal/utils/entrypoints.py +84 -0
- venv/Lib/site-packages/pip/_internal/utils/filesystem.py +153 -0
- venv/Lib/site-packages/pip/_internal/utils/filetypes.py +27 -0
- venv/Lib/site-packages/pip/_internal/utils/glibc.py +88 -0
- venv/Lib/site-packages/pip/_internal/utils/hashes.py +151 -0
- venv/Lib/site-packages/pip/_internal/utils/inject_securetransport.py +35 -0
- venv/Lib/site-packages/pip/_internal/utils/logging.py +348 -0
- venv/Lib/site-packages/pip/_internal/utils/misc.py +735 -0
- venv/Lib/site-packages/pip/_internal/utils/models.py +39 -0
- venv/Lib/site-packages/pip/_internal/utils/packaging.py +57 -0
- venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py +146 -0
- venv/Lib/site-packages/pip/_internal/utils/subprocess.py +260 -0
- venv/Lib/site-packages/pip/_internal/utils/temp_dir.py +246 -0
- venv/Lib/site-packages/pip/_internal/utils/unpacking.py +257 -0
- venv/Lib/site-packages/pip/_internal/utils/urls.py +62 -0
- venv/Lib/site-packages/pip/_internal/utils/virtualenv.py +104 -0
- venv/Lib/site-packages/pip/_internal/utils/wheel.py +136 -0
- venv/Lib/site-packages/pip/_internal/vcs/__init__.py +15 -0
- venv/Lib/site-packages/pip/_internal/vcs/bazaar.py +112 -0
- venv/Lib/site-packages/pip/_internal/vcs/git.py +526 -0
- venv/Lib/site-packages/pip/_internal/vcs/mercurial.py +163 -0
- venv/Lib/site-packages/pip/_internal/vcs/subversion.py +324 -0
- venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +705 -0
- venv/Lib/site-packages/pip/_internal/wheel_builder.py +355 -0
- venv/Lib/site-packages/pip/_vendor/__init__.py +120 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py +18 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py +61 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +137 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +65 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +9 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +188 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +39 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/compat.py +32 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +439 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +111 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +139 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +190 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +33 -0
- venv/Lib/site-packages/pip/_vendor/certifi/__init__.py +4 -0
- venv/Lib/site-packages/pip/_vendor/certifi/__main__.py +12 -0
- venv/Lib/site-packages/pip/_vendor/certifi/core.py +108 -0
- venv/Lib/site-packages/pip/_vendor/chardet/__init__.py +115 -0
- venv/Lib/site-packages/pip/_vendor/chardet/big5freq.py +386 -0
- venv/Lib/site-packages/pip/_vendor/chardet/big5prober.py +47 -0
- venv/Lib/site-packages/pip/_vendor/chardet/chardistribution.py +261 -0
- venv/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py +106 -0
- venv/Lib/site-packages/pip/_vendor/chardet/charsetprober.py +147 -0
- venv/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py +112 -0
- venv/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py +90 -0
- venv/Lib/site-packages/pip/_vendor/chardet/codingstatemachinedict.py +19 -0
- venv/Lib/site-packages/pip/_vendor/chardet/cp949prober.py +49 -0
- venv/Lib/site-packages/pip/_vendor/chardet/enums.py +85 -0
- venv/Lib/site-packages/pip/_vendor/chardet/escprober.py +102 -0
- venv/Lib/site-packages/pip/_vendor/chardet/escsm.py +261 -0
- venv/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py +102 -0
- venv/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py +196 -0
- venv/Lib/site-packages/pip/_vendor/chardet/euckrprober.py +47 -0
- venv/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py +388 -0
- venv/Lib/site-packages/pip/_vendor/chardet/euctwprober.py +47 -0
- venv/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py +284 -0
- venv/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py +47 -0
- venv/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py +316 -0
- venv/Lib/site-packages/pip/_vendor/chardet/jisfreq.py +325 -0
- venv/Lib/site-packages/pip/_vendor/chardet/johabfreq.py +2382 -0
- venv/Lib/site-packages/pip/_vendor/chardet/johabprober.py +47 -0
- venv/Lib/site-packages/pip/_vendor/chardet/jpcntx.py +238 -0
- venv/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py +4649 -0
- venv/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py +4397 -0
- venv/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py +4380 -0
- venv/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py +4649 -0
- venv/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py +5725 -0
- venv/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py +4380 -0
- venv/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py +4380 -0
- venv/Lib/site-packages/pip/_vendor/chardet/latin1prober.py +147 -0
- venv/Lib/site-packages/pip/_vendor/chardet/macromanprober.py +162 -0
- venv/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py +95 -0
- venv/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py +57 -0
- venv/Lib/site-packages/pip/_vendor/chardet/mbcssm.py +661 -0
- venv/Lib/site-packages/pip/_vendor/chardet/metadata/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/chardet/metadata/languages.py +352 -0
- venv/Lib/site-packages/pip/_vendor/chardet/resultdict.py +16 -0
- venv/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py +162 -0
- venv/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py +88 -0
- venv/Lib/site-packages/pip/_vendor/chardet/sjisprober.py +105 -0
- venv/Lib/site-packages/pip/_vendor/chardet/universaldetector.py +362 -0
- venv/Lib/site-packages/pip/_vendor/chardet/utf1632prober.py +225 -0
- venv/Lib/site-packages/pip/_vendor/chardet/utf8prober.py +82 -0
- venv/Lib/site-packages/pip/_vendor/chardet/version.py +9 -0
- venv/Lib/site-packages/pip/_vendor/colorama/__init__.py +7 -0
- venv/Lib/site-packages/pip/_vendor/colorama/ansi.py +102 -0
- venv/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py +277 -0
- venv/Lib/site-packages/pip/_vendor/colorama/initialise.py +121 -0
- venv/Lib/site-packages/pip/_vendor/colorama/tests/__init__.py +1 -0
- venv/Lib/site-packages/pip/_vendor/colorama/tests/ansi_test.py +76 -0
- venv/Lib/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py +294 -0
- venv/Lib/site-packages/pip/_vendor/colorama/tests/initialise_test.py +189 -0
- venv/Lib/site-packages/pip/_vendor/colorama/tests/isatty_test.py +57 -0
- venv/Lib/site-packages/pip/_vendor/colorama/tests/utils.py +49 -0
- venv/Lib/site-packages/pip/_vendor/colorama/tests/winterm_test.py +131 -0
- venv/Lib/site-packages/pip/_vendor/colorama/win32.py +180 -0
- venv/Lib/site-packages/pip/_vendor/colorama/winterm.py +195 -0
- venv/Lib/site-packages/pip/_vendor/distlib/__init__.py +23 -0
- venv/Lib/site-packages/pip/_vendor/distlib/compat.py +1116 -0
- venv/Lib/site-packages/pip/_vendor/distlib/database.py +1350 -0
- venv/Lib/site-packages/pip/_vendor/distlib/index.py +508 -0
- venv/Lib/site-packages/pip/_vendor/distlib/locators.py +1300 -0
- venv/Lib/site-packages/pip/_vendor/distlib/manifest.py +393 -0
- venv/Lib/site-packages/pip/_vendor/distlib/markers.py +152 -0
- venv/Lib/site-packages/pip/_vendor/distlib/metadata.py +1076 -0
- venv/Lib/site-packages/pip/_vendor/distlib/resources.py +358 -0
- venv/Lib/site-packages/pip/_vendor/distlib/scripts.py +437 -0
- venv/Lib/site-packages/pip/_vendor/distlib/util.py +1932 -0
- venv/Lib/site-packages/pip/_vendor/distlib/version.py +739 -0
- venv/Lib/site-packages/pip/_vendor/distlib/wheel.py +1082 -0
- venv/Lib/site-packages/pip/_vendor/distro/__init__.py +54 -0
- venv/Lib/site-packages/pip/_vendor/distro/__main__.py +4 -0
- venv/Lib/site-packages/pip/_vendor/distro/distro.py +1399 -0
- venv/Lib/site-packages/pip/_vendor/idna/__init__.py +44 -0
- venv/Lib/site-packages/pip/_vendor/idna/codec.py +112 -0
- venv/Lib/site-packages/pip/_vendor/idna/compat.py +13 -0
- venv/Lib/site-packages/pip/_vendor/idna/core.py +400 -0
- venv/Lib/site-packages/pip/_vendor/idna/idnadata.py +2151 -0
- venv/Lib/site-packages/pip/_vendor/idna/intranges.py +54 -0
- venv/Lib/site-packages/pip/_vendor/idna/package_data.py +2 -0
- venv/Lib/site-packages/pip/_vendor/idna/uts46data.py +8600 -0
- venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py +57 -0
- venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
- venv/Lib/site-packages/pip/_vendor/msgpack/ext.py +193 -0
- venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py +1010 -0
- venv/Lib/site-packages/pip/_vendor/packaging/__about__.py +26 -0
- venv/Lib/site-packages/pip/_vendor/packaging/__init__.py +25 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_manylinux.py +301 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_musllinux.py +136 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_structures.py +61 -0
- venv/Lib/site-packages/pip/_vendor/packaging/markers.py +304 -0
- venv/Lib/site-packages/pip/_vendor/packaging/requirements.py +146 -0
- venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py +802 -0
- venv/Lib/site-packages/pip/_vendor/packaging/tags.py +487 -0
- venv/Lib/site-packages/pip/_vendor/packaging/utils.py +136 -0
- venv/Lib/site-packages/pip/_vendor/packaging/version.py +504 -0
- venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py +3361 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/__init__.py +566 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +53 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/android.py +210 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/api.py +223 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/macos.py +91 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/unix.py +223 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/version.py +4 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/windows.py +255 -0
- venv/Lib/site-packages/pip/_vendor/pygments/__init__.py +82 -0
- venv/Lib/site-packages/pip/_vendor/pygments/__main__.py +17 -0
- venv/Lib/site-packages/pip/_vendor/pygments/cmdline.py +668 -0
- venv/Lib/site-packages/pip/_vendor/pygments/console.py +70 -0
- venv/Lib/site-packages/pip/_vendor/pygments/filter.py +71 -0
- venv/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +940 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatter.py +124 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +158 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py +23 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py +108 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py +170 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/html.py +989 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/img.py +645 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/irc.py +154 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/latex.py +521 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/other.py +161 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py +83 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/rtf.py +146 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/svg.py +188 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/terminal.py +127 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/terminal256.py +338 -0
- venv/Lib/site-packages/pip/_vendor/pygments/lexer.py +943 -0
- venv/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +362 -0
- venv/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py +559 -0
- venv/Lib/site-packages/pip/_vendor/pygments/lexers/python.py +1198 -0
- venv/Lib/site-packages/pip/_vendor/pygments/modeline.py +43 -0
- venv/Lib/site-packages/pip/_vendor/pygments/plugin.py +88 -0
- venv/Lib/site-packages/pip/_vendor/pygments/regexopt.py +91 -0
- venv/Lib/site-packages/pip/_vendor/pygments/scanner.py +104 -0
- venv/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +217 -0
- venv/Lib/site-packages/pip/_vendor/pygments/style.py +197 -0
- venv/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +103 -0
- venv/Lib/site-packages/pip/_vendor/pygments/token.py +213 -0
- venv/Lib/site-packages/pip/_vendor/pygments/unistring.py +153 -0
- venv/Lib/site-packages/pip/_vendor/pygments/util.py +330 -0
- venv/Lib/site-packages/pip/_vendor/pyparsing/__init__.py +322 -0
- venv/Lib/site-packages/pip/_vendor/pyparsing/actions.py +217 -0
- venv/Lib/site-packages/pip/_vendor/pyparsing/common.py +432 -0
- venv/Lib/site-packages/pip/_vendor/pyparsing/core.py +6115 -0
- venv/Lib/site-packages/pip/_vendor/pyparsing/diagram/__init__.py +656 -0
- venv/Lib/site-packages/pip/_vendor/pyparsing/exceptions.py +299 -0
- venv/Lib/site-packages/pip/_vendor/pyparsing/helpers.py +1100 -0
- venv/Lib/site-packages/pip/_vendor/pyparsing/results.py +796 -0
- venv/Lib/site-packages/pip/_vendor/pyparsing/testing.py +331 -0
- venv/Lib/site-packages/pip/_vendor/pyparsing/unicode.py +361 -0
- venv/Lib/site-packages/pip/_vendor/pyparsing/util.py +284 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py +23 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_compat.py +8 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py +330 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +18 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +353 -0
- venv/Lib/site-packages/pip/_vendor/requests/__init__.py +182 -0
- venv/Lib/site-packages/pip/_vendor/requests/__version__.py +14 -0
- venv/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +50 -0
- venv/Lib/site-packages/pip/_vendor/requests/adapters.py +538 -0
- venv/Lib/site-packages/pip/_vendor/requests/api.py +157 -0
- venv/Lib/site-packages/pip/_vendor/requests/auth.py +315 -0
- venv/Lib/site-packages/pip/_vendor/requests/certs.py +24 -0
- venv/Lib/site-packages/pip/_vendor/requests/compat.py +67 -0
- venv/Lib/site-packages/pip/_vendor/requests/cookies.py +561 -0
- venv/Lib/site-packages/pip/_vendor/requests/exceptions.py +141 -0
- venv/Lib/site-packages/pip/_vendor/requests/help.py +131 -0
- venv/Lib/site-packages/pip/_vendor/requests/hooks.py +33 -0
- venv/Lib/site-packages/pip/_vendor/requests/models.py +1034 -0
- venv/Lib/site-packages/pip/_vendor/requests/packages.py +16 -0
- venv/Lib/site-packages/pip/_vendor/requests/sessions.py +833 -0
- venv/Lib/site-packages/pip/_vendor/requests/status_codes.py +128 -0
- venv/Lib/site-packages/pip/_vendor/requests/structures.py +99 -0
- venv/Lib/site-packages/pip/_vendor/requests/utils.py +1094 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +26 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py +6 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/providers.py +133 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +43 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py +547 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/structs.py +170 -0
- venv/Lib/site-packages/pip/_vendor/rich/__init__.py +177 -0
- venv/Lib/site-packages/pip/_vendor/rich/__main__.py +274 -0
- venv/Lib/site-packages/pip/_vendor/rich/_cell_widths.py +451 -0
- venv/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py +3610 -0
- venv/Lib/site-packages/pip/_vendor/rich/_emoji_replace.py +32 -0
- venv/Lib/site-packages/pip/_vendor/rich/_export_format.py +76 -0
- venv/Lib/site-packages/pip/_vendor/rich/_extension.py +10 -0
- venv/Lib/site-packages/pip/_vendor/rich/_fileno.py +24 -0
- venv/Lib/site-packages/pip/_vendor/rich/_inspect.py +270 -0
- venv/Lib/site-packages/pip/_vendor/rich/_log_render.py +94 -0
- venv/Lib/site-packages/pip/_vendor/rich/_loop.py +43 -0
- venv/Lib/site-packages/pip/_vendor/rich/_null_file.py +69 -0
- venv/Lib/site-packages/pip/_vendor/rich/_palettes.py +309 -0
- venv/Lib/site-packages/pip/_vendor/rich/_pick.py +17 -0
- venv/Lib/site-packages/pip/_vendor/rich/_ratio.py +160 -0
- venv/Lib/site-packages/pip/_vendor/rich/_spinners.py +482 -0
- venv/Lib/site-packages/pip/_vendor/rich/_stack.py +16 -0
- venv/Lib/site-packages/pip/_vendor/rich/_timer.py +19 -0
- venv/Lib/site-packages/pip/_vendor/rich/_win32_console.py +662 -0
- venv/Lib/site-packages/pip/_vendor/rich/_windows.py +72 -0
- venv/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py +56 -0
- venv/Lib/site-packages/pip/_vendor/rich/_wrap.py +56 -0
- venv/Lib/site-packages/pip/_vendor/rich/abc.py +33 -0
- venv/Lib/site-packages/pip/_vendor/rich/align.py +311 -0
- venv/Lib/site-packages/pip/_vendor/rich/ansi.py +240 -0
- venv/Lib/site-packages/pip/_vendor/rich/bar.py +94 -0
- venv/Lib/site-packages/pip/_vendor/rich/box.py +517 -0
- venv/Lib/site-packages/pip/_vendor/rich/cells.py +154 -0
- venv/Lib/site-packages/pip/_vendor/rich/color.py +622 -0
- venv/Lib/site-packages/pip/_vendor/rich/color_triplet.py +38 -0
- venv/Lib/site-packages/pip/_vendor/rich/columns.py +187 -0
- venv/Lib/site-packages/pip/_vendor/rich/console.py +2633 -0
- venv/Lib/site-packages/pip/_vendor/rich/constrain.py +37 -0
- venv/Lib/site-packages/pip/_vendor/rich/containers.py +167 -0
- venv/Lib/site-packages/pip/_vendor/rich/control.py +225 -0
- venv/Lib/site-packages/pip/_vendor/rich/default_styles.py +190 -0
- venv/Lib/site-packages/pip/_vendor/rich/diagnose.py +37 -0
- venv/Lib/site-packages/pip/_vendor/rich/emoji.py +96 -0
- venv/Lib/site-packages/pip/_vendor/rich/errors.py +34 -0
- venv/Lib/site-packages/pip/_vendor/rich/file_proxy.py +57 -0
- venv/Lib/site-packages/pip/_vendor/rich/filesize.py +89 -0
- venv/Lib/site-packages/pip/_vendor/rich/highlighter.py +232 -0
- venv/Lib/site-packages/pip/_vendor/rich/json.py +140 -0
- venv/Lib/site-packages/pip/_vendor/rich/jupyter.py +101 -0
- venv/Lib/site-packages/pip/_vendor/rich/layout.py +443 -0
- venv/Lib/site-packages/pip/_vendor/rich/live.py +375 -0
- venv/Lib/site-packages/pip/_vendor/rich/live_render.py +113 -0
- venv/Lib/site-packages/pip/_vendor/rich/logging.py +289 -0
- venv/Lib/site-packages/pip/_vendor/rich/markup.py +246 -0
- venv/Lib/site-packages/pip/_vendor/rich/measure.py +151 -0
- venv/Lib/site-packages/pip/_vendor/rich/padding.py +141 -0
- venv/Lib/site-packages/pip/_vendor/rich/pager.py +34 -0
- venv/Lib/site-packages/pip/_vendor/rich/palette.py +100 -0
- venv/Lib/site-packages/pip/_vendor/rich/panel.py +308 -0
- venv/Lib/site-packages/pip/_vendor/rich/pretty.py +994 -0
- venv/Lib/site-packages/pip/_vendor/rich/progress.py +1702 -0
- venv/Lib/site-packages/pip/_vendor/rich/progress_bar.py +224 -0
- venv/Lib/site-packages/pip/_vendor/rich/prompt.py +376 -0
- venv/Lib/site-packages/pip/_vendor/rich/protocol.py +42 -0
- venv/Lib/site-packages/pip/_vendor/rich/region.py +10 -0
- venv/Lib/site-packages/pip/_vendor/rich/repr.py +149 -0
- venv/Lib/site-packages/pip/_vendor/rich/rule.py +130 -0
- venv/Lib/site-packages/pip/_vendor/rich/scope.py +86 -0
- venv/Lib/site-packages/pip/_vendor/rich/screen.py +54 -0
- venv/Lib/site-packages/pip/_vendor/rich/segment.py +739 -0
- venv/Lib/site-packages/pip/_vendor/rich/spinner.py +137 -0
- venv/Lib/site-packages/pip/_vendor/rich/status.py +132 -0
- venv/Lib/site-packages/pip/_vendor/rich/style.py +796 -0
- venv/Lib/site-packages/pip/_vendor/rich/styled.py +42 -0
- venv/Lib/site-packages/pip/_vendor/rich/syntax.py +948 -0
- venv/Lib/site-packages/pip/_vendor/rich/table.py +1002 -0
- venv/Lib/site-packages/pip/_vendor/rich/terminal_theme.py +153 -0
- venv/Lib/site-packages/pip/_vendor/rich/text.py +1307 -0
- venv/Lib/site-packages/pip/_vendor/rich/theme.py +115 -0
- venv/Lib/site-packages/pip/_vendor/rich/themes.py +5 -0
- venv/Lib/site-packages/pip/_vendor/rich/traceback.py +756 -0
- venv/Lib/site-packages/pip/_vendor/rich/tree.py +251 -0
- venv/Lib/site-packages/pip/_vendor/six.py +998 -0
- venv/Lib/site-packages/pip/_vendor/tenacity/__init__.py +608 -0
- venv/Lib/site-packages/pip/_vendor/tenacity/_asyncio.py +94 -0
- venv/Lib/site-packages/pip/_vendor/tenacity/_utils.py +76 -0
- venv/Lib/site-packages/pip/_vendor/tenacity/after.py +51 -0
- venv/Lib/site-packages/pip/_vendor/tenacity/before.py +46 -0
- venv/Lib/site-packages/pip/_vendor/tenacity/before_sleep.py +71 -0
- venv/Lib/site-packages/pip/_vendor/tenacity/nap.py +43 -0
- venv/Lib/site-packages/pip/_vendor/tenacity/retry.py +272 -0
- venv/Lib/site-packages/pip/_vendor/tenacity/stop.py +103 -0
- venv/Lib/site-packages/pip/_vendor/tenacity/tornadoweb.py +59 -0
- venv/Lib/site-packages/pip/_vendor/tenacity/wait.py +228 -0
- venv/Lib/site-packages/pip/_vendor/tomli/__init__.py +11 -0
- venv/Lib/site-packages/pip/_vendor/tomli/_parser.py +691 -0
- venv/Lib/site-packages/pip/_vendor/tomli/_re.py +107 -0
- venv/Lib/site-packages/pip/_vendor/tomli/_types.py +10 -0
- venv/Lib/site-packages/pip/_vendor/typing_extensions.py +3072 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/__init__.py +102 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/_collections.py +337 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/_version.py +2 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/connection.py +572 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +1132 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +397 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +130 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +518 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +921 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +323 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/fields.py +274 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +155 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/six.py +1076 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +537 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/request.py +170 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/response.py +879 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/connection.py +149 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py +57 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/request.py +137 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +620 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +495 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +159 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py +271 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/url.py +435 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/wait.py +152 -0
- venv/Lib/site-packages/pip/_vendor/webencodings/__init__.py +342 -0
- venv/Lib/site-packages/pip/_vendor/webencodings/labels.py +231 -0
- venv/Lib/site-packages/pip/_vendor/webencodings/mklabels.py +59 -0
- venv/Lib/site-packages/pip/_vendor/webencodings/tests.py +153 -0
- venv/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py +325 -0
- venv/Lib/site-packages/pip/py.typed +4 -0
- venv/Lib/site-packages/pkg_resources/__init__.py +3296 -0
- venv/Lib/site-packages/pkg_resources/_vendor/__init__.py +0 -0
- venv/Lib/site-packages/pkg_resources/_vendor/appdirs.py +608 -0
- venv/Lib/site-packages/pkg_resources/_vendor/importlib_resources/__init__.py +36 -0
- venv/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_adapters.py +170 -0
- venv/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_common.py +104 -0
- venv/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_compat.py +98 -0
- venv/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_itertools.py +35 -0
- venv/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_legacy.py +121 -0
- venv/Lib/site-packages/pkg_resources/_vendor/importlib_resources/abc.py +137 -0
- venv/Lib/site-packages/pkg_resources/_vendor/importlib_resources/readers.py +122 -0
- venv/Lib/site-packages/pkg_resources/_vendor/importlib_resources/simple.py +116 -0
- venv/Lib/site-packages/pkg_resources/_vendor/jaraco/__init__.py +0 -0
- venv/Lib/site-packages/pkg_resources/_vendor/jaraco/context.py +213 -0
- venv/Lib/site-packages/pkg_resources/_vendor/jaraco/functools.py +525 -0
- venv/Lib/site-packages/pkg_resources/_vendor/jaraco/text/__init__.py +599 -0
- venv/Lib/site-packages/pkg_resources/_vendor/more_itertools/__init__.py +4 -0
- venv/Lib/site-packages/pkg_resources/_vendor/more_itertools/more.py +4316 -0
- venv/Lib/site-packages/pkg_resources/_vendor/more_itertools/recipes.py +698 -0
- venv/Lib/site-packages/pkg_resources/_vendor/packaging/__about__.py +26 -0
- venv/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.py +25 -0
- venv/Lib/site-packages/pkg_resources/_vendor/packaging/_manylinux.py +301 -0
- venv/Lib/site-packages/pkg_resources/_vendor/packaging/_musllinux.py +136 -0
- venv/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.py +61 -0
- venv/Lib/site-packages/pkg_resources/_vendor/packaging/markers.py +304 -0
- venv/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.py +146 -0
- venv/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.py +802 -0
- venv/Lib/site-packages/pkg_resources/_vendor/packaging/tags.py +487 -0
- venv/Lib/site-packages/pkg_resources/_vendor/packaging/utils.py +136 -0
- venv/Lib/site-packages/pkg_resources/_vendor/packaging/version.py +504 -0
- venv/Lib/site-packages/pkg_resources/_vendor/pyparsing/__init__.py +331 -0
- venv/Lib/site-packages/pkg_resources/_vendor/pyparsing/actions.py +207 -0
- venv/Lib/site-packages/pkg_resources/_vendor/pyparsing/common.py +424 -0
- venv/Lib/site-packages/pkg_resources/_vendor/pyparsing/core.py +5814 -0
- venv/Lib/site-packages/pkg_resources/_vendor/pyparsing/diagram/__init__.py +642 -0
- venv/Lib/site-packages/pkg_resources/_vendor/pyparsing/exceptions.py +267 -0
- venv/Lib/site-packages/pkg_resources/_vendor/pyparsing/helpers.py +1088 -0
- venv/Lib/site-packages/pkg_resources/_vendor/pyparsing/results.py +760 -0
- venv/Lib/site-packages/pkg_resources/_vendor/pyparsing/testing.py +331 -0
- venv/Lib/site-packages/pkg_resources/_vendor/pyparsing/unicode.py +352 -0
- venv/Lib/site-packages/pkg_resources/_vendor/pyparsing/util.py +235 -0
- venv/Lib/site-packages/pkg_resources/_vendor/zipp.py +329 -0
- venv/Lib/site-packages/pkg_resources/extern/__init__.py +76 -0
- venv/Lib/site-packages/setuptools/__init__.py +247 -0
- venv/Lib/site-packages/setuptools/_deprecation_warning.py +7 -0
- venv/Lib/site-packages/setuptools/_distutils/__init__.py +24 -0
- venv/Lib/site-packages/setuptools/_distutils/_collections.py +56 -0
- venv/Lib/site-packages/setuptools/_distutils/_functools.py +20 -0
- venv/Lib/site-packages/setuptools/_distutils/_macos_compat.py +12 -0
- venv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +572 -0
- venv/Lib/site-packages/setuptools/_distutils/archive_util.py +280 -0
- venv/Lib/site-packages/setuptools/_distutils/bcppcompiler.py +408 -0
- venv/Lib/site-packages/setuptools/_distutils/ccompiler.py +1220 -0
- venv/Lib/site-packages/setuptools/_distutils/cmd.py +436 -0
- venv/Lib/site-packages/setuptools/_distutils/command/__init__.py +25 -0
- venv/Lib/site-packages/setuptools/_distutils/command/_framework_compat.py +55 -0
- venv/Lib/site-packages/setuptools/_distutils/command/bdist.py +157 -0
- venv/Lib/site-packages/setuptools/_distutils/command/bdist_dumb.py +144 -0
- venv/Lib/site-packages/setuptools/_distutils/command/bdist_rpm.py +615 -0
- venv/Lib/site-packages/setuptools/_distutils/command/build.py +153 -0
- venv/Lib/site-packages/setuptools/_distutils/command/build_clib.py +208 -0
- venv/Lib/site-packages/setuptools/_distutils/command/build_ext.py +787 -0
- venv/Lib/site-packages/setuptools/_distutils/command/build_py.py +407 -0
- venv/Lib/site-packages/setuptools/_distutils/command/build_scripts.py +173 -0
- venv/Lib/site-packages/setuptools/_distutils/command/check.py +151 -0
- venv/Lib/site-packages/setuptools/_distutils/command/clean.py +76 -0
- venv/Lib/site-packages/setuptools/_distutils/command/config.py +377 -0
- venv/Lib/site-packages/setuptools/_distutils/command/install.py +814 -0
- venv/Lib/site-packages/setuptools/_distutils/command/install_data.py +84 -0
- venv/Lib/site-packages/setuptools/_distutils/command/install_egg_info.py +91 -0
- venv/Lib/site-packages/setuptools/_distutils/command/install_headers.py +45 -0
- venv/Lib/site-packages/setuptools/_distutils/command/install_lib.py +238 -0
- venv/Lib/site-packages/setuptools/_distutils/command/install_scripts.py +61 -0
- venv/Lib/site-packages/setuptools/_distutils/command/py37compat.py +31 -0
- venv/Lib/site-packages/setuptools/_distutils/command/register.py +319 -0
- venv/Lib/site-packages/setuptools/_distutils/command/sdist.py +531 -0
- venv/Lib/site-packages/setuptools/_distutils/command/upload.py +205 -0
- venv/Lib/site-packages/setuptools/_distutils/config.py +139 -0
- venv/Lib/site-packages/setuptools/_distutils/core.py +291 -0
- venv/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py +364 -0
- venv/Lib/site-packages/setuptools/_distutils/debug.py +5 -0
- venv/Lib/site-packages/setuptools/_distutils/dep_util.py +96 -0
- venv/Lib/site-packages/setuptools/_distutils/dir_util.py +243 -0
- venv/Lib/site-packages/setuptools/_distutils/dist.py +1286 -0
- venv/Lib/site-packages/setuptools/_distutils/errors.py +127 -0
- venv/Lib/site-packages/setuptools/_distutils/extension.py +248 -0
- venv/Lib/site-packages/setuptools/_distutils/fancy_getopt.py +470 -0
- venv/Lib/site-packages/setuptools/_distutils/file_util.py +249 -0
- venv/Lib/site-packages/setuptools/_distutils/filelist.py +371 -0
- venv/Lib/site-packages/setuptools/_distutils/log.py +80 -0
- venv/Lib/site-packages/setuptools/_distutils/msvc9compiler.py +832 -0
- venv/Lib/site-packages/setuptools/_distutils/msvccompiler.py +695 -0
- venv/Lib/site-packages/setuptools/_distutils/py38compat.py +8 -0
- venv/Lib/site-packages/setuptools/_distutils/py39compat.py +22 -0
- venv/Lib/site-packages/setuptools/_distutils/spawn.py +109 -0
- venv/Lib/site-packages/setuptools/_distutils/sysconfig.py +558 -0
- venv/Lib/site-packages/setuptools/_distutils/text_file.py +287 -0
- venv/Lib/site-packages/setuptools/_distutils/unixccompiler.py +401 -0
- venv/Lib/site-packages/setuptools/_distutils/util.py +513 -0
- venv/Lib/site-packages/setuptools/_distutils/version.py +358 -0
- venv/Lib/site-packages/setuptools/_distutils/versionpredicate.py +175 -0
- venv/Lib/site-packages/setuptools/_entry_points.py +86 -0
- venv/Lib/site-packages/setuptools/_imp.py +82 -0
- venv/Lib/site-packages/setuptools/_importlib.py +47 -0
- venv/Lib/site-packages/setuptools/_itertools.py +23 -0
- venv/Lib/site-packages/setuptools/_path.py +29 -0
- venv/Lib/site-packages/setuptools/_reqs.py +19 -0
- venv/Lib/site-packages/setuptools/_vendor/__init__.py +0 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/__init__.py +1047 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_adapters.py +68 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_collections.py +30 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_compat.py +71 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_functools.py +104 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_itertools.py +73 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_meta.py +48 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_text.py +99 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py +36 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py +170 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py +104 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_resources/_compat.py +98 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py +35 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_resources/_legacy.py +121 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py +137 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py +122 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py +116 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/__init__.py +0 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/context.py +213 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/functools.py +525 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/text/__init__.py +599 -0
- venv/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py +4 -0
- venv/Lib/site-packages/setuptools/_vendor/more_itertools/more.py +3824 -0
- venv/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py +620 -0
- venv/Lib/site-packages/setuptools/_vendor/ordered_set.py +488 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/__about__.py +26 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +25 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +301 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/_musllinux.py +136 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/_structures.py +61 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/markers.py +304 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/requirements.py +146 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +802 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/tags.py +487 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/utils.py +136 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/version.py +504 -0
- venv/Lib/site-packages/setuptools/_vendor/pyparsing/__init__.py +331 -0
- venv/Lib/site-packages/setuptools/_vendor/pyparsing/actions.py +207 -0
- venv/Lib/site-packages/setuptools/_vendor/pyparsing/common.py +424 -0
- venv/Lib/site-packages/setuptools/_vendor/pyparsing/core.py +5814 -0
- venv/Lib/site-packages/setuptools/_vendor/pyparsing/diagram/__init__.py +642 -0
- venv/Lib/site-packages/setuptools/_vendor/pyparsing/exceptions.py +267 -0
- venv/Lib/site-packages/setuptools/_vendor/pyparsing/helpers.py +1088 -0
- venv/Lib/site-packages/setuptools/_vendor/pyparsing/results.py +760 -0
- venv/Lib/site-packages/setuptools/_vendor/pyparsing/testing.py +331 -0
- venv/Lib/site-packages/setuptools/_vendor/pyparsing/unicode.py +352 -0
- venv/Lib/site-packages/setuptools/_vendor/pyparsing/util.py +235 -0
- venv/Lib/site-packages/setuptools/_vendor/tomli/__init__.py +11 -0
- venv/Lib/site-packages/setuptools/_vendor/tomli/_parser.py +691 -0
- venv/Lib/site-packages/setuptools/_vendor/tomli/_re.py +107 -0
- venv/Lib/site-packages/setuptools/_vendor/tomli/_types.py +10 -0
- venv/Lib/site-packages/setuptools/_vendor/typing_extensions.py +2296 -0
- venv/Lib/site-packages/setuptools/_vendor/zipp.py +329 -0
- venv/Lib/site-packages/setuptools/archive_util.py +213 -0
- venv/Lib/site-packages/setuptools/build_meta.py +511 -0
- venv/Lib/site-packages/setuptools/command/__init__.py +12 -0
- venv/Lib/site-packages/setuptools/command/alias.py +78 -0
- venv/Lib/site-packages/setuptools/command/bdist_egg.py +457 -0
- venv/Lib/site-packages/setuptools/command/bdist_rpm.py +40 -0
- venv/Lib/site-packages/setuptools/command/build.py +146 -0
- venv/Lib/site-packages/setuptools/command/build_clib.py +101 -0
- venv/Lib/site-packages/setuptools/command/build_ext.py +383 -0
- venv/Lib/site-packages/setuptools/command/build_py.py +368 -0
- venv/Lib/site-packages/setuptools/command/develop.py +193 -0
- venv/Lib/site-packages/setuptools/command/dist_info.py +142 -0
- venv/Lib/site-packages/setuptools/command/easy_install.py +2312 -0
- venv/Lib/site-packages/setuptools/command/editable_wheel.py +844 -0
- venv/Lib/site-packages/setuptools/command/egg_info.py +763 -0
- venv/Lib/site-packages/setuptools/command/install.py +139 -0
- venv/Lib/site-packages/setuptools/command/install_egg_info.py +63 -0
- venv/Lib/site-packages/setuptools/command/install_lib.py +122 -0
- venv/Lib/site-packages/setuptools/command/install_scripts.py +70 -0
- venv/Lib/site-packages/setuptools/command/py36compat.py +134 -0
- venv/Lib/site-packages/setuptools/command/register.py +18 -0
- venv/Lib/site-packages/setuptools/command/rotate.py +64 -0
- venv/Lib/site-packages/setuptools/command/saveopts.py +22 -0
- venv/Lib/site-packages/setuptools/command/sdist.py +210 -0
- venv/Lib/site-packages/setuptools/command/setopt.py +149 -0
- venv/Lib/site-packages/setuptools/command/test.py +251 -0
- venv/Lib/site-packages/setuptools/command/upload.py +17 -0
- venv/Lib/site-packages/setuptools/command/upload_docs.py +213 -0
- venv/Lib/site-packages/setuptools/config/__init__.py +35 -0
- venv/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +377 -0
- venv/Lib/site-packages/setuptools/config/_validate_pyproject/__init__.py +34 -0
- venv/Lib/site-packages/setuptools/config/_validate_pyproject/error_reporting.py +318 -0
- venv/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py +36 -0
- venv/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py +51 -0
- venv/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +1035 -0
- venv/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +259 -0
- venv/Lib/site-packages/setuptools/config/expand.py +462 -0
- venv/Lib/site-packages/setuptools/config/pyprojecttoml.py +493 -0
- venv/Lib/site-packages/setuptools/config/setupcfg.py +762 -0
- venv/Lib/site-packages/setuptools/dep_util.py +25 -0
- venv/Lib/site-packages/setuptools/depends.py +176 -0
- venv/Lib/site-packages/setuptools/discovery.py +600 -0
- venv/Lib/site-packages/setuptools/dist.py +1222 -0
- venv/Lib/site-packages/setuptools/errors.py +58 -0
- venv/Lib/site-packages/setuptools/extension.py +148 -0
- venv/Lib/site-packages/setuptools/extern/__init__.py +76 -0
- venv/Lib/site-packages/setuptools/glob.py +167 -0
- venv/Lib/site-packages/setuptools/installer.py +104 -0
- venv/Lib/site-packages/setuptools/launch.py +36 -0
- venv/Lib/site-packages/setuptools/logging.py +36 -0
- venv/Lib/site-packages/setuptools/monkey.py +165 -0
- venv/Lib/site-packages/setuptools/msvc.py +1703 -0
- venv/Lib/site-packages/setuptools/namespaces.py +107 -0
- venv/Lib/site-packages/setuptools/package_index.py +1126 -0
- venv/Lib/site-packages/setuptools/py34compat.py +13 -0
- venv/Lib/site-packages/setuptools/sandbox.py +530 -0
- venv/Lib/site-packages/setuptools/unicode_utils.py +42 -0
- venv/Lib/site-packages/setuptools/version.py +6 -0
- venv/Lib/site-packages/setuptools/wheel.py +222 -0
- venv/Lib/site-packages/setuptools/windows_support.py +29 -0
- xplia/__init__.py +72 -0
- xplia/api/__init__.py +432 -0
- xplia/api/fastapi_app.py +453 -0
- xplia/cli.py +321 -0
- xplia/compliance/__init__.py +39 -0
- xplia/compliance/ai_act.py +538 -0
- xplia/compliance/compliance_checker.py +511 -0
- xplia/compliance/compliance_report.py +236 -0
- xplia/compliance/expert_review/__init__.py +18 -0
- xplia/compliance/expert_review/evaluation_criteria.py +209 -0
- xplia/compliance/expert_review/integration.py +270 -0
- xplia/compliance/expert_review/trust_expert_evaluator.py +379 -0
- xplia/compliance/explanation_rights.py +45 -0
- xplia/compliance/formatters/__init__.py +35 -0
- xplia/compliance/formatters/csv_formatter.py +179 -0
- xplia/compliance/formatters/html_formatter.py +689 -0
- xplia/compliance/formatters/html_trust_formatter.py +147 -0
- xplia/compliance/formatters/json_formatter.py +107 -0
- xplia/compliance/formatters/pdf_formatter.py +641 -0
- xplia/compliance/formatters/pdf_trust_formatter.py +309 -0
- xplia/compliance/formatters/trust_formatter_mixin.py +267 -0
- xplia/compliance/formatters/xml_formatter.py +173 -0
- xplia/compliance/gdpr.py +803 -0
- xplia/compliance/hipaa.py +134 -0
- xplia/compliance/report_base.py +205 -0
- xplia/compliance/report_generator.py +820 -0
- xplia/compliance/translations.py +299 -0
- xplia/core/__init__.py +98 -0
- xplia/core/base.py +391 -0
- xplia/core/config.py +297 -0
- xplia/core/factory.py +416 -0
- xplia/core/model_adapters/__init__.py +47 -0
- xplia/core/model_adapters/base.py +160 -0
- xplia/core/model_adapters/pytorch_adapter.py +339 -0
- xplia/core/model_adapters/sklearn_adapter.py +215 -0
- xplia/core/model_adapters/tensorflow_adapter.py +280 -0
- xplia/core/model_adapters/xgboost_adapter.py +295 -0
- xplia/core/optimizations.py +322 -0
- xplia/core/performance/__init__.py +57 -0
- xplia/core/performance/cache_manager.py +502 -0
- xplia/core/performance/memory_optimizer.py +465 -0
- xplia/core/performance/parallel_executor.py +327 -0
- xplia/core/registry.py +1234 -0
- xplia/explainers/__init__.py +70 -0
- xplia/explainers/__init__updated.py +62 -0
- xplia/explainers/adaptive/__init__.py +24 -0
- xplia/explainers/adaptive/explainer_selector.py +405 -0
- xplia/explainers/adaptive/explanation_quality.py +395 -0
- xplia/explainers/adaptive/fusion_strategies.py +297 -0
- xplia/explainers/adaptive/meta_explainer.py +320 -0
- xplia/explainers/adversarial/__init__.py +21 -0
- xplia/explainers/adversarial/adversarial_xai.py +678 -0
- xplia/explainers/anchor_explainer.py +1769 -0
- xplia/explainers/attention_explainer.py +996 -0
- xplia/explainers/bayesian/__init__.py +8 -0
- xplia/explainers/bayesian/bayesian_explainer.py +127 -0
- xplia/explainers/bias/__init__.py +17 -0
- xplia/explainers/bias/advanced_bias_detection.py +934 -0
- xplia/explainers/calibration/__init__.py +26 -0
- xplia/explainers/calibration/audience_adapter.py +376 -0
- xplia/explainers/calibration/audience_profiles.py +372 -0
- xplia/explainers/calibration/calibration_metrics.py +299 -0
- xplia/explainers/calibration/explanation_calibrator.py +460 -0
- xplia/explainers/causal/__init__.py +19 -0
- xplia/explainers/causal/causal_inference.py +669 -0
- xplia/explainers/certified/__init__.py +21 -0
- xplia/explainers/certified/certified_explanations.py +619 -0
- xplia/explainers/continual/__init__.py +8 -0
- xplia/explainers/continual/continual_explainer.py +102 -0
- xplia/explainers/counterfactual_explainer.py +804 -0
- xplia/explainers/counterfactuals/__init__.py +17 -0
- xplia/explainers/counterfactuals/advanced_counterfactuals.py +259 -0
- xplia/explainers/expert_evaluator.py +538 -0
- xplia/explainers/feature_importance_explainer.py +376 -0
- xplia/explainers/federated/__init__.py +17 -0
- xplia/explainers/federated/federated_xai.py +664 -0
- xplia/explainers/generative/__init__.py +15 -0
- xplia/explainers/generative/generative_explainer.py +243 -0
- xplia/explainers/gradient_explainer.py +3590 -0
- xplia/explainers/graph/__init__.py +26 -0
- xplia/explainers/graph/gnn_explainer.py +638 -0
- xplia/explainers/graph/molecular_explainer.py +438 -0
- xplia/explainers/lime_explainer.py +1580 -0
- xplia/explainers/llm/__init__.py +23 -0
- xplia/explainers/llm/llm_explainability.py +737 -0
- xplia/explainers/metalearning/__init__.py +15 -0
- xplia/explainers/metalearning/metalearning_explainer.py +276 -0
- xplia/explainers/moe/__init__.py +8 -0
- xplia/explainers/moe/moe_explainer.py +108 -0
- xplia/explainers/multimodal/__init__.py +30 -0
- xplia/explainers/multimodal/base.py +262 -0
- xplia/explainers/multimodal/diffusion_explainer.py +608 -0
- xplia/explainers/multimodal/foundation_model_explainer.py +323 -0
- xplia/explainers/multimodal/registry.py +139 -0
- xplia/explainers/multimodal/text_image_explainer.py +381 -0
- xplia/explainers/multimodal/vision_language_explainer.py +608 -0
- xplia/explainers/nas/__init__.py +5 -0
- xplia/explainers/nas/nas_explainer.py +65 -0
- xplia/explainers/neuralodes/__init__.py +5 -0
- xplia/explainers/neuralodes/neuralode_explainer.py +64 -0
- xplia/explainers/neurosymbolic/__init__.py +8 -0
- xplia/explainers/neurosymbolic/neurosymbolic_explainer.py +97 -0
- xplia/explainers/partial_dependence_explainer.py +509 -0
- xplia/explainers/privacy/__init__.py +21 -0
- xplia/explainers/privacy/differential_privacy_xai.py +624 -0
- xplia/explainers/quantum/__init__.py +5 -0
- xplia/explainers/quantum/quantum_explainer.py +79 -0
- xplia/explainers/recommender/__init__.py +8 -0
- xplia/explainers/recommender/recsys_explainer.py +124 -0
- xplia/explainers/reinforcement/__init__.py +15 -0
- xplia/explainers/reinforcement/rl_explainer.py +173 -0
- xplia/explainers/shap_explainer.py +2238 -0
- xplia/explainers/streaming/__init__.py +19 -0
- xplia/explainers/streaming/streaming_xai.py +703 -0
- xplia/explainers/timeseries/__init__.py +15 -0
- xplia/explainers/timeseries/timeseries_explainer.py +252 -0
- xplia/explainers/trust/__init__.py +24 -0
- xplia/explainers/trust/confidence_report.py +368 -0
- xplia/explainers/trust/fairwashing.py +489 -0
- xplia/explainers/trust/uncertainty.py +453 -0
- xplia/explainers/unified_explainer.py +566 -0
- xplia/explainers/unified_explainer_utils.py +309 -0
- xplia/integrations/__init__.py +3 -0
- xplia/integrations/mlflow_integration.py +331 -0
- xplia/integrations/wandb_integration.py +375 -0
- xplia/plugins/__init__.py +36 -0
- xplia/plugins/example_visualizer.py +11 -0
- xplia/utils/__init__.py +18 -0
- xplia/utils/performance.py +119 -0
- xplia/utils/validation.py +109 -0
- xplia/visualizations/__init__.py +31 -0
- xplia/visualizations/base.py +256 -0
- xplia/visualizations/boxplot_chart.py +224 -0
- xplia/visualizations/charts_impl.py +65 -0
- xplia/visualizations/gauge_chart.py +211 -0
- xplia/visualizations/gradient_viz.py +117 -0
- xplia/visualizations/heatmap_chart.py +173 -0
- xplia/visualizations/histogram_chart.py +176 -0
- xplia/visualizations/line_chart.py +100 -0
- xplia/visualizations/pie_chart.py +134 -0
- xplia/visualizations/radar_chart.py +154 -0
- xplia/visualizations/registry.py +76 -0
- xplia/visualizations/sankey_chart.py +190 -0
- xplia/visualizations/scatter_chart.py +252 -0
- xplia/visualizations/table_chart.py +263 -0
- xplia/visualizations/treemap_chart.py +216 -0
- xplia/visualizations.py +535 -0
- xplia/visualizers/__init__.py +87 -0
- xplia/visualizers/base_visualizer.py +294 -0
- xplia-1.0.1.dist-info/METADATA +685 -0
- xplia-1.0.1.dist-info/RECORD +870 -0
- xplia-1.0.1.dist-info/WHEEL +5 -0
- xplia-1.0.1.dist-info/entry_points.txt +2 -0
- xplia-1.0.1.dist-info/licenses/LICENSE +21 -0
- xplia-1.0.1.dist-info/top_level.txt +2 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Intégration de l'évaluation experte avec les explainers et modules de conformité
|
|
3
|
+
===============================================================================
|
|
4
|
+
|
|
5
|
+
Ce module fournit des fonctions pour intégrer l'évaluation experte
|
|
6
|
+
avec les explainers et les modules de conformité de XPLIA.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import logging
|
|
10
|
+
from typing import Dict, List, Any, Optional, Union, Tuple
|
|
11
|
+
|
|
12
|
+
from xplia.explainers.base_explainer import BaseExplainer
|
|
13
|
+
from xplia.trust.uncertainty import UncertaintyEstimator
|
|
14
|
+
from xplia.trust.fairwashing import FairwashingAuditor
|
|
15
|
+
from xplia.trust.confidence import ConfidenceReporter
|
|
16
|
+
from xplia.compliance.expert_review.trust_expert_evaluator import TrustExpertEvaluator
|
|
17
|
+
from xplia.explainers.expert_evaluator import ExplanationQualityEvaluator
|
|
18
|
+
|
|
19
|
+
logger = logging.getLogger(__name__)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ExpertEvaluationIntegrator:
|
|
23
|
+
"""
|
|
24
|
+
Intégrateur pour l'évaluation experte.
|
|
25
|
+
|
|
26
|
+
Cette classe facilite l'intégration de l'évaluation experte
|
|
27
|
+
avec les explainers et les modules de conformité de XPLIA.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
def __init__(
|
|
31
|
+
self,
|
|
32
|
+
uncertainty_estimator: Optional[UncertaintyEstimator] = None,
|
|
33
|
+
fairwashing_auditor: Optional[FairwashingAuditor] = None,
|
|
34
|
+
confidence_reporter: Optional[ConfidenceReporter] = None,
|
|
35
|
+
trust_evaluator: Optional[TrustExpertEvaluator] = None,
|
|
36
|
+
explanation_evaluator: Optional[ExplanationQualityEvaluator] = None
|
|
37
|
+
):
|
|
38
|
+
"""
|
|
39
|
+
Initialise l'intégrateur d'évaluation experte.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
uncertainty_estimator: Estimateur d'incertitude
|
|
43
|
+
fairwashing_auditor: Auditeur de fairwashing
|
|
44
|
+
confidence_reporter: Générateur de rapport de confiance
|
|
45
|
+
trust_evaluator: Évaluateur expert pour les métriques de confiance
|
|
46
|
+
explanation_evaluator: Évaluateur de qualité des explications
|
|
47
|
+
"""
|
|
48
|
+
self.uncertainty_estimator = uncertainty_estimator or UncertaintyEstimator()
|
|
49
|
+
self.fairwashing_auditor = fairwashing_auditor or FairwashingAuditor()
|
|
50
|
+
self.confidence_reporter = confidence_reporter or ConfidenceReporter()
|
|
51
|
+
self.trust_evaluator = trust_evaluator or TrustExpertEvaluator()
|
|
52
|
+
self.explanation_evaluator = explanation_evaluator or ExplanationQualityEvaluator()
|
|
53
|
+
|
|
54
|
+
logger.info("Intégrateur d'évaluation experte initialisé")
|
|
55
|
+
|
|
56
|
+
def evaluate_explanation_pipeline(
|
|
57
|
+
self,
|
|
58
|
+
explainer: BaseExplainer,
|
|
59
|
+
model_adapter: Any,
|
|
60
|
+
instance: Any,
|
|
61
|
+
background_data: Any = None,
|
|
62
|
+
sensitive_features: List[str] = None,
|
|
63
|
+
**kwargs
|
|
64
|
+
) -> Dict[str, Any]:
|
|
65
|
+
"""
|
|
66
|
+
Évalue l'ensemble du pipeline d'explication.
|
|
67
|
+
|
|
68
|
+
Args:
|
|
69
|
+
explainer: Explainer à utiliser
|
|
70
|
+
model_adapter: Adaptateur de modèle
|
|
71
|
+
instance: Instance à expliquer
|
|
72
|
+
background_data: Données de fond pour l'explication
|
|
73
|
+
sensitive_features: Features sensibles pour l'audit de fairwashing
|
|
74
|
+
**kwargs: Arguments supplémentaires pour l'explainer
|
|
75
|
+
|
|
76
|
+
Returns:
|
|
77
|
+
Dictionnaire contenant les résultats de l'évaluation
|
|
78
|
+
"""
|
|
79
|
+
try:
|
|
80
|
+
# Génération de l'explication
|
|
81
|
+
logger.info("Génération de l'explication...")
|
|
82
|
+
explanation = explainer.explain(
|
|
83
|
+
model_adapter=model_adapter,
|
|
84
|
+
instance=instance,
|
|
85
|
+
background_data=background_data,
|
|
86
|
+
**kwargs
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
# Calcul des métriques d'incertitude
|
|
90
|
+
logger.info("Calcul des métriques d'incertitude...")
|
|
91
|
+
uncertainty_metrics = self.uncertainty_estimator.estimate(
|
|
92
|
+
model_adapter=model_adapter,
|
|
93
|
+
instance=instance,
|
|
94
|
+
explanation=explanation,
|
|
95
|
+
background_data=background_data
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
# Audit de fairwashing
|
|
99
|
+
logger.info("Audit de fairwashing...")
|
|
100
|
+
fairwashing_audit = self.fairwashing_auditor.audit(
|
|
101
|
+
model_adapter=model_adapter,
|
|
102
|
+
instance=instance,
|
|
103
|
+
explanation=explanation,
|
|
104
|
+
background_data=background_data,
|
|
105
|
+
sensitive_features=sensitive_features
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
# Génération du rapport de confiance
|
|
109
|
+
logger.info("Génération du rapport de confiance...")
|
|
110
|
+
confidence_report = self.confidence_reporter.generate_report(
|
|
111
|
+
explanation=explanation,
|
|
112
|
+
uncertainty_metrics=uncertainty_metrics,
|
|
113
|
+
fairwashing_audit=fairwashing_audit
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
# Évaluation de la qualité de l'explication
|
|
117
|
+
logger.info("Évaluation de la qualité de l'explication...")
|
|
118
|
+
explanation_quality = self.explanation_evaluator.evaluate_explanation(
|
|
119
|
+
explanation=explanation,
|
|
120
|
+
model_adapter=model_adapter,
|
|
121
|
+
instance=instance,
|
|
122
|
+
background_data=background_data
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
# Évaluation des métriques de confiance
|
|
126
|
+
logger.info("Évaluation des métriques de confiance...")
|
|
127
|
+
trust_evaluation = self.trust_evaluator.evaluate_trust_metrics(
|
|
128
|
+
uncertainty_metrics=uncertainty_metrics,
|
|
129
|
+
fairwashing_audit=fairwashing_audit,
|
|
130
|
+
confidence_report=confidence_report,
|
|
131
|
+
explanation=explanation
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
# Compilation des résultats
|
|
135
|
+
results = {
|
|
136
|
+
"explanation": explanation,
|
|
137
|
+
"uncertainty_metrics": uncertainty_metrics,
|
|
138
|
+
"fairwashing_audit": fairwashing_audit,
|
|
139
|
+
"confidence_report": confidence_report,
|
|
140
|
+
"explanation_quality": explanation_quality.to_dict(),
|
|
141
|
+
"trust_evaluation": trust_evaluation.to_dict()
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
logger.info("Évaluation du pipeline d'explication complétée avec succès")
|
|
145
|
+
return results
|
|
146
|
+
|
|
147
|
+
except Exception as e:
|
|
148
|
+
logger.error(f"Erreur lors de l'évaluation du pipeline d'explication: {e}")
|
|
149
|
+
return {"error": str(e)}
|
|
150
|
+
|
|
151
|
+
def generate_comprehensive_report(
|
|
152
|
+
self,
|
|
153
|
+
evaluation_results: Dict[str, Any],
|
|
154
|
+
include_visualizations: bool = True
|
|
155
|
+
) -> Dict[str, Any]:
|
|
156
|
+
"""
|
|
157
|
+
Génère un rapport complet à partir des résultats d'évaluation.
|
|
158
|
+
|
|
159
|
+
Args:
|
|
160
|
+
evaluation_results: Résultats de l'évaluation
|
|
161
|
+
include_visualizations: Indique si les visualisations doivent être incluses
|
|
162
|
+
|
|
163
|
+
Returns:
|
|
164
|
+
Dictionnaire contenant le rapport complet
|
|
165
|
+
"""
|
|
166
|
+
try:
|
|
167
|
+
# Extraction des composants
|
|
168
|
+
explanation = evaluation_results.get("explanation", {})
|
|
169
|
+
uncertainty_metrics = evaluation_results.get("uncertainty_metrics", {})
|
|
170
|
+
fairwashing_audit = evaluation_results.get("fairwashing_audit", {})
|
|
171
|
+
confidence_report = evaluation_results.get("confidence_report", {})
|
|
172
|
+
explanation_quality = evaluation_results.get("explanation_quality", {})
|
|
173
|
+
trust_evaluation = evaluation_results.get("trust_evaluation", {})
|
|
174
|
+
|
|
175
|
+
# Compilation du rapport
|
|
176
|
+
report = {
|
|
177
|
+
"summary": {
|
|
178
|
+
"explanation_quality_score": explanation_quality.get("global_score", 0.0),
|
|
179
|
+
"trust_score": trust_evaluation.get("global_score", 0.0),
|
|
180
|
+
"overall_score": (
|
|
181
|
+
explanation_quality.get("global_score", 0.0) * 0.5 +
|
|
182
|
+
trust_evaluation.get("global_score", 0.0) * 0.5
|
|
183
|
+
)
|
|
184
|
+
},
|
|
185
|
+
"explanation": {
|
|
186
|
+
"quality": explanation_quality,
|
|
187
|
+
"details": explanation
|
|
188
|
+
},
|
|
189
|
+
"trust": {
|
|
190
|
+
"evaluation": trust_evaluation,
|
|
191
|
+
"uncertainty": uncertainty_metrics,
|
|
192
|
+
"fairwashing": fairwashing_audit,
|
|
193
|
+
"confidence": confidence_report
|
|
194
|
+
},
|
|
195
|
+
"recommendations": []
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
# Compilation des recommandations
|
|
199
|
+
if "recommendations" in explanation_quality:
|
|
200
|
+
report["recommendations"].extend(explanation_quality["recommendations"])
|
|
201
|
+
|
|
202
|
+
if "recommendations" in trust_evaluation:
|
|
203
|
+
report["recommendations"].extend(trust_evaluation["recommendations"])
|
|
204
|
+
|
|
205
|
+
if "recommendations" in confidence_report:
|
|
206
|
+
report["recommendations"].extend(confidence_report["recommendations"])
|
|
207
|
+
|
|
208
|
+
# Ajout de visualisations si demandé
|
|
209
|
+
if include_visualizations:
|
|
210
|
+
try:
|
|
211
|
+
from xplia.visualizations import ChartGenerator
|
|
212
|
+
|
|
213
|
+
chart_generator = ChartGenerator()
|
|
214
|
+
|
|
215
|
+
# Visualisations pour le score global
|
|
216
|
+
report["visualizations"] = {
|
|
217
|
+
"overall_score": chart_generator.gauge_chart(
|
|
218
|
+
value=report["summary"]["overall_score"],
|
|
219
|
+
min_value=0.0,
|
|
220
|
+
max_value=10.0,
|
|
221
|
+
title="Score global",
|
|
222
|
+
thresholds=[3.0, 5.0, 7.0, 9.0]
|
|
223
|
+
)
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
except ImportError:
|
|
227
|
+
logger.warning("Module de visualisations non disponible")
|
|
228
|
+
|
|
229
|
+
logger.info("Rapport complet généré avec succès")
|
|
230
|
+
return report
|
|
231
|
+
|
|
232
|
+
except Exception as e:
|
|
233
|
+
logger.error(f"Erreur lors de la génération du rapport complet: {e}")
|
|
234
|
+
return {"error": str(e)}
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
# Fonction utilitaire pour une évaluation rapide
|
|
238
|
+
def quick_evaluate(
|
|
239
|
+
explainer: BaseExplainer,
|
|
240
|
+
model_adapter: Any,
|
|
241
|
+
instance: Any,
|
|
242
|
+
background_data: Any = None,
|
|
243
|
+
sensitive_features: List[str] = None,
|
|
244
|
+
**kwargs
|
|
245
|
+
) -> Dict[str, Any]:
|
|
246
|
+
"""
|
|
247
|
+
Fonction utilitaire pour une évaluation rapide du pipeline d'explication.
|
|
248
|
+
|
|
249
|
+
Args:
|
|
250
|
+
explainer: Explainer à utiliser
|
|
251
|
+
model_adapter: Adaptateur de modèle
|
|
252
|
+
instance: Instance à expliquer
|
|
253
|
+
background_data: Données de fond pour l'explication
|
|
254
|
+
sensitive_features: Features sensibles pour l'audit de fairwashing
|
|
255
|
+
**kwargs: Arguments supplémentaires pour l'explainer
|
|
256
|
+
|
|
257
|
+
Returns:
|
|
258
|
+
Dictionnaire contenant les résultats de l'évaluation
|
|
259
|
+
"""
|
|
260
|
+
integrator = ExpertEvaluationIntegrator()
|
|
261
|
+
results = integrator.evaluate_explanation_pipeline(
|
|
262
|
+
explainer=explainer,
|
|
263
|
+
model_adapter=model_adapter,
|
|
264
|
+
instance=instance,
|
|
265
|
+
background_data=background_data,
|
|
266
|
+
sensitive_features=sensitive_features,
|
|
267
|
+
**kwargs
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
return integrator.generate_comprehensive_report(results)
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Évaluateur expert pour les métriques de confiance
|
|
3
|
+
================================================
|
|
4
|
+
|
|
5
|
+
Ce module fournit des outils pour l'évaluation experte des métriques de confiance
|
|
6
|
+
générées par XPLIA, permettant une notation objective de leur qualité.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import logging
|
|
10
|
+
import numpy as np
|
|
11
|
+
import pandas as pd
|
|
12
|
+
from dataclasses import dataclass, field
|
|
13
|
+
from typing import Dict, List, Any, Optional, Union, Tuple
|
|
14
|
+
from datetime import datetime
|
|
15
|
+
|
|
16
|
+
from .evaluation_criteria import EvaluationCriteria, TRUST_EVALUATION_CRITERIA
|
|
17
|
+
|
|
18
|
+
logger = logging.getLogger(__name__)
|
|
19
|
+
|
|
20
|
+
@dataclass
|
|
21
|
+
class ExpertReview:
|
|
22
|
+
"""
|
|
23
|
+
Résultat d'une évaluation experte.
|
|
24
|
+
|
|
25
|
+
Attributes:
|
|
26
|
+
criteria: Liste des critères évalués
|
|
27
|
+
scores: Scores attribués pour chaque critère
|
|
28
|
+
global_score: Score global de l'évaluation
|
|
29
|
+
strengths: Points forts identifiés
|
|
30
|
+
weaknesses: Points faibles identifiés
|
|
31
|
+
recommendations: Recommandations d'amélioration
|
|
32
|
+
timestamp: Date et heure de l'évaluation
|
|
33
|
+
metadata: Métadonnées supplémentaires
|
|
34
|
+
"""
|
|
35
|
+
criteria: List[EvaluationCriteria]
|
|
36
|
+
scores: Dict[str, float]
|
|
37
|
+
global_score: float
|
|
38
|
+
strengths: List[str]
|
|
39
|
+
weaknesses: List[str]
|
|
40
|
+
recommendations: List[str]
|
|
41
|
+
timestamp: datetime = field(default_factory=datetime.now)
|
|
42
|
+
metadata: Dict[str, Any] = field(default_factory=dict)
|
|
43
|
+
|
|
44
|
+
def get_quality_levels(self) -> Dict[str, str]:
|
|
45
|
+
"""
|
|
46
|
+
Obtient les niveaux de qualité pour chaque critère.
|
|
47
|
+
|
|
48
|
+
Returns:
|
|
49
|
+
Dictionnaire des niveaux de qualité par critère
|
|
50
|
+
"""
|
|
51
|
+
quality_levels = {}
|
|
52
|
+
for criterion in self.criteria:
|
|
53
|
+
score = self.scores.get(criterion.name, 0.0)
|
|
54
|
+
quality_levels[criterion.name] = criterion.get_quality_level(score)
|
|
55
|
+
return quality_levels
|
|
56
|
+
|
|
57
|
+
def get_category_scores(self) -> Dict[str, float]:
|
|
58
|
+
"""
|
|
59
|
+
Calcule les scores moyens par catégorie de critères.
|
|
60
|
+
|
|
61
|
+
Returns:
|
|
62
|
+
Dictionnaire des scores moyens par catégorie
|
|
63
|
+
"""
|
|
64
|
+
category_scores = {}
|
|
65
|
+
category_counts = {}
|
|
66
|
+
|
|
67
|
+
for criterion in self.criteria:
|
|
68
|
+
category = criterion.category.value
|
|
69
|
+
score = self.scores.get(criterion.name, 0.0)
|
|
70
|
+
|
|
71
|
+
if category not in category_scores:
|
|
72
|
+
category_scores[category] = 0.0
|
|
73
|
+
category_counts[category] = 0
|
|
74
|
+
|
|
75
|
+
category_scores[category] += score
|
|
76
|
+
category_counts[category] += 1
|
|
77
|
+
|
|
78
|
+
# Calcul des moyennes
|
|
79
|
+
for category, total in category_scores.items():
|
|
80
|
+
count = category_counts[category]
|
|
81
|
+
if count > 0:
|
|
82
|
+
category_scores[category] = total / count
|
|
83
|
+
|
|
84
|
+
return category_scores
|
|
85
|
+
|
|
86
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
87
|
+
"""
|
|
88
|
+
Convertit l'évaluation en dictionnaire.
|
|
89
|
+
|
|
90
|
+
Returns:
|
|
91
|
+
Dictionnaire représentant l'évaluation
|
|
92
|
+
"""
|
|
93
|
+
return {
|
|
94
|
+
"global_score": self.global_score,
|
|
95
|
+
"scores": self.scores,
|
|
96
|
+
"quality_levels": self.get_quality_levels(),
|
|
97
|
+
"category_scores": self.get_category_scores(),
|
|
98
|
+
"strengths": self.strengths,
|
|
99
|
+
"weaknesses": self.weaknesses,
|
|
100
|
+
"recommendations": self.recommendations,
|
|
101
|
+
"timestamp": self.timestamp.isoformat(),
|
|
102
|
+
"metadata": self.metadata
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
class TrustExpertEvaluator:
|
|
107
|
+
"""
|
|
108
|
+
Évaluateur expert pour les métriques de confiance.
|
|
109
|
+
|
|
110
|
+
Cette classe permet d'évaluer la qualité des métriques de confiance
|
|
111
|
+
générées par XPLIA selon des critères prédéfinis.
|
|
112
|
+
"""
|
|
113
|
+
|
|
114
|
+
def __init__(
|
|
115
|
+
self,
|
|
116
|
+
criteria: List[EvaluationCriteria] = None,
|
|
117
|
+
reference_data: Optional[Dict[str, Any]] = None
|
|
118
|
+
):
|
|
119
|
+
"""
|
|
120
|
+
Initialise l'évaluateur expert.
|
|
121
|
+
|
|
122
|
+
Args:
|
|
123
|
+
criteria: Liste des critères d'évaluation (utilise les critères par défaut si None)
|
|
124
|
+
reference_data: Données de référence pour l'évaluation comparative
|
|
125
|
+
"""
|
|
126
|
+
self.criteria = criteria or TRUST_EVALUATION_CRITERIA
|
|
127
|
+
self.reference_data = reference_data
|
|
128
|
+
logger.info(f"Évaluateur expert initialisé avec {len(self.criteria)} critères")
|
|
129
|
+
|
|
130
|
+
def evaluate_uncertainty_metrics(
|
|
131
|
+
self,
|
|
132
|
+
uncertainty_metrics: Any,
|
|
133
|
+
reference_metrics: Optional[Any] = None,
|
|
134
|
+
explanation: Optional[Dict[str, Any]] = None
|
|
135
|
+
) -> Dict[str, float]:
|
|
136
|
+
"""
|
|
137
|
+
Évalue les métriques d'incertitude.
|
|
138
|
+
|
|
139
|
+
Args:
|
|
140
|
+
uncertainty_metrics: Métriques d'incertitude à évaluer
|
|
141
|
+
reference_metrics: Métriques de référence pour comparaison
|
|
142
|
+
explanation: Explication associée aux métriques
|
|
143
|
+
|
|
144
|
+
Returns:
|
|
145
|
+
Scores d'évaluation pour les critères liés à l'incertitude
|
|
146
|
+
"""
|
|
147
|
+
scores = {}
|
|
148
|
+
|
|
149
|
+
# Évaluation de la précision de l'incertitude
|
|
150
|
+
try:
|
|
151
|
+
# Vérification de la présence des attributs attendus
|
|
152
|
+
if hasattr(uncertainty_metrics, "global_uncertainty"):
|
|
153
|
+
# Vérification de la plage de valeurs
|
|
154
|
+
if 0.0 <= uncertainty_metrics.global_uncertainty <= 1.0:
|
|
155
|
+
scores["Précision de l'incertitude"] = 8.0
|
|
156
|
+
else:
|
|
157
|
+
scores["Précision de l'incertitude"] = 4.0
|
|
158
|
+
else:
|
|
159
|
+
scores["Précision de l'incertitude"] = 2.0
|
|
160
|
+
|
|
161
|
+
# Évaluation de la calibration des intervalles
|
|
162
|
+
if hasattr(uncertainty_metrics, "confidence_intervals"):
|
|
163
|
+
if uncertainty_metrics.confidence_intervals:
|
|
164
|
+
scores["Calibration des intervalles"] = 7.5
|
|
165
|
+
else:
|
|
166
|
+
scores["Calibration des intervalles"] = 5.0
|
|
167
|
+
else:
|
|
168
|
+
scores["Calibration des intervalles"] = 3.0
|
|
169
|
+
except Exception as e:
|
|
170
|
+
logger.error(f"Erreur lors de l'évaluation des métriques d'incertitude: {e}")
|
|
171
|
+
scores["Précision de l'incertitude"] = 1.0
|
|
172
|
+
scores["Calibration des intervalles"] = 1.0
|
|
173
|
+
|
|
174
|
+
return scores
|
|
175
|
+
|
|
176
|
+
def evaluate_fairwashing_audit(
|
|
177
|
+
self,
|
|
178
|
+
fairwashing_audit: Any,
|
|
179
|
+
reference_audit: Optional[Any] = None,
|
|
180
|
+
explanation: Optional[Dict[str, Any]] = None
|
|
181
|
+
) -> Dict[str, float]:
|
|
182
|
+
"""
|
|
183
|
+
Évalue les résultats de l'audit de fairwashing.
|
|
184
|
+
|
|
185
|
+
Args:
|
|
186
|
+
fairwashing_audit: Audit de fairwashing à évaluer
|
|
187
|
+
reference_audit: Audit de référence pour comparaison
|
|
188
|
+
explanation: Explication associée à l'audit
|
|
189
|
+
|
|
190
|
+
Returns:
|
|
191
|
+
Scores d'évaluation pour les critères liés au fairwashing
|
|
192
|
+
"""
|
|
193
|
+
scores = {}
|
|
194
|
+
|
|
195
|
+
# Évaluation de la détection de fairwashing
|
|
196
|
+
try:
|
|
197
|
+
# Vérification de la présence des attributs attendus
|
|
198
|
+
if hasattr(fairwashing_audit, "fairwashing_score"):
|
|
199
|
+
# Vérification de la plage de valeurs
|
|
200
|
+
if 0.0 <= fairwashing_audit.fairwashing_score <= 1.0:
|
|
201
|
+
scores["Détection de fairwashing"] = 8.0
|
|
202
|
+
else:
|
|
203
|
+
scores["Détection de fairwashing"] = 4.0
|
|
204
|
+
else:
|
|
205
|
+
scores["Détection de fairwashing"] = 2.0
|
|
206
|
+
|
|
207
|
+
# Évaluation de l'équité de l'explication
|
|
208
|
+
if hasattr(fairwashing_audit, "detected_types"):
|
|
209
|
+
scores["Équité de l'explication"] = 7.0
|
|
210
|
+
else:
|
|
211
|
+
scores["Équité de l'explication"] = 3.0
|
|
212
|
+
except Exception as e:
|
|
213
|
+
logger.error(f"Erreur lors de l'évaluation de l'audit de fairwashing: {e}")
|
|
214
|
+
scores["Détection de fairwashing"] = 1.0
|
|
215
|
+
scores["Équité de l'explication"] = 1.0
|
|
216
|
+
|
|
217
|
+
return scores
|
|
218
|
+
|
|
219
|
+
def evaluate_confidence_report(
|
|
220
|
+
self,
|
|
221
|
+
confidence_report: Dict[str, Any],
|
|
222
|
+
reference_report: Optional[Dict[str, Any]] = None,
|
|
223
|
+
explanation: Optional[Dict[str, Any]] = None
|
|
224
|
+
) -> Dict[str, float]:
|
|
225
|
+
"""
|
|
226
|
+
Évalue le rapport de confiance.
|
|
227
|
+
|
|
228
|
+
Args:
|
|
229
|
+
confidence_report: Rapport de confiance à évaluer
|
|
230
|
+
reference_report: Rapport de référence pour comparaison
|
|
231
|
+
explanation: Explication associée au rapport
|
|
232
|
+
|
|
233
|
+
Returns:
|
|
234
|
+
Scores d'évaluation pour les critères liés au rapport de confiance
|
|
235
|
+
"""
|
|
236
|
+
scores = {}
|
|
237
|
+
|
|
238
|
+
# Évaluation de la cohérence des métriques
|
|
239
|
+
try:
|
|
240
|
+
# Vérification de la présence des éléments attendus
|
|
241
|
+
if "trust_score" in confidence_report:
|
|
242
|
+
trust_score = confidence_report["trust_score"]
|
|
243
|
+
|
|
244
|
+
# Vérification de la cohérence interne
|
|
245
|
+
if all(k in trust_score for k in ["global_trust", "uncertainty_trust", "fairwashing_trust"]):
|
|
246
|
+
scores["Cohérence des métriques"] = 8.0
|
|
247
|
+
else:
|
|
248
|
+
scores["Cohérence des métriques"] = 4.0
|
|
249
|
+
else:
|
|
250
|
+
scores["Cohérence des métriques"] = 2.0
|
|
251
|
+
|
|
252
|
+
# Évaluation de la complétude des métriques
|
|
253
|
+
if "trust_score" in confidence_report and "recommendations" in confidence_report:
|
|
254
|
+
scores["Complétude des métriques"] = 7.5
|
|
255
|
+
else:
|
|
256
|
+
scores["Complétude des métriques"] = 3.0
|
|
257
|
+
|
|
258
|
+
# Évaluation de l'interprétabilité des scores
|
|
259
|
+
if "summary" in confidence_report:
|
|
260
|
+
scores["Interprétabilité des scores"] = 8.0
|
|
261
|
+
else:
|
|
262
|
+
scores["Interprétabilité des scores"] = 4.0
|
|
263
|
+
|
|
264
|
+
# Évaluation de l'utilité des recommandations
|
|
265
|
+
if "recommendations" in confidence_report and confidence_report["recommendations"]:
|
|
266
|
+
scores["Utilité des recommandations"] = 7.0
|
|
267
|
+
else:
|
|
268
|
+
scores["Utilité des recommandations"] = 3.0
|
|
269
|
+
except Exception as e:
|
|
270
|
+
logger.error(f"Erreur lors de l'évaluation du rapport de confiance: {e}")
|
|
271
|
+
scores["Cohérence des métriques"] = 1.0
|
|
272
|
+
scores["Complétude des métriques"] = 1.0
|
|
273
|
+
scores["Interprétabilité des scores"] = 1.0
|
|
274
|
+
scores["Utilité des recommandations"] = 1.0
|
|
275
|
+
|
|
276
|
+
return scores
|
|
277
|
+
|
|
278
|
+
def evaluate_trust_metrics(
|
|
279
|
+
self,
|
|
280
|
+
uncertainty_metrics: Any = None,
|
|
281
|
+
fairwashing_audit: Any = None,
|
|
282
|
+
confidence_report: Dict[str, Any] = None,
|
|
283
|
+
explanation: Optional[Dict[str, Any]] = None
|
|
284
|
+
) -> ExpertReview:
|
|
285
|
+
"""
|
|
286
|
+
Évalue l'ensemble des métriques de confiance.
|
|
287
|
+
|
|
288
|
+
Args:
|
|
289
|
+
uncertainty_metrics: Métriques d'incertitude à évaluer
|
|
290
|
+
fairwashing_audit: Audit de fairwashing à évaluer
|
|
291
|
+
confidence_report: Rapport de confiance à évaluer
|
|
292
|
+
explanation: Explication associée aux métriques
|
|
293
|
+
|
|
294
|
+
Returns:
|
|
295
|
+
Évaluation experte complète
|
|
296
|
+
"""
|
|
297
|
+
all_scores = {}
|
|
298
|
+
|
|
299
|
+
# Évaluation des différentes composantes
|
|
300
|
+
if uncertainty_metrics:
|
|
301
|
+
uncertainty_scores = self.evaluate_uncertainty_metrics(
|
|
302
|
+
uncertainty_metrics, explanation=explanation
|
|
303
|
+
)
|
|
304
|
+
all_scores.update(uncertainty_scores)
|
|
305
|
+
|
|
306
|
+
if fairwashing_audit:
|
|
307
|
+
fairwashing_scores = self.evaluate_fairwashing_audit(
|
|
308
|
+
fairwashing_audit, explanation=explanation
|
|
309
|
+
)
|
|
310
|
+
all_scores.update(fairwashing_scores)
|
|
311
|
+
|
|
312
|
+
if confidence_report:
|
|
313
|
+
confidence_scores = self.evaluate_confidence_report(
|
|
314
|
+
confidence_report, explanation=explanation
|
|
315
|
+
)
|
|
316
|
+
all_scores.update(confidence_scores)
|
|
317
|
+
|
|
318
|
+
# Évaluation des critères génériques
|
|
319
|
+
all_scores["Transparence des calculs"] = 7.0 # Valeur par défaut
|
|
320
|
+
all_scores["Performance de calcul"] = 6.0 # Valeur par défaut
|
|
321
|
+
all_scores["Robustesse aux perturbations"] = 6.5 # Valeur par défaut
|
|
322
|
+
|
|
323
|
+
# Calcul du score global
|
|
324
|
+
total_weight = 0.0
|
|
325
|
+
weighted_sum = 0.0
|
|
326
|
+
|
|
327
|
+
for criterion in self.criteria:
|
|
328
|
+
if criterion.name in all_scores:
|
|
329
|
+
score = all_scores[criterion.name]
|
|
330
|
+
weighted_sum += score * criterion.weight
|
|
331
|
+
total_weight += criterion.weight
|
|
332
|
+
|
|
333
|
+
global_score = weighted_sum / total_weight if total_weight > 0 else 0.0
|
|
334
|
+
|
|
335
|
+
# Identification des points forts et faibles
|
|
336
|
+
strengths = []
|
|
337
|
+
weaknesses = []
|
|
338
|
+
|
|
339
|
+
for criterion in self.criteria:
|
|
340
|
+
if criterion.name in all_scores:
|
|
341
|
+
score = all_scores[criterion.name]
|
|
342
|
+
if score >= 8.0:
|
|
343
|
+
strengths.append(f"{criterion.name}: {score:.1f}/10")
|
|
344
|
+
elif score <= 4.0:
|
|
345
|
+
weaknesses.append(f"{criterion.name}: {score:.1f}/10")
|
|
346
|
+
|
|
347
|
+
# Génération de recommandations
|
|
348
|
+
recommendations = []
|
|
349
|
+
|
|
350
|
+
if "Précision de l'incertitude" in all_scores and all_scores["Précision de l'incertitude"] < 6.0:
|
|
351
|
+
recommendations.append("Améliorer la précision des estimations d'incertitude")
|
|
352
|
+
|
|
353
|
+
if "Détection de fairwashing" in all_scores and all_scores["Détection de fairwashing"] < 6.0:
|
|
354
|
+
recommendations.append("Renforcer les mécanismes de détection de fairwashing")
|
|
355
|
+
|
|
356
|
+
if "Cohérence des métriques" in all_scores and all_scores["Cohérence des métriques"] < 6.0:
|
|
357
|
+
recommendations.append("Améliorer la cohérence entre les différentes métriques de confiance")
|
|
358
|
+
|
|
359
|
+
if "Utilité des recommandations" in all_scores and all_scores["Utilité des recommandations"] < 6.0:
|
|
360
|
+
recommendations.append("Fournir des recommandations plus actionnables et pertinentes")
|
|
361
|
+
|
|
362
|
+
# Création de l'évaluation experte
|
|
363
|
+
review = ExpertReview(
|
|
364
|
+
criteria=self.criteria,
|
|
365
|
+
scores=all_scores,
|
|
366
|
+
global_score=global_score,
|
|
367
|
+
strengths=strengths,
|
|
368
|
+
weaknesses=weaknesses,
|
|
369
|
+
recommendations=recommendations,
|
|
370
|
+
metadata={
|
|
371
|
+
"has_uncertainty_metrics": uncertainty_metrics is not None,
|
|
372
|
+
"has_fairwashing_audit": fairwashing_audit is not None,
|
|
373
|
+
"has_confidence_report": confidence_report is not None,
|
|
374
|
+
"has_explanation": explanation is not None
|
|
375
|
+
}
|
|
376
|
+
)
|
|
377
|
+
|
|
378
|
+
logger.info(f"Évaluation experte complétée avec un score global de {global_score:.2f}/10")
|
|
379
|
+
return review
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Gestion du droit à l'explication (RGPD) pour XPLIA
|
|
3
|
+
==================================================
|
|
4
|
+
|
|
5
|
+
Ce module fournit les outils pour répondre automatiquement et auditablement
|
|
6
|
+
aux demandes d'explication d'un utilisateur final, conformément au RGPD.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from typing import Any, Dict
|
|
10
|
+
import datetime
|
|
11
|
+
|
|
12
|
+
class ExplanationRequestLog:
|
|
13
|
+
"""
|
|
14
|
+
Journalise toutes les demandes d'explication pour auditabilité RGPD.
|
|
15
|
+
"""
|
|
16
|
+
def __init__(self):
|
|
17
|
+
self._log = []
|
|
18
|
+
def add(self, user_id: str, input_data: Any, explanation: Any):
|
|
19
|
+
self._log.append({
|
|
20
|
+
"timestamp": datetime.datetime.now().isoformat(),
|
|
21
|
+
"user_id": user_id,
|
|
22
|
+
"input": input_data,
|
|
23
|
+
"explanation": explanation
|
|
24
|
+
})
|
|
25
|
+
def export(self) -> list:
|
|
26
|
+
return self._log
|
|
27
|
+
|
|
28
|
+
class GDPRComplianceManager:
|
|
29
|
+
"""
|
|
30
|
+
Gère le droit à l'explication (article 22 RGPD) pour XPLIA.
|
|
31
|
+
"""
|
|
32
|
+
def __init__(self):
|
|
33
|
+
self.request_log = ExplanationRequestLog()
|
|
34
|
+
def request_explanation(self, user_id: str, model, input_data: Any, explainer, **kwargs) -> Dict:
|
|
35
|
+
# Génère une explication, journalise la demande et renvoie la réponse conforme RGPD
|
|
36
|
+
explanation = explainer.explain_instance(input_data, **kwargs)
|
|
37
|
+
self.request_log.add(user_id, input_data, explanation)
|
|
38
|
+
return {
|
|
39
|
+
"user_id": user_id,
|
|
40
|
+
"input": input_data,
|
|
41
|
+
"explanation": explanation,
|
|
42
|
+
"compliance": "RGPD Article 22 - Droit à l'explication satisfait"
|
|
43
|
+
}
|
|
44
|
+
def export_audit_trail(self) -> list:
|
|
45
|
+
return self.request_log.export()
|