main 733b392d2dc5 cached
1157 files
48.3 MB
3.0M tokens
13447 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (11,983K chars total). Download the full file to get everything.
Repository: JiayuanWang-JW/YOLOv8-multi-task
Branch: main
Commit: 733b392d2dc5
Files: 1157
Total size: 48.3 MB

Directory structure:
gitextract__3y0qhhx/

├── CITATION.cff
├── CONTRIBUTING.md
├── LICENSE
├── MANIFEST.in
├── README.md
├── bin/
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── activate.nu
│   ├── activate.ps1
│   ├── activate_this.py
│   ├── deactivate.nu
│   ├── pip
│   ├── pip-3.7
│   ├── pip3
│   ├── pip3.7
│   ├── python
│   ├── python3
│   ├── python3.7
│   ├── wheel
│   ├── wheel-3.7
│   ├── wheel3
│   └── wheel3.7
├── docker/
│   ├── Dockerfile
│   ├── Dockerfile-arm64
│   ├── Dockerfile-cpu
│   └── Dockerfile-jetson
├── docs/
│   ├── CNAME
│   ├── README.md
│   ├── SECURITY.md
│   ├── build_reference.py
│   ├── datasets/
│   │   ├── classify/
│   │   │   ├── caltech101.md
│   │   │   ├── caltech256.md
│   │   │   ├── cifar10.md
│   │   │   ├── cifar100.md
│   │   │   ├── fashion-mnist.md
│   │   │   ├── imagenet.md
│   │   │   ├── imagenet10.md
│   │   │   ├── imagenette.md
│   │   │   ├── imagewoof.md
│   │   │   ├── index.md
│   │   │   └── mnist.md
│   │   ├── detect/
│   │   │   ├── argoverse.md
│   │   │   ├── coco.md
│   │   │   ├── coco8.md
│   │   │   ├── globalwheat2020.md
│   │   │   ├── index.md
│   │   │   ├── objects365.md
│   │   │   ├── sku-110k.md
│   │   │   ├── visdrone.md
│   │   │   ├── voc.md
│   │   │   └── xview.md
│   │   ├── index.md
│   │   ├── pose/
│   │   │   ├── coco.md
│   │   │   ├── coco8-pose.md
│   │   │   └── index.md
│   │   ├── segment/
│   │   │   ├── coco.md
│   │   │   ├── coco8-seg.md
│   │   │   └── index.md
│   │   └── track/
│   │       └── index.md
│   ├── help/
│   │   ├── CLA.md
│   │   ├── FAQ.md
│   │   ├── code_of_conduct.md
│   │   ├── contributing.md
│   │   ├── index.md
│   │   └── minimum_reproducible_example.md
│   ├── hub/
│   │   ├── app/
│   │   │   ├── android.md
│   │   │   ├── index.md
│   │   │   └── ios.md
│   │   ├── datasets.md
│   │   ├── index.md
│   │   ├── inference_api.md
│   │   ├── integrations.md
│   │   ├── models.md
│   │   ├── projects.md
│   │   └── quickstart.md
│   ├── index.md
│   ├── models/
│   │   ├── index.md
│   │   ├── rtdetr.md
│   │   ├── sam.md
│   │   ├── yolov3.md
│   │   ├── yolov5.md
│   │   └── yolov8.md
│   ├── modes/
│   │   ├── benchmark.md
│   │   ├── export.md
│   │   ├── index.md
│   │   ├── predict.md
│   │   ├── track.md
│   │   ├── train.md
│   │   └── val.md
│   ├── overrides/
│   │   └── partials/
│   │       ├── comments.html
│   │       └── source-file.html
│   ├── quickstart.md
│   ├── reference/
│   │   ├── hub/
│   │   │   ├── auth.md
│   │   │   ├── session.md
│   │   │   └── utils.md
│   │   ├── nn/
│   │   │   ├── autobackend.md
│   │   │   ├── autoshape.md
│   │   │   ├── modules/
│   │   │   │   ├── block.md
│   │   │   │   ├── conv.md
│   │   │   │   ├── head.md
│   │   │   │   ├── transformer.md
│   │   │   │   └── utils.md
│   │   │   └── tasks.md
│   │   ├── tracker/
│   │   │   ├── track.md
│   │   │   ├── trackers/
│   │   │   │   ├── basetrack.md
│   │   │   │   ├── bot_sort.md
│   │   │   │   └── byte_tracker.md
│   │   │   └── utils/
│   │   │       ├── gmc.md
│   │   │       ├── kalman_filter.md
│   │   │       └── matching.md
│   │   └── yolo/
│   │       ├── data/
│   │       │   ├── annotator.md
│   │       │   ├── augment.md
│   │       │   ├── base.md
│   │       │   ├── build.md
│   │       │   ├── converter.md
│   │       │   ├── dataloaders/
│   │       │   │   ├── stream_loaders.md
│   │       │   │   ├── v5augmentations.md
│   │       │   │   └── v5loader.md
│   │       │   ├── dataset.md
│   │       │   ├── dataset_wrappers.md
│   │       │   └── utils.md
│   │       ├── engine/
│   │       │   ├── exporter.md
│   │       │   ├── model.md
│   │       │   ├── predictor.md
│   │       │   ├── results.md
│   │       │   ├── trainer.md
│   │       │   └── validator.md
│   │       ├── utils/
│   │       │   ├── autobatch.md
│   │       │   ├── benchmarks.md
│   │       │   ├── callbacks/
│   │       │   │   ├── base.md
│   │       │   │   ├── clearml.md
│   │       │   │   ├── comet.md
│   │       │   │   ├── hub.md
│   │       │   │   ├── mlflow.md
│   │       │   │   ├── neptune.md
│   │       │   │   ├── raytune.md
│   │       │   │   ├── tensorboard.md
│   │       │   │   └── wb.md
│   │       │   ├── checks.md
│   │       │   ├── dist.md
│   │       │   ├── downloads.md
│   │       │   ├── errors.md
│   │       │   ├── files.md
│   │       │   ├── instance.md
│   │       │   ├── loss.md
│   │       │   ├── metrics.md
│   │       │   ├── ops.md
│   │       │   ├── plotting.md
│   │       │   ├── tal.md
│   │       │   └── torch_utils.md
│   │       └── v8/
│   │           ├── classify/
│   │           │   ├── predict.md
│   │           │   ├── train.md
│   │           │   └── val.md
│   │           ├── detect/
│   │           │   ├── predict.md
│   │           │   ├── train.md
│   │           │   └── val.md
│   │           ├── pose/
│   │           │   ├── predict.md
│   │           │   ├── train.md
│   │           │   └── val.md
│   │           └── segment/
│   │               ├── predict.md
│   │               ├── train.md
│   │               └── val.md
│   ├── robots.txt
│   ├── stylesheets/
│   │   └── style.css
│   ├── tasks/
│   │   ├── classify.md
│   │   ├── detect.md
│   │   ├── index.md
│   │   ├── pose.md
│   │   └── segment.md
│   ├── usage/
│   │   ├── callbacks.md
│   │   ├── cfg.md
│   │   ├── cli.md
│   │   ├── engine.md
│   │   ├── hyperparameter_tuning.md
│   │   └── python.md
│   └── yolov5/
│       ├── environments/
│       │   ├── aws_quickstart_tutorial.md
│       │   ├── docker_image_quickstart_tutorial.md
│       │   └── google_cloud_quickstart_tutorial.md
│       ├── index.md
│       ├── quickstart_tutorial.md
│       └── tutorials/
│           ├── architecture_description.md
│           ├── clearml_logging_integration.md
│           ├── comet_logging_integration.md
│           ├── hyperparameter_evolution.md
│           ├── model_ensembling.md
│           ├── model_export.md
│           ├── model_pruning_and_sparsity.md
│           ├── multi_gpu_training.md
│           ├── neural_magic_pruning_quantization.md
│           ├── pytorch_hub_model_loading.md
│           ├── roboflow_datasets_integration.md
│           ├── running_on_jetson_nano.md
│           ├── test_time_augmentation.md
│           ├── tips_for_best_training_results.md
│           ├── train_custom_data.md
│           └── transfer_learning_with_frozen_layers.md
├── examples/
│   ├── README.md
│   ├── YOLOv8-CPP-Inference/
│   │   ├── CMakeLists.txt
│   │   ├── README.md
│   │   ├── inference.cpp
│   │   ├── inference.h
│   │   └── main.cpp
│   ├── YOLOv8-OpenCV-ONNX-Python/
│   │   ├── README.md
│   │   └── main.py
│   ├── hub.ipynb
│   └── tutorial.ipynb
├── lib/
│   └── python3.7/
│       └── site-packages/
│           ├── _distutils_hack/
│           │   ├── __init__.py
│           │   └── override.py
│           ├── _virtualenv.pth
│           ├── _virtualenv.py
│           ├── distutils-precedence.pth
│           ├── pip/
│           │   ├── __init__.py
│           │   ├── __main__.py
│           │   ├── __pip-runner__.py
│           │   ├── _internal/
│           │   │   ├── __init__.py
│           │   │   ├── build_env.py
│           │   │   ├── cache.py
│           │   │   ├── cli/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── autocompletion.py
│           │   │   │   ├── base_command.py
│           │   │   │   ├── cmdoptions.py
│           │   │   │   ├── command_context.py
│           │   │   │   ├── main.py
│           │   │   │   ├── main_parser.py
│           │   │   │   ├── parser.py
│           │   │   │   ├── progress_bars.py
│           │   │   │   ├── req_command.py
│           │   │   │   ├── spinners.py
│           │   │   │   └── status_codes.py
│           │   │   ├── commands/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── cache.py
│           │   │   │   ├── check.py
│           │   │   │   ├── completion.py
│           │   │   │   ├── configuration.py
│           │   │   │   ├── debug.py
│           │   │   │   ├── download.py
│           │   │   │   ├── freeze.py
│           │   │   │   ├── hash.py
│           │   │   │   ├── help.py
│           │   │   │   ├── index.py
│           │   │   │   ├── inspect.py
│           │   │   │   ├── install.py
│           │   │   │   ├── list.py
│           │   │   │   ├── search.py
│           │   │   │   ├── show.py
│           │   │   │   ├── uninstall.py
│           │   │   │   └── wheel.py
│           │   │   ├── configuration.py
│           │   │   ├── distributions/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── base.py
│           │   │   │   ├── installed.py
│           │   │   │   ├── sdist.py
│           │   │   │   └── wheel.py
│           │   │   ├── exceptions.py
│           │   │   ├── index/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── collector.py
│           │   │   │   ├── package_finder.py
│           │   │   │   └── sources.py
│           │   │   ├── locations/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _distutils.py
│           │   │   │   ├── _sysconfig.py
│           │   │   │   └── base.py
│           │   │   ├── main.py
│           │   │   ├── metadata/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _json.py
│           │   │   │   ├── base.py
│           │   │   │   ├── importlib/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── _compat.py
│           │   │   │   │   ├── _dists.py
│           │   │   │   │   └── _envs.py
│           │   │   │   └── pkg_resources.py
│           │   │   ├── models/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── candidate.py
│           │   │   │   ├── direct_url.py
│           │   │   │   ├── format_control.py
│           │   │   │   ├── index.py
│           │   │   │   ├── installation_report.py
│           │   │   │   ├── link.py
│           │   │   │   ├── scheme.py
│           │   │   │   ├── search_scope.py
│           │   │   │   ├── selection_prefs.py
│           │   │   │   ├── target_python.py
│           │   │   │   └── wheel.py
│           │   │   ├── network/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── auth.py
│           │   │   │   ├── cache.py
│           │   │   │   ├── download.py
│           │   │   │   ├── lazy_wheel.py
│           │   │   │   ├── session.py
│           │   │   │   ├── utils.py
│           │   │   │   └── xmlrpc.py
│           │   │   ├── operations/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── build/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── build_tracker.py
│           │   │   │   │   ├── metadata.py
│           │   │   │   │   ├── metadata_editable.py
│           │   │   │   │   ├── metadata_legacy.py
│           │   │   │   │   ├── wheel.py
│           │   │   │   │   ├── wheel_editable.py
│           │   │   │   │   └── wheel_legacy.py
│           │   │   │   ├── check.py
│           │   │   │   ├── freeze.py
│           │   │   │   ├── install/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── editable_legacy.py
│           │   │   │   │   ├── legacy.py
│           │   │   │   │   └── wheel.py
│           │   │   │   └── prepare.py
│           │   │   ├── pyproject.py
│           │   │   ├── req/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── constructors.py
│           │   │   │   ├── req_file.py
│           │   │   │   ├── req_install.py
│           │   │   │   ├── req_set.py
│           │   │   │   └── req_uninstall.py
│           │   │   ├── resolution/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── base.py
│           │   │   │   ├── legacy/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   └── resolver.py
│           │   │   │   └── resolvelib/
│           │   │   │       ├── __init__.py
│           │   │   │       ├── base.py
│           │   │   │       ├── candidates.py
│           │   │   │       ├── factory.py
│           │   │   │       ├── found_candidates.py
│           │   │   │       ├── provider.py
│           │   │   │       ├── reporter.py
│           │   │   │       ├── requirements.py
│           │   │   │       └── resolver.py
│           │   │   ├── self_outdated_check.py
│           │   │   ├── utils/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _log.py
│           │   │   │   ├── appdirs.py
│           │   │   │   ├── compat.py
│           │   │   │   ├── compatibility_tags.py
│           │   │   │   ├── datetime.py
│           │   │   │   ├── deprecation.py
│           │   │   │   ├── direct_url_helpers.py
│           │   │   │   ├── distutils_args.py
│           │   │   │   ├── egg_link.py
│           │   │   │   ├── encoding.py
│           │   │   │   ├── entrypoints.py
│           │   │   │   ├── filesystem.py
│           │   │   │   ├── filetypes.py
│           │   │   │   ├── glibc.py
│           │   │   │   ├── hashes.py
│           │   │   │   ├── inject_securetransport.py
│           │   │   │   ├── logging.py
│           │   │   │   ├── misc.py
│           │   │   │   ├── models.py
│           │   │   │   ├── packaging.py
│           │   │   │   ├── setuptools_build.py
│           │   │   │   ├── subprocess.py
│           │   │   │   ├── temp_dir.py
│           │   │   │   ├── unpacking.py
│           │   │   │   ├── urls.py
│           │   │   │   ├── virtualenv.py
│           │   │   │   └── wheel.py
│           │   │   ├── vcs/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── bazaar.py
│           │   │   │   ├── git.py
│           │   │   │   ├── mercurial.py
│           │   │   │   ├── subversion.py
│           │   │   │   └── versioncontrol.py
│           │   │   └── wheel_builder.py
│           │   ├── _vendor/
│           │   │   ├── __init__.py
│           │   │   ├── cachecontrol/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _cmd.py
│           │   │   │   ├── adapter.py
│           │   │   │   ├── cache.py
│           │   │   │   ├── caches/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── file_cache.py
│           │   │   │   │   └── redis_cache.py
│           │   │   │   ├── compat.py
│           │   │   │   ├── controller.py
│           │   │   │   ├── filewrapper.py
│           │   │   │   ├── heuristics.py
│           │   │   │   ├── serialize.py
│           │   │   │   └── wrapper.py
│           │   │   ├── certifi/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── __main__.py
│           │   │   │   ├── cacert.pem
│           │   │   │   └── core.py
│           │   │   ├── chardet/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── big5freq.py
│           │   │   │   ├── big5prober.py
│           │   │   │   ├── chardistribution.py
│           │   │   │   ├── charsetgroupprober.py
│           │   │   │   ├── charsetprober.py
│           │   │   │   ├── cli/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   └── chardetect.py
│           │   │   │   ├── codingstatemachine.py
│           │   │   │   ├── cp949prober.py
│           │   │   │   ├── enums.py
│           │   │   │   ├── escprober.py
│           │   │   │   ├── escsm.py
│           │   │   │   ├── eucjpprober.py
│           │   │   │   ├── euckrfreq.py
│           │   │   │   ├── euckrprober.py
│           │   │   │   ├── euctwfreq.py
│           │   │   │   ├── euctwprober.py
│           │   │   │   ├── gb2312freq.py
│           │   │   │   ├── gb2312prober.py
│           │   │   │   ├── hebrewprober.py
│           │   │   │   ├── jisfreq.py
│           │   │   │   ├── johabfreq.py
│           │   │   │   ├── johabprober.py
│           │   │   │   ├── jpcntx.py
│           │   │   │   ├── langbulgarianmodel.py
│           │   │   │   ├── langgreekmodel.py
│           │   │   │   ├── langhebrewmodel.py
│           │   │   │   ├── langhungarianmodel.py
│           │   │   │   ├── langrussianmodel.py
│           │   │   │   ├── langthaimodel.py
│           │   │   │   ├── langturkishmodel.py
│           │   │   │   ├── latin1prober.py
│           │   │   │   ├── mbcharsetprober.py
│           │   │   │   ├── mbcsgroupprober.py
│           │   │   │   ├── mbcssm.py
│           │   │   │   ├── metadata/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   └── languages.py
│           │   │   │   ├── sbcharsetprober.py
│           │   │   │   ├── sbcsgroupprober.py
│           │   │   │   ├── sjisprober.py
│           │   │   │   ├── universaldetector.py
│           │   │   │   ├── utf1632prober.py
│           │   │   │   ├── utf8prober.py
│           │   │   │   └── version.py
│           │   │   ├── colorama/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── ansi.py
│           │   │   │   ├── ansitowin32.py
│           │   │   │   ├── initialise.py
│           │   │   │   ├── win32.py
│           │   │   │   └── winterm.py
│           │   │   ├── distlib/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── compat.py
│           │   │   │   ├── database.py
│           │   │   │   ├── index.py
│           │   │   │   ├── locators.py
│           │   │   │   ├── manifest.py
│           │   │   │   ├── markers.py
│           │   │   │   ├── metadata.py
│           │   │   │   ├── resources.py
│           │   │   │   ├── scripts.py
│           │   │   │   ├── util.py
│           │   │   │   ├── version.py
│           │   │   │   └── wheel.py
│           │   │   ├── distro/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── __main__.py
│           │   │   │   └── distro.py
│           │   │   ├── idna/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── codec.py
│           │   │   │   ├── compat.py
│           │   │   │   ├── core.py
│           │   │   │   ├── idnadata.py
│           │   │   │   ├── intranges.py
│           │   │   │   ├── package_data.py
│           │   │   │   └── uts46data.py
│           │   │   ├── msgpack/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── exceptions.py
│           │   │   │   ├── ext.py
│           │   │   │   └── fallback.py
│           │   │   ├── packaging/
│           │   │   │   ├── __about__.py
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _manylinux.py
│           │   │   │   ├── _musllinux.py
│           │   │   │   ├── _structures.py
│           │   │   │   ├── markers.py
│           │   │   │   ├── requirements.py
│           │   │   │   ├── specifiers.py
│           │   │   │   ├── tags.py
│           │   │   │   ├── utils.py
│           │   │   │   └── version.py
│           │   │   ├── pep517/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _compat.py
│           │   │   │   ├── build.py
│           │   │   │   ├── check.py
│           │   │   │   ├── colorlog.py
│           │   │   │   ├── dirtools.py
│           │   │   │   ├── envbuild.py
│           │   │   │   ├── in_process/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   └── _in_process.py
│           │   │   │   ├── meta.py
│           │   │   │   └── wrappers.py
│           │   │   ├── pkg_resources/
│           │   │   │   ├── __init__.py
│           │   │   │   └── py31compat.py
│           │   │   ├── platformdirs/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── __main__.py
│           │   │   │   ├── android.py
│           │   │   │   ├── api.py
│           │   │   │   ├── macos.py
│           │   │   │   ├── unix.py
│           │   │   │   ├── version.py
│           │   │   │   └── windows.py
│           │   │   ├── pygments/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── __main__.py
│           │   │   │   ├── cmdline.py
│           │   │   │   ├── console.py
│           │   │   │   ├── filter.py
│           │   │   │   ├── filters/
│           │   │   │   │   └── __init__.py
│           │   │   │   ├── formatter.py
│           │   │   │   ├── formatters/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── _mapping.py
│           │   │   │   │   ├── bbcode.py
│           │   │   │   │   ├── groff.py
│           │   │   │   │   ├── html.py
│           │   │   │   │   ├── img.py
│           │   │   │   │   ├── irc.py
│           │   │   │   │   ├── latex.py
│           │   │   │   │   ├── other.py
│           │   │   │   │   ├── pangomarkup.py
│           │   │   │   │   ├── rtf.py
│           │   │   │   │   ├── svg.py
│           │   │   │   │   ├── terminal.py
│           │   │   │   │   └── terminal256.py
│           │   │   │   ├── lexer.py
│           │   │   │   ├── lexers/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── _mapping.py
│           │   │   │   │   └── python.py
│           │   │   │   ├── modeline.py
│           │   │   │   ├── plugin.py
│           │   │   │   ├── regexopt.py
│           │   │   │   ├── scanner.py
│           │   │   │   ├── sphinxext.py
│           │   │   │   ├── style.py
│           │   │   │   ├── styles/
│           │   │   │   │   └── __init__.py
│           │   │   │   ├── token.py
│           │   │   │   ├── unistring.py
│           │   │   │   └── util.py
│           │   │   ├── pyparsing/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── actions.py
│           │   │   │   ├── common.py
│           │   │   │   ├── core.py
│           │   │   │   ├── diagram/
│           │   │   │   │   └── __init__.py
│           │   │   │   ├── exceptions.py
│           │   │   │   ├── helpers.py
│           │   │   │   ├── results.py
│           │   │   │   ├── testing.py
│           │   │   │   ├── unicode.py
│           │   │   │   └── util.py
│           │   │   ├── requests/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── __version__.py
│           │   │   │   ├── _internal_utils.py
│           │   │   │   ├── adapters.py
│           │   │   │   ├── api.py
│           │   │   │   ├── auth.py
│           │   │   │   ├── certs.py
│           │   │   │   ├── compat.py
│           │   │   │   ├── cookies.py
│           │   │   │   ├── exceptions.py
│           │   │   │   ├── help.py
│           │   │   │   ├── hooks.py
│           │   │   │   ├── models.py
│           │   │   │   ├── packages.py
│           │   │   │   ├── sessions.py
│           │   │   │   ├── status_codes.py
│           │   │   │   ├── structures.py
│           │   │   │   └── utils.py
│           │   │   ├── resolvelib/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── compat/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   └── collections_abc.py
│           │   │   │   ├── providers.py
│           │   │   │   ├── reporters.py
│           │   │   │   ├── resolvers.py
│           │   │   │   └── structs.py
│           │   │   ├── rich/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── __main__.py
│           │   │   │   ├── _cell_widths.py
│           │   │   │   ├── _emoji_codes.py
│           │   │   │   ├── _emoji_replace.py
│           │   │   │   ├── _export_format.py
│           │   │   │   ├── _extension.py
│           │   │   │   ├── _inspect.py
│           │   │   │   ├── _log_render.py
│           │   │   │   ├── _loop.py
│           │   │   │   ├── _palettes.py
│           │   │   │   ├── _pick.py
│           │   │   │   ├── _ratio.py
│           │   │   │   ├── _spinners.py
│           │   │   │   ├── _stack.py
│           │   │   │   ├── _timer.py
│           │   │   │   ├── _win32_console.py
│           │   │   │   ├── _windows.py
│           │   │   │   ├── _windows_renderer.py
│           │   │   │   ├── _wrap.py
│           │   │   │   ├── abc.py
│           │   │   │   ├── align.py
│           │   │   │   ├── ansi.py
│           │   │   │   ├── bar.py
│           │   │   │   ├── box.py
│           │   │   │   ├── cells.py
│           │   │   │   ├── color.py
│           │   │   │   ├── color_triplet.py
│           │   │   │   ├── columns.py
│           │   │   │   ├── console.py
│           │   │   │   ├── constrain.py
│           │   │   │   ├── containers.py
│           │   │   │   ├── control.py
│           │   │   │   ├── default_styles.py
│           │   │   │   ├── diagnose.py
│           │   │   │   ├── emoji.py
│           │   │   │   ├── errors.py
│           │   │   │   ├── file_proxy.py
│           │   │   │   ├── filesize.py
│           │   │   │   ├── highlighter.py
│           │   │   │   ├── json.py
│           │   │   │   ├── jupyter.py
│           │   │   │   ├── layout.py
│           │   │   │   ├── live.py
│           │   │   │   ├── live_render.py
│           │   │   │   ├── logging.py
│           │   │   │   ├── markup.py
│           │   │   │   ├── measure.py
│           │   │   │   ├── padding.py
│           │   │   │   ├── pager.py
│           │   │   │   ├── palette.py
│           │   │   │   ├── panel.py
│           │   │   │   ├── pretty.py
│           │   │   │   ├── progress.py
│           │   │   │   ├── progress_bar.py
│           │   │   │   ├── prompt.py
│           │   │   │   ├── protocol.py
│           │   │   │   ├── region.py
│           │   │   │   ├── repr.py
│           │   │   │   ├── rule.py
│           │   │   │   ├── scope.py
│           │   │   │   ├── screen.py
│           │   │   │   ├── segment.py
│           │   │   │   ├── spinner.py
│           │   │   │   ├── status.py
│           │   │   │   ├── style.py
│           │   │   │   ├── styled.py
│           │   │   │   ├── syntax.py
│           │   │   │   ├── table.py
│           │   │   │   ├── terminal_theme.py
│           │   │   │   ├── text.py
│           │   │   │   ├── theme.py
│           │   │   │   ├── themes.py
│           │   │   │   ├── traceback.py
│           │   │   │   └── tree.py
│           │   │   ├── six.py
│           │   │   ├── tenacity/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _asyncio.py
│           │   │   │   ├── _utils.py
│           │   │   │   ├── after.py
│           │   │   │   ├── before.py
│           │   │   │   ├── before_sleep.py
│           │   │   │   ├── nap.py
│           │   │   │   ├── retry.py
│           │   │   │   ├── stop.py
│           │   │   │   ├── tornadoweb.py
│           │   │   │   └── wait.py
│           │   │   ├── tomli/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _parser.py
│           │   │   │   ├── _re.py
│           │   │   │   └── _types.py
│           │   │   ├── typing_extensions.py
│           │   │   ├── urllib3/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _collections.py
│           │   │   │   ├── _version.py
│           │   │   │   ├── connection.py
│           │   │   │   ├── connectionpool.py
│           │   │   │   ├── contrib/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── _appengine_environ.py
│           │   │   │   │   ├── _securetransport/
│           │   │   │   │   │   ├── __init__.py
│           │   │   │   │   │   ├── bindings.py
│           │   │   │   │   │   └── low_level.py
│           │   │   │   │   ├── appengine.py
│           │   │   │   │   ├── ntlmpool.py
│           │   │   │   │   ├── pyopenssl.py
│           │   │   │   │   ├── securetransport.py
│           │   │   │   │   └── socks.py
│           │   │   │   ├── exceptions.py
│           │   │   │   ├── fields.py
│           │   │   │   ├── filepost.py
│           │   │   │   ├── packages/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── backports/
│           │   │   │   │   │   ├── __init__.py
│           │   │   │   │   │   └── makefile.py
│           │   │   │   │   └── six.py
│           │   │   │   ├── poolmanager.py
│           │   │   │   ├── request.py
│           │   │   │   ├── response.py
│           │   │   │   └── util/
│           │   │   │       ├── __init__.py
│           │   │   │       ├── connection.py
│           │   │   │       ├── proxy.py
│           │   │   │       ├── queue.py
│           │   │   │       ├── request.py
│           │   │   │       ├── response.py
│           │   │   │       ├── retry.py
│           │   │   │       ├── ssl_.py
│           │   │   │       ├── ssl_match_hostname.py
│           │   │   │       ├── ssltransport.py
│           │   │   │       ├── timeout.py
│           │   │   │       ├── url.py
│           │   │   │       └── wait.py
│           │   │   ├── vendor.txt
│           │   │   └── webencodings/
│           │   │       ├── __init__.py
│           │   │       ├── labels.py
│           │   │       ├── mklabels.py
│           │   │       ├── tests.py
│           │   │       └── x_user_defined.py
│           │   └── py.typed
│           ├── pip-22.3.1.dist-info/
│           │   ├── INSTALLER
│           │   ├── LICENSE.txt
│           │   ├── METADATA
│           │   ├── RECORD
│           │   ├── WHEEL
│           │   ├── entry_points.txt
│           │   └── top_level.txt
│           ├── pip-22.3.1.virtualenv
│           ├── pkg_resources/
│           │   ├── __init__.py
│           │   ├── _vendor/
│           │   │   ├── __init__.py
│           │   │   ├── appdirs.py
│           │   │   ├── importlib_resources/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _adapters.py
│           │   │   │   ├── _common.py
│           │   │   │   ├── _compat.py
│           │   │   │   ├── _itertools.py
│           │   │   │   ├── _legacy.py
│           │   │   │   ├── abc.py
│           │   │   │   ├── readers.py
│           │   │   │   └── simple.py
│           │   │   ├── jaraco/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── context.py
│           │   │   │   ├── functools.py
│           │   │   │   └── text/
│           │   │   │       └── __init__.py
│           │   │   ├── more_itertools/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── more.py
│           │   │   │   └── recipes.py
│           │   │   ├── packaging/
│           │   │   │   ├── __about__.py
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _manylinux.py
│           │   │   │   ├── _musllinux.py
│           │   │   │   ├── _structures.py
│           │   │   │   ├── markers.py
│           │   │   │   ├── requirements.py
│           │   │   │   ├── specifiers.py
│           │   │   │   ├── tags.py
│           │   │   │   ├── utils.py
│           │   │   │   └── version.py
│           │   │   ├── pyparsing/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── actions.py
│           │   │   │   ├── common.py
│           │   │   │   ├── core.py
│           │   │   │   ├── diagram/
│           │   │   │   │   └── __init__.py
│           │   │   │   ├── exceptions.py
│           │   │   │   ├── helpers.py
│           │   │   │   ├── results.py
│           │   │   │   ├── testing.py
│           │   │   │   ├── unicode.py
│           │   │   │   └── util.py
│           │   │   └── zipp.py
│           │   └── extern/
│           │       └── __init__.py
│           ├── setuptools/
│           │   ├── __init__.py
│           │   ├── _deprecation_warning.py
│           │   ├── _distutils/
│           │   │   ├── __init__.py
│           │   │   ├── _collections.py
│           │   │   ├── _functools.py
│           │   │   ├── _macos_compat.py
│           │   │   ├── _msvccompiler.py
│           │   │   ├── archive_util.py
│           │   │   ├── bcppcompiler.py
│           │   │   ├── ccompiler.py
│           │   │   ├── cmd.py
│           │   │   ├── command/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _framework_compat.py
│           │   │   │   ├── bdist.py
│           │   │   │   ├── bdist_dumb.py
│           │   │   │   ├── bdist_rpm.py
│           │   │   │   ├── build.py
│           │   │   │   ├── build_clib.py
│           │   │   │   ├── build_ext.py
│           │   │   │   ├── build_py.py
│           │   │   │   ├── build_scripts.py
│           │   │   │   ├── check.py
│           │   │   │   ├── clean.py
│           │   │   │   ├── config.py
│           │   │   │   ├── install.py
│           │   │   │   ├── install_data.py
│           │   │   │   ├── install_egg_info.py
│           │   │   │   ├── install_headers.py
│           │   │   │   ├── install_lib.py
│           │   │   │   ├── install_scripts.py
│           │   │   │   ├── py37compat.py
│           │   │   │   ├── register.py
│           │   │   │   ├── sdist.py
│           │   │   │   └── upload.py
│           │   │   ├── config.py
│           │   │   ├── core.py
│           │   │   ├── cygwinccompiler.py
│           │   │   ├── debug.py
│           │   │   ├── dep_util.py
│           │   │   ├── dir_util.py
│           │   │   ├── dist.py
│           │   │   ├── errors.py
│           │   │   ├── extension.py
│           │   │   ├── fancy_getopt.py
│           │   │   ├── file_util.py
│           │   │   ├── filelist.py
│           │   │   ├── log.py
│           │   │   ├── msvc9compiler.py
│           │   │   ├── msvccompiler.py
│           │   │   ├── py38compat.py
│           │   │   ├── py39compat.py
│           │   │   ├── spawn.py
│           │   │   ├── sysconfig.py
│           │   │   ├── text_file.py
│           │   │   ├── unixccompiler.py
│           │   │   ├── util.py
│           │   │   ├── version.py
│           │   │   └── versionpredicate.py
│           │   ├── _entry_points.py
│           │   ├── _imp.py
│           │   ├── _importlib.py
│           │   ├── _itertools.py
│           │   ├── _path.py
│           │   ├── _reqs.py
│           │   ├── _vendor/
│           │   │   ├── __init__.py
│           │   │   ├── importlib_metadata/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _adapters.py
│           │   │   │   ├── _collections.py
│           │   │   │   ├── _compat.py
│           │   │   │   ├── _functools.py
│           │   │   │   ├── _itertools.py
│           │   │   │   ├── _meta.py
│           │   │   │   └── _text.py
│           │   │   ├── importlib_resources/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _adapters.py
│           │   │   │   ├── _common.py
│           │   │   │   ├── _compat.py
│           │   │   │   ├── _itertools.py
│           │   │   │   ├── _legacy.py
│           │   │   │   ├── abc.py
│           │   │   │   ├── readers.py
│           │   │   │   └── simple.py
│           │   │   ├── jaraco/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── context.py
│           │   │   │   ├── functools.py
│           │   │   │   └── text/
│           │   │   │       └── __init__.py
│           │   │   ├── more_itertools/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── more.py
│           │   │   │   └── recipes.py
│           │   │   ├── ordered_set.py
│           │   │   ├── packaging/
│           │   │   │   ├── __about__.py
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _manylinux.py
│           │   │   │   ├── _musllinux.py
│           │   │   │   ├── _structures.py
│           │   │   │   ├── markers.py
│           │   │   │   ├── requirements.py
│           │   │   │   ├── specifiers.py
│           │   │   │   ├── tags.py
│           │   │   │   ├── utils.py
│           │   │   │   └── version.py
│           │   │   ├── pyparsing/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── actions.py
│           │   │   │   ├── common.py
│           │   │   │   ├── core.py
│           │   │   │   ├── diagram/
│           │   │   │   │   └── __init__.py
│           │   │   │   ├── exceptions.py
│           │   │   │   ├── helpers.py
│           │   │   │   ├── results.py
│           │   │   │   ├── testing.py
│           │   │   │   ├── unicode.py
│           │   │   │   └── util.py
│           │   │   ├── tomli/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _parser.py
│           │   │   │   ├── _re.py
│           │   │   │   └── _types.py
│           │   │   ├── typing_extensions.py
│           │   │   └── zipp.py
│           │   ├── archive_util.py
│           │   ├── build_meta.py
│           │   ├── command/
│           │   │   ├── __init__.py
│           │   │   ├── alias.py
│           │   │   ├── bdist_egg.py
│           │   │   ├── bdist_rpm.py
│           │   │   ├── build.py
│           │   │   ├── build_clib.py
│           │   │   ├── build_ext.py
│           │   │   ├── build_py.py
│           │   │   ├── develop.py
│           │   │   ├── dist_info.py
│           │   │   ├── easy_install.py
│           │   │   ├── editable_wheel.py
│           │   │   ├── egg_info.py
│           │   │   ├── install.py
│           │   │   ├── install_egg_info.py
│           │   │   ├── install_lib.py
│           │   │   ├── install_scripts.py
│           │   │   ├── launcher manifest.xml
│           │   │   ├── py36compat.py
│           │   │   ├── register.py
│           │   │   ├── rotate.py
│           │   │   ├── saveopts.py
│           │   │   ├── sdist.py
│           │   │   ├── setopt.py
│           │   │   ├── test.py
│           │   │   ├── upload.py
│           │   │   └── upload_docs.py
│           │   ├── config/
│           │   │   ├── __init__.py
│           │   │   ├── _apply_pyprojecttoml.py
│           │   │   ├── _validate_pyproject/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── error_reporting.py
│           │   │   │   ├── extra_validations.py
│           │   │   │   ├── fastjsonschema_exceptions.py
│           │   │   │   ├── fastjsonschema_validations.py
│           │   │   │   └── formats.py
│           │   │   ├── expand.py
│           │   │   ├── pyprojecttoml.py
│           │   │   └── setupcfg.py
│           │   ├── dep_util.py
│           │   ├── depends.py
│           │   ├── discovery.py
│           │   ├── dist.py
│           │   ├── errors.py
│           │   ├── extension.py
│           │   ├── extern/
│           │   │   └── __init__.py
│           │   ├── glob.py
│           │   ├── installer.py
│           │   ├── launch.py
│           │   ├── logging.py
│           │   ├── monkey.py
│           │   ├── msvc.py
│           │   ├── namespaces.py
│           │   ├── package_index.py
│           │   ├── py34compat.py
│           │   ├── sandbox.py
│           │   ├── script (dev).tmpl
│           │   ├── script.tmpl
│           │   ├── unicode_utils.py
│           │   ├── version.py
│           │   ├── wheel.py
│           │   └── windows_support.py
│           ├── setuptools-65.5.1.dist-info/
│           │   ├── INSTALLER
│           │   ├── LICENSE
│           │   ├── METADATA
│           │   ├── RECORD
│           │   ├── WHEEL
│           │   ├── entry_points.txt
│           │   └── top_level.txt
│           ├── setuptools-65.5.1.virtualenv
│           ├── wheel/
│           │   ├── __init__.py
│           │   ├── __main__.py
│           │   ├── _setuptools_logging.py
│           │   ├── bdist_wheel.py
│           │   ├── cli/
│           │   │   ├── __init__.py
│           │   │   ├── convert.py
│           │   │   ├── pack.py
│           │   │   └── unpack.py
│           │   ├── macosx_libfile.py
│           │   ├── metadata.py
│           │   ├── util.py
│           │   ├── vendored/
│           │   │   ├── __init__.py
│           │   │   └── packaging/
│           │   │       ├── __init__.py
│           │   │       ├── _manylinux.py
│           │   │       ├── _musllinux.py
│           │   │       └── tags.py
│           │   └── wheelfile.py
│           ├── wheel-0.38.4.dist-info/
│           │   ├── INSTALLER
│           │   ├── LICENSE.txt
│           │   ├── METADATA
│           │   ├── RECORD
│           │   ├── WHEEL
│           │   ├── entry_points.txt
│           │   └── top_level.txt
│           └── wheel-0.38.4.virtualenv
├── mkdocs.yml
├── pyvenv.cfg
├── requirements.txt
├── setup.cfg
├── setup.py
├── tests/
│   ├── conftest.py
│   ├── test_cli.py
│   ├── test_engine.py
│   └── test_python.py
├── ultralytics/
│   ├── .ipynb_checkpoints/
│   │   ├── predict-checkpoint.py
│   │   ├── resum_training-checkpoint.py
│   │   ├── train-checkpoint.py
│   │   └── val-checkpoint.py
│   ├── __init__.py
│   ├── datasets/
│   │   ├── .ipynb_checkpoints/
│   │   │   ├── bdd-multi-checkpoint.yaml
│   │   │   └── create_toy_dataset-checkpoint.ipynb
│   │   ├── Argoverse.yaml
│   │   ├── GlobalWheat2020.yaml
│   │   ├── ImageNet.yaml
│   │   ├── Objects365.yaml
│   │   ├── SKU-110K.yaml
│   │   ├── VOC.yaml
│   │   ├── VisDrone.yaml
│   │   ├── bdd-drivable-seg-toy.yaml
│   │   ├── bdd-lane-seg-toy.yaml
│   │   ├── bdd-multi-toy.yaml
│   │   ├── bdd-multi.yaml
│   │   ├── coco-pose.yaml
│   │   ├── coco-toy.yaml
│   │   ├── coco.yaml
│   │   ├── coco128-seg.yaml
│   │   ├── coco128.yaml
│   │   ├── coco8-pose.yaml
│   │   ├── coco8-seg.yaml
│   │   ├── coco8.yaml
│   │   ├── create_toy_dataset.ipynb
│   │   └── xView.yaml
│   ├── hub/
│   │   ├── __init__.py
│   │   ├── auth.py
│   │   ├── session.py
│   │   └── utils.py
│   ├── models/
│   │   ├── README.md
│   │   ├── rt-detr/
│   │   │   ├── rt-detr-l.yaml
│   │   │   └── rt-detr-x.yaml
│   │   ├── v3/
│   │   │   ├── yolov3-spp.yaml
│   │   │   ├── yolov3-tiny.yaml
│   │   │   └── yolov3.yaml
│   │   ├── v5/
│   │   │   ├── yolov5-p6.yaml
│   │   │   └── yolov5.yaml
│   │   └── v8/
│   │       ├── .ipynb_checkpoints/
│   │       │   └── yolov8-bdd-v4-one-dropout-individual-n-checkpoint.yaml
│   │       ├── yolov8-bdd-one.yaml
│   │       ├── yolov8-bdd-v3-one.yaml
│   │       ├── yolov8-bdd-v4-one-dropout-individual-n.yaml
│   │       ├── yolov8-bdd-v4-one-dropout-individual-s.yaml
│   │       ├── yolov8-bdd.yaml
│   │       ├── yolov8-cls.yaml
│   │       ├── yolov8-p2.yaml
│   │       ├── yolov8-p6.yaml
│   │       ├── yolov8-pose.yaml
│   │       ├── yolov8-seg.yaml
│   │       └── yolov8.yaml
│   ├── nn/
│   │   ├── .ipynb_checkpoints/
│   │   │   └── tasks-checkpoint.py
│   │   ├── __init__.py
│   │   ├── autobackend.py
│   │   ├── autoshape.py
│   │   ├── modules/
│   │   │   ├── __init__.py
│   │   │   ├── block.py
│   │   │   ├── conv.py
│   │   │   ├── head.py
│   │   │   ├── transformer.py
│   │   │   └── utils.py
│   │   └── tasks.py
│   ├── predict.py
│   ├── resum_training.py
│   ├── tracker/
│   │   ├── README.md
│   │   ├── __init__.py
│   │   ├── cfg/
│   │   │   ├── botsort.yaml
│   │   │   └── bytetrack.yaml
│   │   ├── track.py
│   │   ├── trackers/
│   │   │   ├── __init__.py
│   │   │   ├── basetrack.py
│   │   │   ├── bot_sort.py
│   │   │   └── byte_tracker.py
│   │   └── utils/
│   │       ├── __init__.py
│   │       ├── gmc.py
│   │       ├── kalman_filter.py
│   │       └── matching.py
│   ├── train.py
│   ├── val.py
│   ├── vit/
│   │   ├── __init__.py
│   │   ├── rtdetr/
│   │   │   ├── __init__.py
│   │   │   ├── model.py
│   │   │   ├── predict.py
│   │   │   └── val.py
│   │   └── sam/
│   │       ├── __init__.py
│   │       ├── amg.py
│   │       ├── autosize.py
│   │       ├── build.py
│   │       ├── model.py
│   │       ├── modules/
│   │       │   ├── __init__.py
│   │       │   ├── decoders.py
│   │       │   ├── encoders.py
│   │       │   ├── mask_generator.py
│   │       │   ├── prompt_predictor.py
│   │       │   ├── sam.py
│   │       │   └── transformer.py
│   │       └── predict.py
│   ├── yolo/
│   │   ├── __init__.py
│   │   ├── cfg/
│   │   │   ├── __init__.py
│   │   │   └── default.yaml
│   │   ├── data/
│   │   │   ├── __init__.py
│   │   │   ├── annotator.py
│   │   │   ├── augment.py
│   │   │   ├── base.py
│   │   │   ├── build.py
│   │   │   ├── converter.py
│   │   │   ├── dataloaders/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── stream_loaders.py
│   │   │   │   ├── v5augmentations.py
│   │   │   │   └── v5loader.py
│   │   │   ├── dataset.py
│   │   │   ├── dataset_wrappers.py
│   │   │   ├── scripts/
│   │   │   │   ├── download_weights.sh
│   │   │   │   ├── get_coco.sh
│   │   │   │   ├── get_coco128.sh
│   │   │   │   └── get_imagenet.sh
│   │   │   └── utils.py
│   │   ├── engine/
│   │   │   ├── __init__.py
│   │   │   ├── exporter.py
│   │   │   ├── model.py
│   │   │   ├── predictor.py
│   │   │   ├── predictor_multi.py
│   │   │   ├── results.py
│   │   │   ├── trainer.py
│   │   │   └── validator.py
│   │   ├── utils/
│   │   │   ├── .ipynb_checkpoints/
│   │   │   │   └── metrics-checkpoint.py
│   │   │   ├── __init__.py
│   │   │   ├── autobatch.py
│   │   │   ├── benchmarks.py
│   │   │   ├── callbacks/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base.py
│   │   │   │   ├── clearml.py
│   │   │   │   ├── comet.py
│   │   │   │   ├── hub.py
│   │   │   │   ├── mlflow.py
│   │   │   │   ├── neptune.py
│   │   │   │   ├── raytune.py
│   │   │   │   ├── tensorboard.py
│   │   │   │   └── wb.py
│   │   │   ├── checks.py
│   │   │   ├── dist.py
│   │   │   ├── downloads.py
│   │   │   ├── errors.py
│   │   │   ├── files.py
│   │   │   ├── instance.py
│   │   │   ├── loss.py
│   │   │   ├── metrics.py
│   │   │   ├── ops.py
│   │   │   ├── plotting.py
│   │   │   ├── tal.py
│   │   │   ├── torch_utils.py
│   │   │   └── tuner.py
│   │   └── v8/
│   │       ├── DecSeg/
│   │       │   ├── .ipynb_checkpoints/
│   │       │   │   └── val-checkpoint.py
│   │       │   ├── __init__.py
│   │       │   ├── predict.py
│   │       │   ├── train.py
│   │       │   └── val.py
│   │       ├── __init__.py
│   │       ├── classify/
│   │       │   ├── __init__.py
│   │       │   ├── predict.py
│   │       │   ├── train.py
│   │       │   └── val.py
│   │       ├── detect/
│   │       │   ├── __init__.py
│   │       │   ├── predict.py
│   │       │   ├── train.py
│   │       │   └── val.py
│   │       ├── pose/
│   │       │   ├── __init__.py
│   │       │   ├── predict.py
│   │       │   ├── train.py
│   │       │   └── val.py
│   │       └── segment/
│   │           ├── __init__.py
│   │           ├── predict.py
│   │           ├── train.py
│   │           └── val.py
│   └── yolov8n.pt
└── ultralytics.egg-info/
    ├── PKG-INFO
    ├── SOURCES.txt
    ├── dependency_links.txt
    ├── entry_points.txt
    ├── requires.txt
    └── top_level.txt

================================================
FILE CONTENTS
================================================

================================================
FILE: CITATION.cff
================================================
cff-version: 1.2.0
preferred-citation:
  type: software
  message: If you use this software, please cite it as below.
  authors:
  - family-names: Jocher
    given-names: Glenn
    orcid: "https://orcid.org/0000-0001-5950-6979"
  - family-names: Chaurasia
    given-names: Ayush
    orcid: "https://orcid.org/0000-0002-7603-6750"
  - family-names: Qiu
    given-names: Jing
    orcid: "https://orcid.org/0000-0003-3783-7069"
  title: "YOLO by Ultralytics"
  version: 8.0.0
  # doi: 10.5281/zenodo.3908559  # TODO
  date-released: 2023-1-10
  license: AGPL-3.0
  url: "https://github.com/ultralytics/ultralytics"


================================================
FILE: CONTRIBUTING.md
================================================
## Contributing to YOLOv8 🚀

We love your input! We want to make contributing to YOLOv8 as easy and transparent as possible, whether it's:

- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing a new feature
- Becoming a maintainer

YOLOv8 works so well due to our combined community effort, and for every small improvement you contribute you will be
helping push the frontiers of what's possible in AI 😃!

## Submitting a Pull Request (PR) 🛠️

Submitting a PR is easy! This example shows how to submit a PR for updating `requirements.txt` in 4 steps:

### 1. Select File to Update

Select `requirements.txt` to update by clicking on it in GitHub.

<p align="center"><img width="800" alt="PR_step1" src="https://user-images.githubusercontent.com/26833433/122260847-08be2600-ced4-11eb-828b-8287ace4136c.png"></p>

### 2. Click 'Edit this file'

Button is in top-right corner.

<p align="center"><img width="800" alt="PR_step2" src="https://user-images.githubusercontent.com/26833433/122260844-06f46280-ced4-11eb-9eec-b8a24be519ca.png"></p>

### 3. Make Changes

Change `matplotlib` version from `3.2.2` to `3.3`.

<p align="center"><img width="800" alt="PR_step3" src="https://user-images.githubusercontent.com/26833433/122260853-0a87e980-ced4-11eb-9fd2-3650fb6e0842.png"></p>

### 4. Preview Changes and Submit PR

Click on the **Preview changes** tab to verify your updates. At the bottom of the screen select 'Create a **new branch**
for this commit', assign your branch a descriptive name such as `fix/matplotlib_version` and click the green **Propose
changes** button. All done, your PR is now submitted to YOLOv8 for review and approval 😃!

<p align="center"><img width="800" alt="PR_step4" src="https://user-images.githubusercontent.com/26833433/122260856-0b208000-ced4-11eb-8e8e-77b6151cbcc3.png"></p>

### PR recommendations

To allow your work to be integrated as seamlessly as possible, we advise you to:

- ✅ Verify your PR is **up-to-date** with `ultralytics/ultralytics` `main` branch. If your PR is behind you can update
  your code by clicking the 'Update branch' button or by running `git pull` and `git merge main` locally.

<p align="center"><img width="751" alt="Screenshot 2022-08-29 at 22 47 15" src="https://user-images.githubusercontent.com/26833433/187295893-50ed9f44-b2c9-4138-a614-de69bd1753d7.png"></p>

- ✅ Verify all YOLOv8 Continuous Integration (CI) **checks are passing**.

<p align="center"><img width="751" alt="Screenshot 2022-08-29 at 22 47 03" src="https://user-images.githubusercontent.com/26833433/187296922-545c5498-f64a-4d8c-8300-5fa764360da6.png"></p>

- ✅ Reduce changes to the absolute **minimum** required for your bug fix or feature addition. _"It is not daily increase
  but daily decrease, hack away the unessential. The closer to the source, the less wastage there is."_  — Bruce Lee

### Docstrings

Not all functions or classes require docstrings but when they do, we
follow [google-style docstrings format](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings).
Here is an example:

```python
"""
   What the function does. Performs NMS on given detection predictions.

    Args:
        arg1: The description of the 1st argument
        arg2: The description of the 2nd argument

    Returns:
        What the function returns. Empty if nothing is returned.

    Raises:
        Exception Class: When and why this exception can be raised by the function.
"""
```

## Submitting a Bug Report 🐛

If you spot a problem with YOLOv8 please submit a Bug Report!

For us to start investigating a possible problem we need to be able to reproduce it ourselves first. We've created a few
short guidelines below to help users provide what we need in order to get started.

When asking a question, people will be better able to provide help if you provide **code** that they can easily
understand and use to **reproduce** the problem. This is referred to by community members as creating
a [minimum reproducible example](https://docs.ultralytics.com/help/minimum_reproducible_example/). Your code that reproduces
the problem should be:

- ✅ **Minimal** – Use as little code as possible that still produces the same problem
- ✅ **Complete** – Provide **all** parts someone else needs to reproduce your problem in the question itself
- ✅ **Reproducible** – Test the code you're about to provide to make sure it reproduces the problem

In addition to the above requirements, for [Ultralytics](https://ultralytics.com/) to provide assistance your code
should be:

- ✅ **Current** – Verify that your code is up-to-date with current
  GitHub [main](https://github.com/ultralytics/ultralytics/tree/main) branch, and if necessary `git pull` or `git clone`
  a new copy to ensure your problem has not already been resolved by previous commits.
- ✅ **Unmodified** – Your problem must be reproducible without any modifications to the codebase in this
  repository. [Ultralytics](https://ultralytics.com/) does not provide support for custom code ⚠️.

If you believe your problem meets all of the above criteria, please close this issue and raise a new one using the 🐛
**Bug Report** [template](https://github.com/ultralytics/ultralytics/issues/new/choose) and providing
a [minimum reproducible example](https://docs.ultralytics.com/help/minimum_reproducible_example/) to help us better
understand and diagnose your problem.

## License

By contributing, you agree that your contributions will be licensed under
the [AGPL-3.0 license](https://choosealicense.com/licenses/agpl-3.0/)


================================================
FILE: LICENSE
================================================
                    GNU AFFERO GENERAL PUBLIC LICENSE
                       Version 3, 19 November 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.

  A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate.  Many developers of free software are heartened and
encouraged by the resulting cooperation.  However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.

  The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community.  It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server.  Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.

  An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals.  This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU Affero General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Remote Network Interaction; Use with the GNU General Public License.

  Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software.  This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time.  Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source.  For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code.  There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<https://www.gnu.org/licenses/>.


================================================
FILE: MANIFEST.in
================================================
include *.md
include requirements.txt
include LICENSE
include setup.py
include ultralytics/assets/bus.jpg
include ultralytics/assets/zidane.jpg
recursive-include ultralytics *.yaml
recursive-exclude __pycache__ *


================================================
FILE: README.md
================================================
<div align="left">   


## You Only Look at Once for Real-time and Generic Multi-Task
This repository(Yolov8 multi-task) is the official PyTorch implementation of the paper "You Only Look at Once for Real-time and Generic Multi-Task".  

> [**You Only Look at Once for Real-time and Generic Multi-Task**](https://ieeexplore.ieee.org/document/10509552)
>
> by [Jiayuan Wang](https://scholar.google.ca/citations?user=1z6x5_UAAAAJ&hl=zh-CN&oi=ao), [Q. M. Jonathan Wu](https://scholar.google.com/citations?user=BJSAsE8AAAAJ&hl=zh-CN)<sup> :email:</sup> and [Ning Zhang](https://scholar.google.ca/citations?hl=zh-CN&user=ZcYihtoAAAAJ)
>
>  (<sup>:email:</sup>) corresponding author.
>
> *[IEEE Transactions on Vehicular Technology](https://ieeexplore.ieee.org/document/10509552)*

---

### The Illustration of A-YOLOM

![YOLOv8-multi-task](pictures/constructure.jpg)

### Contributions

* We have developed a lightweight model capable of integrating three tasks into a single unified model. This is particularly beneficial for multi-task that demand real-time processing.
* We have designed a novel Adaptive Concatenate Module specifically for the neck region of segmentation architectures. This module can adaptively concatenate features without manual design, further enhancing the model's generality.
* We designed a lightweight, simple, and generic segmentation head. We have a unified loss function for the same type of task head, meaning we don't need to custom design for specific tasks. It is only built by a series of convolutional layers.
* Extensive experiments are conducted based on publicly accessible autonomous driving datasets, which demonstrate that our model can outperform existing works, particularly in terms of inference time and visualization. Moreover, we further conducted experiments using real road datasets, which also demonstrate that our model significantly outperformed the state-of-the-art approaches.

### Results

#### Parameters and speed
| Model          | Parameters  | FPS (bs=1) | FPS (bs=32) |
|----------------|-------------|------------|-------------|
| YOLOP          | 7.9M        | 26.0       | 134.8       |
| HybridNet      | 12.83M      | 11.7       | 26.9        |
| YOLOv8n(det)   | 3.16M       | 102        | 802.9       |
| YOLOv8n(seg)   | 3.26M       | 82.55      | 610.49      |
| A-YOLOM(n)     | 4.43M       | 39.9       | 172.2       |
| A-YOLOM(s)     | 13.61M      | 39.7       | 96.2        |


#### Traffic Object Detection Result

| Model       | Recall (%) | mAP50 (%) |
|-------------|------------|------------|
| MultiNet    | 81.3       | 60.2       |
| DLT-Net     | **89.4**   | 68.4       |
| Faster R-CNN| 81.2       | 64.9       |
| YOLOv5s     | 86.8       | 77.2       |
| YOLOv8n(det)| 82.2       | 75.1       |
| YOLOP       | 88.6       | 76.5       |
| A-YOLOM(n)  | 85.3       | 78.0       |
| A-YOLOM(s)  | 86.9       | **81.1**   |

#### Drivable Area Segmentation Result

| Model          | mIoU (%) |
|----------------|----------|
| MultiNet       | 71.6     |
| DLT-Net        | 72.1     |
| PSPNet         | 89.6     |
| YOLOv8n(seg)   | 78.1     |
| YOLOP          | **91.6** |
| A-YOLOM(n)     | 90.5     |
| A-YOLOM(s)     | 91.0     |


#### Lane Detection Result:

| Model          | Accuracy (%) | IoU (%) |
|----------------|--------------|---------|
| Enet           | N/A          | 14.64   |
| SCNN           | N/A          | 15.84   |
| ENet-SAD       | N/A          | 16.02   |
| YOLOv8n(seg)   | 80.5         | 22.9    |
| YOLOP          | 84.8         | 26.5    |
| A-YOLOM(n)     | 81.3         | 28.2    |
| A-YOLOM(s)     | **84.9**     | **28.8** |


#### Ablation Studies 1: Adaptive concatenation module:

| Training method | Recall (%) | mAP50 (%) | mIoU (%) | Accuracy (%) | IoU (%) |
|-----------------|------------|-----------|----------|--------------|---------|
| YOLOM(n)        | 85.2       | 77.7      | 90.6     | 80.8         | 26.7    |
| A-YOLOM(n)      | 85.3       | 78        | 90.5     | 81.3         | 28.2    |
| YOLOM(s)        | 86.9       | 81.1      | 90.9     | 83.9         | 28.2    |
| A-YOLOM(s)      | 86.9       | 81.1      | 91       | 84.9         | 28.8    |


#### Ablation Studies 2: Results of different Multi-task model and segmentation structure:

| Model          | Parameters | mIoU (%) | Accuracy (%) | IoU (%) |
|----------------|------------|----------|--------------|---------|
| YOLOv8(segda)  | 1004275    | 78.1     | -            | -       |
| YOLOv8(segll)  | 1004275    | -        | 80.5         | 22.9    |
| YOLOv8(multi)  | 2008550    | 84.2     | 81.7         | 24.3    |
| YOLOM(n)       | 15880      | 90.6     | 80.8         | 26.7    |

YOLOv8(multi) and YOLOM(n) only display two segmentation head parameters in total. They indeed have three heads, we ignore the detection head parameters because this is an ablation study for segmentation structure.

  
**Notes**: 

- The works we has use for reference including `Multinet`  ([paper](https://arxiv.org/pdf/1612.07695.pdf?utm_campaign=affiliate-ir-Optimise%20media%28%20South%20East%20Asia%29%20Pte.%20ltd._156_-99_national_R_all_ACQ_cpa_en&utm_content=&utm_source=%20388939),[code](https://github.com/MarvinTeichmann/MultiNet)),`DLT-Net`   ([paper](https://ieeexplore.ieee.org/abstract/document/8937825)),`Faster R-CNN`  ([paper](https://proceedings.neurips.cc/paper/2015/file/14bfa6bb14875e45bba028a21ed38046-Paper.pdf),[code](https://github.com/ShaoqingRen/faster_rcnn)),`YOLOv5s`([code](https://github.com/ultralytics/yolov5))  ,`PSPNet`([paper](https://openaccess.thecvf.com/content_cvpr_2017/papers/Zhao_Pyramid_Scene_Parsing_CVPR_2017_paper.pdf),[code](https://github.com/hszhao/PSPNet)) ,`ENet`([paper](https://arxiv.org/pdf/1606.02147.pdf),[code](https://github.com/osmr/imgclsmob))    `SCNN`([paper](https://www.aaai.org/ocs/index.php/AAAI/AAAI18/paper/download/16802/16322),[code](https://github.com/XingangPan/SCNN))    `SAD-ENet`([paper](https://openaccess.thecvf.com/content_ICCV_2019/papers/Hou_Learning_Lightweight_Lane_Detection_CNNs_by_Self_Attention_Distillation_ICCV_2019_paper.pdf),[code](https://github.com/cardwing/Codes-for-Lane-Detection)), `YOLOP`([paper](https://link.springer.com/article/10.1007/s11633-022-1339-y),[code](https://github.com/hustvl/YOLOP)), `HybridNets`([paper](https://arxiv.org/abs/2203.09035),[code](https://github.com/datvuthanh/HybridNets)), `YOLOv8`([code](https://github.com/ultralytics/ultralytics)). Thanks for their wonderful works.

### Recommendation:
- If you seek higher performance and can tolerate reduced speed and increased model complexity, we recommend our latest model, [RMT-PPAD](https://github.com/JiayuanWang-JW/RMT-PPAD). It is built on RT-DETR to implement multi-task learning and still achieves real-time performance on an RTX 4090 GPU.
---

### Visualization

#### Real Road

![Real Rold](pictures/real-road.png)

---


### Requirement

This codebase has been developed with [**Python==3.7.16**](https://www.python.org/) with [**PyTorch==1.13.1**](https://pytorch.org/get-started/locally/).

You can use a 1080Ti GPU with 16 batch sizes. That will be fine. Only need more time to train. We recommend using a 4090 or more powerful GPU, which will be fast. 

We strongly recommend you create a pure environment and follow our instructions to build yours. Otherwise, you may encounter some issues because the YOLOv8 has many mechanisms to detect your environment package automatically. Then it will change some variable values to further affect the code running. 

```setup
cd YOLOv8-multi-task
pip install -e .
```

### Data preparation and Pre-trained model

#### Download

- Download the images from [images](https://bdd-data.berkeley.edu/).

- Pre-trained model: [A-YOLOM](https://uwin365-my.sharepoint.com/:f:/g/personal/wang621_uwindsor_ca/EoUsIoFgcEhBgnO4kTjDQG4BUUSHMFXG4ami9qjvTUTofA?e=0xuAJG) # which include two version, scale "n" and "s".
  
- Download the annotations of detection from [detection-object](https://uwin365-my.sharepoint.com/:u:/g/personal/wang621_uwindsor_ca/EeHOFLpSbp1EpN3FA1T97xABbjVEoeYefI8Kx0uKieR6xw?e=tnqHHx). 
- Download the annotations of drivable area segmentation from [seg-drivable-10](https://uwin365-my.sharepoint.com/:u:/g/personal/wang621_uwindsor_ca/EYu4C5h9qjZNg2HkNkw9nT0BImRO9HnTl2rozFFhD7zj-Q?e=gFLhpv). 
- Download the annotations of lane line segmentation from [seg-lane-11](https://uwin365-my.sharepoint.com/:u:/g/personal/wang621_uwindsor_ca/EZowlpA7sKZAuXZpphDvTBABIvAOZ6957aTYplBYGFLpeQ?e=4DNH5W). 

We recommend the dataset directory structure to be the following:

```
# The id represent the correspondence relation
├─dataset root
│ ├─images
│ │ ├─train2017
│ │ ├─val2017
│ ├─detection-object
│ │ ├─labels
│ │ │ ├─train2017
│ │ │ ├─val2017
│ ├─seg-drivable-10
│ │ ├─labels
│ │ │ ├─train2017
│ │ │ ├─val2017
│ ├─seg-lane-11
│ │ ├─labels
│ │ │ ├─train2017
│ │ │ ├─val2017
```

Update the your dataset path in the `./ultralytics/datasets/bdd-multi.yaml`.

### Training

You can set the training configuration in the `./ultralytics/yolo/cfg/default.yaml`.


```
python train.py
```
You can change the setting in train.py

```python
# setting

sys.path.insert(0, "/home/jiayuan/ultralytics-main/ultralytics")
# You should change the path to your local path to "ultralytics" file
model = YOLO('/home/jiayuan/ultralytics-main/ultralytics/models/v8/yolov8-bdd-v4-one-dropout-individual.yaml', task='multi')
# You need to change the model path for yours.
# The model files saved under "./ultralytics/models/v8" 
model.train(data='/home/jiayuan/ultralytics-main/ultralytics/datasets/bdd-multi-toy.yaml', batch=4, epochs=300, imgsz=(640,640), device=[4], name='v4_640', val=True, task='multi',classes=[2,3,4,9,10,11],combine_class=[2,3,4,9],single_cls=True)
```
- data: Please change the "data" path to yours. You can find it under "./ultralytics/datasets"

- device: If you have multi-GPUs, please list your GPU numbers, such as [0,1,2,3,4,5,6,7,8]

- name: Your project name, the result and trained model will save under "./ultralytics/runs/multi/Your Project Name"

- task: If you want to use the Multi-task model, please keep "multi" here

- classes: You can change this to control which classfication in training, 10 and 11 means drivable area and lane line segmentation. You can create or change dataset map under "./ultralytics/datasets/bdd-multi.yaml"

- combine_class: means the model will combine "classes" into one class, such as our project combining the "car", "bus", "truck", and "train" into "vehicle".

- single_cls: This will combine whole detection classes into one class, for example, you have 7 classes in your dataset, and when you use "single_cls", it will automatically combine them into one class. When you set single_cls=False or delete the single_cls from model.train(). Please follow the below Note to change the "tnc" in both dataset.yaml and model.yaml, "nc_list" in dataset.yaml, the output of the detection head as well. 




### Evaluation

You can set the evaluation configuration in the `./ultralytics/yolo/cfg/default.yaml`


```
python val.py
```
You can change the setting in val.py

```python
# setting

sys.path.insert(0, "/home/jiayuan/yolom/ultralytics")
# The same with train, you should change the path to yours.

model = YOLO('/home/jiayuan/ultralytics-main/ultralytics/runs/best.pt')
# Please change this path to your well-trained model. You can use our provide the pre-train model or your model under "./ultralytics/runs/multi/Your Project Name/weight/best.pt"
metrics = model.val(data='/home/jiayuan/ultralytics-main/ultralytics/datasets/bdd-multi.yaml',device=[3],task='multi',name='val',iou=0.6,conf=0.001, imgsz=(640,640),classes=[2,3,4,9,10,11],combine_class=[2,3,4,9],single_cls=True)
```
- data: Please change the "data" path to yours. You can find it under "./ultralytics/datasets"
- device: If you have multi-GPUs, please list your GPU numbers, such as [0,1,2,3,4,5,6,7,8]. We do not recommend you use multi-GPU in val because usually, one GPU is enough.
- speed: If you want to calculate the FPS, you should set "speed=True". This FPS calculation method reference from `HybridNets`([code](https://github.com/datvuthanh/HybridNets))
- single_cls: should keep the same bool value with training. 

### Prediction

```
python predict.py
```
You can change the setting in predict.py

```python
# setting 

sys.path.insert(0, "/home/jiayuan/ultralytics-main/ultralytics")
number = 3 #input how many tasks in your work, if you have 1 detection and 3 segmentation tasks, here should be 4.
model = YOLO('/home/jiayuan/ultralytics-main/ultralytics/runs/best.pt')  
model.predict(source='/data/jiayuan/dash_camara_dataset/daytime', imgsz=(384,672), device=[3],name='v4_daytime', save=True, conf=0.25, iou=0.45, show_labels=False)
# The predict results will save under "runs" folder
```

PS: If you want to use our provided pre-trained model, please make sure that your input images are (720,1280) size and keep "imgsz=(384,672)" to achieve the best performance, you can change the "imgsz" value, but the results maybe different because he is different from the training size.

- source: Your input or want to predict images folder.
- show_labels=False: close the display of the labels. Please keep in mind, when you use a pre-trained model with "single cell=True", labels will default to display the first class name instead.
- boxes=False: close the bos for segmentation tasks.





### Note
- This code is easy to extend the tasks to any multi-segmentation and detection tasks, only need to modify the model yaml and dataset yaml file information and create your dataset follows our labels format, please keep in mind, you should keep "det" in your detection tasks name and "seg" in your segmentation tasks name. Then the code will be working. No need to modify the basic code, We have done the necessary work in the basic code.

- Please keep in mind, when you change the detection task number of classes, please change the "tnc" in dataset.yaml and modle.yaml. "tcn" means the total number of classes, including detection and segmentation. Such as you have 7 classes for detection, 1 segmentation and another 1 segmentation. "tnc" should be set to 9.

  - "nc_list" also needs to update, it should match your "labels_list" order. Such as detection-object, seg-drivable, seg-lane in your "labels_list". Then "nc_list" should be [7,1,1]. That means you have 7 classes in detection-object, 1 class in drivable segmentation, and 1 class in lane segmentation. 

  - You also need to change the detection head output numbers, that in model.yaml, such as "  - [[15, 18, 21], 1, Detect, [int number for detection class]]  # 36 Detect(P3, P4, P5)", please change "int number for detection class" to your number of classes in your detection tasks, follow above examples, here should be 7.

- If you want to change some basic code to implement your idea. Please search the "###### Jiayuan" or "######Jiayuan", We have changed these parts based on `YOLOv8`([code](https://github.com/ultralytics/ultralytics)) to implement multi-task in a single model.



## Citation

If you find our paper and code useful for your research, please consider giving a star :star:   and citation :pencil: :

```BibTeX
@ARTICLE{wang2024you,
  author={Wang, Jiayuan and Wu, Q. M. Jonathan and Zhang, Ning},
  journal={IEEE Transactions on Vehicular Technology}, 
  title={You Only Look at Once for Real-Time and Generic Multi-Task}, 
  year={2024},
  pages={1-13},
  keywords={Multi-task learning;panoptic driving perception;object detection;drivable area segmentation;lane line segmentation},
  doi={10.1109/TVT.2024.3394350}}
```


================================================
FILE: bin/activate
================================================
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly


if [ "${BASH_SOURCE-}" = "$0" ]; then
    echo "You must source this script: \$ source $0" >&2
    exit 33
fi

deactivate () {
    unset -f pydoc >/dev/null 2>&1 || true

    # reset old environment variables
    # ! [ -z ${VAR+_} ] returns true if VAR is declared at all
    if ! [ -z "${_OLD_VIRTUAL_PATH:+_}" ] ; then
        PATH="$_OLD_VIRTUAL_PATH"
        export PATH
        unset _OLD_VIRTUAL_PATH
    fi
    if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then
        PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
        export PYTHONHOME
        unset _OLD_VIRTUAL_PYTHONHOME
    fi

    # The hash command must be called to get it to forget past
    # commands. Without forgetting past commands the $PATH changes
    # we made may not be respected
    hash -r 2>/dev/null

    if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then
        PS1="$_OLD_VIRTUAL_PS1"
        export PS1
        unset _OLD_VIRTUAL_PS1
    fi

    unset VIRTUAL_ENV
    if [ ! "${1-}" = "nondestructive" ] ; then
    # Self destruct!
        unset -f deactivate
    fi
}

# unset irrelevant variables
deactivate nondestructive

VIRTUAL_ENV='/home/jiayuan/ultralytics-main'
if ([ "$OSTYPE" = "cygwin" ] || [ "$OSTYPE" = "msys" ]) && $(command -v cygpath &> /dev/null) ; then
    VIRTUAL_ENV=$(cygpath -u "$VIRTUAL_ENV")
fi
export VIRTUAL_ENV

_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH

# unset PYTHONHOME if set
if ! [ -z "${PYTHONHOME+_}" ] ; then
    _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
    unset PYTHONHOME
fi

if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then
    _OLD_VIRTUAL_PS1="${PS1-}"
    if [ "x" != x ] ; then
        PS1="() ${PS1-}"
    else
        PS1="(`basename \"$VIRTUAL_ENV\"`) ${PS1-}"
    fi
    export PS1
fi

# Make sure to unalias pydoc if it's already there
alias pydoc 2>/dev/null >/dev/null && unalias pydoc || true

pydoc () {
    python -m pydoc "$@"
}

# The hash command must be called to get it to forget past
# commands. Without forgetting past commands the $PATH changes
# we made may not be respected
hash -r 2>/dev/null


================================================
FILE: bin/activate.csh
================================================
# This file must be used with "source bin/activate.csh" *from csh*.
# You cannot run it directly.
# Created by Davide Di Blasi <davidedb@gmail.com>.

set newline='\
'

alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH:q" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT:q" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc'

# Unset irrelevant variables.
deactivate nondestructive

setenv VIRTUAL_ENV '/home/jiayuan/ultralytics-main'

set _OLD_VIRTUAL_PATH="$PATH:q"
setenv PATH "$VIRTUAL_ENV:q/bin:$PATH:q"



if ('' != "") then
    set env_name = '() '
else
    set env_name = '('"$VIRTUAL_ENV:t:q"') '
endif

if ( $?VIRTUAL_ENV_DISABLE_PROMPT ) then
    if ( $VIRTUAL_ENV_DISABLE_PROMPT == "" ) then
        set do_prompt = "1"
    else
        set do_prompt = "0"
    endif
else
    set do_prompt = "1"
endif

if ( $do_prompt == "1" ) then
    # Could be in a non-interactive environment,
    # in which case, $prompt is undefined and we wouldn't
    # care about the prompt anyway.
    if ( $?prompt ) then
        set _OLD_VIRTUAL_PROMPT="$prompt:q"
        if ( "$prompt:q" =~ *"$newline:q"* ) then
            :
        else
            set prompt = "$env_name:q$prompt:q"
        endif
    endif
endif

unset env_name
unset do_prompt

alias pydoc python -m pydoc

rehash


================================================
FILE: bin/activate.fish
================================================
# This file must be used using `source bin/activate.fish` *within a running fish ( http://fishshell.com ) session*.
# Do not run it directly.

function _bashify_path -d "Converts a fish path to something bash can recognize"
    set fishy_path $argv
    set bashy_path $fishy_path[1]
    for path_part in $fishy_path[2..-1]
        set bashy_path "$bashy_path:$path_part"
    end
    echo $bashy_path
end

function _fishify_path -d "Converts a bash path to something fish can recognize"
    echo $argv | tr ':' '\n'
end

function deactivate -d 'Exit virtualenv mode and return to the normal environment.'
    # reset old environment variables
    if test -n "$_OLD_VIRTUAL_PATH"
        # https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling
        if test (echo $FISH_VERSION | head -c 1) -lt 3
            set -gx PATH (_fishify_path "$_OLD_VIRTUAL_PATH")
        else
            set -gx PATH $_OLD_VIRTUAL_PATH
        end
        set -e _OLD_VIRTUAL_PATH
    end

    if test -n "$_OLD_VIRTUAL_PYTHONHOME"
        set -gx PYTHONHOME "$_OLD_VIRTUAL_PYTHONHOME"
        set -e _OLD_VIRTUAL_PYTHONHOME
    end

    if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
       and functions -q _old_fish_prompt
        # Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`.
        set -l fish_function_path

        # Erase virtualenv's `fish_prompt` and restore the original.
        functions -e fish_prompt
        functions -c _old_fish_prompt fish_prompt
        functions -e _old_fish_prompt
        set -e _OLD_FISH_PROMPT_OVERRIDE
    end

    set -e VIRTUAL_ENV

    if test "$argv[1]" != 'nondestructive'
        # Self-destruct!
        functions -e pydoc
        functions -e deactivate
        functions -e _bashify_path
        functions -e _fishify_path
    end
end

# Unset irrelevant variables.
deactivate nondestructive

set -gx VIRTUAL_ENV '/home/jiayuan/ultralytics-main'

# https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling
if test (echo $FISH_VERSION | head -c 1) -lt 3
   set -gx _OLD_VIRTUAL_PATH (_bashify_path $PATH)
else
    set -gx _OLD_VIRTUAL_PATH $PATH
end
set -gx PATH "$VIRTUAL_ENV"'/bin' $PATH

# Unset `$PYTHONHOME` if set.
if set -q PYTHONHOME
    set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
    set -e PYTHONHOME
end

function pydoc
    python -m pydoc $argv
end

if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
    # Copy the current `fish_prompt` function as `_old_fish_prompt`.
    functions -c fish_prompt _old_fish_prompt

    function fish_prompt
        # Run the user's prompt first; it might depend on (pipe)status.
        set -l prompt (_old_fish_prompt)

        # Prompt override provided?
        # If not, just prepend the environment name.
        if test -n ''
            printf '(%s) ' ''
        else
            printf '(%s) ' (basename "$VIRTUAL_ENV")
        end

        string join -- \n $prompt # handle multi-line prompts
    end

    set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
end


================================================
FILE: bin/activate.nu
================================================
# This command prepares the required environment variables
def-env activate-virtualenv [] {
    def is-string [x] {
        ($x | describe) == 'string'
    }

    def has-env [name: string] {
        $name in (env).name
    }

    let is_windows = ((sys).host.name | str downcase) == 'windows'
    let virtual_env = '/home/jiayuan/ultralytics-main'
    let bin = 'bin'
    let path_sep = ':'
    let path_name = if $is_windows {
        if (has-env 'Path') {
            'Path'
        } else {
            'PATH'
        }
    } else {
        'PATH'
    }

    let old_path = (
        if $is_windows {
            if (has-env 'Path') {
                $env.Path
            } else {
                $env.PATH
            }
        } else {
            $env.PATH
        } | if (is-string $in) {
            # if Path/PATH is a string, make it a list
            $in | split row $path_sep | path expand
        } else {
            $in
        }
    )

    let venv_path = ([$virtual_env $bin] | path join)
    let new_path = ($old_path | prepend $venv_path | str collect $path_sep)

    # Creating the new prompt for the session
    let virtual_prompt = if ('' == '') {
        $'(char lparen)($virtual_env | path basename)(char rparen) '
    } else {
        '() '
    }

    # Back up the old prompt builder
    let old_prompt_command = if (has-env 'VIRTUAL_ENV') && (has-env '_OLD_PROMPT_COMMAND') {
        $env._OLD_PROMPT_COMMAND
    } else {
        if (has-env 'PROMPT_COMMAND') {
            $env.PROMPT_COMMAND
        } else {
            ''
        }
    }

    # If there is no default prompt, then only the env is printed in the prompt
    let new_prompt = if (has-env 'PROMPT_COMMAND') {
        if ($old_prompt_command | describe) == 'block' {
            { $'($virtual_prompt)(do $old_prompt_command)' }
        } else {
            { $'($virtual_prompt)($old_prompt_command)' }
        }
    } else {
        { $'($virtual_prompt)' }
    }

    # Environment variables that will be batched loaded to the virtual env
    let new_env = {
        $path_name          : $new_path
        VIRTUAL_ENV         : $virtual_env
        _OLD_VIRTUAL_PATH   : ($old_path | str collect $path_sep)
        _OLD_PROMPT_COMMAND : $old_prompt_command
        PROMPT_COMMAND      : $new_prompt
        VIRTUAL_PROMPT      : $virtual_prompt
    }

    # Activate the environment variables
    load-env $new_env
}

# Activate the virtualenv
activate-virtualenv

alias pydoc = python -m pydoc
alias deactivate = source '/home/jiayuan/ultralytics-main/bin/deactivate.nu'


================================================
FILE: bin/activate.ps1
================================================
$script:THIS_PATH = $myinvocation.mycommand.path
$script:BASE_DIR = Split-Path (Resolve-Path "$THIS_PATH/..") -Parent

function global:deactivate([switch] $NonDestructive) {
    if (Test-Path variable:_OLD_VIRTUAL_PATH) {
        $env:PATH = $variable:_OLD_VIRTUAL_PATH
        Remove-Variable "_OLD_VIRTUAL_PATH" -Scope global
    }

    if (Test-Path function:_old_virtual_prompt) {
        $function:prompt = $function:_old_virtual_prompt
        Remove-Item function:\_old_virtual_prompt
    }

    if ($env:VIRTUAL_ENV) {
        Remove-Item env:VIRTUAL_ENV -ErrorAction SilentlyContinue
    }

    if (!$NonDestructive) {
        # Self destruct!
        Remove-Item function:deactivate
        Remove-Item function:pydoc
    }
}

function global:pydoc {
    python -m pydoc $args
}

# unset irrelevant variables
deactivate -nondestructive

$VIRTUAL_ENV = $BASE_DIR
$env:VIRTUAL_ENV = $VIRTUAL_ENV

New-Variable -Scope global -Name _OLD_VIRTUAL_PATH -Value $env:PATH

$env:PATH = "$env:VIRTUAL_ENV/bin:" + $env:PATH
if (!$env:VIRTUAL_ENV_DISABLE_PROMPT) {
    function global:_old_virtual_prompt {
        ""
    }
    $function:_old_virtual_prompt = $function:prompt

    if ("" -ne "") {
        function global:prompt {
            # Add the custom prefix to the existing prompt
            $previous_prompt_value = & $function:_old_virtual_prompt
            ("() " + $previous_prompt_value)
        }
    }
    else {
        function global:prompt {
            # Add a prefix to the current prompt, but don't discard it.
            $previous_prompt_value = & $function:_old_virtual_prompt
            $new_prompt_value = "($( Split-Path $env:VIRTUAL_ENV -Leaf )) "
            ($new_prompt_value + $previous_prompt_value)
        }
    }
}


================================================
FILE: bin/activate_this.py
================================================
"""Activate virtualenv for current interpreter:

Use exec(open(this_file).read(), {'__file__': this_file}).

This can be used when you must use an existing Python interpreter, not the virtualenv bin/python.
"""
import os
import site
import sys

try:
    abs_file = os.path.abspath(__file__)
except NameError:
    raise AssertionError("You must use exec(open(this_file).read(), {'__file__': this_file}))")

bin_dir = os.path.dirname(abs_file)
base = bin_dir[: -len("bin") - 1]  # strip away the bin part from the __file__, plus the path separator

# prepend bin to PATH (this file is inside the bin directory)
os.environ["PATH"] = os.pathsep.join([bin_dir] + os.environ.get("PATH", "").split(os.pathsep))
os.environ["VIRTUAL_ENV"] = base  # virtual env is right above bin directory

# add the virtual environments libraries to the host python import mechanism
prev_length = len(sys.path)
for lib in "../lib/python3.7/site-packages".split(os.pathsep):
    path = os.path.realpath(os.path.join(bin_dir, lib))
    site.addsitedir(path.decode("utf-8") if "" else path)
sys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]

sys.real_prefix = sys.prefix
sys.prefix = base


================================================
FILE: bin/deactivate.nu
================================================
def-env deactivate-virtualenv [] {
    def has-env [name: string] {
        $name in (env).name
    }

    let is_windows = ((sys).host.name | str downcase) == 'windows'

    let path_name = if $is_windows {
        if (has-env 'Path') {
            'Path'
        } else {
            'PATH'
        }
    } else {
        'PATH'
    }

    load-env { $path_name : $env._OLD_VIRTUAL_PATH }

    let-env PROMPT_COMMAND = $env._OLD_PROMPT_COMMAND

    # Hiding the environment variables that were created when activating the env
    hide _OLD_VIRTUAL_PATH
    hide _OLD_PROMPT_COMMAND
    hide VIRTUAL_ENV
    hide VIRTUAL_PROMPT
}

deactivate-virtualenv

hide pydoc
hide deactivate


================================================
FILE: bin/pip
================================================
#!/home/jiayuan/ultralytics-main/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())


================================================
FILE: bin/pip-3.7
================================================
#!/home/jiayuan/ultralytics-main/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())


================================================
FILE: bin/pip3
================================================
#!/home/jiayuan/ultralytics-main/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())


================================================
FILE: bin/pip3.7
================================================
#!/home/jiayuan/ultralytics-main/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())


================================================
FILE: bin/python
================================================
[File too large to display: 12.4 MB]

================================================
FILE: bin/python3
================================================
[File too large to display: 12.4 MB]

================================================
FILE: bin/python3.7
================================================
[File too large to display: 12.4 MB]

================================================
FILE: bin/wheel
================================================
#!/home/jiayuan/ultralytics-main/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from wheel.cli import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())


================================================
FILE: bin/wheel-3.7
================================================
#!/home/jiayuan/ultralytics-main/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from wheel.cli import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())


================================================
FILE: bin/wheel3
================================================
#!/home/jiayuan/ultralytics-main/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from wheel.cli import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())


================================================
FILE: bin/wheel3.7
================================================
#!/home/jiayuan/ultralytics-main/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from wheel.cli import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())


================================================
FILE: docker/Dockerfile
================================================
# Ultralytics YOLO 🚀, AGPL-3.0 license
# Builds ultralytics/ultralytics:latest image on DockerHub https://hub.docker.com/r/ultralytics/ultralytics
# Image is CUDA-optimized for YOLOv8 single/multi-GPU training and inference

# Start FROM PyTorch image https://hub.docker.com/r/pytorch/pytorch or nvcr.io/nvidia/pytorch:23.03-py3
FROM pytorch/pytorch:2.0.0-cuda11.7-cudnn8-runtime

# Downloads to user config dir
ADD https://ultralytics.com/assets/Arial.ttf https://ultralytics.com/assets/Arial.Unicode.ttf /root/.config/Ultralytics/

# Install linux packages
# g++ required to build 'tflite_support' package
RUN apt update \
    && apt install --no-install-recommends -y gcc git zip curl htop libgl1-mesa-glx libglib2.0-0 libpython3-dev gnupg g++
# RUN alias python=python3

# Security updates
# https://security.snyk.io/vuln/SNYK-UBUNTU1804-OPENSSL-3314796
RUN apt upgrade --no-install-recommends -y openssl tar

# Create working directory
RUN mkdir -p /usr/src/ultralytics
WORKDIR /usr/src/ultralytics

# Copy contents
# COPY . /usr/src/app  (issues as not a .git directory)
RUN git clone https://github.com/ultralytics/ultralytics /usr/src/ultralytics
ADD https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt /usr/src/ultralytics/

# Install pip packages
RUN python3 -m pip install --upgrade pip wheel
RUN pip install --no-cache -e . albumentations comet tensorboard

# Set environment variables
ENV OMP_NUM_THREADS=1


# Usage Examples -------------------------------------------------------------------------------------------------------

# Build and Push
# t=ultralytics/ultralytics:latest && sudo docker build -f docker/Dockerfile -t $t . && sudo docker push $t

# Pull and Run
# t=ultralytics/ultralytics:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all $t

# Pull and Run with local directory access
# t=ultralytics/ultralytics:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all -v "$(pwd)"/datasets:/usr/src/datasets $t

# Kill all
# sudo docker kill $(sudo docker ps -q)

# Kill all image-based
# sudo docker kill $(sudo docker ps -qa --filter ancestor=ultralytics/ultralytics:latest)

# DockerHub tag update
# t=ultralytics/ultralytics:latest tnew=ultralytics/ultralytics:v6.2 && sudo docker pull $t && sudo docker tag $t $tnew && sudo docker push $tnew

# Clean up
# sudo docker system prune -a --volumes

# Update Ubuntu drivers
# https://www.maketecheasier.com/install-nvidia-drivers-ubuntu/

# DDP test
# python -m torch.distributed.run --nproc_per_node 2 --master_port 1 train.py --epochs 3

# GCP VM from Image
# docker.io/ultralytics/ultralytics:latest


================================================
FILE: docker/Dockerfile-arm64
================================================
# Ultralytics YOLO 🚀, AGPL-3.0 license
# Builds ultralytics/ultralytics:latest-arm64 image on DockerHub https://hub.docker.com/r/ultralytics/ultralytics
# Image is aarch64-compatible for Apple M1 and other ARM architectures i.e. Jetson Nano and Raspberry Pi

# Start FROM Ubuntu image https://hub.docker.com/_/ubuntu
FROM arm64v8/ubuntu:22.10

# Downloads to user config dir
ADD https://ultralytics.com/assets/Arial.ttf https://ultralytics.com/assets/Arial.Unicode.ttf /root/.config/Ultralytics/

# Install linux packages
RUN apt update \
    && apt install --no-install-recommends -y python3-pip git zip curl htop gcc libgl1-mesa-glx libglib2.0-0 libpython3-dev
# RUN alias python=python3

# Create working directory
RUN mkdir -p /usr/src/ultralytics
WORKDIR /usr/src/ultralytics

# Copy contents
# COPY . /usr/src/app  (issues as not a .git directory)
RUN git clone https://github.com/ultralytics/ultralytics /usr/src/ultralytics
ADD https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt /usr/src/ultralytics/

# Install pip packages
RUN python3 -m pip install --upgrade pip wheel
RUN pip install --no-cache -e .


# Usage Examples -------------------------------------------------------------------------------------------------------

# Build and Push
# t=ultralytics/ultralytics:latest-arm64 && sudo docker build --platform linux/arm64 -f docker/Dockerfile-arm64 -t $t . && sudo docker push $t

# Pull and Run
# t=ultralytics/ultralytics:latest-arm64 && sudo docker pull $t && sudo docker run -it --ipc=host -v "$(pwd)"/datasets:/usr/src/datasets $t


================================================
FILE: docker/Dockerfile-cpu
================================================
# Ultralytics YOLO 🚀, AGPL-3.0 license
# Builds ultralytics/ultralytics:latest-cpu image on DockerHub https://hub.docker.com/r/ultralytics/ultralytics
# Image is CPU-optimized for ONNX, OpenVINO and PyTorch YOLOv8 deployments

# Start FROM Ubuntu image https://hub.docker.com/_/ubuntu
FROM ubuntu:22.10

# Downloads to user config dir
ADD https://ultralytics.com/assets/Arial.ttf https://ultralytics.com/assets/Arial.Unicode.ttf /root/.config/Ultralytics/

# Install linux packages
# g++ required to build 'tflite_support' package
RUN apt update \
    && apt install --no-install-recommends -y python3-pip git zip curl htop libgl1-mesa-glx libglib2.0-0 libpython3-dev gnupg g++
# RUN alias python=python3

# Create working directory
RUN mkdir -p /usr/src/ultralytics
WORKDIR /usr/src/ultralytics

# Copy contents
# COPY . /usr/src/app  (issues as not a .git directory)
RUN git clone https://github.com/ultralytics/ultralytics /usr/src/ultralytics
ADD https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt /usr/src/ultralytics/

# Install pip packages
RUN python3 -m pip install --upgrade pip wheel
RUN pip install --no-cache -e . --extra-index-url https://download.pytorch.org/whl/cpu


# Usage Examples -------------------------------------------------------------------------------------------------------

# Build and Push
# t=ultralytics/ultralytics:latest-cpu && sudo docker build -f docker/Dockerfile-cpu -t $t . && sudo docker push $t

# Pull and Run
# t=ultralytics/ultralytics:latest-cpu && sudo docker pull $t && sudo docker run -it --ipc=host -v "$(pwd)"/datasets:/usr/src/datasets $t


================================================
FILE: docker/Dockerfile-jetson
================================================
# Ultralytics YOLO 🚀, AGPL-3.0 license
# Builds ultralytics/ultralytics:jetson image on DockerHub https://hub.docker.com/r/ultralytics/ultralytics
# Supports JetPack for YOLOv8 on Jetson Nano, TX1/TX2, Xavier NX, AGX Xavier, AGX Orin, and Orin NX

# Start FROM https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-pytorch
FROM nvcr.io/nvidia/l4t-pytorch:r35.2.1-pth2.0-py3

# Downloads to user config dir
ADD https://ultralytics.com/assets/Arial.ttf https://ultralytics.com/assets/Arial.Unicode.ttf /root/.config/Ultralytics/

# Install linux packages
# g++ required to build 'tflite_support' package
RUN apt update \
    && apt install --no-install-recommends -y gcc git zip curl htop libgl1-mesa-glx libglib2.0-0 libpython3-dev gnupg g++
# RUN alias python=python3

# Create working directory
RUN mkdir -p /usr/src/ultralytics
WORKDIR /usr/src/ultralytics

# Copy contents
# COPY . /usr/src/app  (issues as not a .git directory)
RUN git clone https://github.com/ultralytics/ultralytics /usr/src/ultralytics
ADD https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt /usr/src/ultralytics/

# Install pip packages manually for TensorRT compatibility https://github.com/NVIDIA/TensorRT/issues/2567
RUN python3 -m pip install --upgrade pip wheel
RUN pip install --no-cache tqdm matplotlib pyyaml psutil pandas onnx "numpy==1.23"
RUN pip install --no-cache -e .

# Set environment variables
ENV OMP_NUM_THREADS=1


# Usage Examples -------------------------------------------------------------------------------------------------------

# Build and Push
# t=ultralytics/ultralytics:latest-jetson && sudo docker build --platform linux/arm64 -f docker/Dockerfile-jetson -t $t . && sudo docker push $t

# Pull and Run
# t=ultralytics/ultralytics:jetson && sudo docker pull $t && sudo docker run -it --runtime=nvidia $t


================================================
FILE: docs/CNAME
================================================
docs.ultralytics.com

================================================
FILE: docs/README.md
================================================
---
description: Learn how to install the Ultralytics package in developer mode and build/serve locally using MkDocs. Deploy your project to your host easily.
---

# Ultralytics Docs

Ultralytics Docs are deployed to [https://docs.ultralytics.com](https://docs.ultralytics.com).

### Install Ultralytics package

To install the ultralytics package in developer mode, you will need to have Git and Python 3 installed on your system.
Then, follow these steps:

1. Clone the ultralytics repository to your local machine using Git:

```bash
git clone https://github.com/ultralytics/ultralytics.git
```

2. Navigate to the root directory of the repository:

```bash
cd ultralytics
```

3. Install the package in developer mode using pip:

```bash
pip install -e '.[dev]'
```

This will install the ultralytics package and its dependencies in developer mode, allowing you to make changes to the
package code and have them reflected immediately in your Python environment.

Note that you may need to use the pip3 command instead of pip if you have multiple versions of Python installed on your
system.

### Building and Serving Locally

The `mkdocs serve` command is used to build and serve a local version of the MkDocs documentation site. It is typically
used during the development and testing phase of a documentation project.

```bash
mkdocs serve
```

Here is a breakdown of what this command does:

- `mkdocs`: This is the command-line interface (CLI) for the MkDocs static site generator. It is used to build and serve
  MkDocs sites.
- `serve`: This is a subcommand of the `mkdocs` CLI that tells it to build and serve the documentation site locally.
- `-a`: This flag specifies the hostname and port number to bind the server to. The default value is `localhost:8000`.
- `-t`: This flag specifies the theme to use for the documentation site. The default value is `mkdocs`.
- `-s`: This flag tells the `serve` command to serve the site in silent mode, which means it will not display any log
  messages or progress updates.
  When you run the `mkdocs serve` command, it will build the documentation site using the files in the `docs/` directory
  and serve it at the specified hostname and port number. You can then view the site by going to the URL in your web
  browser.

While the site is being served, you can make changes to the documentation files and see them reflected in the live site
immediately. This is useful for testing and debugging your documentation before deploying it to a live server.

To stop the serve command and terminate the local server, you can use the `CTRL+C` keyboard shortcut.

### Deploying Your Documentation Site

To deploy your MkDocs documentation site, you will need to choose a hosting provider and a deployment method. Some
popular options include GitHub Pages, GitLab Pages, and Amazon S3.

Before you can deploy your site, you will need to configure your `mkdocs.yml` file to specify the remote host and any
other necessary deployment settings.

Once you have configured your `mkdocs.yml` file, you can use the `mkdocs deploy` command to build and deploy your site.
This command will build the documentation site using the files in the `docs/` directory and the specified configuration
file and theme, and then deploy the site to the specified remote host.

For example, to deploy your site to GitHub Pages using the gh-deploy plugin, you can use the following command:

```bash
mkdocs gh-deploy
```

If you are using GitHub Pages, you can set a custom domain for your documentation site by going to the "Settings" page
for your repository and updating the "Custom domain" field in the "GitHub Pages" section.

![196814117-fc16e711-d2be-4722-9536-b7c6d78fd167](https://user-images.githubusercontent.com/26833433/210150206-9e86dcd7-10af-43e4-9eb2-9518b3799eac.png)

For more information on deploying your MkDocs documentation site, see
the [MkDocs documentation](https://www.mkdocs.org/user-guide/deploying-your-docs/).

================================================
FILE: docs/SECURITY.md
================================================
---
description: Learn how Ultralytics prioritize security. Get insights into Snyk and GitHub CodeQL scans, and how to report security issues in YOLOv8.
---

# Security Policy

At [Ultralytics](https://ultralytics.com), the security of our users' data and systems is of utmost importance. To
ensure the safety and security of our [open-source projects](https://github.com/ultralytics), we have implemented
several measures to detect and prevent security vulnerabilities.

[![ultralytics](https://snyk.io/advisor/python/ultralytics/badge.svg)](https://snyk.io/advisor/python/ultralytics)

## Snyk Scanning

We use [Snyk](https://snyk.io/advisor/python/ultralytics) to regularly scan the YOLOv8 repository for vulnerabilities
and security issues. Our goal is to identify and remediate any potential threats as soon as possible, to minimize any
risks to our users.

## GitHub CodeQL Scanning

In addition to our Snyk scans, we also use
GitHub's [CodeQL](https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning-with-codeql)
scans to proactively identify and address security vulnerabilities.

## Reporting Security Issues

If you suspect or discover a security vulnerability in the YOLOv8 repository, please let us know immediately. You can
reach out to us directly via our [contact form](https://ultralytics.com/contact) or
via [security@ultralytics.com](mailto:security@ultralytics.com). Our security team will investigate and respond as soon
as possible.

We appreciate your help in keeping the YOLOv8 repository secure and safe for everyone.

================================================
FILE: docs/build_reference.py
================================================
# Ultralytics YOLO 🚀, AGPL-3.0 license
"""
Helper file to build Ultralytics Docs reference section. Recursively walks through ultralytics dir and builds an MkDocs
reference section of *.md files composed of classes and functions, and also creates a nav menu for use in mkdocs.yaml.

Note: Must be run from repository root directory. Do not run from docs directory.
"""

import os
import re
from collections import defaultdict
from pathlib import Path
from ultralytics.yolo.utils import ROOT

NEW_YAML_DIR = ROOT.parent
CODE_DIR = ROOT
REFERENCE_DIR = ROOT.parent / 'docs/reference'


def extract_classes_and_functions(filepath):
    with open(filepath, 'r') as file:
        content = file.read()

    class_pattern = r"(?:^|\n)class\s(\w+)(?:\(|:)"
    func_pattern = r"(?:^|\n)def\s(\w+)\("

    classes = re.findall(class_pattern, content)
    functions = re.findall(func_pattern, content)

    return classes, functions


def create_markdown(py_filepath, module_path, classes, functions):
    md_filepath = py_filepath.with_suffix('.md')

    # Read existing content and keep header content between first two ---
    header_content = ""
    if md_filepath.exists():
        with open(md_filepath, 'r') as file:
            existing_content = file.read()
            header_parts = existing_content.split('---', 2)
            if len(header_parts) >= 3:
                header_content = f"{header_parts[0]}---{header_parts[1]}---\n\n"

    md_content = [f"# {class_name}\n---\n:::{module_path}.{class_name}\n<br><br>\n" for class_name in classes]
    md_content.extend(f"# {func_name}\n---\n:::{module_path}.{func_name}\n<br><br>\n" for func_name in functions)
    md_content = header_content + "\n".join(md_content)

    os.makedirs(os.path.dirname(md_filepath), exist_ok=True)
    with open(md_filepath, 'w') as file:
        file.write(md_content)

    return md_filepath.relative_to(NEW_YAML_DIR)


def nested_dict():
    return defaultdict(nested_dict)


def sort_nested_dict(d):
    return {
        key: sort_nested_dict(value) if isinstance(value, dict) else value
        for key, value in sorted(d.items())
    }


def create_nav_menu_yaml(nav_items):
    nav_tree = nested_dict()

    for item_str in nav_items:
        item = Path(item_str)
        parts = item.parts
        current_level = nav_tree['reference']
        for part in parts[2:-1]:  # skip the first two parts (docs and reference) and the last part (filename)
            current_level = current_level[part]

        md_file_name = parts[-1].replace('.md', '')
        current_level[md_file_name] = item

    nav_tree_sorted = sort_nested_dict(nav_tree)

    def _dict_to_yaml(d, level=0):
        yaml_str = ""
        indent = "  " * level
        for k, v in d.items():
            if isinstance(v, dict):
                yaml_str += f"{indent}- {k}:\n{_dict_to_yaml(v, level + 1)}"
            else:
                yaml_str += f"{indent}- {k}: {str(v).replace('docs/', '')}\n"
        return yaml_str

    with open(NEW_YAML_DIR / 'nav_menu_updated.yml', 'w') as file:
        yaml_str = _dict_to_yaml(nav_tree_sorted)
        file.write(yaml_str)


def main():
    nav_items = []
    for root, _, files in os.walk(CODE_DIR):
        for file in files:
            if file.endswith(".py") and file != "__init__.py":
                py_filepath = Path(root) / file
                classes, functions = extract_classes_and_functions(py_filepath)

                if classes or functions:
                    py_filepath_rel = py_filepath.relative_to(CODE_DIR)
                    md_filepath = REFERENCE_DIR / py_filepath_rel
                    module_path = f"ultralytics.{py_filepath_rel.with_suffix('').as_posix().replace('/', '.')}"
                    md_rel_filepath = create_markdown(md_filepath, module_path, classes, functions)
                    nav_items.append(str(md_rel_filepath))

    create_nav_menu_yaml(nav_items)


if __name__ == "__main__":
    main()


================================================
FILE: docs/datasets/classify/caltech101.md
================================================
---
comments: true
---

# 🚧 Page Under Construction ⚒

This page is currently under construction!️ 👷Please check back later for updates. 😃🔜


================================================
FILE: docs/datasets/classify/caltech256.md
================================================
---
comments: true
---

# 🚧 Page Under Construction ⚒

This page is currently under construction!️ 👷Please check back later for updates. 😃🔜


================================================
FILE: docs/datasets/classify/cifar10.md
================================================
---
comments: true
---

# 🚧 Page Under Construction ⚒

This page is currently under construction!️ 👷Please check back later for updates. 😃🔜


================================================
FILE: docs/datasets/classify/cifar100.md
================================================
---
comments: true
---

# 🚧 Page Under Construction ⚒

This page is currently under construction!️ 👷Please check back later for updates. 😃🔜


================================================
FILE: docs/datasets/classify/fashion-mnist.md
================================================
---
comments: true
---

# 🚧 Page Under Construction ⚒

This page is currently under construction!️ 👷Please check back later for updates. 😃🔜


================================================
FILE: docs/datasets/classify/imagenet.md
================================================
---
comments: true
---

# 🚧 Page Under Construction ⚒

This page is currently under construction!️ 👷Please check back later for updates. 😃🔜


================================================
FILE: docs/datasets/classify/imagenet10.md
================================================
---
comments: true
---

# 🚧 Page Under Construction ⚒

This page is currently under construction!️ 👷Please check back later for updates. 😃🔜


================================================
FILE: docs/datasets/classify/imagenette.md
================================================
---
comments: true
---

# 🚧 Page Under Construction ⚒

This page is currently under construction!️ 👷Please check back later for updates. 😃🔜


================================================
FILE: docs/datasets/classify/imagewoof.md
================================================
---
comments: true
---

# 🚧 Page Under Construction ⚒

This page is currently under construction!️ 👷Please check back later for updates. 😃🔜


================================================
FILE: docs/datasets/classify/index.md
================================================
---
comments: true
description: Learn how torchvision organizes classification image datasets. Use this code to create and train models. CLI and Python code shown.
---

# Image Classification Datasets Overview

## Dataset format

The folder structure for classification datasets in torchvision typically follows a standard format:

```
root/
|-- class1/
|   |-- img1.jpg
|   |-- img2.jpg
|   |-- ...
|
|-- class2/
|   |-- img1.jpg
|   |-- img2.jpg
|   |-- ...
|
|-- class3/
|   |-- img1.jpg
|   |-- img2.jpg
|   |-- ...
|
|-- ...
```

In this folder structure, the `root` directory contains one subdirectory for each class in the dataset. Each subdirectory is named after the corresponding class and contains all the images for that class. Each image file is named uniquely and is typically in a common image file format such as JPEG or PNG.

** Example **

For example, in the CIFAR10 dataset, the folder structure would look like this:

```
cifar-10-/
|
|-- train/
|   |-- airplane/
|   |   |-- 10008_airplane.png
|   |   |-- 10009_airplane.png
|   |   |-- ...
|   |
|   |-- automobile/
|   |   |-- 1000_automobile.png
|   |   |-- 1001_automobile.png
|   |   |-- ...
|   |
|   |-- bird/
|   |   |-- 10014_bird.png
|   |   |-- 10015_bird.png
|   |   |-- ...
|   |
|   |-- ...
|
|-- test/
|   |-- airplane/
|   |   |-- 10_airplane.png
|   |   |-- 11_airplane.png
|   |   |-- ...
|   |
|   |-- automobile/
|   |   |-- 100_automobile.png
|   |   |-- 101_automobile.png
|   |   |-- ...
|   |
|   |-- bird/
|   |   |-- 1000_bird.png
|   |   |-- 1001_bird.png
|   |   |-- ...
|   |
|   |-- ...
```

In this example, the `train` directory contains subdirectories for each class in the dataset, and each class subdirectory contains all the images for that class. The `test` directory has a similar structure. The `root` directory also contains other files that are part of the CIFAR10 dataset.

## Usage

!!! example ""

    === "Python"
    
        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n-cls.pt')  # load a pretrained model (recommended for training)

        # Train the model
        model.train(data='path/to/dataset', epochs=100, imgsz=640)
        ```
    === "CLI"
    
        ```bash
        # Start training from a pretrained *.pt model
        yolo detect train data=path/to/data model=yolov8n-seg.pt epochs=100 imgsz=640
        ```

## Supported Datasets

TODO

================================================
FILE: docs/datasets/classify/mnist.md
================================================
---
comments: true
description: Learn about the MNIST dataset, a large database of handwritten digits commonly used for training various image processing systems and machine learning models.
---

# MNIST Dataset

The [MNIST](http://yann.lecun.com/exdb/mnist/) (Modified National Institute of Standards and Technology) dataset is a large database of handwritten digits that is commonly used for training various image processing systems and machine learning models. It was created by "re-mixing" the samples from NIST's original datasets and has become a benchmark for evaluating the performance of image classification algorithms.

## Key Features

- MNIST contains 60,000 training images and 10,000 testing images of handwritten digits.
- The dataset comprises grayscale images of size 28x28 pixels.
- The images are normalized to fit into a 28x28 pixel bounding box and anti-aliased, introducing grayscale levels.
- MNIST is widely used for training and testing in the field of machine learning, especially for image classification tasks.

## Dataset Structure

The MNIST dataset is split into two subsets:

1. **Training Set**: This subset contains 60,000 images of handwritten digits used for training machine learning models.
2. **Testing Set**: This subset consists of 10,000 images used for testing and benchmarking the trained models.

## Extended MNIST (EMNIST)

Extended MNIST (EMNIST) is a newer dataset developed and released by NIST to be the successor to MNIST. While MNIST included images only of handwritten digits, EMNIST includes all the images from NIST Special Database 19, which is a large database of handwritten uppercase and lowercase letters as well as digits. The images in EMNIST were converted into the same 28x28 pixel format, by the same process, as were the MNIST images. Accordingly, tools that work with the older, smaller MNIST dataset will likely work unmodified with EMNIST.

## Applications

The MNIST dataset is widely used for training and evaluating deep learning models in image classification tasks, such as Convolutional Neural Networks (CNNs), Support Vector Machines (SVMs), and various other machine learning algorithms. The dataset's simple and well-structured format makes it an essential resource for researchers and practitioners in the field of machine learning and computer vision.

## Usage

To train a CNN model on the MNIST dataset for 100 epochs with an image size of 32x32, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model [Training](../../modes/train.md) page.

!!! example "Train Example"

    === "Python"

        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n-cls.pt')  # load a pretrained model (recommended for training)
        
        # Train the model
        model.train(data='mnist', epochs=100, imgsz=32)
        ```

    === "CLI"

        ```bash
        # Start training from a pretrained *.pt model
        cnn detect train data=MNIST.yaml model=cnn_mnist.pt epochs=100 imgsz=28
        ```

## Sample Images and Annotations

The MNIST dataset contains grayscale images of handwritten digits, providing a well-structured dataset for image classification tasks. Here are some examples of images from the dataset:

![Dataset sample image](https://upload.wikimedia.org/wikipedia/commons/2/27/MnistExamples.png)

The example showcases the variety and complexity of the handwritten digits in the MNIST dataset, highlighting the importance of a diverse dataset for training robust image classification models.

## Citations and Acknowledgments

If you use the MNIST dataset in your

research or development work, please cite the following paper:

```bibtex
@article{lecun2010mnist,
  title={MNIST handwritten digit database},
  author={LeCun, Yann and Cortes, Corinna and Burges, CJ},
  journal={ATT Labs [Online]. Available: http://yann.lecun.com/exdb/mnist},
  volume={2},
  year={2010}
}
```

We would like to acknowledge Yann LeCun, Corinna Cortes, and Christopher J.C. Burges for creating and maintaining the MNIST dataset as a valuable resource for the machine learning and computer vision research community. For more information about the MNIST dataset and its creators, visit the [MNIST dataset website](http://yann.lecun.com/exdb/mnist/).

================================================
FILE: docs/datasets/detect/argoverse.md
================================================
---
comments: true
description: Learn about the Argoverse dataset, a rich dataset designed to support research in autonomous driving tasks such as 3D tracking, motion forecasting, and stereo depth estimation.
---

# Argoverse Dataset

The [Argoverse](https://www.argoverse.org/) dataset is a collection of data designed to support research in autonomous driving tasks, such as 3D tracking, motion forecasting, and stereo depth estimation. Developed by Argo AI, the dataset provides a wide range of high-quality sensor data, including high-resolution images, LiDAR point clouds, and map data.

## Key Features

- Argoverse contains over 290K labeled 3D object tracks and 5 million object instances across 1,263 distinct scenes.
- The dataset includes high-resolution camera images, LiDAR point clouds, and richly annotated HD maps.
- Annotations include 3D bounding boxes for objects, object tracks, and trajectory information.
- Argoverse provides multiple subsets for different tasks, such as 3D tracking, motion forecasting, and stereo depth estimation.

## Dataset Structure

The Argoverse dataset is organized into three main subsets:

1. **Argoverse 3D Tracking**: This subset contains 113 scenes with over 290K labeled 3D object tracks, focusing on 3D object tracking tasks. It includes LiDAR point clouds, camera images, and sensor calibration information.
2. **Argoverse Motion Forecasting**: This subset consists of 324K vehicle trajectories collected from 60 hours of driving data, suitable for motion forecasting tasks.
3. **Argoverse Stereo Depth Estimation**: This subset is designed for stereo depth estimation tasks and includes over 10K stereo image pairs with corresponding LiDAR point clouds for ground truth depth estimation.

## Applications

The Argoverse dataset is widely used for training and evaluating deep learning models in autonomous driving tasks such as 3D object tracking, motion forecasting, and stereo depth estimation. The dataset's diverse set of sensor data, object annotations, and map information make it a valuable resource for researchers and practitioners in the field of autonomous driving.

## Dataset YAML

A YAML (Yet Another Markup Language) file is used to define the dataset configuration. It contains information about the dataset's paths, classes, and other relevant information. For the case of the Argoverse dataset, the `Argoverse.yaml` file is maintained at [https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/Argoverse.yaml](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/Argoverse.yaml).

!!! example "ultralytics/datasets/Argoverse.yaml"

    ```yaml
    --8<-- "ultralytics/datasets/Argoverse.yaml"
    ```

## Usage

To train a YOLOv8n model on the Argoverse dataset for 100 epochs with an image size of 640, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model [Training](../../modes/train.md) page.

!!! example "Train Example"

    === "Python"

        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
        
        # Train the model
        model.train(data='Argoverse.yaml', epochs=100, imgsz=640)
        ```

    === "CLI"

        ```bash
        # Start training from a pretrained *.pt model
        yolo detect train data=Argoverse.yaml model=yolov8n.pt epochs=100 imgsz=640
        ```

## Sample Data and Annotations

The Argoverse dataset contains a diverse set of sensor data, including camera images, LiDAR point clouds, and HD map information, providing rich context for autonomous driving tasks. Here are some examples of data from the dataset, along with their corresponding annotations:

![Dataset sample image](https://www.argoverse.org/assets/images/reference_images/av2_ground_height.png)

- **Argoverse 3D Tracking**: This image demonstrates an example of 3D object tracking, where objects are annotated with 3D bounding boxes. The dataset provides LiDAR point clouds and camera images to facilitate the development of models for this task.

The example showcases the variety and complexity of the data in the Argoverse dataset and highlights the importance of high-quality sensor data for autonomous driving tasks.

## Citations and Acknowledgments

If you use the Argoverse dataset in your research or development work, please cite the following paper:

```bibtex
@inproceedings{chang2019argoverse,
  title={Argoverse: 3D Tracking and Forecasting with Rich Maps},
  author={Chang, Ming-Fang and Lambert, John and Sangkloy, Patsorn and Singh, Jagjeet and Bak, Slawomir and Hartnett, Andrew and Wang, Dequan and Carr, Peter and Lucey, Simon and Ramanan, Deva and others},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  pages={8748--8757},
  year={2019}
}
```

We would like to acknowledge Argo AI for creating and maintaining the Argoverse dataset as a valuable resource for the autonomous driving research community. For more information about the Argoverse dataset and its creators, visit the [Argoverse dataset website](https://www.argoverse.org/).

================================================
FILE: docs/datasets/detect/coco.md
================================================
---
comments: true
description: Learn about the COCO dataset, designed to encourage research on object detection, segmentation, and captioning with standardized evaluation metrics.
---

# COCO Dataset

The [COCO](https://cocodataset.org/#home) (Common Objects in Context) dataset is a large-scale object detection, segmentation, and captioning dataset. It is designed to encourage research on a wide variety of object categories and is commonly used for benchmarking computer vision models. It is an essential dataset for researchers and developers working on object detection, segmentation, and pose estimation tasks.

## Key Features

- COCO contains 330K images, with 200K images having annotations for object detection, segmentation, and captioning tasks.
- The dataset comprises 80 object categories, including common objects like cars, bicycles, and animals, as well as more specific categories such as umbrellas, handbags, and sports equipment.
- Annotations include object bounding boxes, segmentation masks, and captions for each image.
- COCO provides standardized evaluation metrics like mean Average Precision (mAP) for object detection, and mean Average Recall (mAR) for segmentation tasks, making it suitable for comparing model performance.

## Dataset Structure

The COCO dataset is split into three subsets:

1. **Train2017**: This subset contains 118K images for training object detection, segmentation, and captioning models.
2. **Val2017**: This subset has 5K images used for validation purposes during model training.
3. **Test2017**: This subset consists of 20K images used for testing and benchmarking the trained models. Ground truth annotations for this subset are not publicly available, and the results are submitted to the [COCO evaluation server](https://competitions.codalab.org/competitions/5181) for performance evaluation.

## Applications

The COCO dataset is widely used for training and evaluating deep learning models in object detection (such as YOLO, Faster R-CNN, and SSD), instance segmentation (such as Mask R-CNN), and keypoint detection (such as OpenPose). The dataset's diverse set of object categories, large number of annotated images, and standardized evaluation metrics make it an essential resource for computer vision researchers and practitioners.

## Dataset YAML

A YAML (Yet Another Markup Language) file is used to define the dataset configuration. It contains information about the dataset's paths, classes, and other relevant information. In the case of the COCO dataset, the `coco.yaml` file is maintained at [https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/coco.yaml](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/coco.yaml).

!!! example "ultralytics/datasets/coco.yaml"

    ```yaml
    --8<-- "ultralytics/datasets/coco.yaml"
    ```

## Usage

To train a YOLOv8n model on the COCO dataset for 100 epochs with an image size of 640, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model [Training](../../modes/train.md) page.

!!! example "Train Example"

    === "Python"

        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
        
        # Train the model
        model.train(data='coco.yaml', epochs=100, imgsz=640)
        ```

    === "CLI"

        ```bash
        # Start training from a pretrained *.pt model
        yolo detect train data=coco.yaml model=yolov8n.pt epochs=100 imgsz=640
        ```

## Sample Images and Annotations

The COCO dataset contains a diverse set of images with various object categories and complex scenes. Here are some examples of images from the dataset, along with their corresponding annotations:

![Dataset sample image](https://user-images.githubusercontent.com/26833433/236811818-5b566576-1e92-42fa-9462-4b6a848abe89.jpg)

- **Mosaiced Image**: This image demonstrates a training batch composed of mosaiced dataset images. Mosaicing is a technique used during training that combines multiple images into a single image to increase the variety of objects and scenes within each training batch. This helps improve the model's ability to generalize to different object sizes, aspect ratios, and contexts.

The example showcases the variety and complexity of the images in the COCO dataset and the benefits of using mosaicing during the training process.

## Citations and Acknowledgments

If you use the COCO dataset in your research or development work, please cite the following paper:

```bibtex
@misc{lin2015microsoft,
      title={Microsoft COCO: Common Objects in Context}, 
      author={Tsung-Yi Lin and Michael Maire and Serge Belongie and Lubomir Bourdev and Ross Girshick and James Hays and Pietro Perona and Deva Ramanan and C. Lawrence Zitnick and Piotr Dollár},
      year={2015},
      eprint={1405.0312},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}
```

We would like to acknowledge the COCO Consortium for creating and maintaining this valuable resource for the computer vision community. For more information about the COCO dataset and its creators, visit the [COCO dataset website](https://cocodataset.org/#home).

================================================
FILE: docs/datasets/detect/coco8.md
================================================
---
comments: true
description: Get started with Ultralytics COCO8. Ideal for testing and debugging object detection models or experimenting with new detection approaches.
---

# COCO8 Dataset

## Introduction

[Ultralytics](https://ultralytics.com) COCO8 is a small, but versatile object detection dataset composed of the first 8
images of the COCO train 2017 set, 4 for training and 4 for validation. This dataset is ideal for testing and debugging
object detection models, or for experimenting with new detection approaches. With 8 images, it is small enough to be
easily manageable, yet diverse enough to test training pipelines for errors and act as a sanity check before training
larger datasets.

This dataset is intended for use with Ultralytics [HUB](https://hub.ultralytics.com)
and [YOLOv8](https://github.com/ultralytics/ultralytics).

## Dataset YAML

A YAML (Yet Another Markup Language) file is used to define the dataset configuration. It contains information about the dataset's paths, classes, and other relevant information. In the case of the COCO8 dataset, the `coco8.yaml` file is maintained at [https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/coco8.yaml](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/coco8.yaml).

!!! example "ultralytics/datasets/coco8.yaml"

    ```yaml
    --8<-- "ultralytics/datasets/coco8.yaml"
    ```

## Usage

To train a YOLOv8n model on the COCO8 dataset for 100 epochs with an image size of 640, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model [Training](../../modes/train.md) page.

!!! example "Train Example"

    === "Python"

        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
        
        # Train the model
        model.train(data='coco8.yaml', epochs=100, imgsz=640)
        ```

    === "CLI"

        ```bash
        # Start training from a pretrained *.pt model
        yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640
        ```

## Sample Images and Annotations

Here are some examples of images from the COCO8 dataset, along with their corresponding annotations:

<img src="https://user-images.githubusercontent.com/26833433/236818348-e6260a3d-0454-436b-83a9-de366ba07235.jpg" alt="Dataset sample image" width="800">

- **Mosaiced Image**: This image demonstrates a training batch composed of mosaiced dataset images. Mosaicing is a technique used during training that combines multiple images into a single image to increase the variety of objects and scenes within each training batch. This helps improve the model's ability to generalize to different object sizes, aspect ratios, and contexts.

The example showcases the variety and complexity of the images in the COCO8 dataset and the benefits of using mosaicing during the training process.

## Citations and Acknowledgments

If you use the COCO dataset in your research or development work, please cite the following paper:

```bibtex
@misc{lin2015microsoft,
      title={Microsoft COCO: Common Objects in Context}, 
      author={Tsung-Yi Lin and Michael Maire and Serge Belongie and Lubomir Bourdev and Ross Girshick and James Hays and Pietro Perona and Deva Ramanan and C. Lawrence Zitnick and Piotr Dollár},
      year={2015},
      eprint={1405.0312},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}
```

We would like to acknowledge the COCO Consortium for creating and maintaining this valuable resource for the computer vision community. For more information about the COCO dataset and its creators, visit the [COCO dataset website](https://cocodataset.org/#home).

================================================
FILE: docs/datasets/detect/globalwheat2020.md
================================================
---
comments: true
description: Learn about the Global Wheat Head Dataset, aimed at supporting the development of accurate wheat head models for applications in wheat phenotyping and crop management.
---

# Global Wheat Head Dataset

The [Global Wheat Head Dataset](http://www.global-wheat.com/) is a collection of images designed to support the development of accurate wheat head detection models for applications in wheat phenotyping and crop management. Wheat heads, also known as spikes, are the grain-bearing parts of the wheat plant. Accurate estimation of wheat head density and size is essential for assessing crop health, maturity, and yield potential. The dataset, created by a collaboration of nine research institutes from seven countries, covers multiple growing regions to ensure models generalize well across different environments.

## Key Features

- The dataset contains over 3,000 training images from Europe (France, UK, Switzerland) and North America (Canada).
- It includes approximately 1,000 test images from Australia, Japan, and China.
- Images are outdoor field images, capturing the natural variability in wheat head appearances.
- Annotations include wheat head bounding boxes to support object detection tasks.

## Dataset Structure

The Global Wheat Head Dataset is organized into two main subsets:

1. **Training Set**: This subset contains over 3,000 images from Europe and North America. The images are labeled with wheat head bounding boxes, providing ground truth for training object detection models.
2. **Test Set**: This subset consists of approximately 1,000 images from Australia, Japan, and China. These images are used for evaluating the performance of trained models on unseen genotypes, environments, and observational conditions.

## Applications

The Global Wheat Head Dataset is widely used for training and evaluating deep learning models in wheat head detection tasks. The dataset's diverse set of images, capturing a wide range of appearances, environments, and conditions, make it a valuable resource for researchers and practitioners in the field of plant phenotyping and crop management.

## Dataset YAML

A YAML (Yet Another Markup Language) file is used to define the dataset configuration. It contains information about the dataset's paths, classes, and other relevant information. For the case of the Global Wheat Head Dataset, the `GlobalWheat2020.yaml` file is maintained at [https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/GlobalWheat2020.yaml](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/GlobalWheat2020.yaml).

!!! example "ultralytics/datasets/GlobalWheat2020.yaml"

    ```yaml
    --8<-- "ultralytics/datasets/GlobalWheat2020.yaml"
    ```

## Usage

To train a YOLOv8n model on the Global Wheat Head Dataset for 100 epochs with an image size of 640, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model [Training](../../modes/train.md) page.

!!! example "Train Example"

    === "Python"

        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
        
        # Train the model
        model.train(data='GlobalWheat2020.yaml', epochs=100, imgsz=640)
        ```

    === "CLI"

        ```bash
        # Start training from a pretrained *.pt model
        yolo detect train data=GlobalWheat2020.yaml model=yolov8n.pt epochs=100 imgsz=640
        ```

## Sample Data and Annotations

The Global Wheat Head Dataset contains a diverse set of outdoor field images, capturing the natural variability in wheat head appearances, environments, and conditions. Here are some examples of data from the dataset, along with their corresponding annotations:

![Dataset sample image](https://i.ytimg.com/vi/yqvMuw-uedU/maxresdefault.jpg)

- **Wheat Head Detection**: This image demonstrates an example of wheat head detection, where wheat heads are annotated with bounding boxes. The dataset provides a variety of images to facilitate the development of models for this task.

The example showcases the variety and complexity of the data in the Global Wheat Head Dataset and highlights the importance of accurate wheat head detection for applications in wheat phenotyping and crop management.

## Citations and Acknowledgments

If you use the Global Wheat Head Dataset in your research or development work, please cite the following paper:

```bibtex
@article{david2020global,
  title={Global Wheat Head Detection (GWHD) Dataset: A Large and Diverse Dataset of High-Resolution RGB-Labelled Images to Develop and Benchmark Wheat Head Detection Methods},
  author={David, Etienne and Madec, Simon and Sadeghi-Tehran, Pouria and Aasen, Helge and Zheng, Bangyou and Liu, Shouyang and Kirchgessner, Norbert and Ishikawa, Goro and Nagasawa, Koichi and Badhon, Minhajul and others},
  journal={arXiv preprint arXiv:2005.02162},
  year={2020}
}
```

We would like to acknowledge the researchers and institutions that contributed to the creation and maintenance of the Global Wheat Head Dataset as a valuable resource for the plant phenotyping and crop management research community. For more information about the dataset and its creators, visit the [Global Wheat Head Dataset website](http://www.global-wheat.com/).

================================================
FILE: docs/datasets/detect/index.md
================================================
---
comments: true
description: Learn about supported dataset formats for training YOLO detection models, including Ultralytics YOLO and COCO, in this Object Detection Datasets Overview.
---

# Object Detection Datasets Overview

## Supported Dataset Formats

### Ultralytics YOLO format

** Label Format **

The dataset format used for training YOLO detection models is as follows:

1. One text file per image: Each image in the dataset has a corresponding text file with the same name as the image file and the ".txt" extension.
2. One row per object: Each row in the text file corresponds to one object instance in the image.
3. Object information per row: Each row contains the following information about the object instance:
    - Object class index: An integer representing the class of the object (e.g., 0 for person, 1 for car, etc.).
    - Object center coordinates: The x and y coordinates of the center of the object, normalized to be between 0 and 1.
    - Object width and height: The width and height of the object, normalized to be between 0 and 1.

The format for a single row in the detection dataset file is as follows:

```
<object-class> <x> <y> <width> <height>
```

Here is an example of the YOLO dataset format for a single image with two object instances:

```
0 0.5 0.4 0.3 0.6
1 0.3 0.7 0.4 0.2
```

In this example, the first object is of class 0 (person), with its center at (0.5, 0.4), width of 0.3, and height of 0.6. The second object is of class 1 (car), with its center at (0.3, 0.7), width of 0.4, and height of 0.2.

** Dataset file format **

The Ultralytics framework uses a YAML file format to define the dataset and model configuration for training Detection Models. Here is an example of the YAML format used for defining a detection dataset:

```
train: <path-to-training-images>
val: <path-to-validation-images>

nc: <number-of-classes>
names: [<class-1>, <class-2>, ..., <class-n>]

```

The `train` and `val` fields specify the paths to the directories containing the training and validation images, respectively.

The `nc` field specifies the number of object classes in the dataset.

The `names` field is a list of the names of the object classes. The order of the names should match the order of the object class indices in the YOLO dataset files.

NOTE: Either `nc` or `names` must be defined. Defining both are not mandatory

Alternatively, you can directly define class names like this:

```yaml
names:
  0: person
  1: bicycle
```

** Example **

```yaml
train: data/train/
val: data/val/

nc: 2
names: ['person', 'car']
```

## Usage

!!! example ""

    === "Python"
    
        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)

        # Train the model
        model.train(data='coco128.yaml', epochs=100, imgsz=640)
        ```
    === "CLI"
    
        ```bash
        # Start training from a pretrained *.pt model
        yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640
        ```

## Supported Datasets

TODO

## Port or Convert label formats

### COCO dataset format to YOLO format

```
from ultralytics.yolo.data.converter import convert_coco

convert_coco(labels_dir='../coco/annotations/')
```

================================================
FILE: docs/datasets/detect/objects365.md
================================================
---
comments: true
description: Discover the Objects365 dataset, designed for object detection research with a focus on diverse objects, featuring 365 categories, 2 million images, and 30 million bounding boxes.
---

# Objects365 Dataset

The [Objects365](https://www.objects365.org/) dataset is a large-scale, high-quality dataset designed to foster object detection research with a focus on diverse objects in the wild. Created by a team of [Megvii](https://en.megvii.com/) researchers, the dataset offers a wide range of high-resolution images with a comprehensive set of annotated bounding boxes covering 365 object categories.

## Key Features

- Objects365 contains 365 object categories, with 2 million images and over 30 million bounding boxes.
- The dataset includes diverse objects in various scenarios, providing a rich and challenging benchmark for object detection tasks.
- Annotations include bounding boxes for objects, making it suitable for training and evaluating object detection models.
- Objects365 pre-trained models significantly outperform ImageNet pre-trained models, leading to better generalization on various tasks.

## Dataset Structure

The Objects365 dataset is organized into a single set of images with corresponding annotations:

- **Images**: The dataset includes 2 million high-resolution images, each containing a variety of objects across 365 categories.
- **Annotations**: The images are annotated with over 30 million bounding boxes, providing comprehensive ground truth information for object detection tasks.

## Applications

The Objects365 dataset is widely used for training and evaluating deep learning models in object detection tasks. The dataset's diverse set of object categories and high-quality annotations make it a valuable resource for researchers and practitioners in the field of computer vision.

## Dataset YAML

A YAML (Yet Another Markup Language) file is used to define the dataset configuration. It contains information about the dataset's paths, classes, and other relevant information. For the case of the Objects365 Dataset, the `Objects365.yaml` file is maintained at [https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/Objects365.yaml](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/Objects365.yaml).

!!! example "ultralytics/datasets/Objects365.yaml"

    ```yaml
    --8<-- "ultralytics/datasets/Objects365.yaml"
    ```

## Usage

To train a YOLOv8n model on the Objects365 dataset for 100 epochs with an image size of 640, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model [Training](../../modes/train.md) page.

!!! example "Train Example"

    === "Python"

        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
        
        # Train the model
        model.train(data='Objects365.yaml', epochs=100, imgsz=640)
        ```

    === "CLI"

        ```bash
        # Start training from a pretrained *.pt model
        yolo detect train data=Objects365.yaml model=yolov8n.pt epochs=100 imgsz=640
        ```

## Sample Data and Annotations

The Objects365 dataset contains a diverse set of high-resolution images with objects from 365 categories, providing rich context for object detection tasks. Here are some examples of the images in the dataset:

![Dataset sample image](https://user-images.githubusercontent.com/26833433/238215467-caf757dd-0b87-4b0d-bb19-d94a547f7fbf.jpg)

- **Objects365**: This image demonstrates an example of object detection, where objects are annotated with bounding boxes. The dataset provides a wide range of images to facilitate the development of models for this task.

The example showcases the variety and complexity of the data in the Objects365 dataset and highlights the importance of accurate object detection for computer vision applications.

## Citations and Acknowledgments

If you use the Objects365 dataset in your research or development work, please cite the following paper:

```bibtex
@inproceedings{shao2019objects365,
  title={Objects365: A Large-scale, High-quality Dataset for Object Detection},
  author={Shao, Shuai and Li, Zeming and Zhang, Tianyuan and Peng, Chao and Yu, Gang and Li, Jing and Zhang, Xiangyu and Sun, Jian},
  booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision},
  pages={8425--8434},
  year={2019}
}
```

We would like to acknowledge the team of researchers who created and maintain the Objects365 dataset as a valuable resource for the computer vision research community. For more information about the Objects365 dataset and its creators, visit the [Objects365 dataset website](https://www.objects365.org/).


================================================
FILE: docs/datasets/detect/sku-110k.md
================================================
---
comments: true
description: Explore the SKU-110k dataset, designed for object detection in densely packed retail shelf images, featuring over 110k unique SKU categories and annotations.
---

# SKU-110k Dataset

The [SKU-110k](https://github.com/eg4000/SKU110K_CVPR19) dataset is a collection of densely packed retail shelf images, designed to support research in object detection tasks. Developed by Eran Goldman et al., the dataset contains over 110,000 unique store keeping unit (SKU) categories with densely packed objects, often looking similar or even identical, positioned in close proximity.

![Dataset sample image](https://github.com/eg4000/SKU110K_CVPR19/raw/master/figures/benchmarks_comparison.jpg)

## Key Features

- SKU-110k contains images of store shelves from around the world, featuring densely packed objects that pose challenges for state-of-the-art object detectors.
- The dataset includes over 110,000 unique SKU categories, providing a diverse range of object appearances.
- Annotations include bounding boxes for objects and SKU category labels.

## Dataset Structure

The SKU-110k dataset is organized into three main subsets:

1. **Training set**: This subset contains images and annotations used for training object detection models.
2. **Validation set**: This subset consists of images and annotations used for model validation during training.
3. **Test set**: This subset is designed for the final evaluation of trained object detection models.

## Applications

The SKU-110k dataset is widely used for training and evaluating deep learning models in object detection tasks, especially in densely packed scenes such as retail shelf displays. The dataset's diverse set of SKU categories and densely packed object arrangements make it a valuable resource for researchers and practitioners in the field of computer vision.

## Dataset YAML

A YAML (Yet Another Markup Language) file is used to define the dataset configuration. It contains information about the dataset's paths, classes, and other relevant information. For the case of the SKU-110K dataset, the `SKU-110K.yaml` file is maintained at [https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/SKU-110K.yaml](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/SKU-110K.yaml).

!!! example "ultralytics/datasets/SKU-110K.yaml"

    ```yaml
    --8<-- "ultralytics/datasets/SKU-110K.yaml"
    ```

## Usage

To train a YOLOv8n model on the SKU-110K dataset for 100 epochs with an image size of 640, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model [Training](../../modes/train.md) page.

!!! example "Train Example"

    === "Python"

        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
        
        # Train the model
        model.train(data='SKU-110K.yaml', epochs=100, imgsz=640)
        ```

    === "CLI"

        ```bash
        # Start training from a pretrained *.pt model
        yolo detect train data=SKU-110K.yaml model=yolov8n.pt epochs=100 imgsz=640

## Sample Data and Annotations

The SKU-110k dataset contains a diverse set of retail shelf images with densely packed objects, providing rich context for object detection tasks. Here are some examples of data from the dataset, along with their corresponding annotations:

![Dataset sample image](https://user-images.githubusercontent.com/26833433/238215979-1ab791c4-15d9-46f6-a5d6-0092c05dff7a.jpg)

- **Densely packed retail shelf image**: This image demonstrates an example of densely packed objects in a retail shelf setting. Objects are annotated with bounding boxes and SKU category labels.

The example showcases the variety and complexity of the data in the SKU-110k dataset and highlights the importance of high-quality data for object detection tasks.

## Citations and Acknowledgments

If you use the SKU-110k dataset in your research or development work, please cite the following paper:

```bibtex
@inproceedings{goldman2019dense,
 author    = {Eran Goldman and Roei Herzig and Aviv Eisenschtat and Jacob Goldberger and Tal Hassner},
 title     = {Precise Detection in Densely Packed Scenes},
 booktitle = {Proc. Conf. Comput. Vision Pattern Recognition (CVPR)},
 year      = {2019}
}
```

We would like to acknowledge Eran Goldman et al. for creating and maintaining the SKU-110k dataset as a valuable resource for the computer vision research community. For more information about the SKU-110k dataset and its creators, visit the [SKU-110k dataset GitHub repository](https://github.com/eg4000/SKU110K_CVPR19).

================================================
FILE: docs/datasets/detect/visdrone.md
================================================
---
comments: true
description: Discover the VisDrone dataset, a comprehensive benchmark for drone-based computer vision tasks, including object detection, tracking, and crowd counting.
---

# VisDrone Dataset

The [VisDrone Dataset](https://github.com/VisDrone/VisDrone-Dataset) is a large-scale benchmark created by the AISKYEYE team at the Lab of Machine Learning and Data Mining, Tianjin University, China. It contains carefully annotated ground truth data for various computer vision tasks related to drone-based image and video analysis.

VisDrone is composed of 288 video clips with 261,908 frames and 10,209 static images, captured by various drone-mounted cameras. The dataset covers a wide range of aspects, including location (14 different cities across China), environment (urban and rural), objects (pedestrians, vehicles, bicycles, etc.), and density (sparse and crowded scenes). The dataset was collected using various drone platforms under different scenarios and weather and lighting conditions. These frames are manually annotated with over 2.6 million bounding boxes of targets such as pedestrians, cars, bicycles, and tricycles. Attributes like scene visibility, object class, and occlusion are also provided for better data utilization.

## Citation

If you use the VisDrone dataset in your research or development work, please cite the following paper:

```bibtex
@ARTICLE{9573394,
  author={Zhu, Pengfei and Wen, Longyin and Du, Dawei and Bian, Xiao and Fan, Heng and Hu, Qinghua and Ling, Haibin},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence}, 
  title={Detection and Tracking Meet Drones Challenge}, 
  year={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3119563}}
```

## Dataset Structure

The VisDrone dataset is organized into five main subsets, each focusing on a specific task:

1. **Task 1**: Object detection in images
2. **Task 2**: Object detection in videos
3. **Task 3**: Single-object tracking
4. **Task 4**: Multi-object tracking
5. **Task 5**: Crowd counting

## Applications

The VisDrone dataset is widely used for training and evaluating deep learning models in drone-based computer vision tasks such as object detection, object tracking, and crowd counting. The dataset's diverse set of sensor data, object annotations, and attributes make it a valuable resource for researchers and practitioners in the field of drone-based computer vision.

## Dataset YAML

A YAML (Yet Another Markup Language) file is used to define the dataset configuration. It contains information about the dataset's paths, classes, and other relevant information. In the case of the Visdrone dataset, the `VisDrone.yaml` file is maintained at [https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/VisDrone.yaml](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/VisDrone.yaml).

!!! example "ultralytics/datasets/VisDrone.yaml"

    ```yaml
    --8<-- "ultralytics/datasets/VisDrone.yaml"
    ```

## Usage

To train a YOLOv8n model on the VisDrone dataset for 100 epochs with an image size of 640, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model [Training](../../modes/train.md) page.

!!! example "Train Example"

    === "Python"

        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
        
        # Train the model
        model.train(data='VisDrone.yaml', epochs=100, imgsz=640)
        ```

    === "CLI"

        ```bash
        # Start training from a pretrained *.pt model
        yolo detect train data=VisDrone.yaml model=yolov8n.pt epochs=100 imgsz=640
        ```

## Sample Data and Annotations

The VisDrone dataset contains a diverse set of images and videos captured by drone-mounted cameras. Here are some examples of data from the dataset, along with their corresponding annotations:

![Dataset sample image](https://user-images.githubusercontent.com/26833433/238217600-df0b7334-4c9e-4c77-81a5-c70cd33429cc.jpg)

- **Task 1**: Object detection in images - This image demonstrates an example of object detection in images, where objects are annotated with bounding boxes. The dataset provides a wide variety of images taken from different locations, environments, and densities to facilitate the development of models for this task.

The example showcases the variety and complexity of the data in the VisDrone dataset and highlights the importance of high-quality sensor data for drone-based computer vision tasks.

## Citations and Acknowledgments

If you use the VisDrone dataset in your research or development work, please cite the following paper:

```bibtex
@ARTICLE{9573394,
  author={Zhu, Pengfei and Wen, Longyin and Du, Dawei and Bian, Xiao and Fan, Heng and Hu, Qinghua and Ling, Haibin},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence}, 
  title={Detection and Tracking Meet Drones Challenge}, 
  year={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3119563}}
```

We would like to acknowledge the AISKYEYE team at the Lab of Machine Learning and Data Mining, Tianjin University, China, for creating and maintaining the VisDrone dataset as a valuable resource for the drone-based computer vision research community. For more information about the VisDrone dataset and its creators, visit the [VisDrone Dataset GitHub repository](https://github.com/VisDrone/VisDrone-Dataset).

================================================
FILE: docs/datasets/detect/voc.md
================================================
---
comments: true
description: Learn about the VOC dataset, designed to encourage research on object detection, segmentation, and classification with standardized evaluation metrics.
---

# VOC Dataset

The [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) (Visual Object Classes) dataset is a well-known object detection, segmentation, and classification dataset. It is designed to encourage research on a wide variety of object categories and is commonly used for benchmarking computer vision models. It is an essential dataset for researchers and developers working on object detection, segmentation, and classification tasks.

## Key Features

- VOC dataset includes two main challenges: VOC2007 and VOC2012.
- The dataset comprises 20 object categories, including common objects like cars, bicycles, and animals, as well as more specific categories such as boats, sofas, and dining tables.
- Annotations include object bounding boxes and class labels for object detection and classification tasks, and segmentation masks for the segmentation tasks.
- VOC provides standardized evaluation metrics like mean Average Precision (mAP) for object detection and classification, making it suitable for comparing model performance.

## Dataset Structure

The VOC dataset is split into three subsets:

1. **Train**: This subset contains images for training object detection, segmentation, and classification models.
2. **Validation**: This subset has images used for validation purposes during model training.
3. **Test**: This subset consists of images used for testing and benchmarking the trained models. Ground truth annotations for this subset are not publicly available, and the results are submitted to the [PASCAL VOC evaluation server](http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php) for performance evaluation.

## Applications

The VOC dataset is widely used for training and evaluating deep learning models in object detection (such as YOLO, Faster R-CNN, and SSD), instance segmentation (such as Mask R-CNN), and image classification. The dataset's diverse set of object categories, large number of annotated images, and standardized evaluation metrics make it an essential resource for computer vision researchers and practitioners.

## Dataset YAML

A YAML (Yet Another Markup Language) file is used to define the dataset configuration. It contains information about the dataset's paths, classes, and other relevant information. In the case of the VOC dataset, the `VOC.yaml` file is maintained at [https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/VOC.yaml](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/VOC.yaml).

!!! example "ultralytics/datasets/VOC.yaml"

    ```yaml
    --8<-- "ultralytics/datasets/VOC.yaml"
    ```

## Usage

To train a YOLOv8n model on the VOC dataset for 100 epochs with an image size of 640, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model [Training](../../modes/train.md) page.

!!! example "Train Example"

    === "Python"

        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
        
        # Train the model
        model.train(data='VOC.yaml', epochs=100, imgsz=640)
        ```

    === "CLI"

        ```bash
        # Start training from
        a pretrained *.pt model
        yolo detect train data=VOC.yaml model=yolov8n.pt epochs=100 imgsz=640
        ```

## Sample Images and Annotations

The VOC dataset contains a diverse set of images with various object categories and complex scenes. Here are some examples of images from the dataset, along with their corresponding annotations:

![Dataset sample image](https://github.com/ultralytics/ultralytics/assets/26833433/7d4c18f4-774e-43f8-a5f3-9467cda7de4a)

- **Mosaiced Image**: This image demonstrates a training batch composed of mosaiced dataset images. Mosaicing is a technique used during training that combines multiple images into a single image to increase the variety of objects and scenes within each training batch. This helps improve the model's ability to generalize to different object sizes, aspect ratios, and contexts.

The example showcases the variety and complexity of the images in the VOC dataset and the benefits of using mosaicing during the training process.

## Citations and Acknowledgments

If you use the VOC dataset in your research or development work, please cite the following paper:

```bibtex
@misc{everingham2010pascal,
      title={The PASCAL Visual Object Classes (VOC) Challenge}, 
      author={Mark Everingham and Luc Van Gool and Christopher K. I. Williams and John Winn and Andrew Zisserman},
      year={2010},
      eprint={0909.5206},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}
```

We would like to acknowledge the PASCAL VOC Consortium for creating and maintaining this valuable resource for the computer vision community. For more information about the VOC dataset and its creators, visit the [PASCAL VOC dataset website](http://host.robots.ox.ac.uk/pascal/VOC/).

================================================
FILE: docs/datasets/detect/xview.md
================================================
---
comments: true
description: Discover the xView Dataset, a large-scale overhead imagery dataset for object detection tasks, featuring 1M instances, 60 classes, and high-resolution images.
---

# xView Dataset

The [xView](http://xviewdataset.org/) dataset is one of the largest publicly available datasets of overhead imagery, containing images from complex scenes around the world annotated using bounding boxes. The goal of the xView dataset is to accelerate progress in four computer vision frontiers:

1. Reduce minimum resolution for detection.
2. Improve learning efficiency.
3. Enable discovery of more object classes.
4. Improve detection of fine-grained classes.

xView builds on the success of challenges like Common Objects in Context (COCO) and aims to leverage computer vision to analyze the growing amount of available imagery from space in order to understand the visual world in new ways and address a range of important applications.

## Key Features

- xView contains over 1 million object instances across 60 classes.
- The dataset has a resolution of 0.3 meters, providing higher resolution imagery than most public satellite imagery datasets.
- xView features a diverse collection of small, rare, fine-grained, and multi-type objects with bounding box annotation.
- Comes with a pre-trained baseline model using the TensorFlow object detection API and an example for PyTorch.

## Dataset Structure

The xView dataset is composed of satellite images collected from WorldView-3 satellites at a 0.3m ground sample distance. It contains over 1 million objects across 60 classes in over 1,400 km² of imagery.

## Applications

The xView dataset is widely used for training and evaluating deep learning models for object detection in overhead imagery. The dataset's diverse set of object classes and high-resolution imagery make it a valuable resource for researchers and practitioners in the field of computer vision, especially for satellite imagery analysis.

## Dataset YAML

A YAML (Yet Another Markup Language) file is used to define the dataset configuration. It contains information about the dataset's paths, classes, and other relevant information. In the case of the xView dataset, the `xView.yaml` file is maintained at [https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/xView.yaml](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/xView.yaml).

!!! example "ultralytics/datasets/xView.yaml"

    ```yaml
    --8<-- "ultralytics/datasets/xView.yaml"
    ```

## Usage

To train a model on the xView dataset for 100 epochs with an image size of 640, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model [Training](../../modes/train.md) page.

!!! example "Train Example"

    === "Python"

        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
        
        # Train the model
        model.train(data='xView.yaml', epochs=100, imgsz=640)
        ```

    === "CLI"

        ```bash
        # Start training from a pretrained *.pt model
        yolo detect train data=xView.yaml model=yolov8n.pt epochs=100 imgsz=640
        ```

## Sample Data and Annotations

The xView dataset contains high-resolution satellite images with a diverse set of objects annotated using bounding boxes. Here are some examples of data from the dataset, along with their corresponding annotations:

![Dataset sample image](https://github-production-user-asset-6210df.s3.amazonaws.com/26833433/238799379-bb3b02f0-dee4-4e67-80ae-4b2378b813ad.jpg)

- **Overhead Imagery**: This image demonstrates an example of object detection in overhead imagery, where objects are annotated with bounding boxes. The dataset provides high-resolution satellite images to facilitate the development of models for this task.

The example showcases the variety and complexity of the data in the xView dataset and highlights the importance of high-quality satellite imagery for object detection tasks.

## Citations and Acknowledgments

If you use the xView dataset in your research or development work, please cite the following paper:

```bibtex
@misc{lam2018xview,
      title={xView: Objects in Context in Overhead Imagery}, 
      author={Darius Lam and Richard Kuzma and Kevin McGee and Samuel Dooley and Michael Laielli and Matthew Klaric and Yaroslav Bulatov and Brendan McCord},
      year={2018},
      eprint={1802.07856},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}
```

We would like to acknowledge the [Defense Innovation Unit](https://www.diu.mil/) (DIU) and the creators of the xView dataset for their valuable contribution to the computer vision research community. For more information about the xView dataset and its creators, visit the [xView dataset website](http://xviewdataset.org/).


================================================
FILE: docs/datasets/index.md
================================================
---
comments: true
description: Ultralytics provides support for various datasets to facilitate multiple computer vision tasks. Check out our list of main datasets and their summaries.
---

# Datasets Overview

Ultralytics provides support for various datasets to facilitate computer vision tasks such as detection, instance segmentation, pose estimation, classification, and multi-object tracking. Below is a list of the main Ultralytics datasets, followed by a summary of each computer vision task and the respective datasets.

## [Detection Datasets](detect/index.md)

Bounding box object detection is a computer vision technique that involves detecting and localizing objects in an image by drawing a bounding box around each object.

* [Argoverse](detect/argoverse.md): A dataset containing 3D tracking and motion forecasting data from urban environments with rich annotations.
* [COCO](detect/coco.md): A large-scale dataset designed for object detection, segmentation, and captioning with over 200K labeled images.
* [COCO8](detect/coco8.md): Contains the first 4 images from COCO train and COCO val, suitable for quick tests.
* [Global Wheat 2020](detect/globalwheat2020.md): A dataset of wheat head images collected from around the world for object detection and localization tasks.
* [Objects365](detect/objects365.md): A high-quality, large-scale dataset for object detection with 365 object categories and over 600K annotated images.
* [SKU-110K](detect/sku-110k.md): A dataset featuring dense object detection in retail environments with over 11K images and 1.7 million bounding boxes.
* [VisDrone](detect/visdrone.md): A dataset containing object detection and multi-object tracking data from drone-captured imagery with over 10K images and video sequences.
* [VOC](detect/voc.md): The Pascal Visual Object Classes (VOC) dataset for object detection and segmentation with 20 object classes and over 11K images.
* [xView](detect/xview.md): A dataset for object detection in overhead imagery with 60 object categories and over 1 million annotated objects.

## [Instance Segmentation Datasets](segment/index.md)

Instance segmentation is a computer vision technique that involves identifying and localizing objects in an image at the pixel level.

* [COCO](segment/coco.md): A large-scale dataset designed for object detection, segmentation, and captioning tasks with over 200K labeled images.
* [COCO8-seg](segment/coco8-seg.md): A smaller dataset for instance segmentation tasks, containing a subset of 8 COCO images with segmentation annotations.

## [Pose Estimation](pose/index.md)

Pose estimation is a technique used to determine the pose of the object relative to the camera or the world coordinate system.

* [COCO](pose/coco.md): A large-scale dataset with human pose annotations designed for pose estimation tasks.
* [COCO8-pose](pose/coco8-pose.md): A smaller dataset for pose estimation tasks, containing a subset of 8 COCO images with human pose annotations.

## [Classification](classify/index.md)

Image classification is a computer vision task that involves categorizing an image into one or more predefined classes or categories based on its visual content.

* [Caltech 101](classify/caltech101.md): A dataset containing images of 101 object categories for image classification tasks.
* [Caltech 256](classify/caltech256.md): An extended version of Caltech 101 with 256 object categories and more challenging images.
* [CIFAR-10](classify/cifar10.md): A dataset of 60K 32x32 color images in 10 classes, with 6K images per class.
* [CIFAR-100](classify/cifar100.md): An extended version of CIFAR-10 with 100 object categories and 600 images per class.
* [Fashion-MNIST](classify/fashion-mnist.md): A dataset consisting of 70,000 grayscale images of 10 fashion categories for image classification tasks.
* [ImageNet](classify/imagenet.md): A large-scale dataset for object detection and image classification with over 14 million images and 20,000 categories.
* [ImageNet-10](classify/imagenet10.md): A smaller subset of ImageNet with 10 categories for faster experimentation and testing.
* [Imagenette](classify/imagenette.md): A smaller subset of ImageNet that contains 10 easily distinguishable classes for quicker training and testing.
* [Imagewoof](classify/imagewoof.md): A more challenging subset of ImageNet containing 10 dog breed categories for image classification tasks.
* [MNIST](classify/mnist.md): A dataset of 70,000 grayscale images of handwritten digits for image classification tasks.

## [Multi-Object Tracking](track/index.md)

Multi-object tracking is a computer vision technique that involves detecting and tracking multiple objects over time in a video sequence.

* [Argoverse](detect/argoverse.md): A dataset containing 3D tracking and motion forecasting data from urban environments with rich annotations for multi-object tracking tasks.
* [VisDrone](detect/visdrone.md): A dataset containing object detection and multi-object tracking data from drone-captured imagery with over 10K images and video sequences.

================================================
FILE: docs/datasets/pose/coco.md
================================================
---
comments: true
---

# 🚧 Page Under Construction ⚒

This page is currently under construction!️ 👷Please check back later for updates. 😃🔜


================================================
FILE: docs/datasets/pose/coco8-pose.md
================================================
---
comments: true
description: Test and debug object detection models with Ultralytics COCO8-Pose Dataset - a small, versatile pose detection dataset with 8 images.
---

# COCO8-Pose Dataset

## Introduction

[Ultralytics](https://ultralytics.com) COCO8-Pose is a small, but versatile pose detection dataset composed of the first
8 images of the COCO train 2017 set, 4 for training and 4 for validation. This dataset is ideal for testing and
debugging object detection models, or for experimenting with new detection approaches. With 8 images, it is small enough
to be easily manageable, yet diverse enough to test training pipelines for errors and act as a sanity check before
training larger datasets.

This dataset is intended for use with Ultralytics [HUB](https://hub.ultralytics.com)
and [YOLOv8](https://github.com/ultralytics/ultralytics).

## Dataset YAML

A YAML (Yet Another Markup Language) file is used to define the dataset configuration. It contains information about the dataset's paths, classes, and other relevant information. In the case of the COCO8-Pose dataset, the `coco8-pose.yaml` file is maintained at [https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/coco8-pose.yaml](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/coco8-pose.yaml).

!!! example "ultralytics/datasets/coco8-pose.yaml"

    ```yaml
    --8<-- "ultralytics/datasets/coco8-pose.yaml"
    ```

## Usage

To train a YOLOv8n model on the COCO8-Pose dataset for 100 epochs with an image size of 640, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model [Training](../../modes/train.md) page.

!!! example "Train Example"

    === "Python"

        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
        
        # Train the model
        model.train(data='coco8-pose.yaml', epochs=100, imgsz=640)
        ```

    === "CLI"

        ```bash
        # Start training from a pretrained *.pt model
        yolo detect train data=coco8-pose.yaml model=yolov8n.pt epochs=100 imgsz=640
        ```

## Sample Images and Annotations

Here are some examples of images from the COCO8-Pose dataset, along with their corresponding annotations:

<img src="https://user-images.githubusercontent.com/26833433/236818283-52eecb96-fc6a-420d-8a26-d488b352dd4c.jpg" alt="Dataset sample image" width="800">

- **Mosaiced Image**: This image demonstrates a training batch composed of mosaiced dataset images. Mosaicing is a technique used during training that combines multiple images into a single image to increase the variety of objects and scenes within each training batch. This helps improve the model's ability to generalize to different object sizes, aspect ratios, and contexts.

The example showcases the variety and complexity of the images in the COCO8-Pose dataset and the benefits of using mosaicing during the training process.

## Citations and Acknowledgments

If you use the COCO dataset in your research or development work, please cite the following paper:

```bibtex
@misc{lin2015microsoft,
      title={Microsoft COCO: Common Objects in Context}, 
      author={Tsung-Yi Lin and Michael Maire and Serge Belongie and Lubomir Bourdev and Ross Girshick and James Hays and Pietro Perona and Deva Ramanan and C. Lawrence Zitnick and Piotr Dollár},
      year={2015},
      eprint={1405.0312},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}
```

We would like to acknowledge the COCO Consortium for creating and maintaining this valuable resource for the computer vision community. For more information about the COCO dataset and its creators, visit the [COCO dataset website](https://cocodataset.org/#home).

================================================
FILE: docs/datasets/pose/index.md
================================================
---
comments: true
description: Learn how to format your dataset for training YOLO models with Ultralytics YOLO format using our concise tutorial and example YAML files.
---

# Pose Estimation Datasets Overview

## Supported Dataset Formats

### Ultralytics YOLO format

** Label Format **

The dataset format used for training YOLO segmentation models is as follows:

1. One text file per image: Each image in the dataset has a corresponding text file with the same name as the image file and the ".txt" extension.
2. One row per object: Each row in the text file corresponds to one object instance in the image.
3. Object information per row: Each row contains the following information about the object instance:
    - Object class index: An integer representing the class of the object (e.g., 0 for person, 1 for car, etc.).
    - Object center coordinates: The x and y coordinates of the center of the object, normalized to be between 0 and 1.
    - Object width and height: The width and height of the object, normalized to be between 0 and 1.
    - Object keypoint coordinates: The keypoints of the object, normalized to be between 0 and 1.

Here is an example of the label format for pose estimation task:

Format with Dim = 2

```
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>
```

Format with Dim = 3

```
<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> <pxn> <pyn> <p2-visibility>
```

In this format, `<class-index>` is the index of the class for the object,`<x> <y> <width> <height>` are coordinates of boudning box, and `<px1> <py1> <px2> <py2> ... <pxn> <pyn>` are the pixel coordinates of the keypoints. The coordinates are separated by spaces.

** Dataset file format **

The Ultralytics framework uses a YAML file format to define the dataset and model configuration for training Detection Models. Here is an example of the YAML format used for defining a detection dataset:

```yaml
train: <path-to-training-images>
val: <path-to-validation-images>

nc: <number-of-classes>
names: [<class-1>, <class-2>, ..., <class-n>]

# Keypoints
kpt_shape: [num_kpts, dim]  # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [n1, n2 ... , n(num_kpts)]

```

The `train` and `val` fields specify the paths to the directories containing the training and validation images, respectively.

The `nc` field specifies the number of object classes in the dataset.

The `names` field is a list of the names of the object classes. The order of the names should match the order of the object class indices in the YOLO dataset files.

NOTE: Either `nc` or `names` must be defined. Defining both are not mandatory

Alternatively, you can directly define class names like this:

```
names:
  0: person
  1: bicycle
```

(Optional) if the points are symmetric then need flip_idx, like left-right side of human or face.
For example let's say there're five keypoints of facial landmark: [left eye, right eye, nose, left point of mouth, right point of mouse], and the original index is [0, 1, 2, 3, 4], then flip_idx is [1, 0, 2, 4, 3].(just exchange the left-right index, i.e 0-1 and 3-4, and do not modify others like nose in this example)

** Example **

```yaml
train: data/train/
val: data/val/

nc: 2
names: ['person', 'car']

# Keypoints
kpt_shape: [17, 3]  # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
```

## Usage

!!! example ""

    === "Python"
    
        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n-pose.pt')  # load a pretrained model (recommended for training)

        # Train the model
        model.train(data='coco128-pose.yaml', epochs=100, imgsz=640)
        ```
    === "CLI"
    
        ```bash
        # Start training from a pretrained *.pt model
        yolo detect train data=coco128-pose.yaml model=yolov8n-pose.pt epochs=100 imgsz=640
        ```

## Supported Datasets

TODO

## Port or Convert label formats

### COCO dataset format to YOLO format

```
from ultralytics.yolo.data.converter import convert_coco

convert_coco(labels_dir='../coco/annotations/', use_keypoints=True)
```

================================================
FILE: docs/datasets/segment/coco.md
================================================
---
comments: true
---

# 🚧 Page Under Construction ⚒

This page is currently under construction!️ 👷Please check back later for updates. 😃🔜


================================================
FILE: docs/datasets/segment/coco8-seg.md
================================================
---
comments: true
description: Test and debug segmentation models on small, versatile COCO8-Seg instance segmentation dataset, now available for use with YOLOv8 and Ultralytics HUB.
---

# COCO8-Seg Dataset

## Introduction

[Ultralytics](https://ultralytics.com) COCO8-Seg is a small, but versatile instance segmentation dataset composed of the
first 8 images of the COCO train 2017 set, 4 for training and 4 for validation. This dataset is ideal for testing and
debugging segmentation models, or for experimenting with new detection approaches. With 8 images, it is small enough to
be easily manageable, yet diverse enough to test training pipelines for errors and act as a sanity check before training
larger datasets.

This dataset is intended for use with Ultralytics [HUB](https://hub.ultralytics.com)
and [YOLOv8](https://github.com/ultralytics/ultralytics).

## Dataset YAML

A YAML (Yet Another Markup Language) file is used to define the dataset configuration. It contains information about the dataset's paths, classes, and other relevant information. In the case of the COCO8-Seg dataset, the `coco8-seg.yaml` file is maintained at [https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/coco8-seg.yaml](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/coco8-seg.yaml).

!!! example "ultralytics/datasets/coco8-seg.yaml"

    ```yaml
    --8<-- "ultralytics/datasets/coco8-seg.yaml"
    ```

## Usage

To train a YOLOv8n model on the COCO8-Seg dataset for 100 epochs with an image size of 640, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model [Training](../../modes/train.md) page.

!!! example "Train Example"

    === "Python"

        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
        
        # Train the model
        model.train(data='coco8-seg.yaml', epochs=100, imgsz=640)
        ```

    === "CLI"

        ```bash
        # Start training from a pretrained *.pt model
        yolo detect train data=coco8-seg.yaml model=yolov8n.pt epochs=100 imgsz=640
        ```

## Sample Images and Annotations

Here are some examples of images from the COCO8-Seg dataset, along with their corresponding annotations:

<img src="https://user-images.githubusercontent.com/26833433/236818387-f7bde7df-caaa-46d1-8341-1f7504cd11a1.jpg" alt="Dataset sample image" width="800">

- **Mosaiced Image**: This image demonstrates a training batch composed of mosaiced dataset images. Mosaicing is a technique used during training that combines multiple images into a single image to increase the variety of objects and scenes within each training batch. This helps improve the model's ability to generalize to different object sizes, aspect ratios, and contexts.

The example showcases the variety and complexity of the images in the COCO8-Seg dataset and the benefits of using mosaicing during the training process.

## Citations and Acknowledgments

If you use the COCO dataset in your research or development work, please cite the following paper:

```bibtex
@misc{lin2015microsoft,
      title={Microsoft COCO: Common Objects in Context}, 
      author={Tsung-Yi Lin and Michael Maire and Serge Belongie and Lubomir Bourdev and Ross Girshick and James Hays and Pietro Perona and Deva Ramanan and C. Lawrence Zitnick and Piotr Dollár},
      year={2015},
      eprint={1405.0312},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}
```

We would like to acknowledge the COCO Consortium for creating and maintaining this valuable resource for the computer vision community. For more information about the COCO dataset and its creators, visit the [COCO dataset website](https://cocodataset.org/#home).

================================================
FILE: docs/datasets/segment/index.md
================================================
---
comments: true
description: Learn about the Ultralytics YOLO dataset format for segmentation models. Use YAML to train Detection Models. Convert COCO to YOLO format using Python.
---

# Instance Segmentation Datasets Overview

## Supported Dataset Formats

### Ultralytics YOLO format

** Label Format **

The dataset format used for training YOLO segmentation models is as follows:

1. One text file per image: Each image in the dataset has a corresponding text file with the same name as the image file and the ".txt" extension.
2. One row per object: Each row in the text file corresponds to one object instance in the image.
3. Object information per row: Each row contains the following information about the object instance:
    - Object class index: An integer representing the class of the object (e.g., 0 for person, 1 for car, etc.).
    - Object bounding coordinates: The bounding coordinates around the mask area, normalized to be between 0 and 1.

The format for a single row in the segmentation dataset file is as follows:

```
<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>
```

In this format, `<class-index>` is the index of the class for the object, and `<x1> <y1> <x2> <y2> ... <xn> <yn>` are the bounding coordinates of the object's segmentation mask. The coordinates are separated by spaces.

Here is an example of the YOLO dataset format for a single image with two object instances:

```
0 0.6812 0.48541 0.67 0.4875 0.67656 0.487 0.675 0.489 0.66
1 0.5046 0.0 0.5015 0.004 0.4984 0.00416 0.4937 0.010 0.492 0.0104
```

Note: The length of each row does not have to be equal.

** Dataset file format **

The Ultralytics framework uses a YAML file format to define the dataset and model configuration for training Detection Models. Here is an example of the YAML format used for defining a detection dataset:

```yaml
train: <path-to-training-images>
val: <path-to-validation-images>

nc: <number-of-classes>
names: [ <class-1>, <class-2>, ..., <class-n> ]

```

The `train` and `val` fields specify the paths to the directories containing the training and validation images, respectively.

The `nc` field specifies the number of object classes in the dataset.

The `names` field is a list of the names of the object classes. The order of the names should match the order of the object class indices in the YOLO dataset files.

NOTE: Either `nc` or `names` must be defined. Defining both are not mandatory.

Alternatively, you can directly define class names like this:

```yaml
names:
  0: person
  1: bicycle
```

** Example **

```yaml
train: data/train/
val: data/val/

nc: 2
names: [ 'person', 'car' ]
```

## Usage

!!! example ""

    === "Python"
    
        ```python
        from ultralytics import YOLO
        
        # Load a model
        model = YOLO('yolov8n-seg.pt')  # load a pretrained model (recommended for training)

        # Train the model
        model.train(data='coco128-seg.yaml', epochs=100, imgsz=640)
        ```
    === "CLI"
    
        ```bash
        # Start training from a pretrained *.pt model
        yolo detect train data=coco128-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640
        ```

## Supported Datasets

## Port or Convert label formats

### COCO dataset format to YOLO format

```
from ultralytics.yolo.data.converter import convert_coco

convert_coco(labels_dir='../coco/annotations/', use_segments=True)
```

## Auto-Annotation

Auto-annotation is an essential feature that allows you to generate a segmentation dataset using a pre-trained detection model. It enables you to quickly and accurately annotate a large number of images without the need for manual labeling, saving time and effort.

### Generate Segmentation Dataset Using a Detection Model

To auto-annotate your dataset using the Ultralytics framework, you can use the `auto_annotate` function as shown below:

```python
from ultralytics.yolo.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model='sam_b.pt')
```

| Argument   | Type                | Description                                                                                             | Default      |
|------------|---------------------|---------------------------------------------------------------------------------------------------------|--------------|
| data       | str                 | Path to a folder containing images to be annotated.                                                     |              |
| det_model  | str, optional       | Pre-trained YOLO detection model. Defaults to 'yolov8x.pt'.                                             | 'yolov8x.pt' |
| sam_model  | str, optional       | Pre-trained SAM segmentation model. Defaults to 'sam_b.pt'.                                             | 'sam_b.pt'   |
| device     | str, optional       | Device to run the models on. Defaults to an empty string (CPU or GPU, if available).                    |              |
| output_dir | str, None, optional | Directory to save the annotated results. Defaults to a 'labels' folder in the same directory as 'data'. | None         |

The `auto_annotate` function takes the path to your images, along with optional arguments for specifying the pre-trained detection and [SAM segmentation models](https://docs.ultralytics.com/models/sam), the device to run the models on, and the output directory for saving the annotated results.

By leveraging the power of pre-trained models, auto-annotation can significantly reduce the time and effort required for creating high-quality segmentation datasets. This feature is particularly useful for researchers and developers working with large image collections, as it allows them to focus on model development and evaluation rather than manual annotation.

================================================
FILE: docs/datasets/track/index.md
================================================
---
comments: true
description: Discover the datasets compatible with Multi-Object Detector. Train your trackers and make your detections more efficient with Ultralytics' YOLO.
---

# Multi-object Tracking Datasets Overview

## Dataset Format (Coming Soon)

Multi-Object Detector doesn't need standalone training and directly supports pre-trained detection, segmentation or Pose models.
Support for training trackers alone is coming soon

## Usage

!!! example ""

    === "Python"
    
        ```python
        from ultralytics import YOLO

        model = YOLO('yolov8n.pt')
        results = model.track(source="https://youtu.be/Zgi9g1ksQHc", conf=0.3, iou=0.5, show=True) 
        ```
    === "CLI"
    
        ```bash
        yolo track model=yolov8n.pt source="https://youtu.be/Zgi9g1ksQHc" conf=0.3, iou=0.5 show
        ```

================================================
FILE: docs/help/CLA.md
================================================
---
description: Individual Contributor License Agreement. Settle Intellectual Property issues for Contributions made to anything open source released by Ultralytics.
---

# Ultralytics Individual Contributor License Agreement

Thank you for your interest in contributing to open source software projects (“Projects”) made available by Ultralytics
SE or its affiliates (“Ultralytics”). This Individual Contributor License Agreement (“Agreement”) sets out the terms
governing any source code, object code, bug fixes, configuration changes, tools, specifications, documentation, data,
materials, feedback, information or other works of authorship that you submit or have submitted, in any form and in any
manner, to Ultralytics in respect of any of the Projects (collectively “Contributions”). If you have any questions
respecting this Agreement, please contact hello@ultralytics.com.

You agree that the following terms apply to all of your past, present and future Contributions. Except for the licenses
granted in this Agreement, you retain all of your right, title and interest in and to your Contributions.

**Copyright License.** You hereby grant, and agree to grant, to Ultralytics a non-exclusive, perpetual, irrevocable,
worldwide, fully-paid, royalty-free, transferable copyright license to reproduce, prepare derivative works of, publicly
display, publicly perform, and distribute your Contributions and such derivative works, with the right to sublicense the
foregoing rights through multiple tiers of sublicensees.

**Patent License.** You hereby grant, and agree to grant, to Ultralytics a non-exclusive, perpetual, irrevocable,
worldwide, fully-paid, royalty-free, transferable patent license to make, have made, use, offer to sell, sell,
import, and otherwise transfer your Contributions, where such license applies only to those patent claims
licensable by you that are necessarily infringed by your Contributions alone or by combination of your
Contributions with the Project to which such Contributions were submitted, with the right to sublicense the
foregoing rights through multiple tiers of sublicensees.

**Moral Rights.** To the fullest extent permitted under applicable law, you hereby waive, and agree not to
assert, all of your “moral rights” in or relating to your Contributions for the benefit of Ultralytics, its assigns, and
their respective direct and indirect sublicensees.

**Third Party Content/Rights.** If your Contribution includes or is based on any source code, object code, bug
fixes, configuration changes, tools, specifications, documentation, data, materials, feedback, information or
other works of authorship that were not authored by you (“Third Party Content”) or if you are aware of any
third party intellectual property or proprietary rights associated with your Contribution (“Third Party Rights”),
then you agree to include with the submission of your Contribution full details respecting such Third Party
Content and Third Party Rights, including, without limitation, identification of which aspects of your
Contribution contain Third Party Content or are associated with Third Party Rights, the owner/author of the
Third Party Content and Third Party Rights, where you obtained the Third Party Content, and any applicable
third party license terms or restrictions respecting the Third Party Content and Third Party Rights. For greater
certainty, the foregoing obligations respecting the identification of Third Party Content and Third Party Rights
do not apply to any portion of a Project that is incorporated into your Contribution to that same Project.

**Representations.** You represent that, other than the Third Party Content and Third Party Rights identified by
you in accordance with this Agreement, you are the sole author of your Contributions and are legally entitled
to grant the foregoing licenses and waivers in respect of your Contributions. If your Contributions were
created in the course of your employment with your past or present employer(s), you represent that such
employer(s) has authorized you to make your Contributions on behalf of such employer(s) or such employer
(s) has waived all of their right, title or interest in or to your Contributions.

**Disclaimer.** To the fullest extent permitted under applicable law, your Contributions are provided on an "asis"
basis, without any warranties or conditions, express or implied, including, without limitation, any implied
warranties or conditions of non-infringement, merchantability or fitness for a particular purpose. You are not
required to provide support for your Contributions, except to the extent you desire to provide support.

**No Obligation.** You acknowledge that Ultralytics is under no obligation to use or incorporate your Contributions
into any of the Projects. The decision to use or incorporate your Contributions into any of the Projects will be
made at the sole discretion of Ultralytics or its authorized delegates ..

**Disputes.** This Agreement shall be governed by and construed in accordance with the laws of the State of
New York, United States of America, without giving effect to its principles or rules regarding conflicts of laws,
other than such principles directing application of New York law. The parties hereby submit to venue in, and
jurisdiction of the courts located in New York, New York for purposes relating to this Agreement. In the event
that any of the provisions of this Agreement shall be held by a court or other tribunal of competent jurisdiction
to be unenforceable, the remaining portions hereof shall remain in full force and effect.

**Assignment.** You agree that Ultralytics may assign this Agreement, and all of its rights, obligations and licenses
hereunder.

================================================
FILE: docs/help/FAQ.md
================================================
---
comments: true
description: 'Get quick answers to common Ultralytics YOLO questions: Hardware requirements, fine-tuning, conversion, real-time detection, and accuracy tips.'
---

# Ultralytics YOLO Frequently Asked Questions (FAQ)

This FAQ section addresses some common questions and issues users might encounter while working with Ultralytics YOLO repositories.

## 1. What are the hardware requirements for running Ultralytics YOLO?

Ultralytics YOLO can be run on a variety of hardware configurations, including CPUs, GPUs, and even some edge devices. However, for optimal performance and faster training and inference, we recommend using a GPU with a minimum of 8GB of memory. NVIDIA GPUs with CUDA support are ideal for this purpose.

## 2. How do I fine-tune a pre-trained YOLO model on my custom dataset?

To fine-tune a pre-trained YOLO model on your custom dataset, you'll need to create a dataset configuration file (YAML) that defines the dataset's properties, such as the path to the images, the number of classes, and class names. Next, you'll need to modify the model configuration file to match the number of classes in your dataset. Finally, use the `train.py` script to start the training process with your custom dataset and the pre-trained model. You can find a detailed guide on fine-tuning YOLO in the Ultralytics documentation.

## 3. How do I convert a YOLO model to ONNX or TensorFlow format?

Ultralytics provides built-in support for converting YOLO models to ONNX format. You can use the `export.py` script to convert a saved model to ONNX format. If you need to convert the model to TensorFlow format, you can use the ONNX model as an intermediary and then use the ONNX-TensorFlow converter to convert the ONNX model to TensorFlow format.

## 4. Can I use Ultralytics YOLO for real-time object detection?

Yes, Ultralytics YOLO is designed to be efficient and fast, making it suitable for real-time object detection tasks. The actual performance will depend on your hardware configuration and the complexity of the model. Using a GPU and optimizing the model for your specific use case can help achieve real-time performance.

## 5. How can I improve the accuracy of my YOLO model?

Improving the accuracy of a YOLO model may involve several strategies, such as:

- Fine-tuning the model on more annotated data
- Data augmentation to increase the variety of training samples
- Using a larger or more complex model architecture
- Adjusting the learning rate, batch size, and other hyperparameters
- Using techniques like transfer learning or knowledge distillation

Remember that there's often a trade-off between accuracy and inference speed, so finding the right balance is crucial for your specific application.

If you have any more questions or need assistance, don't hesitate to consult the Ultralytics documentation or reach out to the community through GitHub Issues or the official discussion forum.

================================================
FILE: docs/help/code_of_conduct.md
================================================
---
comments: true
description: Read the Ultralytics Contributor Covenant Code of Conduct. Learn ways to create a welcoming community & consequences for inappropriate conduct.
---

# Ultralytics Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
  and learning from the experience
- Focusing on what is best not just for us as individuals, but for the
  overall community

Examples of unacceptable behavior include:

- The use of sexualized language or imagery, and sexual attention or
  advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email
  address, without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
hello@ultralytics.com.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series
of actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.

[homepage]: https://www.contributor-covenant.org

================================================
FILE: docs/help/contributing.md
================================================
---
comments: true
description: Learn how to contribute to Ultralytics Open-Source YOLO Repositories with contributions guidelines, pull requests requirements, and GitHub CI tests.
---

# Contributing to Ultralytics Open-Source YOLO Repositories

First of all, thank you for your interest in contributing to Ultralytics open-source YOLO repositories! Your contributions will help improve the project and benefit the community. This document provides guidelines and best practices for contributing to Ultralytics YOLO repositories.

## Table of Contents

- [Code of Conduct](#code-of-conduct)
- [Pull Requests](#pull-requests)
    - [CLA Signing](#cla-signing)
    - [Google-Style Docstrings](#google-style-docstrings)
    - [GitHub Actions CI Tests](#github-actions-ci-tests)
- [Bug Reports](#bug-reports)
    - [Minimum Reproducible Example](#minimum-reproducible-example)
- [License and Copyright](#license-and-copyright)

## Code of Conduct

All contributors are expected to adhere to the [Code of Conduct](code_of_conduct.md) to ensure a welcoming and inclusive environment for everyone.

## Pull Requests

We welcome contributions in the form of pull requests. To make the review process smoother, please follow these guidelines:

1. **Fork the repository**: Fork the Ultralytics YOLO repository to your own GitHub account.

2. **Create a branch**: Create a new branch in your forked repository with a descriptive name for your changes.

3. **Make your changes**: Make the changes you want to contribute. Ensure that your changes follow the coding style of the project and do not introduce new errors or warnings.

4. **Test your changes**: Test your changes locally to ensure that they work as expected and do not introduce new issues.

5. **Commit your changes**: Commit your changes with a descriptive commit message. Make sure to include any relevant issue numbers in your commit message.

6. **Create a pull request**: Create a pull request from your forked repository to the main Ultralytics YOLO repository. In the pull request description, provide a clear explanation of your changes and how they improve the project.

### CLA Signing

Before we can accept your pull request, you need to sign a [Contributor License Agreement (CLA)](CLA.md). This is a legal document stating that you agree to the terms of contributing to the Ultralytics YOLO repositories. The CLA ensures that your contributions are properly licensed and that the project can continue to be distributed under the AGPL-3.0 license.

To sign the CLA, follow the instructions provided by the CLA bot after you submit your PR.

### Google-Style Docstrings

When adding new functions or classes, please include a [Google-style docstring](https://google.github.io/styleguide/pyguide.html) to provide clear and concise documentation for other developers. This will help ensure that your contributions are easy to understand and maintain.

Example Google-style docstring:

```python
def example_function(arg1: int, arg2: str) -> bool:
    """Example function that demonstrates Google-style docstrings.

    Args:
        arg1 (int): The first argument.
        arg2 (str): The second argument.

    Returns:
        bool: True if successful, False otherwise.

    Raises:
        ValueError: If `arg1` is negative or `arg2` is empty.
    """
    if arg1 < 0 or not arg2:
        raise ValueError("Invalid input values")
    return True
```

### GitHub Actions CI Tests

Before your pull request can be merged, all GitHub Actions Continuous Integration (CI) tests must pass. These tests include linting, unit tests, and other checks to ensure that your changes meet the quality standards of the project. Make sure to review the output of the GitHub Actions and fix any issues

================================================
FILE: docs/help/index.md
================================================
---
comments: true
description: Get comprehensive resources for Ultralytics YOLO repositories. Find guides, FAQs, MRE creation, CLA & more. Join the supportive community now!
---

Welcome to the Ultralytics Help page! We are committed to providing you with comprehensive resources to make your experience with Ultralytics YOLO repositories as smooth and enjoyable as possible. On this page, you'll find essential links to guides and documents that will help you navigate through common tasks and address any questions you might have while using our repositories.

- [Frequently Asked Questions (FAQ)](FAQ.md): Find answers to common questions and issues faced by users and contributors of Ultralytics YOLO repositories.
- [Contributing Guide](contributing.md): Learn the best practices for submitting pull requests, reporting bugs, and contributing to the development of our repositories.
- [Contributor License Agreement (CLA)](CLA.md): Familiarize yourself with our CLA to understand the terms and conditions for contributing to Ultralytics projects.
- [Minimum Reproducible Example (MRE) Guide](minimum_reproducible_example.md): Understand how to create an MRE when submitting bug reports to ensure that our team can quickly and efficiently address the issue.
- [Code of Conduct](code_of_conduct.md): Learn about our community guidelines and expectations to ensure a welcoming and inclusive environment for all participants.
- [Security Policy](../SECURITY.md): Understand our security practices and how to report security vulnerabilities responsibly.

We highly recommend going through these guides to make the most of your collaboration with the Ultralytics community. Our goal is to maintain a welcoming and supportive environment for all users and contributors. If you need further assistance, don't hesitate to reach out to us through GitHub Issues or the official discussion forum. Happy coding!

================================================
FILE: docs/help/minimum_reproducible_example.md
================================================
---
comments: true
description: Learn how to create a Minimum Reproducible Example (MRE) for Ultralytics YOLO bug reports to help maintainers and contributors understand your issue better.
---

# Creating a Minimum Reproducible Example for Bug Reports in Ultralytics YOLO Repositories

When submitting a bug report for Ultralytics YOLO repositories, it's essential to provide a [minimum reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) (MRE). An MRE is a small, self-contained piece of code that demonstrates the problem you're experiencing. Providing an MRE helps maintainers and contributors understand the issue and work on a fix more efficiently. This guide explains how to create an MRE when submitting bug reports to Ultralytics YOLO repositories.

## 1. Isolate the Problem

The first step in creating an MRE is to isolate the problem. This means removing any unnecessary code or dependencies that are not directly related to the issue. Focus on the specific part of the code that is causing the problem and remove any irrelevant code.

## 2. Use Public Models and Datasets

When creating an MRE, use publicly available models and datasets to reproduce the issue. For example, use the 'yolov8n.pt' model and the 'coco8.yaml' dataset. This ensures that the maintainers and contributors can easily run your example and investigate the problem without needing access to proprietary data or custom models.

## 3. Include All Necessary Dependencies

Make sure to include all the necessary dependencies in your MRE. If your code relies on external libraries, specify the required packages and their versions. Ideally, provide a `requirements.txt` file or list the dependencies in your bug report.

## 4. Write a Clear Description of the Issue

Provide a clear and concise description of the issue you're experiencing. Explain the expected behavior and the actual behavior you're encountering. If applicable, include any relevant error messages or logs.

## 5. Format Your Code Properly

When submitting an MRE, format your code properly using code blocks in the issue description. This makes it easier for others to read and understand your code. In GitHub, you can create a code block by wrapping your code with triple backticks (\```) and specifying the language:

<pre>
```python
# Your Python code goes here
```
</pre>

## 6. Test Your MRE

Before submitting your MRE, test it to ensure that it accurately reproduces the issue. Make sure that others can run your example without any issues or modifications.

## Example of an MRE

Here's an example of an MRE for a hypothetical bug report:

**Bug description:**

When running the `detect.py` script on the sample image from the 'coco8.yaml' dataset, I get an error related to the dimensions of the input tensor.

**MRE:**

```python
import torch
from ultralytics import YOLO

# Load the model
model = YOLO("yol
Download .txt
gitextract__3y0qhhx/

├── CITATION.cff
├── CONTRIBUTING.md
├── LICENSE
├── MANIFEST.in
├── README.md
├── bin/
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── activate.nu
│   ├── activate.ps1
│   ├── activate_this.py
│   ├── deactivate.nu
│   ├── pip
│   ├── pip-3.7
│   ├── pip3
│   ├── pip3.7
│   ├── python
│   ├── python3
│   ├── python3.7
│   ├── wheel
│   ├── wheel-3.7
│   ├── wheel3
│   └── wheel3.7
├── docker/
│   ├── Dockerfile
│   ├── Dockerfile-arm64
│   ├── Dockerfile-cpu
│   └── Dockerfile-jetson
├── docs/
│   ├── CNAME
│   ├── README.md
│   ├── SECURITY.md
│   ├── build_reference.py
│   ├── datasets/
│   │   ├── classify/
│   │   │   ├── caltech101.md
│   │   │   ├── caltech256.md
│   │   │   ├── cifar10.md
│   │   │   ├── cifar100.md
│   │   │   ├── fashion-mnist.md
│   │   │   ├── imagenet.md
│   │   │   ├── imagenet10.md
│   │   │   ├── imagenette.md
│   │   │   ├── imagewoof.md
│   │   │   ├── index.md
│   │   │   └── mnist.md
│   │   ├── detect/
│   │   │   ├── argoverse.md
│   │   │   ├── coco.md
│   │   │   ├── coco8.md
│   │   │   ├── globalwheat2020.md
│   │   │   ├── index.md
│   │   │   ├── objects365.md
│   │   │   ├── sku-110k.md
│   │   │   ├── visdrone.md
│   │   │   ├── voc.md
│   │   │   └── xview.md
│   │   ├── index.md
│   │   ├── pose/
│   │   │   ├── coco.md
│   │   │   ├── coco8-pose.md
│   │   │   └── index.md
│   │   ├── segment/
│   │   │   ├── coco.md
│   │   │   ├── coco8-seg.md
│   │   │   └── index.md
│   │   └── track/
│   │       └── index.md
│   ├── help/
│   │   ├── CLA.md
│   │   ├── FAQ.md
│   │   ├── code_of_conduct.md
│   │   ├── contributing.md
│   │   ├── index.md
│   │   └── minimum_reproducible_example.md
│   ├── hub/
│   │   ├── app/
│   │   │   ├── android.md
│   │   │   ├── index.md
│   │   │   └── ios.md
│   │   ├── datasets.md
│   │   ├── index.md
│   │   ├── inference_api.md
│   │   ├── integrations.md
│   │   ├── models.md
│   │   ├── projects.md
│   │   └── quickstart.md
│   ├── index.md
│   ├── models/
│   │   ├── index.md
│   │   ├── rtdetr.md
│   │   ├── sam.md
│   │   ├── yolov3.md
│   │   ├── yolov5.md
│   │   └── yolov8.md
│   ├── modes/
│   │   ├── benchmark.md
│   │   ├── export.md
│   │   ├── index.md
│   │   ├── predict.md
│   │   ├── track.md
│   │   ├── train.md
│   │   └── val.md
│   ├── overrides/
│   │   └── partials/
│   │       ├── comments.html
│   │       └── source-file.html
│   ├── quickstart.md
│   ├── reference/
│   │   ├── hub/
│   │   │   ├── auth.md
│   │   │   ├── session.md
│   │   │   └── utils.md
│   │   ├── nn/
│   │   │   ├── autobackend.md
│   │   │   ├── autoshape.md
│   │   │   ├── modules/
│   │   │   │   ├── block.md
│   │   │   │   ├── conv.md
│   │   │   │   ├── head.md
│   │   │   │   ├── transformer.md
│   │   │   │   └── utils.md
│   │   │   └── tasks.md
│   │   ├── tracker/
│   │   │   ├── track.md
│   │   │   ├── trackers/
│   │   │   │   ├── basetrack.md
│   │   │   │   ├── bot_sort.md
│   │   │   │   └── byte_tracker.md
│   │   │   └── utils/
│   │   │       ├── gmc.md
│   │   │       ├── kalman_filter.md
│   │   │       └── matching.md
│   │   └── yolo/
│   │       ├── data/
│   │       │   ├── annotator.md
│   │       │   ├── augment.md
│   │       │   ├── base.md
│   │       │   ├── build.md
│   │       │   ├── converter.md
│   │       │   ├── dataloaders/
│   │       │   │   ├── stream_loaders.md
│   │       │   │   ├── v5augmentations.md
│   │       │   │   └── v5loader.md
│   │       │   ├── dataset.md
│   │       │   ├── dataset_wrappers.md
│   │       │   └── utils.md
│   │       ├── engine/
│   │       │   ├── exporter.md
│   │       │   ├── model.md
│   │       │   ├── predictor.md
│   │       │   ├── results.md
│   │       │   ├── trainer.md
│   │       │   └── validator.md
│   │       ├── utils/
│   │       │   ├── autobatch.md
│   │       │   ├── benchmarks.md
│   │       │   ├── callbacks/
│   │       │   │   ├── base.md
│   │       │   │   ├── clearml.md
│   │       │   │   ├── comet.md
│   │       │   │   ├── hub.md
│   │       │   │   ├── mlflow.md
│   │       │   │   ├── neptune.md
│   │       │   │   ├── raytune.md
│   │       │   │   ├── tensorboard.md
│   │       │   │   └── wb.md
│   │       │   ├── checks.md
│   │       │   ├── dist.md
│   │       │   ├── downloads.md
│   │       │   ├── errors.md
│   │       │   ├── files.md
│   │       │   ├── instance.md
│   │       │   ├── loss.md
│   │       │   ├── metrics.md
│   │       │   ├── ops.md
│   │       │   ├── plotting.md
│   │       │   ├── tal.md
│   │       │   └── torch_utils.md
│   │       └── v8/
│   │           ├── classify/
│   │           │   ├── predict.md
│   │           │   ├── train.md
│   │           │   └── val.md
│   │           ├── detect/
│   │           │   ├── predict.md
│   │           │   ├── train.md
│   │           │   └── val.md
│   │           ├── pose/
│   │           │   ├── predict.md
│   │           │   ├── train.md
│   │           │   └── val.md
│   │           └── segment/
│   │               ├── predict.md
│   │               ├── train.md
│   │               └── val.md
│   ├── robots.txt
│   ├── stylesheets/
│   │   └── style.css
│   ├── tasks/
│   │   ├── classify.md
│   │   ├── detect.md
│   │   ├── index.md
│   │   ├── pose.md
│   │   └── segment.md
│   ├── usage/
│   │   ├── callbacks.md
│   │   ├── cfg.md
│   │   ├── cli.md
│   │   ├── engine.md
│   │   ├── hyperparameter_tuning.md
│   │   └── python.md
│   └── yolov5/
│       ├── environments/
│       │   ├── aws_quickstart_tutorial.md
│       │   ├── docker_image_quickstart_tutorial.md
│       │   └── google_cloud_quickstart_tutorial.md
│       ├── index.md
│       ├── quickstart_tutorial.md
│       └── tutorials/
│           ├── architecture_description.md
│           ├── clearml_logging_integration.md
│           ├── comet_logging_integration.md
│           ├── hyperparameter_evolution.md
│           ├── model_ensembling.md
│           ├── model_export.md
│           ├── model_pruning_and_sparsity.md
│           ├── multi_gpu_training.md
│           ├── neural_magic_pruning_quantization.md
│           ├── pytorch_hub_model_loading.md
│           ├── roboflow_datasets_integration.md
│           ├── running_on_jetson_nano.md
│           ├── test_time_augmentation.md
│           ├── tips_for_best_training_results.md
│           ├── train_custom_data.md
│           └── transfer_learning_with_frozen_layers.md
├── examples/
│   ├── README.md
│   ├── YOLOv8-CPP-Inference/
│   │   ├── CMakeLists.txt
│   │   ├── README.md
│   │   ├── inference.cpp
│   │   ├── inference.h
│   │   └── main.cpp
│   ├── YOLOv8-OpenCV-ONNX-Python/
│   │   ├── README.md
│   │   └── main.py
│   ├── hub.ipynb
│   └── tutorial.ipynb
├── lib/
│   └── python3.7/
│       └── site-packages/
│           ├── _distutils_hack/
│           │   ├── __init__.py
│           │   └── override.py
│           ├── _virtualenv.pth
│           ├── _virtualenv.py
│           ├── distutils-precedence.pth
│           ├── pip/
│           │   ├── __init__.py
│           │   ├── __main__.py
│           │   ├── __pip-runner__.py
│           │   ├── _internal/
│           │   │   ├── __init__.py
│           │   │   ├── build_env.py
│           │   │   ├── cache.py
│           │   │   ├── cli/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── autocompletion.py
│           │   │   │   ├── base_command.py
│           │   │   │   ├── cmdoptions.py
│           │   │   │   ├── command_context.py
│           │   │   │   ├── main.py
│           │   │   │   ├── main_parser.py
│           │   │   │   ├── parser.py
│           │   │   │   ├── progress_bars.py
│           │   │   │   ├── req_command.py
│           │   │   │   ├── spinners.py
│           │   │   │   └── status_codes.py
│           │   │   ├── commands/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── cache.py
│           │   │   │   ├── check.py
│           │   │   │   ├── completion.py
│           │   │   │   ├── configuration.py
│           │   │   │   ├── debug.py
│           │   │   │   ├── download.py
│           │   │   │   ├── freeze.py
│           │   │   │   ├── hash.py
│           │   │   │   ├── help.py
│           │   │   │   ├── index.py
│           │   │   │   ├── inspect.py
│           │   │   │   ├── install.py
│           │   │   │   ├── list.py
│           │   │   │   ├── search.py
│           │   │   │   ├── show.py
│           │   │   │   ├── uninstall.py
│           │   │   │   └── wheel.py
│           │   │   ├── configuration.py
│           │   │   ├── distributions/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── base.py
│           │   │   │   ├── installed.py
│           │   │   │   ├── sdist.py
│           │   │   │   └── wheel.py
│           │   │   ├── exceptions.py
│           │   │   ├── index/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── collector.py
│           │   │   │   ├── package_finder.py
│           │   │   │   └── sources.py
│           │   │   ├── locations/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _distutils.py
│           │   │   │   ├── _sysconfig.py
│           │   │   │   └── base.py
│           │   │   ├── main.py
│           │   │   ├── metadata/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _json.py
│           │   │   │   ├── base.py
│           │   │   │   ├── importlib/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── _compat.py
│           │   │   │   │   ├── _dists.py
│           │   │   │   │   └── _envs.py
│           │   │   │   └── pkg_resources.py
│           │   │   ├── models/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── candidate.py
│           │   │   │   ├── direct_url.py
│           │   │   │   ├── format_control.py
│           │   │   │   ├── index.py
│           │   │   │   ├── installation_report.py
│           │   │   │   ├── link.py
│           │   │   │   ├── scheme.py
│           │   │   │   ├── search_scope.py
│           │   │   │   ├── selection_prefs.py
│           │   │   │   ├── target_python.py
│           │   │   │   └── wheel.py
│           │   │   ├── network/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── auth.py
│           │   │   │   ├── cache.py
│           │   │   │   ├── download.py
│           │   │   │   ├── lazy_wheel.py
│           │   │   │   ├── session.py
│           │   │   │   ├── utils.py
│           │   │   │   └── xmlrpc.py
│           │   │   ├── operations/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── build/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── build_tracker.py
│           │   │   │   │   ├── metadata.py
│           │   │   │   │   ├── metadata_editable.py
│           │   │   │   │   ├── metadata_legacy.py
│           │   │   │   │   ├── wheel.py
│           │   │   │   │   ├── wheel_editable.py
│           │   │   │   │   └── wheel_legacy.py
│           │   │   │   ├── check.py
│           │   │   │   ├── freeze.py
│           │   │   │   ├── install/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── editable_legacy.py
│           │   │   │   │   ├── legacy.py
│           │   │   │   │   └── wheel.py
│           │   │   │   └── prepare.py
│           │   │   ├── pyproject.py
│           │   │   ├── req/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── constructors.py
│           │   │   │   ├── req_file.py
│           │   │   │   ├── req_install.py
│           │   │   │   ├── req_set.py
│           │   │   │   └── req_uninstall.py
│           │   │   ├── resolution/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── base.py
│           │   │   │   ├── legacy/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   └── resolver.py
│           │   │   │   └── resolvelib/
│           │   │   │       ├── __init__.py
│           │   │   │       ├── base.py
│           │   │   │       ├── candidates.py
│           │   │   │       ├── factory.py
│           │   │   │       ├── found_candidates.py
│           │   │   │       ├── provider.py
│           │   │   │       ├── reporter.py
│           │   │   │       ├── requirements.py
│           │   │   │       └── resolver.py
│           │   │   ├── self_outdated_check.py
│           │   │   ├── utils/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _log.py
│           │   │   │   ├── appdirs.py
│           │   │   │   ├── compat.py
│           │   │   │   ├── compatibility_tags.py
│           │   │   │   ├── datetime.py
│           │   │   │   ├── deprecation.py
│           │   │   │   ├── direct_url_helpers.py
│           │   │   │   ├── distutils_args.py
│           │   │   │   ├── egg_link.py
│           │   │   │   ├── encoding.py
│           │   │   │   ├── entrypoints.py
│           │   │   │   ├── filesystem.py
│           │   │   │   ├── filetypes.py
│           │   │   │   ├── glibc.py
│           │   │   │   ├── hashes.py
│           │   │   │   ├── inject_securetransport.py
│           │   │   │   ├── logging.py
│           │   │   │   ├── misc.py
│           │   │   │   ├── models.py
│           │   │   │   ├── packaging.py
│           │   │   │   ├── setuptools_build.py
│           │   │   │   ├── subprocess.py
│           │   │   │   ├── temp_dir.py
│           │   │   │   ├── unpacking.py
│           │   │   │   ├── urls.py
│           │   │   │   ├── virtualenv.py
│           │   │   │   └── wheel.py
│           │   │   ├── vcs/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── bazaar.py
│           │   │   │   ├── git.py
│           │   │   │   ├── mercurial.py
│           │   │   │   ├── subversion.py
│           │   │   │   └── versioncontrol.py
│           │   │   └── wheel_builder.py
│           │   ├── _vendor/
│           │   │   ├── __init__.py
│           │   │   ├── cachecontrol/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _cmd.py
│           │   │   │   ├── adapter.py
│           │   │   │   ├── cache.py
│           │   │   │   ├── caches/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── file_cache.py
│           │   │   │   │   └── redis_cache.py
│           │   │   │   ├── compat.py
│           │   │   │   ├── controller.py
│           │   │   │   ├── filewrapper.py
│           │   │   │   ├── heuristics.py
│           │   │   │   ├── serialize.py
│           │   │   │   └── wrapper.py
│           │   │   ├── certifi/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── __main__.py
│           │   │   │   ├── cacert.pem
│           │   │   │   └── core.py
│           │   │   ├── chardet/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── big5freq.py
│           │   │   │   ├── big5prober.py
│           │   │   │   ├── chardistribution.py
│           │   │   │   ├── charsetgroupprober.py
│           │   │   │   ├── charsetprober.py
│           │   │   │   ├── cli/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   └── chardetect.py
│           │   │   │   ├── codingstatemachine.py
│           │   │   │   ├── cp949prober.py
│           │   │   │   ├── enums.py
│           │   │   │   ├── escprober.py
│           │   │   │   ├── escsm.py
│           │   │   │   ├── eucjpprober.py
│           │   │   │   ├── euckrfreq.py
│           │   │   │   ├── euckrprober.py
│           │   │   │   ├── euctwfreq.py
│           │   │   │   ├── euctwprober.py
│           │   │   │   ├── gb2312freq.py
│           │   │   │   ├── gb2312prober.py
│           │   │   │   ├── hebrewprober.py
│           │   │   │   ├── jisfreq.py
│           │   │   │   ├── johabfreq.py
│           │   │   │   ├── johabprober.py
│           │   │   │   ├── jpcntx.py
│           │   │   │   ├── langbulgarianmodel.py
│           │   │   │   ├── langgreekmodel.py
│           │   │   │   ├── langhebrewmodel.py
│           │   │   │   ├── langhungarianmodel.py
│           │   │   │   ├── langrussianmodel.py
│           │   │   │   ├── langthaimodel.py
│           │   │   │   ├── langturkishmodel.py
│           │   │   │   ├── latin1prober.py
│           │   │   │   ├── mbcharsetprober.py
│           │   │   │   ├── mbcsgroupprober.py
│           │   │   │   ├── mbcssm.py
│           │   │   │   ├── metadata/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   └── languages.py
│           │   │   │   ├── sbcharsetprober.py
│           │   │   │   ├── sbcsgroupprober.py
│           │   │   │   ├── sjisprober.py
│           │   │   │   ├── universaldetector.py
│           │   │   │   ├── utf1632prober.py
│           │   │   │   ├── utf8prober.py
│           │   │   │   └── version.py
│           │   │   ├── colorama/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── ansi.py
│           │   │   │   ├── ansitowin32.py
│           │   │   │   ├── initialise.py
│           │   │   │   ├── win32.py
│           │   │   │   └── winterm.py
│           │   │   ├── distlib/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── compat.py
│           │   │   │   ├── database.py
│           │   │   │   ├── index.py
│           │   │   │   ├── locators.py
│           │   │   │   ├── manifest.py
│           │   │   │   ├── markers.py
│           │   │   │   ├── metadata.py
│           │   │   │   ├── resources.py
│           │   │   │   ├── scripts.py
│           │   │   │   ├── util.py
│           │   │   │   ├── version.py
│           │   │   │   └── wheel.py
│           │   │   ├── distro/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── __main__.py
│           │   │   │   └── distro.py
│           │   │   ├── idna/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── codec.py
│           │   │   │   ├── compat.py
│           │   │   │   ├── core.py
│           │   │   │   ├── idnadata.py
│           │   │   │   ├── intranges.py
│           │   │   │   ├── package_data.py
│           │   │   │   └── uts46data.py
│           │   │   ├── msgpack/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── exceptions.py
│           │   │   │   ├── ext.py
│           │   │   │   └── fallback.py
│           │   │   ├── packaging/
│           │   │   │   ├── __about__.py
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _manylinux.py
│           │   │   │   ├── _musllinux.py
│           │   │   │   ├── _structures.py
│           │   │   │   ├── markers.py
│           │   │   │   ├── requirements.py
│           │   │   │   ├── specifiers.py
│           │   │   │   ├── tags.py
│           │   │   │   ├── utils.py
│           │   │   │   └── version.py
│           │   │   ├── pep517/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _compat.py
│           │   │   │   ├── build.py
│           │   │   │   ├── check.py
│           │   │   │   ├── colorlog.py
│           │   │   │   ├── dirtools.py
│           │   │   │   ├── envbuild.py
│           │   │   │   ├── in_process/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   └── _in_process.py
│           │   │   │   ├── meta.py
│           │   │   │   └── wrappers.py
│           │   │   ├── pkg_resources/
│           │   │   │   ├── __init__.py
│           │   │   │   └── py31compat.py
│           │   │   ├── platformdirs/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── __main__.py
│           │   │   │   ├── android.py
│           │   │   │   ├── api.py
│           │   │   │   ├── macos.py
│           │   │   │   ├── unix.py
│           │   │   │   ├── version.py
│           │   │   │   └── windows.py
│           │   │   ├── pygments/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── __main__.py
│           │   │   │   ├── cmdline.py
│           │   │   │   ├── console.py
│           │   │   │   ├── filter.py
│           │   │   │   ├── filters/
│           │   │   │   │   └── __init__.py
│           │   │   │   ├── formatter.py
│           │   │   │   ├── formatters/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── _mapping.py
│           │   │   │   │   ├── bbcode.py
│           │   │   │   │   ├── groff.py
│           │   │   │   │   ├── html.py
│           │   │   │   │   ├── img.py
│           │   │   │   │   ├── irc.py
│           │   │   │   │   ├── latex.py
│           │   │   │   │   ├── other.py
│           │   │   │   │   ├── pangomarkup.py
│           │   │   │   │   ├── rtf.py
│           │   │   │   │   ├── svg.py
│           │   │   │   │   ├── terminal.py
│           │   │   │   │   └── terminal256.py
│           │   │   │   ├── lexer.py
│           │   │   │   ├── lexers/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── _mapping.py
│           │   │   │   │   └── python.py
│           │   │   │   ├── modeline.py
│           │   │   │   ├── plugin.py
│           │   │   │   ├── regexopt.py
│           │   │   │   ├── scanner.py
│           │   │   │   ├── sphinxext.py
│           │   │   │   ├── style.py
│           │   │   │   ├── styles/
│           │   │   │   │   └── __init__.py
│           │   │   │   ├── token.py
│           │   │   │   ├── unistring.py
│           │   │   │   └── util.py
│           │   │   ├── pyparsing/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── actions.py
│           │   │   │   ├── common.py
│           │   │   │   ├── core.py
│           │   │   │   ├── diagram/
│           │   │   │   │   └── __init__.py
│           │   │   │   ├── exceptions.py
│           │   │   │   ├── helpers.py
│           │   │   │   ├── results.py
│           │   │   │   ├── testing.py
│           │   │   │   ├── unicode.py
│           │   │   │   └── util.py
│           │   │   ├── requests/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── __version__.py
│           │   │   │   ├── _internal_utils.py
│           │   │   │   ├── adapters.py
│           │   │   │   ├── api.py
│           │   │   │   ├── auth.py
│           │   │   │   ├── certs.py
│           │   │   │   ├── compat.py
│           │   │   │   ├── cookies.py
│           │   │   │   ├── exceptions.py
│           │   │   │   ├── help.py
│           │   │   │   ├── hooks.py
│           │   │   │   ├── models.py
│           │   │   │   ├── packages.py
│           │   │   │   ├── sessions.py
│           │   │   │   ├── status_codes.py
│           │   │   │   ├── structures.py
│           │   │   │   └── utils.py
│           │   │   ├── resolvelib/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── compat/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   └── collections_abc.py
│           │   │   │   ├── providers.py
│           │   │   │   ├── reporters.py
│           │   │   │   ├── resolvers.py
│           │   │   │   └── structs.py
│           │   │   ├── rich/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── __main__.py
│           │   │   │   ├── _cell_widths.py
│           │   │   │   ├── _emoji_codes.py
│           │   │   │   ├── _emoji_replace.py
│           │   │   │   ├── _export_format.py
│           │   │   │   ├── _extension.py
│           │   │   │   ├── _inspect.py
│           │   │   │   ├── _log_render.py
│           │   │   │   ├── _loop.py
│           │   │   │   ├── _palettes.py
│           │   │   │   ├── _pick.py
│           │   │   │   ├── _ratio.py
│           │   │   │   ├── _spinners.py
│           │   │   │   ├── _stack.py
│           │   │   │   ├── _timer.py
│           │   │   │   ├── _win32_console.py
│           │   │   │   ├── _windows.py
│           │   │   │   ├── _windows_renderer.py
│           │   │   │   ├── _wrap.py
│           │   │   │   ├── abc.py
│           │   │   │   ├── align.py
│           │   │   │   ├── ansi.py
│           │   │   │   ├── bar.py
│           │   │   │   ├── box.py
│           │   │   │   ├── cells.py
│           │   │   │   ├── color.py
│           │   │   │   ├── color_triplet.py
│           │   │   │   ├── columns.py
│           │   │   │   ├── console.py
│           │   │   │   ├── constrain.py
│           │   │   │   ├── containers.py
│           │   │   │   ├── control.py
│           │   │   │   ├── default_styles.py
│           │   │   │   ├── diagnose.py
│           │   │   │   ├── emoji.py
│           │   │   │   ├── errors.py
│           │   │   │   ├── file_proxy.py
│           │   │   │   ├── filesize.py
│           │   │   │   ├── highlighter.py
│           │   │   │   ├── json.py
│           │   │   │   ├── jupyter.py
│           │   │   │   ├── layout.py
│           │   │   │   ├── live.py
│           │   │   │   ├── live_render.py
│           │   │   │   ├── logging.py
│           │   │   │   ├── markup.py
│           │   │   │   ├── measure.py
│           │   │   │   ├── padding.py
│           │   │   │   ├── pager.py
│           │   │   │   ├── palette.py
│           │   │   │   ├── panel.py
│           │   │   │   ├── pretty.py
│           │   │   │   ├── progress.py
│           │   │   │   ├── progress_bar.py
│           │   │   │   ├── prompt.py
│           │   │   │   ├── protocol.py
│           │   │   │   ├── region.py
│           │   │   │   ├── repr.py
│           │   │   │   ├── rule.py
│           │   │   │   ├── scope.py
│           │   │   │   ├── screen.py
│           │   │   │   ├── segment.py
│           │   │   │   ├── spinner.py
│           │   │   │   ├── status.py
│           │   │   │   ├── style.py
│           │   │   │   ├── styled.py
│           │   │   │   ├── syntax.py
│           │   │   │   ├── table.py
│           │   │   │   ├── terminal_theme.py
│           │   │   │   ├── text.py
│           │   │   │   ├── theme.py
│           │   │   │   ├── themes.py
│           │   │   │   ├── traceback.py
│           │   │   │   └── tree.py
│           │   │   ├── six.py
│           │   │   ├── tenacity/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _asyncio.py
│           │   │   │   ├── _utils.py
│           │   │   │   ├── after.py
│           │   │   │   ├── before.py
│           │   │   │   ├── before_sleep.py
│           │   │   │   ├── nap.py
│           │   │   │   ├── retry.py
│           │   │   │   ├── stop.py
│           │   │   │   ├── tornadoweb.py
│           │   │   │   └── wait.py
│           │   │   ├── tomli/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _parser.py
│           │   │   │   ├── _re.py
│           │   │   │   └── _types.py
│           │   │   ├── typing_extensions.py
│           │   │   ├── urllib3/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _collections.py
│           │   │   │   ├── _version.py
│           │   │   │   ├── connection.py
│           │   │   │   ├── connectionpool.py
│           │   │   │   ├── contrib/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── _appengine_environ.py
│           │   │   │   │   ├── _securetransport/
│           │   │   │   │   │   ├── __init__.py
│           │   │   │   │   │   ├── bindings.py
│           │   │   │   │   │   └── low_level.py
│           │   │   │   │   ├── appengine.py
│           │   │   │   │   ├── ntlmpool.py
│           │   │   │   │   ├── pyopenssl.py
│           │   │   │   │   ├── securetransport.py
│           │   │   │   │   └── socks.py
│           │   │   │   ├── exceptions.py
│           │   │   │   ├── fields.py
│           │   │   │   ├── filepost.py
│           │   │   │   ├── packages/
│           │   │   │   │   ├── __init__.py
│           │   │   │   │   ├── backports/
│           │   │   │   │   │   ├── __init__.py
│           │   │   │   │   │   └── makefile.py
│           │   │   │   │   └── six.py
│           │   │   │   ├── poolmanager.py
│           │   │   │   ├── request.py
│           │   │   │   ├── response.py
│           │   │   │   └── util/
│           │   │   │       ├── __init__.py
│           │   │   │       ├── connection.py
│           │   │   │       ├── proxy.py
│           │   │   │       ├── queue.py
│           │   │   │       ├── request.py
│           │   │   │       ├── response.py
│           │   │   │       ├── retry.py
│           │   │   │       ├── ssl_.py
│           │   │   │       ├── ssl_match_hostname.py
│           │   │   │       ├── ssltransport.py
│           │   │   │       ├── timeout.py
│           │   │   │       ├── url.py
│           │   │   │       └── wait.py
│           │   │   ├── vendor.txt
│           │   │   └── webencodings/
│           │   │       ├── __init__.py
│           │   │       ├── labels.py
│           │   │       ├── mklabels.py
│           │   │       ├── tests.py
│           │   │       └── x_user_defined.py
│           │   └── py.typed
│           ├── pip-22.3.1.dist-info/
│           │   ├── INSTALLER
│           │   ├── LICENSE.txt
│           │   ├── METADATA
│           │   ├── RECORD
│           │   ├── WHEEL
│           │   ├── entry_points.txt
│           │   └── top_level.txt
│           ├── pip-22.3.1.virtualenv
│           ├── pkg_resources/
│           │   ├── __init__.py
│           │   ├── _vendor/
│           │   │   ├── __init__.py
│           │   │   ├── appdirs.py
│           │   │   ├── importlib_resources/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _adapters.py
│           │   │   │   ├── _common.py
│           │   │   │   ├── _compat.py
│           │   │   │   ├── _itertools.py
│           │   │   │   ├── _legacy.py
│           │   │   │   ├── abc.py
│           │   │   │   ├── readers.py
│           │   │   │   └── simple.py
│           │   │   ├── jaraco/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── context.py
│           │   │   │   ├── functools.py
│           │   │   │   └── text/
│           │   │   │       └── __init__.py
│           │   │   ├── more_itertools/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── more.py
│           │   │   │   └── recipes.py
│           │   │   ├── packaging/
│           │   │   │   ├── __about__.py
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _manylinux.py
│           │   │   │   ├── _musllinux.py
│           │   │   │   ├── _structures.py
│           │   │   │   ├── markers.py
│           │   │   │   ├── requirements.py
│           │   │   │   ├── specifiers.py
│           │   │   │   ├── tags.py
│           │   │   │   ├── utils.py
│           │   │   │   └── version.py
│           │   │   ├── pyparsing/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── actions.py
│           │   │   │   ├── common.py
│           │   │   │   ├── core.py
│           │   │   │   ├── diagram/
│           │   │   │   │   └── __init__.py
│           │   │   │   ├── exceptions.py
│           │   │   │   ├── helpers.py
│           │   │   │   ├── results.py
│           │   │   │   ├── testing.py
│           │   │   │   ├── unicode.py
│           │   │   │   └── util.py
│           │   │   └── zipp.py
│           │   └── extern/
│           │       └── __init__.py
│           ├── setuptools/
│           │   ├── __init__.py
│           │   ├── _deprecation_warning.py
│           │   ├── _distutils/
│           │   │   ├── __init__.py
│           │   │   ├── _collections.py
│           │   │   ├── _functools.py
│           │   │   ├── _macos_compat.py
│           │   │   ├── _msvccompiler.py
│           │   │   ├── archive_util.py
│           │   │   ├── bcppcompiler.py
│           │   │   ├── ccompiler.py
│           │   │   ├── cmd.py
│           │   │   ├── command/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _framework_compat.py
│           │   │   │   ├── bdist.py
│           │   │   │   ├── bdist_dumb.py
│           │   │   │   ├── bdist_rpm.py
│           │   │   │   ├── build.py
│           │   │   │   ├── build_clib.py
│           │   │   │   ├── build_ext.py
│           │   │   │   ├── build_py.py
│           │   │   │   ├── build_scripts.py
│           │   │   │   ├── check.py
│           │   │   │   ├── clean.py
│           │   │   │   ├── config.py
│           │   │   │   ├── install.py
│           │   │   │   ├── install_data.py
│           │   │   │   ├── install_egg_info.py
│           │   │   │   ├── install_headers.py
│           │   │   │   ├── install_lib.py
│           │   │   │   ├── install_scripts.py
│           │   │   │   ├── py37compat.py
│           │   │   │   ├── register.py
│           │   │   │   ├── sdist.py
│           │   │   │   └── upload.py
│           │   │   ├── config.py
│           │   │   ├── core.py
│           │   │   ├── cygwinccompiler.py
│           │   │   ├── debug.py
│           │   │   ├── dep_util.py
│           │   │   ├── dir_util.py
│           │   │   ├── dist.py
│           │   │   ├── errors.py
│           │   │   ├── extension.py
│           │   │   ├── fancy_getopt.py
│           │   │   ├── file_util.py
│           │   │   ├── filelist.py
│           │   │   ├── log.py
│           │   │   ├── msvc9compiler.py
│           │   │   ├── msvccompiler.py
│           │   │   ├── py38compat.py
│           │   │   ├── py39compat.py
│           │   │   ├── spawn.py
│           │   │   ├── sysconfig.py
│           │   │   ├── text_file.py
│           │   │   ├── unixccompiler.py
│           │   │   ├── util.py
│           │   │   ├── version.py
│           │   │   └── versionpredicate.py
│           │   ├── _entry_points.py
│           │   ├── _imp.py
│           │   ├── _importlib.py
│           │   ├── _itertools.py
│           │   ├── _path.py
│           │   ├── _reqs.py
│           │   ├── _vendor/
│           │   │   ├── __init__.py
│           │   │   ├── importlib_metadata/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _adapters.py
│           │   │   │   ├── _collections.py
│           │   │   │   ├── _compat.py
│           │   │   │   ├── _functools.py
│           │   │   │   ├── _itertools.py
│           │   │   │   ├── _meta.py
│           │   │   │   └── _text.py
│           │   │   ├── importlib_resources/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _adapters.py
│           │   │   │   ├── _common.py
│           │   │   │   ├── _compat.py
│           │   │   │   ├── _itertools.py
│           │   │   │   ├── _legacy.py
│           │   │   │   ├── abc.py
│           │   │   │   ├── readers.py
│           │   │   │   └── simple.py
│           │   │   ├── jaraco/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── context.py
│           │   │   │   ├── functools.py
│           │   │   │   └── text/
│           │   │   │       └── __init__.py
│           │   │   ├── more_itertools/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── more.py
│           │   │   │   └── recipes.py
│           │   │   ├── ordered_set.py
│           │   │   ├── packaging/
│           │   │   │   ├── __about__.py
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _manylinux.py
│           │   │   │   ├── _musllinux.py
│           │   │   │   ├── _structures.py
│           │   │   │   ├── markers.py
│           │   │   │   ├── requirements.py
│           │   │   │   ├── specifiers.py
│           │   │   │   ├── tags.py
│           │   │   │   ├── utils.py
│           │   │   │   └── version.py
│           │   │   ├── pyparsing/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── actions.py
│           │   │   │   ├── common.py
│           │   │   │   ├── core.py
│           │   │   │   ├── diagram/
│           │   │   │   │   └── __init__.py
│           │   │   │   ├── exceptions.py
│           │   │   │   ├── helpers.py
│           │   │   │   ├── results.py
│           │   │   │   ├── testing.py
│           │   │   │   ├── unicode.py
│           │   │   │   └── util.py
│           │   │   ├── tomli/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── _parser.py
│           │   │   │   ├── _re.py
│           │   │   │   └── _types.py
│           │   │   ├── typing_extensions.py
│           │   │   └── zipp.py
│           │   ├── archive_util.py
│           │   ├── build_meta.py
│           │   ├── command/
│           │   │   ├── __init__.py
│           │   │   ├── alias.py
│           │   │   ├── bdist_egg.py
│           │   │   ├── bdist_rpm.py
│           │   │   ├── build.py
│           │   │   ├── build_clib.py
│           │   │   ├── build_ext.py
│           │   │   ├── build_py.py
│           │   │   ├── develop.py
│           │   │   ├── dist_info.py
│           │   │   ├── easy_install.py
│           │   │   ├── editable_wheel.py
│           │   │   ├── egg_info.py
│           │   │   ├── install.py
│           │   │   ├── install_egg_info.py
│           │   │   ├── install_lib.py
│           │   │   ├── install_scripts.py
│           │   │   ├── launcher manifest.xml
│           │   │   ├── py36compat.py
│           │   │   ├── register.py
│           │   │   ├── rotate.py
│           │   │   ├── saveopts.py
│           │   │   ├── sdist.py
│           │   │   ├── setopt.py
│           │   │   ├── test.py
│           │   │   ├── upload.py
│           │   │   └── upload_docs.py
│           │   ├── config/
│           │   │   ├── __init__.py
│           │   │   ├── _apply_pyprojecttoml.py
│           │   │   ├── _validate_pyproject/
│           │   │   │   ├── __init__.py
│           │   │   │   ├── error_reporting.py
│           │   │   │   ├── extra_validations.py
│           │   │   │   ├── fastjsonschema_exceptions.py
│           │   │   │   ├── fastjsonschema_validations.py
│           │   │   │   └── formats.py
│           │   │   ├── expand.py
│           │   │   ├── pyprojecttoml.py
│           │   │   └── setupcfg.py
│           │   ├── dep_util.py
│           │   ├── depends.py
│           │   ├── discovery.py
│           │   ├── dist.py
│           │   ├── errors.py
│           │   ├── extension.py
│           │   ├── extern/
│           │   │   └── __init__.py
│           │   ├── glob.py
│           │   ├── installer.py
│           │   ├── launch.py
│           │   ├── logging.py
│           │   ├── monkey.py
│           │   ├── msvc.py
│           │   ├── namespaces.py
│           │   ├── package_index.py
│           │   ├── py34compat.py
│           │   ├── sandbox.py
│           │   ├── script (dev).tmpl
│           │   ├── script.tmpl
│           │   ├── unicode_utils.py
│           │   ├── version.py
│           │   ├── wheel.py
│           │   └── windows_support.py
│           ├── setuptools-65.5.1.dist-info/
│           │   ├── INSTALLER
│           │   ├── LICENSE
│           │   ├── METADATA
│           │   ├── RECORD
│           │   ├── WHEEL
│           │   ├── entry_points.txt
│           │   └── top_level.txt
│           ├── setuptools-65.5.1.virtualenv
│           ├── wheel/
│           │   ├── __init__.py
│           │   ├── __main__.py
│           │   ├── _setuptools_logging.py
│           │   ├── bdist_wheel.py
│           │   ├── cli/
│           │   │   ├── __init__.py
│           │   │   ├── convert.py
│           │   │   ├── pack.py
│           │   │   └── unpack.py
│           │   ├── macosx_libfile.py
│           │   ├── metadata.py
│           │   ├── util.py
│           │   ├── vendored/
│           │   │   ├── __init__.py
│           │   │   └── packaging/
│           │   │       ├── __init__.py
│           │   │       ├── _manylinux.py
│           │   │       ├── _musllinux.py
│           │   │       └── tags.py
│           │   └── wheelfile.py
│           ├── wheel-0.38.4.dist-info/
│           │   ├── INSTALLER
│           │   ├── LICENSE.txt
│           │   ├── METADATA
│           │   ├── RECORD
│           │   ├── WHEEL
│           │   ├── entry_points.txt
│           │   └── top_level.txt
│           └── wheel-0.38.4.virtualenv
├── mkdocs.yml
├── pyvenv.cfg
├── requirements.txt
├── setup.cfg
├── setup.py
├── tests/
│   ├── conftest.py
│   ├── test_cli.py
│   ├── test_engine.py
│   └── test_python.py
├── ultralytics/
│   ├── .ipynb_checkpoints/
│   │   ├── predict-checkpoint.py
│   │   ├── resum_training-checkpoint.py
│   │   ├── train-checkpoint.py
│   │   └── val-checkpoint.py
│   ├── __init__.py
│   ├── datasets/
│   │   ├── .ipynb_checkpoints/
│   │   │   ├── bdd-multi-checkpoint.yaml
│   │   │   └── create_toy_dataset-checkpoint.ipynb
│   │   ├── Argoverse.yaml
│   │   ├── GlobalWheat2020.yaml
│   │   ├── ImageNet.yaml
│   │   ├── Objects365.yaml
│   │   ├── SKU-110K.yaml
│   │   ├── VOC.yaml
│   │   ├── VisDrone.yaml
│   │   ├── bdd-drivable-seg-toy.yaml
│   │   ├── bdd-lane-seg-toy.yaml
│   │   ├── bdd-multi-toy.yaml
│   │   ├── bdd-multi.yaml
│   │   ├── coco-pose.yaml
│   │   ├── coco-toy.yaml
│   │   ├── coco.yaml
│   │   ├── coco128-seg.yaml
│   │   ├── coco128.yaml
│   │   ├── coco8-pose.yaml
│   │   ├── coco8-seg.yaml
│   │   ├── coco8.yaml
│   │   ├── create_toy_dataset.ipynb
│   │   └── xView.yaml
│   ├── hub/
│   │   ├── __init__.py
│   │   ├── auth.py
│   │   ├── session.py
│   │   └── utils.py
│   ├── models/
│   │   ├── README.md
│   │   ├── rt-detr/
│   │   │   ├── rt-detr-l.yaml
│   │   │   └── rt-detr-x.yaml
│   │   ├── v3/
│   │   │   ├── yolov3-spp.yaml
│   │   │   ├── yolov3-tiny.yaml
│   │   │   └── yolov3.yaml
│   │   ├── v5/
│   │   │   ├── yolov5-p6.yaml
│   │   │   └── yolov5.yaml
│   │   └── v8/
│   │       ├── .ipynb_checkpoints/
│   │       │   └── yolov8-bdd-v4-one-dropout-individual-n-checkpoint.yaml
│   │       ├── yolov8-bdd-one.yaml
│   │       ├── yolov8-bdd-v3-one.yaml
│   │       ├── yolov8-bdd-v4-one-dropout-individual-n.yaml
│   │       ├── yolov8-bdd-v4-one-dropout-individual-s.yaml
│   │       ├── yolov8-bdd.yaml
│   │       ├── yolov8-cls.yaml
│   │       ├── yolov8-p2.yaml
│   │       ├── yolov8-p6.yaml
│   │       ├── yolov8-pose.yaml
│   │       ├── yolov8-seg.yaml
│   │       └── yolov8.yaml
│   ├── nn/
│   │   ├── .ipynb_checkpoints/
│   │   │   └── tasks-checkpoint.py
│   │   ├── __init__.py
│   │   ├── autobackend.py
│   │   ├── autoshape.py
│   │   ├── modules/
│   │   │   ├── __init__.py
│   │   │   ├── block.py
│   │   │   ├── conv.py
│   │   │   ├── head.py
│   │   │   ├── transformer.py
│   │   │   └── utils.py
│   │   └── tasks.py
│   ├── predict.py
│   ├── resum_training.py
│   ├── tracker/
│   │   ├── README.md
│   │   ├── __init__.py
│   │   ├── cfg/
│   │   │   ├── botsort.yaml
│   │   │   └── bytetrack.yaml
│   │   ├── track.py
│   │   ├── trackers/
│   │   │   ├── __init__.py
│   │   │   ├── basetrack.py
│   │   │   ├── bot_sort.py
│   │   │   └── byte_tracker.py
│   │   └── utils/
│   │       ├── __init__.py
│   │       ├── gmc.py
│   │       ├── kalman_filter.py
│   │       └── matching.py
│   ├── train.py
│   ├── val.py
│   ├── vit/
│   │   ├── __init__.py
│   │   ├── rtdetr/
│   │   │   ├── __init__.py
│   │   │   ├── model.py
│   │   │   ├── predict.py
│   │   │   └── val.py
│   │   └── sam/
│   │       ├── __init__.py
│   │       ├── amg.py
│   │       ├── autosize.py
│   │       ├── build.py
│   │       ├── model.py
│   │       ├── modules/
│   │       │   ├── __init__.py
│   │       │   ├── decoders.py
│   │       │   ├── encoders.py
│   │       │   ├── mask_generator.py
│   │       │   ├── prompt_predictor.py
│   │       │   ├── sam.py
│   │       │   └── transformer.py
│   │       └── predict.py
│   ├── yolo/
│   │   ├── __init__.py
│   │   ├── cfg/
│   │   │   ├── __init__.py
│   │   │   └── default.yaml
│   │   ├── data/
│   │   │   ├── __init__.py
│   │   │   ├── annotator.py
│   │   │   ├── augment.py
│   │   │   ├── base.py
│   │   │   ├── build.py
│   │   │   ├── converter.py
│   │   │   ├── dataloaders/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── stream_loaders.py
│   │   │   │   ├── v5augmentations.py
│   │   │   │   └── v5loader.py
│   │   │   ├── dataset.py
│   │   │   ├── dataset_wrappers.py
│   │   │   ├── scripts/
│   │   │   │   ├── download_weights.sh
│   │   │   │   ├── get_coco.sh
│   │   │   │   ├── get_coco128.sh
│   │   │   │   └── get_imagenet.sh
│   │   │   └── utils.py
│   │   ├── engine/
│   │   │   ├── __init__.py
│   │   │   ├── exporter.py
│   │   │   ├── model.py
│   │   │   ├── predictor.py
│   │   │   ├── predictor_multi.py
│   │   │   ├── results.py
│   │   │   ├── trainer.py
│   │   │   └── validator.py
│   │   ├── utils/
│   │   │   ├── .ipynb_checkpoints/
│   │   │   │   └── metrics-checkpoint.py
│   │   │   ├── __init__.py
│   │   │   ├── autobatch.py
│   │   │   ├── benchmarks.py
│   │   │   ├── callbacks/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base.py
│   │   │   │   ├── clearml.py
│   │   │   │   ├── comet.py
│   │   │   │   ├── hub.py
│   │   │   │   ├── mlflow.py
│   │   │   │   ├── neptune.py
│   │   │   │   ├── raytune.py
│   │   │   │   ├── tensorboard.py
│   │   │   │   └── wb.py
│   │   │   ├── checks.py
│   │   │   ├── dist.py
│   │   │   ├── downloads.py
│   │   │   ├── errors.py
│   │   │   ├── files.py
│   │   │   ├── instance.py
│   │   │   ├── loss.py
│   │   │   ├── metrics.py
│   │   │   ├── ops.py
│   │   │   ├── plotting.py
│   │   │   ├── tal.py
│   │   │   ├── torch_utils.py
│   │   │   └── tuner.py
│   │   └── v8/
│   │       ├── DecSeg/
│   │       │   ├── .ipynb_checkpoints/
│   │       │   │   └── val-checkpoint.py
│   │       │   ├── __init__.py
│   │       │   ├── predict.py
│   │       │   ├── train.py
│   │       │   └── val.py
│   │       ├── __init__.py
│   │       ├── classify/
│   │       │   ├── __init__.py
│   │       │   ├── predict.py
│   │       │   ├── train.py
│   │       │   └── val.py
│   │       ├── detect/
│   │       │   ├── __init__.py
│   │       │   ├── predict.py
│   │       │   ├── train.py
│   │       │   └── val.py
│   │       ├── pose/
│   │       │   ├── __init__.py
│   │       │   ├── predict.py
│   │       │   ├── train.py
│   │       │   └── val.py
│   │       └── segment/
│   │           ├── __init__.py
│   │           ├── predict.py
│   │           ├── train.py
│   │           └── val.py
│   └── yolov8n.pt
└── ultralytics.egg-info/
    ├── PKG-INFO
    ├── SOURCES.txt
    ├── dependency_links.txt
    ├── entry_points.txt
    ├── requires.txt
    └── top_level.txt
Download .txt
Showing preview only (1,034K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (13447 symbols across 733 files)

FILE: docs/build_reference.py
  function extract_classes_and_functions (line 20) | def extract_classes_and_functions(filepath):
  function create_markdown (line 33) | def create_markdown(py_filepath, module_path, classes, functions):
  function nested_dict (line 56) | def nested_dict():
  function sort_nested_dict (line 60) | def sort_nested_dict(d):
  function create_nav_menu_yaml (line 67) | def create_nav_menu_yaml(nav_items):
  function main (line 97) | def main():

FILE: examples/YOLOv8-CPP-Inference/inference.h
  type Detection (line 15) | struct Detection
  function confidence (line 19) | float confidence{0.0};
  function cudaEnabled (line 37) | bool cudaEnabled{}
  function modelNMSThreshold (line 45) | float modelNMSThreshold        {0.50};

FILE: examples/YOLOv8-CPP-Inference/main.cpp
  function main (line 12) | int main(int argc, char **argv)

FILE: examples/YOLOv8-OpenCV-ONNX-Python/main.py
  function draw_bounding_box (line 14) | def draw_bounding_box(img, class_id, confidence, x, y, x_plus_w, y_plus_h):
  function main (line 21) | def main(onnx_model, input_image):

FILE: lib/python3.7/site-packages/_distutils_hack/__init__.py
  function warn_distutils_present (line 9) | def warn_distutils_present():
  function clear_distutils (line 28) | def clear_distutils():
  function enabled (line 43) | def enabled():
  function ensure_local_distutils (line 51) | def ensure_local_distutils():
  function do_override (line 68) | def do_override():
  class _TrivialRe (line 80) | class _TrivialRe:
    method __init__ (line 81) | def __init__(self, *patterns):
    method match (line 84) | def match(self, string):
  class DistutilsMetaFinder (line 88) | class DistutilsMetaFinder:
    method find_spec (line 89) | def find_spec(self, fullname, path, target=None):
    method spec_for_distutils (line 99) | def spec_for_distutils(self):
    method is_cpython (line 133) | def is_cpython():
    method spec_for_pip (line 140) | def spec_for_pip(self):
    method pip_imported_during_build (line 151) | def pip_imported_during_build(cls):
    method frame_file_is_setup (line 162) | def frame_file_is_setup(frame):
    method spec_for_sensitive_tests (line 169) | def spec_for_sensitive_tests(self):
  function add_shim (line 202) | def add_shim():
  class shim (line 206) | class shim:
    method __enter__ (line 207) | def __enter__(self):
    method __exit__ (line 210) | def __exit__(self, exc, value, tb):
  function insert_shim (line 214) | def insert_shim():
  function remove_shim (line 218) | def remove_shim():

FILE: lib/python3.7/site-packages/_virtualenv.py
  function patch_dist (line 10) | def patch_dist(dist):
  class _Finder (line 41) | class _Finder:
    method find_spec (line 51) | def find_spec(self, fullname, path, target=None):  # noqa: U100
    method exec_module (line 88) | def exec_module(old, module):
    method load_module (line 94) | def load_module(old, name):
  class _VirtualenvImporter (line 106) | class _VirtualenvImporter(object, ImpImporter):
    method __init__ (line 107) | def __init__(self, path=None):
    method find_module (line 111) | def find_module(self, fullname, path=None):
  class _VirtualenvLoader (line 119) | class _VirtualenvLoader(object, ImpLoader):
    method __init__ (line 120) | def __init__(self, fullname, file, filename, etc):
    method load_module (line 124) | def load_module(self, fullname):

FILE: lib/python3.7/site-packages/pip/__init__.py
  function main (line 6) | def main(args: Optional[List[str]] = None) -> int:

FILE: lib/python3.7/site-packages/pip/__pip-runner__.py
  function version_str (line 15) | def version_str(version):  # type: ignore
  class PipImportRedirectingFinder (line 36) | class PipImportRedirectingFinder:
    method find_spec (line 38) | def find_spec(self, fullname, path=None, target=None):  # type: ignore

FILE: lib/python3.7/site-packages/pip/_internal/__init__.py
  function main (line 11) | def main(args: (Optional[List[str]]) = None) -> int:

FILE: lib/python3.7/site-packages/pip/_internal/build_env.py
  class _Prefix (line 32) | class _Prefix:
    method __init__ (line 33) | def __init__(self, path: str) -> None:
  function get_runnable_pip (line 43) | def get_runnable_pip() -> str:
  function _get_system_sitepackages (line 59) | def _get_system_sitepackages() -> Set[str]:
  class BuildEnvironment (line 79) | class BuildEnvironment:
    method __init__ (line 82) | def __init__(self) -> None:
    method __enter__ (line 136) | def __enter__(self) -> None:
    method __exit__ (line 157) | def __exit__(
    method check_requirements (line 169) | def check_requirements(
    method install_requirements (line 203) | def install_requirements(
    method _install_requirements (line 225) | def _install_requirements(
  class NoOpBuildEnvironment (line 282) | class NoOpBuildEnvironment(BuildEnvironment):
    method __init__ (line 285) | def __init__(self) -> None:
    method __enter__ (line 288) | def __enter__(self) -> None:
    method __exit__ (line 291) | def __exit__(
    method cleanup (line 299) | def cleanup(self) -> None:
    method install_requirements (line 302) | def install_requirements(

FILE: lib/python3.7/site-packages/pip/_internal/cache.py
  function _hash_dict (line 27) | def _hash_dict(d: Dict[str, str]) -> str:
  class Cache (line 33) | class Cache:
    method __init__ (line 44) | def __init__(
    method _get_cache_path_parts (line 56) | def _get_cache_path_parts(self, link: Link) -> List[str]:
    method _get_candidates (line 89) | def _get_candidates(self, link: Link, canonical_package_name: str) -> ...
    method get_path_for_link (line 105) | def get_path_for_link(self, link: Link) -> str:
    method get (line 109) | def get(
  class SimpleWheelCache (line 121) | class SimpleWheelCache(Cache):
    method __init__ (line 124) | def __init__(self, cache_dir: str, format_control: FormatControl) -> N...
    method get_path_for_link (line 127) | def get_path_for_link(self, link: Link) -> str:
    method get (line 147) | def get(
  class EphemWheelCache (line 191) | class EphemWheelCache(SimpleWheelCache):
    method __init__ (line 194) | def __init__(self, format_control: FormatControl) -> None:
  class CacheEntry (line 203) | class CacheEntry:
    method __init__ (line 204) | def __init__(
  class WheelCache (line 217) | class WheelCache(Cache):
    method __init__ (line 224) | def __init__(
    method get_path_for_link (line 233) | def get_path_for_link(self, link: Link) -> str:
    method get_ephem_path_for_link (line 236) | def get_ephem_path_for_link(self, link: Link) -> str:
    method get (line 239) | def get(
    method get_cache_entry (line 250) | def get_cache_entry(
    method record_download_origin (line 279) | def record_download_origin(cache_dir: str, download_info: DirectUrl) -...

FILE: lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py
  function autocomplete (line 15) | def autocomplete() -> None:
  function get_path_completion_type (line 119) | def get_path_completion_type(
  function auto_complete_paths (line 143) | def auto_complete_paths(current: str, completion_type: str) -> Iterable[...

FILE: lib/python3.7/site-packages/pip/_internal/cli/base_command.py
  class Command (line 45) | class Command(CommandContextMixIn):
    method __init__ (line 49) | def __init__(self, name: str, summary: str, isolated: bool = False) ->...
    method add_options (line 79) | def add_options(self) -> None:
    method handle_pip_version_check (line 82) | def handle_pip_version_check(self, options: Values) -> None:
    method run (line 91) | def run(self, options: Values, args: List[str]) -> int:
    method parse_args (line 94) | def parse_args(self, args: List[str]) -> Tuple[Values, List[str]]:
    method main (line 98) | def main(self, args: List[str]) -> int:
    method _main (line 105) | def _main(self, args: List[str]) -> int:

FILE: lib/python3.7/site-packages/pip/_internal/cli/cmdoptions.py
  function raise_option_error (line 36) | def raise_option_error(parser: OptionParser, option: Option, msg: str) -...
  function make_option_group (line 50) | def make_option_group(group: Dict[str, Any], parser: ConfigOptionParser)...
  function check_dist_restriction (line 62) | def check_dist_restriction(options: Values, check_target: bool = False) ...
  function _path_option_check (line 102) | def _path_option_check(option: Option, opt: str, value: str) -> str:
  function _package_name_option_check (line 106) | def _package_name_option_check(option: Option, opt: str, value: str) -> ...
  class PipOption (line 110) | class PipOption(Option):
  function exists_action (line 278) | def exists_action() -> Option:
  function extra_index_url (line 333) | def extra_index_url() -> Option:
  function find_links (line 356) | def find_links() -> Option:
  function trusted_host (line 372) | def trusted_host() -> Option:
  function constraints (line 384) | def constraints() -> Option:
  function requirements (line 397) | def requirements() -> Option:
  function editable (line 410) | def editable() -> Option:
  function _handle_src (line 425) | def _handle_src(option: Option, opt_str: str, value: str, parser: Option...
  function _get_format_control (line 448) | def _get_format_control(values: Values, option: Option) -> Any:
  function _handle_no_binary (line 453) | def _handle_no_binary(
  function _handle_only_binary (line 464) | def _handle_only_binary(
  function no_binary (line 475) | def no_binary() -> Option:
  function only_binary (line 493) | def only_binary() -> Option:
  function _convert_python_version (line 527) | def _convert_python_version(value: str) -> Tuple[Tuple[int, ...], Option...
  function _handle_python_version (line 556) | def _handle_python_version(
  function add_target_python_options (line 628) | def add_target_python_options(cmd_opts: OptionGroup) -> None:
  function make_target_python (line 635) | def make_target_python(options: Values) -> TargetPython:
  function prefer_binary (line 646) | def prefer_binary() -> Option:
  function _handle_no_cache_dir (line 667) | def _handle_no_cache_dir(
  function _handle_no_use_pep517 (line 744) | def _handle_no_use_pep517(
  function _handle_config_settings (line 796) | def _handle_config_settings(
  function _handle_merge_hash (line 891) | def _handle_merge_hash(
  function check_list_path_option (line 952) | def check_list_path_option(options: Values) -> None:

FILE: lib/python3.7/site-packages/pip/_internal/cli/command_context.py
  class CommandContextMixIn (line 7) | class CommandContextMixIn:
    method __init__ (line 8) | def __init__(self) -> None:
    method main_context (line 14) | def main_context(self) -> Generator[None, None, None]:
    method enter_context (line 24) | def enter_context(self, context_provider: ContextManager[_T]) -> _T:

FILE: lib/python3.7/site-packages/pip/_internal/cli/main.py
  function main (line 45) | def main(args: Optional[List[str]] = None) -> int:

FILE: lib/python3.7/site-packages/pip/_internal/cli/main_parser.py
  function create_main_parser (line 19) | def create_main_parser() -> ConfigOptionParser:
  function identify_python_interpreter (line 50) | def identify_python_interpreter(python: str) -> Optional[str]:
  function parse_command (line 69) | def parse_command(args: List[str]) -> Tuple[str, List[str]]:

FILE: lib/python3.7/site-packages/pip/_internal/cli/parser.py
  class PrettyHelpFormatter (line 18) | class PrettyHelpFormatter(optparse.IndentedHelpFormatter):
    method __init__ (line 21) | def __init__(self, *args: Any, **kwargs: Any) -> None:
    method format_option_strings (line 28) | def format_option_strings(self, option: optparse.Option) -> str:
    method _format_option_strings (line 31) | def _format_option_strings(
    method format_heading (line 57) | def format_heading(self, heading: str) -> str:
    method format_usage (line 62) | def format_usage(self, usage: str) -> str:
    method format_description (line 70) | def format_description(self, description: str) -> str:
    method format_epilog (line 88) | def format_epilog(self, epilog: str) -> str:
    method indent_lines (line 95) | def indent_lines(self, text: str, indent: str) -> str:
  class UpdatingDefaultsHelpFormatter (line 100) | class UpdatingDefaultsHelpFormatter(PrettyHelpFormatter):
    method expand_default (line 109) | def expand_default(self, option: optparse.Option) -> str:
  class CustomOptionParser (line 132) | class CustomOptionParser(optparse.OptionParser):
    method insert_option_group (line 133) | def insert_option_group(
    method option_list_all (line 145) | def option_list_all(self) -> List[optparse.Option]:
  class ConfigOptionParser (line 154) | class ConfigOptionParser(CustomOptionParser):
    method __init__ (line 158) | def __init__(
    method check_default (line 171) | def check_default(self, option: optparse.Option, key: str, val: Any) -...
    method _get_ordered_configuration_items (line 178) | def _get_ordered_configuration_items(
    method _update_defaults (line 206) | def _update_defaults(self, defaults: Dict[str, Any]) -> Dict[str, Any]:
    method get_default_values (line 270) | def get_default_values(self) -> optparse.Values:
    method error (line 292) | def error(self, msg: str) -> None:

FILE: lib/python3.7/site-packages/pip/_internal/cli/progress_bars.py
  function _rich_progress_bar (line 22) | def _rich_progress_bar(
  function get_download_progress_renderer (line 58) | def get_download_progress_renderer(

FILE: lib/python3.7/site-packages/pip/_internal/cli/req_command.py
  function _create_truststore_ssl_context (line 50) | def _create_truststore_ssl_context() -> Optional["SSLContext"]:
  class SessionCommandMixin (line 71) | class SessionCommandMixin(CommandContextMixIn):
    method __init__ (line 77) | def __init__(self) -> None:
    method _get_index_urls (line 82) | def _get_index_urls(cls, options: Values) -> Optional[List[str]]:
    method get_default_session (line 95) | def get_default_session(self, options: Values) -> PipSession:
    method _build_session (line 105) | def _build_session(
  class IndexGroupCommand (line 158) | class IndexGroupCommand(Command, SessionCommandMixin):
    method handle_pip_version_check (line 166) | def handle_pip_version_check(self, options: Values) -> None:
  function warn_if_run_as_root (line 200) | def warn_if_run_as_root() -> None:
  function with_cleanup (line 230) | def with_cleanup(func: Any) -> Any:
  class RequirementCommand (line 258) | class RequirementCommand(IndexGroupCommand):
    method __init__ (line 259) | def __init__(self, *args: Any, **kw: Any) -> None:
    method determine_resolver_variant (line 265) | def determine_resolver_variant(options: Values) -> str:
    method make_requirement_preparer (line 273) | def make_requirement_preparer(
    method make_resolver (line 325) | def make_resolver(
    method get_requirements (line 384) | def get_requirements(
    method trace_basic_info (line 466) | def trace_basic_info(finder: PackageFinder) -> None:
    method _build_package_finder (line 476) | def _build_package_finder(

FILE: lib/python3.7/site-packages/pip/_internal/cli/spinners.py
  class SpinnerInterface (line 14) | class SpinnerInterface:
    method spin (line 15) | def spin(self) -> None:
    method finish (line 18) | def finish(self, final_status: str) -> None:
  class InteractiveSpinner (line 22) | class InteractiveSpinner(SpinnerInterface):
    method __init__ (line 23) | def __init__(
    method _write (line 43) | def _write(self, status: str) -> None:
    method spin (line 55) | def spin(self) -> None:
    method finish (line 62) | def finish(self, final_status: str) -> None:
  class NonInteractiveSpinner (line 75) | class NonInteractiveSpinner(SpinnerInterface):
    method __init__ (line 76) | def __init__(self, message: str, min_update_interval_seconds: float = ...
    method _update (line 82) | def _update(self, status: str) -> None:
    method spin (line 87) | def spin(self) -> None:
    method finish (line 94) | def finish(self, final_status: str) -> None:
  class RateLimiter (line 101) | class RateLimiter:
    method __init__ (line 102) | def __init__(self, min_update_interval_seconds: float) -> None:
    method ready (line 106) | def ready(self) -> bool:
    method reset (line 111) | def reset(self) -> None:
  function open_spinner (line 116) | def open_spinner(message: str) -> Generator[SpinnerInterface, None, None]:
  function hidden_cursor (line 144) | def hidden_cursor(file: IO[str]) -> Generator[None, None, None]:

FILE: lib/python3.7/site-packages/pip/_internal/commands/__init__.py
  function create_command (line 109) | def create_command(name: str, **kwargs: Any) -> Command:
  function get_similar_commands (line 121) | def get_similar_commands(name: str) -> Optional[str]:

FILE: lib/python3.7/site-packages/pip/_internal/commands/cache.py
  class CacheCommand (line 15) | class CacheCommand(Command):
    method add_options (line 39) | def add_options(self) -> None:
    method run (line 52) | def run(self, options: Values, args: List[str]) -> int:
    method get_cache_dir (line 84) | def get_cache_dir(self, options: Values, args: List[Any]) -> None:
    method get_cache_info (line 90) | def get_cache_info(self, options: Values, args: List[Any]) -> None:
    method list_cache_items (line 126) | def list_cache_items(self, options: Values, args: List[Any]) -> None:
    method format_for_human (line 141) | def format_for_human(self, files: List[str]) -> None:
    method format_for_abspath (line 154) | def format_for_abspath(self, files: List[str]) -> None:
    method remove_cache_items (line 164) | def remove_cache_items(self, options: Values, args: List[Any]) -> None:
    method purge_cache (line 189) | def purge_cache(self, options: Values, args: List[Any]) -> None:
    method _cache_dir (line 195) | def _cache_dir(self, options: Values, subdir: str) -> str:
    method _find_http_files (line 198) | def _find_http_files(self, options: Values) -> List[str]:
    method _find_wheels (line 202) | def _find_wheels(self, options: Values, pattern: str) -> List[str]:

FILE: lib/python3.7/site-packages/pip/_internal/commands/check.py
  class CheckCommand (line 16) | class CheckCommand(Command):
    method run (line 22) | def run(self, options: Values, args: List[str]) -> int:

FILE: lib/python3.7/site-packages/pip/_internal/commands/completion.py
  class CompletionCommand (line 71) | class CompletionCommand(Command):
    method add_options (line 76) | def add_options(self) -> None:
    method run (line 112) | def run(self, options: Values, args: List[str]) -> int:

FILE: lib/python3.7/site-packages/pip/_internal/commands/configuration.py
  class ConfigurationCommand (line 22) | class ConfigurationCommand(Command):
    method add_options (line 58) | def add_options(self) -> None:
    method run (line 96) | def run(self, options: Values, args: List[str]) -> int:
    method _determine_file (line 141) | def _determine_file(self, options: Values, need_value: bool) -> Option...
    method list_values (line 171) | def list_values(self, options: Values, args: List[str]) -> None:
    method get_name (line 177) | def get_name(self, options: Values, args: List[str]) -> None:
    method set_name_value (line 183) | def set_name_value(self, options: Values, args: List[str]) -> None:
    method unset_name (line 189) | def unset_name(self, options: Values, args: List[str]) -> None:
    method list_config_values (line 195) | def list_config_values(self, options: Values, args: List[str]) -> None:
    method print_config_file_values (line 211) | def print_config_file_values(self, variant: Kind) -> None:
    method print_env_var_values (line 217) | def print_env_var_values(self) -> None:
    method open_in_editor (line 225) | def open_in_editor(self, options: Values, args: List[str]) -> None:
    method _get_n_args (line 249) | def _get_n_args(self, args: List[str], example: str, n: int) -> Any:
    method _save_configuration (line 263) | def _save_configuration(self) -> None:
    method _determine_editor (line 274) | def _determine_editor(self, options: Values) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/commands/debug.py
  function show_value (line 26) | def show_value(name: str, value: Any) -> None:
  function show_sys_implementation (line 30) | def show_sys_implementation() -> None:
  function create_vendor_txt_map (line 37) | def create_vendor_txt_map() -> Dict[str, str]:
  function get_module_from_module_name (line 49) | def get_module_from_module_name(module_name: str) -> ModuleType:
  function get_vendor_version_from_module (line 60) | def get_vendor_version_from_module(module_name: str) -> Optional[str]:
  function show_actual_vendor_versions (line 75) | def show_actual_vendor_versions(vendor_txt_versions: Dict[str, str]) -> ...
  function show_vendor_versions (line 96) | def show_vendor_versions() -> None:
  function show_tags (line 104) | def show_tags(options: Values) -> None:
  function ca_bundle_info (line 136) | def ca_bundle_info(config: Configuration) -> str:
  class DebugCommand (line 156) | class DebugCommand(Command):
    method add_options (line 165) | def add_options(self) -> None:
    method run (line 170) | def run(self, options: Values, args: List[str]) -> int:

FILE: lib/python3.7/site-packages/pip/_internal/commands/download.py
  class DownloadCommand (line 21) | class DownloadCommand(RequirementCommand):
    method add_options (line 41) | def add_options(self) -> None:
    method run (line 81) | def run(self, options: Values, args: List[str]) -> int:

FILE: lib/python3.7/site-packages/pip/_internal/commands/freeze.py
  class FreezeCommand (line 14) | class FreezeCommand(Command):
    method add_options (line 25) | def add_options(self) -> None:
    method run (line 77) | def run(self, options: Values, args: List[str]) -> int:

FILE: lib/python3.7/site-packages/pip/_internal/commands/hash.py
  class HashCommand (line 15) | class HashCommand(Command):
    method add_options (line 26) | def add_options(self) -> None:
    method run (line 40) | def run(self, options: Values, args: List[str]) -> int:
  function _hash_of_file (line 53) | def _hash_of_file(path: str, algorithm: str) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/commands/help.py
  class HelpCommand (line 9) | class HelpCommand(Command):
    method run (line 16) | def run(self, options: Values, args: List[str]) -> int:

FILE: lib/python3.7/site-packages/pip/_internal/commands/index.py
  class IndexCommand (line 22) | class IndexCommand(IndexGroupCommand):
    method add_options (line 31) | def add_options(self) -> None:
    method run (line 47) | def run(self, options: Values, args: List[str]) -> int:
    method _build_package_finder (line 77) | def _build_package_finder(
    method get_available_package_versions (line 102) | def get_available_package_versions(self, options: Values, args: List[A...

FILE: lib/python3.7/site-packages/pip/_internal/commands/inspect.py
  class InspectCommand (line 19) | class InspectCommand(Command):
    method add_options (line 28) | def add_options(self) -> None:
    method run (line 48) | def run(self, options: Values, args: List[str]) -> int:
    method _dist_to_dict (line 70) | def _dist_to_dict(self, dist: BaseDistribution) -> Dict[str, Any]:

FILE: lib/python3.7/site-packages/pip/_internal/commands/install.py
  function get_check_bdist_wheel_allowed (line 63) | def get_check_bdist_wheel_allowed(
  class InstallCommand (line 74) | class InstallCommand(RequirementCommand):
    method add_options (line 94) | def add_options(self) -> None:
    method run (line 283) | def run(self, options: Values, args: List[str]) -> int:
    method _handle_target_dir (line 560) | def _handle_target_dir(
    method _determine_conflicts (line 614) | def _determine_conflicts(
    method _warn_about_conflicts (line 626) | def _warn_about_conflicts(
  function get_lib_location_guesses (line 681) | def get_lib_location_guesses(
  function site_packages_writable (line 699) | def site_packages_writable(root: Optional[str], isolated: bool) -> bool:
  function decide_user_install (line 706) | def decide_user_install(
  function reject_location_related_install_options (line 767) | def reject_location_related_install_options(
  function create_os_error_message (line 806) | def create_os_error_message(

FILE: lib/python3.7/site-packages/pip/_internal/commands/list.py
  class _DistWithLatestInfo (line 23) | class _DistWithLatestInfo(BaseDistribution):
  class ListCommand (line 39) | class ListCommand(IndexGroupCommand):
    method add_options (line 50) | def add_options(self) -> None:
    method _build_package_finder (line 135) | def _build_package_finder(
    method run (line 154) | def run(self, options: Values, args: List[str]) -> int:
    method get_outdated (line 195) | def get_outdated(
    method get_uptodate (line 204) | def get_uptodate(
    method get_not_required (line 213) | def get_not_required(
    method iter_packages_latest_infos (line 227) | def iter_packages_latest_infos(
    method output_package_listing (line 265) | def output_package_listing(
    method output_package_listing_columns (line 286) | def output_package_listing_columns(
  function format_for_columns (line 303) | def format_for_columns(
  function format_for_json (line 348) | def format_for_json(packages: "_ProcessedDists", options: Values) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/commands/search.py
  class TransformedHit (line 25) | class TransformedHit(TypedDict):
  class SearchCommand (line 34) | class SearchCommand(Command, SessionCommandMixin):
    method add_options (line 41) | def add_options(self) -> None:
    method run (line 53) | def run(self, options: Values, args: List[str]) -> int:
    method search (line 69) | def search(self, query: List[str], options: Values) -> List[Dict[str, ...
  function transform_hits (line 88) | def transform_hits(hits: List[Dict[str, str]]) -> List["TransformedHit"]:
  function print_dist_installation_info (line 116) | def print_dist_installation_info(name: str, latest: str) -> None:
  function print_results (line 135) | def print_results(
  function highest_version (line 173) | def highest_version(versions: List[str]) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/commands/show.py
  class ShowCommand (line 15) | class ShowCommand(Command):
    method add_options (line 26) | def add_options(self) -> None:
    method run (line 38) | def run(self, options: Values, args: List[str]) -> int:
  class _PackageInfo (line 52) | class _PackageInfo(NamedTuple):
  function search_packages_info (line 71) | def search_packages_info(query: List[str]) -> Generator[_PackageInfo, No...
  function print_results (line 139) | def print_results(

FILE: lib/python3.7/site-packages/pip/_internal/commands/uninstall.py
  class UninstallCommand (line 22) | class UninstallCommand(Command, SessionCommandMixin):
    method add_options (line 37) | def add_options(self) -> None:
    method run (line 60) | def run(self, options: Values, args: List[str]) -> int:

FILE: lib/python3.7/site-packages/pip/_internal/commands/wheel.py
  class WheelCommand (line 26) | class WheelCommand(RequirementCommand):
    method add_options (line 46) | def add_options(self) -> None:
    method run (line 107) | def run(self, options: Values, args: List[str]) -> int:

FILE: lib/python3.7/site-packages/pip/_internal/configuration.py
  function _normalize_name (line 50) | def _normalize_name(name: str) -> str:
  function _disassemble_key (line 58) | def _disassemble_key(name: str) -> List[str]:
  function get_configuration_files (line 68) | def get_configuration_files() -> Dict[Kind, List[str]]:
  class Configuration (line 87) | class Configuration:
    method __init__ (line 101) | def __init__(self, isolated: bool, load_only: Optional[Kind] = None) -...
    method load (line 122) | def load(self) -> None:
    method get_file_to_edit (line 128) | def get_file_to_edit(self) -> Optional[str]:
    method items (line 137) | def items(self) -> Iterable[Tuple[str, Any]]:
    method get_value (line 143) | def get_value(self, key: str) -> Any:
    method set_value (line 155) | def set_value(self, key: str, value: Any) -> None:
    method unset_value (line 174) | def unset_value(self, key: str) -> None:
    method save (line 203) | def save(self) -> None:
    method _ensure_have_load_only (line 220) | def _ensure_have_load_only(self) -> None:
    method _dictionary (line 226) | def _dictionary(self) -> Dict[str, Any]:
    method _load_config_files (line 237) | def _load_config_files(self) -> None:
    method _load_file (line 260) | def _load_file(self, variant: Kind, fname: str) -> RawConfigParser:
    method _construct_parser (line 270) | def _construct_parser(self, fname: str) -> RawConfigParser:
    method _load_environment_vars (line 291) | def _load_environment_vars(self) -> None:
    method _normalized_keys (line 297) | def _normalized_keys(
    method get_environ_vars (line 311) | def get_environ_vars(self) -> Iterable[Tuple[str, str]]:
    method iter_config_files (line 320) | def iter_config_files(self) -> Iterable[Tuple[Kind, List[str]]]:
    method get_values_in_config (line 350) | def get_values_in_config(self, variant: Kind) -> Dict[str, Any]:
    method _get_parser_to_modify (line 354) | def _get_parser_to_modify(self) -> Tuple[str, RawConfigParser]:
    method _mark_as_modified (line 368) | def _mark_as_modified(self, fname: str, parser: RawConfigParser) -> None:
    method __repr__ (line 373) | def __repr__(self) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/distributions/__init__.py
  function make_distribution_for_install_requirement (line 7) | def make_distribution_for_install_requirement(

FILE: lib/python3.7/site-packages/pip/_internal/distributions/base.py
  class AbstractDistribution (line 8) | class AbstractDistribution(metaclass=abc.ABCMeta):
    method __init__ (line 24) | def __init__(self, req: InstallRequirement) -> None:
    method get_metadata_distribution (line 29) | def get_metadata_distribution(self) -> BaseDistribution:
    method prepare_distribution_metadata (line 33) | def prepare_distribution_metadata(

FILE: lib/python3.7/site-packages/pip/_internal/distributions/installed.py
  class InstalledDistribution (line 6) | class InstalledDistribution(AbstractDistribution):
    method get_metadata_distribution (line 13) | def get_metadata_distribution(self) -> BaseDistribution:
    method prepare_distribution_metadata (line 17) | def prepare_distribution_metadata(

FILE: lib/python3.7/site-packages/pip/_internal/distributions/sdist.py
  class SourceDistribution (line 14) | class SourceDistribution(AbstractDistribution):
    method get_metadata_distribution (line 21) | def get_metadata_distribution(self) -> BaseDistribution:
    method prepare_distribution_metadata (line 24) | def prepare_distribution_metadata(
    method _prepare_build_backend (line 63) | def _prepare_build_backend(self, finder: PackageFinder) -> None:
    method _get_build_requires_wheel (line 89) | def _get_build_requires_wheel(self) -> Iterable[str]:
    method _get_build_requires_editable (line 97) | def _get_build_requires_editable(self) -> Iterable[str]:
    method _install_build_reqs (line 107) | def _install_build_reqs(self, finder: PackageFinder) -> None:
    method _raise_conflicts (line 126) | def _raise_conflicts(
    method _raise_missing_reqs (line 143) | def _raise_missing_reqs(self, missing: Set[str]) -> None:

FILE: lib/python3.7/site-packages/pip/_internal/distributions/wheel.py
  class WheelDistribution (line 12) | class WheelDistribution(AbstractDistribution):
    method get_metadata_distribution (line 18) | def get_metadata_distribution(self) -> BaseDistribution:
    method prepare_distribution_metadata (line 28) | def prepare_distribution_metadata(

FILE: lib/python3.7/site-packages/pip/_internal/exceptions.py
  function _is_kebab_case (line 29) | def _is_kebab_case(s: str) -> bool:
  function _prefix_with_indent (line 33) | def _prefix_with_indent(
  class PipError (line 50) | class PipError(Exception):
  class DiagnosticPipError (line 54) | class DiagnosticPipError(PipError):
    method __init__ (line 67) | def __init__(
    method __repr__ (line 97) | def __repr__(self) -> str:
    method __rich_console__ (line 108) | def __rich_console__(
  class ConfigurationError (line 172) | class ConfigurationError(PipError):
  class InstallationError (line 176) | class InstallationError(PipError):
  class UninstallationError (line 180) | class UninstallationError(PipError):
  class MissingPyProjectBuildRequires (line 184) | class MissingPyProjectBuildRequires(DiagnosticPipError):
    method __init__ (line 189) | def __init__(self, *, package: str) -> None:
  class InvalidPyProjectBuildRequires (line 201) | class InvalidPyProjectBuildRequires(DiagnosticPipError):
    method __init__ (line 206) | def __init__(self, *, package: str, reason: str) -> None:
  class NoneMetadataError (line 218) | class NoneMetadataError(PipError):
    method __init__ (line 227) | def __init__(
    method __str__ (line 240) | def __str__(self) -> str:
  class UserInstallationInvalid (line 249) | class UserInstallationInvalid(InstallationError):
    method __str__ (line 252) | def __str__(self) -> str:
  class InvalidSchemeCombination (line 256) | class InvalidSchemeCombination(InstallationError):
    method __str__ (line 257) | def __str__(self) -> str:
  class DistributionNotFound (line 262) | class DistributionNotFound(InstallationError):
  class RequirementsFileParseError (line 266) | class RequirementsFileParseError(InstallationError):
  class BestVersionAlreadyInstalled (line 270) | class BestVersionAlreadyInstalled(PipError):
  class BadCommand (line 275) | class BadCommand(PipError):
  class CommandError (line 279) | class CommandError(PipError):
  class PreviousBuildDirError (line 283) | class PreviousBuildDirError(PipError):
  class NetworkConnectionError (line 287) | class NetworkConnectionError(PipError):
    method __init__ (line 290) | def __init__(
    method __str__ (line 311) | def __str__(self) -> str:
  class InvalidWheelFilename (line 315) | class InvalidWheelFilename(InstallationError):
  class UnsupportedWheel (line 319) | class UnsupportedWheel(InstallationError):
  class InvalidWheel (line 323) | class InvalidWheel(InstallationError):
    method __init__ (line 326) | def __init__(self, location: str, name: str):
    method __str__ (line 330) | def __str__(self) -> str:
  class MetadataInconsistent (line 334) | class MetadataInconsistent(InstallationError):
    method __init__ (line 342) | def __init__(
    method __str__ (line 350) | def __str__(self) -> str:
  class LegacyInstallFailure (line 357) | class LegacyInstallFailure(DiagnosticPipError):
    method __init__ (line 362) | def __init__(self, package_details: str) -> None:
  class InstallationSubprocessError (line 371) | class InstallationSubprocessError(DiagnosticPipError, InstallationError):
    method __init__ (line 376) | def __init__(
    method __str__ (line 408) | def __str__(self) -> str:
  class MetadataGenerationFailed (line 412) | class MetadataGenerationFailed(InstallationSubprocessError, Installation...
    method __init__ (line 415) | def __init__(
    method __str__ (line 427) | def __str__(self) -> str:
  class HashErrors (line 431) | class HashErrors(InstallationError):
    method __init__ (line 434) | def __init__(self) -> None:
    method append (line 437) | def append(self, error: "HashError") -> None:
    method __str__ (line 440) | def __str__(self) -> str:
    method __bool__ (line 450) | def __bool__(self) -> bool:
  class HashError (line 454) | class HashError(InstallationError):
    method body (line 475) | def body(self) -> str:
    method __str__ (line 487) | def __str__(self) -> str:
    method _requirement_name (line 490) | def _requirement_name(self) -> str:
  class VcsHashUnsupported (line 500) | class VcsHashUnsupported(HashError):
  class DirectoryUrlHashUnsupported (line 511) | class DirectoryUrlHashUnsupported(HashError):
  class HashMissing (line 522) | class HashMissing(HashError):
    method __init__ (line 536) | def __init__(self, gotten_hash: str) -> None:
    method body (line 543) | def body(self) -> str:
  class HashUnpinned (line 564) | class HashUnpinned(HashError):
  class HashMismatch (line 575) | class HashMismatch(HashError):
    method __init__ (line 593) | def __init__(self, allowed: Dict[str, List[str]], gots: Dict[str, "_Ha...
    method body (line 603) | def body(self) -> str:
    method _hash_comparison (line 606) | def _hash_comparison(self) -> str:
  class UnsupportedPythonVersion (line 635) | class UnsupportedPythonVersion(InstallationError):
  class ConfigurationFileCouldNotBeLoaded (line 640) | class ConfigurationFileCouldNotBeLoaded(ConfigurationError):
    method __init__ (line 643) | def __init__(
    method __str__ (line 654) | def __str__(self) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/index/collector.py
  function _match_vcs_scheme (line 55) | def _match_vcs_scheme(url: str) -> Optional[str]:
  class _NotAPIContent (line 66) | class _NotAPIContent(Exception):
    method __init__ (line 67) | def __init__(self, content_type: str, request_desc: str) -> None:
  function _ensure_api_header (line 73) | def _ensure_api_header(response: Response) -> None:
  class _NotHTTP (line 95) | class _NotHTTP(Exception):
  function _ensure_api_response (line 99) | def _ensure_api_response(url: str, session: PipSession) -> None:
  function _get_simple_response (line 117) | def _get_simple_response(url: str, session: PipSession) -> Response:
  function _get_encoding_from_headers (line 180) | def _get_encoding_from_headers(headers: ResponseHeaders) -> Optional[str]:
  class CacheablePageContent (line 191) | class CacheablePageContent:
    method __init__ (line 192) | def __init__(self, page: "IndexContent") -> None:
    method __eq__ (line 196) | def __eq__(self, other: object) -> bool:
    method __hash__ (line 199) | def __hash__(self) -> int:
  class ParseLinks (line 203) | class ParseLinks(Protocol):
    method __call__ (line 204) | def __call__(self, page: "IndexContent") -> Iterable[Link]:
  function with_cached_index_content (line 208) | def with_cached_index_content(fn: ParseLinks) -> ParseLinks:
  function parse_links (line 229) | def parse_links(page: "IndexContent") -> Iterable[Link]:
  class IndexContent (line 257) | class IndexContent:
    method __init__ (line 260) | def __init__(
    method __str__ (line 281) | def __str__(self) -> str:
  class HTMLLinkParser (line 285) | class HTMLLinkParser(HTMLParser):
    method __init__ (line 291) | def __init__(self, url: str) -> None:
    method handle_starttag (line 298) | def handle_starttag(self, tag: str, attrs: List[Tuple[str, Optional[st...
    method get_href (line 306) | def get_href(self, attrs: List[Tuple[str, Optional[str]]]) -> Optional...
  function _handle_get_simple_fail (line 313) | def _handle_get_simple_fail(
  function _make_index_content (line 323) | def _make_index_content(
  function _get_index_content (line 336) | def _get_index_content(link: Link, *, session: PipSession) -> Optional["...
  class CollectedSources (line 397) | class CollectedSources(NamedTuple):
  class LinkCollector (line 402) | class LinkCollector:
    method __init__ (line 411) | def __init__(
    method create (line 420) | def create(
    method find_links (line 454) | def find_links(self) -> List[str]:
    method fetch_response (line 457) | def fetch_response(self, location: Link) -> Optional[IndexContent]:
    method collect_sources (line 463) | def collect_sources(

FILE: lib/python3.7/site-packages/pip/_internal/index/package_finder.py
  function _check_link_requires_python (line 51) | def _check_link_requires_python(
  class LinkType (line 98) | class LinkType(enum.Enum):
  class LinkEvaluator (line 108) | class LinkEvaluator:
    method __init__ (line 120) | def __init__(
    method evaluate_link (line 157) | def evaluate_link(self, link: Link) -> Tuple[LinkType, str]:
  function filter_unallowed_hashes (line 252) | def filter_unallowed_hashes(
  class CandidatePreferences (line 326) | class CandidatePreferences:
    method __init__ (line 333) | def __init__(
  class BestCandidateResult (line 345) | class BestCandidateResult:
    method __init__ (line 352) | def __init__(
    method iter_all (line 376) | def iter_all(self) -> Iterable[InstallationCandidate]:
    method iter_applicable (line 380) | def iter_applicable(self) -> Iterable[InstallationCandidate]:
  class CandidateEvaluator (line 385) | class CandidateEvaluator:
    method create (line 393) | def create(
    method __init__ (line 428) | def __init__(
    method get_applicable_candidates (line 454) | def get_applicable_candidates(
    method _sort_key (line 490) | def _sort_key(self, candidate: InstallationCandidate) -> CandidateSort...
    method sort_best_candidate (line 558) | def sort_best_candidate(
    method compute_best_candidate (line 571) | def compute_best_candidate(
  class PackageFinder (line 589) | class PackageFinder:
    method __init__ (line 596) | def __init__(
    method create (line 636) | def create(
    method target_python (line 668) | def target_python(self) -> TargetPython:
    method search_scope (line 672) | def search_scope(self) -> SearchScope:
    method search_scope (line 676) | def search_scope(self, search_scope: SearchScope) -> None:
    method find_links (line 680) | def find_links(self) -> List[str]:
    method index_urls (line 684) | def index_urls(self) -> List[str]:
    method trusted_hosts (line 688) | def trusted_hosts(self) -> Iterable[str]:
    method allow_all_prereleases (line 693) | def allow_all_prereleases(self) -> bool:
    method set_allow_all_prereleases (line 696) | def set_allow_all_prereleases(self) -> None:
    method prefer_binary (line 700) | def prefer_binary(self) -> bool:
    method set_prefer_binary (line 703) | def set_prefer_binary(self) -> None:
    method requires_python_skipped_reasons (line 706) | def requires_python_skipped_reasons(self) -> List[str]:
    method make_link_evaluator (line 714) | def make_link_evaluator(self, project_name: str) -> LinkEvaluator:
    method _sort_links (line 727) | def _sort_links(self, links: Iterable[Link]) -> List[Link]:
    method _log_skipped_link (line 743) | def _log_skipped_link(self, link: Link, result: LinkType, detail: str)...
    method get_install_candidate (line 751) | def get_install_candidate(
    method evaluate_links (line 769) | def evaluate_links(
    method process_project_url (line 783) | def process_project_url(
    method find_all_candidates (line 805) | def find_all_candidates(self, project_name: str) -> List[InstallationC...
    method make_candidate_evaluator (line 857) | def make_candidate_evaluator(
    method find_best_candidate (line 875) | def find_best_candidate(
    method find_requirement (line 897) | def find_requirement(
  function _find_name_version_sep (line 984) | def _find_name_version_sep(fragment: str, canonical_name: str) -> int:
  function _extract_version_from_fragment (line 1010) | def _extract_version_from_fragment(fragment: str, canonical_name: str) -...

FILE: lib/python3.7/site-packages/pip/_internal/index/sources.py
  class LinkSource (line 20) | class LinkSource:
    method link (line 22) | def link(self) -> Optional[Link]:
    method page_candidates (line 26) | def page_candidates(self) -> FoundCandidates:
    method file_links (line 30) | def file_links(self) -> FoundLinks:
  function _is_html_file (line 35) | def _is_html_file(file_url: str) -> bool:
  class _FlatDirectorySource (line 39) | class _FlatDirectorySource(LinkSource):
    method __init__ (line 48) | def __init__(
    method link (line 57) | def link(self) -> Optional[Link]:
    method page_candidates (line 60) | def page_candidates(self) -> FoundCandidates:
    method file_links (line 67) | def file_links(self) -> FoundLinks:
  class _LocalFileSource (line 75) | class _LocalFileSource(LinkSource):
    method __init__ (line 85) | def __init__(
    method link (line 94) | def link(self) -> Optional[Link]:
    method page_candidates (line 97) | def page_candidates(self) -> FoundCandidates:
    method file_links (line 102) | def file_links(self) -> FoundLinks:
  class _RemoteFileSource (line 108) | class _RemoteFileSource(LinkSource):
    method __init__ (line 117) | def __init__(
    method link (line 128) | def link(self) -> Optional[Link]:
    method page_candidates (line 131) | def page_candidates(self) -> FoundCandidates:
    method file_links (line 136) | def file_links(self) -> FoundLinks:
  class _IndexDirectorySource (line 140) | class _IndexDirectorySource(LinkSource):
    method __init__ (line 147) | def __init__(
    method link (line 156) | def link(self) -> Optional[Link]:
    method page_candidates (line 159) | def page_candidates(self) -> FoundCandidates:
    method file_links (line 162) | def file_links(self) -> FoundLinks:
  function build_source (line 166) | def build_source(

FILE: lib/python3.7/site-packages/pip/_internal/locations/__init__.py
  function _should_use_sysconfig (line 47) | def _should_use_sysconfig() -> bool:
  function _looks_like_bpo_44860 (line 77) | def _looks_like_bpo_44860() -> bool:
  function _looks_like_red_hat_patched_platlib_purelib (line 91) | def _looks_like_red_hat_patched_platlib_purelib(scheme: Dict[str, str]) ...
  function _looks_like_red_hat_lib (line 102) | def _looks_like_red_hat_lib() -> bool:
  function _looks_like_debian_scheme (line 117) | def _looks_like_debian_scheme() -> bool:
  function _looks_like_red_hat_scheme (line 125) | def _looks_like_red_hat_scheme() -> bool:
  function _looks_like_slackware_scheme (line 145) | def _looks_like_slackware_scheme() -> bool:
  function _looks_like_msys2_mingw_scheme (line 161) | def _looks_like_msys2_mingw_scheme() -> bool:
  function _fix_abiflags (line 178) | def _fix_abiflags(parts: Tuple[str]) -> Generator[str, None, None]:
  function _warn_mismatched (line 195) | def _warn_mismatched(old: pathlib.Path, new: pathlib.Path, *, key: str) ...
  function _warn_if_mismatch (line 205) | def _warn_if_mismatch(old: pathlib.Path, new: pathlib.Path, *, key: str)...
  function _log_context (line 213) | def _log_context(
  function get_scheme (line 231) | def get_scheme(
  function get_bin_prefix (line 409) | def get_bin_prefix() -> str:
  function get_bin_user (line 420) | def get_bin_user() -> str:
  function _looks_like_deb_system_dist_packages (line 424) | def _looks_like_deb_system_dist_packages(value: str) -> bool:
  function get_purelib (line 441) | def get_purelib() -> str:
  function get_platlib (line 455) | def get_platlib() -> str:
  function _deduplicated (line 471) | def _deduplicated(v1: str, v2: str) -> List[str]:
  function _looks_like_apple_library (line 478) | def _looks_like_apple_library(path: str) -> bool:
  function get_prefixed_libs (line 485) | def get_prefixed_libs(prefix: str) -> List[str]:

FILE: lib/python3.7/site-packages/pip/_internal/locations/_distutils.py
  function distutils_scheme (line 35) | def distutils_scheme(
  function get_scheme (line 116) | def get_scheme(
  function get_bin_prefix (line 151) | def get_bin_prefix() -> str:
  function get_purelib (line 168) | def get_purelib() -> str:
  function get_platlib (line 172) | def get_platlib() -> str:
  function get_prefixed_libs (line 176) | def get_prefixed_libs(prefix: str) -> Tuple[str, str]:

FILE: lib/python3.7/site-packages/pip/_internal/locations/_sysconfig.py
  function _should_use_osx_framework_prefix (line 29) | def _should_use_osx_framework_prefix() -> bool:
  function _infer_prefix (line 55) | def _infer_prefix() -> str:
  function _infer_user (line 86) | def _infer_user() -> str:
  function _infer_home (line 101) | def _infer_home() -> str:
  function get_scheme (line 124) | def get_scheme(
  function get_bin_prefix (line 201) | def get_bin_prefix() -> str:
  function get_purelib (line 208) | def get_purelib() -> str:
  function get_platlib (line 212) | def get_platlib() -> str:
  function get_prefixed_libs (line 216) | def get_prefixed_libs(prefix: str) -> typing.Tuple[str, str]:

FILE: lib/python3.7/site-packages/pip/_internal/locations/base.py
  function get_major_minor_version (line 19) | def get_major_minor_version() -> str:
  function change_root (line 27) | def change_root(new_root: str, pathname: str) -> str:
  function get_src_prefix (line 55) | def get_src_prefix() -> str:
  function is_osx_framework (line 80) | def is_osx_framework() -> bool:

FILE: lib/python3.7/site-packages/pip/_internal/main.py
  function main (line 4) | def main(args: Optional[List[str]] = None) -> int:

FILE: lib/python3.7/site-packages/pip/_internal/metadata/__init__.py
  function _should_use_importlib_metadata (line 29) | def _should_use_importlib_metadata() -> bool:
  class Backend (line 52) | class Backend(Protocol):
  function select_backend (line 58) | def select_backend() -> Backend:
  function get_default_environment (line 68) | def get_default_environment() -> BaseEnvironment:
  function get_environment (line 78) | def get_environment(paths: Optional[List[str]]) -> BaseEnvironment:
  function get_directory_distribution (line 88) | def get_directory_distribution(directory: str) -> BaseDistribution:
  function get_wheel_distribution (line 97) | def get_wheel_distribution(wheel: Wheel, canonical_name: str) -> BaseDis...
  function get_metadata_distribution (line 108) | def get_metadata_distribution(

FILE: lib/python3.7/site-packages/pip/_internal/metadata/_json.py
  function json_name (line 37) | def json_name(field: str) -> str:
  function msg_to_json (line 41) | def msg_to_json(msg: Message) -> Dict[str, Any]:

FILE: lib/python3.7/site-packages/pip/_internal/metadata/base.py
  class BaseEntryPoint (line 57) | class BaseEntryPoint(Protocol):
    method name (line 59) | def name(self) -> str:
    method value (line 63) | def value(self) -> str:
    method group (line 67) | def group(self) -> str:
  function _convert_installed_files_path (line 71) | def _convert_installed_files_path(
  class RequiresEntry (line 101) | class RequiresEntry(NamedTuple):
  class BaseDistribution (line 107) | class BaseDistribution(Protocol):
    method from_directory (line 109) | def from_directory(cls, directory: str) -> "BaseDistribution":
    method from_metadata_file_contents (line 117) | def from_metadata_file_contents(
    method from_wheel (line 135) | def from_wheel(cls, wheel: "Wheel", name: str) -> "BaseDistribution":
    method __repr__ (line 148) | def __repr__(self) -> str:
    method __str__ (line 151) | def __str__(self) -> str:
    method location (line 155) | def location(self) -> Optional[str]:
    method editable_project_location (line 169) | def editable_project_location(self) -> Optional[str]:
    method installed_location (line 191) | def installed_location(self) -> Optional[str]:
    method info_location (line 204) | def info_location(self) -> Optional[str]:
    method installed_by_distutils (line 220) | def installed_by_distutils(self) -> bool:
    method installed_as_egg (line 233) | def installed_as_egg(self) -> bool:
    method installed_with_setuptools_egg_info (line 245) | def installed_with_setuptools_egg_info(self) -> bool:
    method installed_with_dist_info (line 263) | def installed_with_dist_info(self) -> bool:
    method canonical_name (line 279) | def canonical_name(self) -> NormalizedName:
    method version (line 283) | def version(self) -> DistributionVersion:
    method setuptools_filename (line 287) | def setuptools_filename(self) -> str:
    method direct_url (line 295) | def direct_url(self) -> Optional[DirectUrl]:
    method installer (line 321) | def installer(self) -> str:
    method requested (line 333) | def requested(self) -> bool:
    method editable (line 337) | def editable(self) -> bool:
    method local (line 341) | def local(self) -> bool:
    method in_usersite (line 351) | def in_usersite(self) -> bool:
    method in_site_packages (line 357) | def in_site_packages(self) -> bool:
    method is_file (line 362) | def is_file(self, path: InfoPath) -> bool:
    method iter_distutils_script_names (line 366) | def iter_distutils_script_names(self) -> Iterator[str]:
    method read_text (line 374) | def read_text(self, path: InfoPath) -> str:
    method iter_entry_points (line 383) | def iter_entry_points(self) -> Iterable[BaseEntryPoint]:
    method _metadata_impl (line 386) | def _metadata_impl(self) -> email.message.Message:
    method _metadata_cached (line 390) | def _metadata_cached(self) -> email.message.Message:
    method metadata (line 398) | def metadata(self) -> email.message.Message:
    method metadata_dict (line 409) | def metadata_dict(self) -> Dict[str, Any]:
    method metadata_version (line 420) | def metadata_version(self) -> Optional[str]:
    method raw_name (line 425) | def raw_name(self) -> str:
    method requires_python (line 432) | def requires_python(self) -> SpecifierSet:
    method iter_dependencies (line 450) | def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[...
    method iter_provided_extras (line 458) | def iter_provided_extras(self) -> Iterable[str]:
    method _iter_declared_entries_from_record (line 466) | def _iter_declared_entries_from_record(self) -> Optional[Iterator[str]]:
    method _iter_declared_entries_from_legacy (line 474) | def _iter_declared_entries_from_legacy(self) -> Optional[Iterator[str]]:
    method iter_declared_entries (line 495) | def iter_declared_entries(self) -> Optional[Iterator[str]]:
    method _iter_requires_txt_entries (line 511) | def _iter_requires_txt_entries(self) -> Iterator[RequiresEntry]:
    method _iter_egg_info_extras (line 536) | def _iter_egg_info_extras(self) -> Iterable[str]:
    method _iter_egg_info_dependencies (line 545) | def _iter_egg_info_dependencies(self) -> Iterable[str]:
    method _add_egg_info_requires (line 572) | def _add_egg_info_requires(self, metadata: email.message.Message) -> N...
  class BaseEnvironment (line 582) | class BaseEnvironment:
    method default (line 586) | def default(cls) -> "BaseEnvironment":
    method from_paths (line 590) | def from_paths(cls, paths: Optional[List[str]]) -> "BaseEnvironment":
    method get_distribution (line 593) | def get_distribution(self, name: str) -> Optional["BaseDistribution"]:
    method _iter_distributions (line 601) | def _iter_distributions(self) -> Iterator["BaseDistribution"]:
    method iter_all_distributions (line 610) | def iter_all_distributions(self) -> Iterator[BaseDistribution]:
    method iter_installed_distributions (line 631) | def iter_installed_distributions(
  class Wheel (line 667) | class Wheel(Protocol):
    method as_zipfile (line 670) | def as_zipfile(self) -> zipfile.ZipFile:
  class FilesystemWheel (line 674) | class FilesystemWheel(Wheel):
    method __init__ (line 675) | def __init__(self, location: str) -> None:
    method as_zipfile (line 678) | def as_zipfile(self) -> zipfile.ZipFile:
  class MemoryWheel (line 682) | class MemoryWheel(Wheel):
    method __init__ (line 683) | def __init__(self, location: str, stream: IO[bytes]) -> None:
    method as_zipfile (line 687) | def as_zipfile(self) -> zipfile.ZipFile:

FILE: lib/python3.7/site-packages/pip/_internal/metadata/importlib/_compat.py
  class BadMetadata (line 5) | class BadMetadata(ValueError):
    method __init__ (line 6) | def __init__(self, dist: importlib.metadata.Distribution, *, reason: s...
    method __str__ (line 10) | def __str__(self) -> str:
  class BasePath (line 14) | class BasePath(Protocol):
    method name (line 26) | def name(self) -> str:
    method parent (line 30) | def parent(self) -> "BasePath":
  function get_info_location (line 34) | def get_info_location(d: importlib.metadata.Distribution) -> Optional[Ba...
  function get_dist_name (line 46) | def get_dist_name(dist: importlib.metadata.Distribution) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/metadata/importlib/_dists.py
  class WheelDistribution (line 37) | class WheelDistribution(importlib.metadata.Distribution):
    method __init__ (line 48) | def __init__(
    method from_zipfile (line 57) | def from_zipfile(
    method iterdir (line 76) | def iterdir(self, path: InfoPath) -> Iterator[pathlib.PurePosixPath]:
    method read_text (line 82) | def read_text(self, filename: str) -> Optional[str]:
  class Distribution (line 96) | class Distribution(BaseDistribution):
    method __init__ (line 97) | def __init__(
    method from_directory (line 108) | def from_directory(cls, directory: str) -> BaseDistribution:
    method from_metadata_file_contents (line 114) | def from_metadata_file_contents(
    method from_wheel (line 131) | def from_wheel(cls, wheel: Wheel, name: str) -> BaseDistribution:
    method location (line 142) | def location(self) -> Optional[str]:
    method info_location (line 148) | def info_location(self) -> Optional[str]:
    method installed_location (line 154) | def installed_location(self) -> Optional[str]:
    method _get_dist_name_from_location (line 159) | def _get_dist_name_from_location(self) -> Optional[str]:
    method canonical_name (line 172) | def canonical_name(self) -> NormalizedName:
    method version (line 177) | def version(self) -> DistributionVersion:
    method is_file (line 180) | def is_file(self, path: InfoPath) -> bool:
    method iter_distutils_script_names (line 183) | def iter_distutils_script_names(self) -> Iterator[str]:
    method read_text (line 192) | def read_text(self, path: InfoPath) -> str:
    method iter_entry_points (line 198) | def iter_entry_points(self) -> Iterable[BaseEntryPoint]:
    method _metadata_impl (line 202) | def _metadata_impl(self) -> email.message.Message:
    method iter_provided_extras (line 210) | def iter_provided_extras(self) -> Iterable[str]:
    method iter_dependencies (line 215) | def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[...

FILE: lib/python3.7/site-packages/pip/_internal/metadata/importlib/_envs.py
  function _looks_like_wheel (line 24) | def _looks_like_wheel(location: str) -> bool:
  class _DistributionFinder (line 34) | class _DistributionFinder:
    method __init__ (line 49) | def __init__(self) -> None:
    method _find_impl (line 52) | def _find_impl(self, location: str) -> Iterator[FoundResult]:
    method find (line 74) | def find(self, location: str) -> Iterator[BaseDistribution]:
    method find_linked (line 86) | def find_linked(self, location: str) -> Iterator[BaseDistribution]:
    method _find_eggs_in_dir (line 110) | def _find_eggs_in_dir(self, location: str) -> Iterator[BaseDistribution]:
    method _find_eggs_in_zip (line 122) | def _find_eggs_in_zip(self, location: str) -> Iterator[BaseDistribution]:
    method find_eggs (line 134) | def find_eggs(self, location: str) -> Iterator[BaseDistribution]:
  function _emit_egg_deprecation (line 150) | def _emit_egg_deprecation(location: Optional[str]) -> None:
  class Environment (line 158) | class Environment(BaseEnvironment):
    method __init__ (line 159) | def __init__(self, paths: Sequence[str]) -> None:
    method default (line 163) | def default(cls) -> BaseEnvironment:
    method from_paths (line 167) | def from_paths(cls, paths: Optional[List[str]]) -> BaseEnvironment:
    method _iter_distributions (line 172) | def _iter_distributions(self) -> Iterator[BaseDistribution]:
    method get_distribution (line 182) | def get_distribution(self, name: str) -> Optional[BaseDistribution]:

FILE: lib/python3.7/site-packages/pip/_internal/metadata/pkg_resources.py
  class EntryPoint (line 30) | class EntryPoint(NamedTuple):
  class InMemoryMetadata (line 36) | class InMemoryMetadata:
    method __init__ (line 42) | def __init__(self, metadata: Mapping[str, bytes], wheel_name: str) -> ...
    method has_metadata (line 46) | def has_metadata(self, name: str) -> bool:
    method get_metadata (line 49) | def get_metadata(self, name: str) -> str:
    method get_metadata_lines (line 58) | def get_metadata_lines(self, name: str) -> Iterable[str]:
    method metadata_isdir (line 61) | def metadata_isdir(self, name: str) -> bool:
    method metadata_listdir (line 64) | def metadata_listdir(self, name: str) -> List[str]:
    method run_script (line 67) | def run_script(self, script_name: str, namespace: str) -> None:
  class Distribution (line 71) | class Distribution(BaseDistribution):
    method __init__ (line 72) | def __init__(self, dist: pkg_resources.Distribution) -> None:
    method from_directory (line 76) | def from_directory(cls, directory: str) -> BaseDistribution:
    method from_metadata_file_contents (line 96) | def from_metadata_file_contents(
    method from_wheel (line 113) | def from_wheel(cls, wheel: Wheel, name: str) -> BaseDistribution:
    method location (line 134) | def location(self) -> Optional[str]:
    method installed_location (line 138) | def installed_location(self) -> Optional[str]:
    method info_location (line 149) | def info_location(self) -> Optional[str]:
    method installed_by_distutils (line 153) | def installed_by_distutils(self) -> bool:
    method canonical_name (line 163) | def canonical_name(self) -> NormalizedName:
    method version (line 167) | def version(self) -> DistributionVersion:
    method is_file (line 170) | def is_file(self, path: InfoPath) -> bool:
    method iter_distutils_script_names (line 173) | def iter_distutils_script_names(self) -> Iterator[str]:
    method read_text (line 176) | def read_text(self, path: InfoPath) -> str:
    method iter_entry_points (line 185) | def iter_entry_points(self) -> Iterable[BaseEntryPoint]:
    method _metadata_impl (line 191) | def _metadata_impl(self) -> email.message.Message:
    method iter_dependencies (line 213) | def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[...
    method iter_provided_extras (line 218) | def iter_provided_extras(self) -> Iterable[str]:
  class Environment (line 222) | class Environment(BaseEnvironment):
    method __init__ (line 223) | def __init__(self, ws: pkg_resources.WorkingSet) -> None:
    method default (line 227) | def default(cls) -> BaseEnvironment:
    method from_paths (line 231) | def from_paths(cls, paths: Optional[List[str]]) -> BaseEnvironment:
    method _iter_distributions (line 234) | def _iter_distributions(self) -> Iterator[BaseDistribution]:
    method _search_distribution (line 238) | def _search_distribution(self, name: str) -> Optional[BaseDistribution]:
    method get_distribution (line 250) | def get_distribution(self, name: str) -> Optional[BaseDistribution]:

FILE: lib/python3.7/site-packages/pip/_internal/models/candidate.py
  class InstallationCandidate (line 7) | class InstallationCandidate(KeyBasedCompareMixin):
    method __init__ (line 12) | def __init__(self, name: str, version: str, link: Link) -> None:
    method __repr__ (line 22) | def __repr__(self) -> str:
    method __str__ (line 29) | def __str__(self) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/models/direct_url.py
  class DirectUrlValidationError (line 21) | class DirectUrlValidationError(Exception):
  function _get (line 25) | def _get(
  function _get_required (line 41) | def _get_required(
  function _exactly_one_of (line 50) | def _exactly_one_of(infos: Iterable[Optional["InfoType"]]) -> "InfoType":
  function _filter_none (line 64) | def _filter_none(**kwargs: Any) -> Dict[str, Any]:
  class VcsInfo (line 69) | class VcsInfo:
    method __init__ (line 72) | def __init__(
    method _from_dict (line 83) | def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["VcsInfo"]:
    method _to_dict (line 92) | def _to_dict(self) -> Dict[str, Any]:
  class ArchiveInfo (line 100) | class ArchiveInfo:
    method __init__ (line 103) | def __init__(
    method _from_dict (line 110) | def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["ArchiveI...
    method _to_dict (line 115) | def _to_dict(self) -> Dict[str, Any]:
  class DirInfo (line 119) | class DirInfo:
    method __init__ (line 122) | def __init__(
    method _from_dict (line 129) | def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["DirInfo"]:
    method _to_dict (line 134) | def _to_dict(self) -> Dict[str, Any]:
  class DirectUrl (line 141) | class DirectUrl:
    method __init__ (line 142) | def __init__(
    method _remove_auth_from_netloc (line 152) | def _remove_auth_from_netloc(self, netloc: str) -> str:
    method redacted_url (line 167) | def redacted_url(self) -> str:
    method validate (line 179) | def validate(self) -> None:
    method from_dict (line 183) | def from_dict(cls, d: Dict[str, Any]) -> "DirectUrl":
    method to_dict (line 196) | def to_dict(self) -> Dict[str, Any]:
    method from_json (line 205) | def from_json(cls, s: str) -> "DirectUrl":
    method to_json (line 208) | def to_json(self) -> str:
    method is_local_editable (line 211) | def is_local_editable(self) -> bool:

FILE: lib/python3.7/site-packages/pip/_internal/models/format_control.py
  class FormatControl (line 8) | class FormatControl:
    method __init__ (line 13) | def __init__(
    method __eq__ (line 26) | def __eq__(self, other: object) -> bool:
    method __repr__ (line 35) | def __repr__(self) -> str:
    method handle_mutual_excludes (line 41) | def handle_mutual_excludes(value: str, target: Set[str], other: Set[st...
    method get_allowed_formats (line 63) | def get_allowed_formats(self, canonical_name: str) -> FrozenSet[str]:
    method disallow_binaries (line 75) | def disallow_binaries(self) -> None:

FILE: lib/python3.7/site-packages/pip/_internal/models/index.py
  class PackageIndex (line 4) | class PackageIndex:
    method __init__ (line 9) | def __init__(self, url: str, file_storage_domain: str) -> None:
    method _url_for_path (line 21) | def _url_for_path(self, path: str) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/models/installation_report.py
  class InstallationReport (line 9) | class InstallationReport:
    method __init__ (line 10) | def __init__(self, install_requirements: Sequence[InstallRequirement]):
    method _install_req_to_dict (line 14) | def _install_req_to_dict(cls, ireq: InstallRequirement) -> Dict[str, A...
    method to_dict (line 39) | def to_dict(self) -> Dict[str, Any]:

FILE: lib/python3.7/site-packages/pip/_internal/models/link.py
  class LinkHash (line 44) | class LinkHash:
    method __post_init__ (line 68) | def __post_init__(self) -> None:
    method split_hash_name_and_value (line 73) | def split_hash_name_and_value(cls, url: str) -> Optional["LinkHash"]:
    method as_hashes (line 81) | def as_hashes(self) -> Hashes:
    method is_hash_allowed (line 85) | def is_hash_allowed(self, hashes: Optional[Hashes]) -> bool:
  function _clean_url_path_part (line 94) | def _clean_url_path_part(part: str) -> str:
  function _clean_file_url_path (line 102) | def _clean_file_url_path(part: str) -> str:
  function _clean_url_path (line 119) | def _clean_url_path(path: str, is_local_path: bool) -> str:
  function _ensure_quoted_url (line 141) | def _ensure_quoted_url(url: str) -> str:
  class Link (line 156) | class Link(KeyBasedCompareMixin):
    method __init__ (line 171) | def __init__(
    method from_json (line 234) | def from_json(
    method from_element (line 269) | def from_element(
    method __str__ (line 295) | def __str__(self) -> str:
    method __repr__ (line 307) | def __repr__(self) -> str:
    method url (line 311) | def url(self) -> str:
    method filename (line 315) | def filename(self) -> str:
    method file_path (line 329) | def file_path(self) -> str:
    method scheme (line 333) | def scheme(self) -> str:
    method netloc (line 337) | def netloc(self) -> str:
    method path (line 344) | def path(self) -> str:
    method splitext (line 347) | def splitext(self) -> Tuple[str, str]:
    method ext (line 351) | def ext(self) -> str:
    method url_without_fragment (line 355) | def url_without_fragment(self) -> str:
    method egg_fragment (line 362) | def egg_fragment(self) -> Optional[str]:
    method subdirectory_fragment (line 371) | def subdirectory_fragment(self) -> Optional[str]:
    method metadata_link (line 377) | def metadata_link(self) -> Optional["Link"]:
    method as_hashes (line 392) | def as_hashes(self) -> Optional[Hashes]:
    method hash (line 398) | def hash(self) -> Optional[str]:
    method hash_name (line 404) | def hash_name(self) -> Optional[str]:
    method show_url (line 410) | def show_url(self) -> str:
    method is_file (line 414) | def is_file(self) -> bool:
    method is_existing_dir (line 417) | def is_existing_dir(self) -> bool:
    method is_wheel (line 421) | def is_wheel(self) -> bool:
    method is_vcs (line 425) | def is_vcs(self) -> bool:
    method is_yanked (line 431) | def is_yanked(self) -> bool:
    method has_hash (line 435) | def has_hash(self) -> bool:
    method is_hash_allowed (line 438) | def is_hash_allowed(self, hashes: Optional[Hashes]) -> bool:
  class _CleanResult (line 447) | class _CleanResult(NamedTuple):
  function _clean_link (line 479) | def _clean_link(link: Link) -> _CleanResult:
  function links_equivalent (line 506) | def links_equivalent(link1: Link, link2: Link) -> bool:

FILE: lib/python3.7/site-packages/pip/_internal/models/scheme.py
  class Scheme (line 12) | class Scheme:
    method __init__ (line 19) | def __init__(

FILE: lib/python3.7/site-packages/pip/_internal/models/search_scope.py
  class SearchScope (line 17) | class SearchScope:
    method create (line 26) | def create(
    method __init__ (line 67) | def __init__(
    method get_formatted_locations (line 77) | def get_formatted_locations(self) -> str:
    method get_index_urls_locations (line 113) | def get_index_urls_locations(self, project_name: str) -> List[str]:

FILE: lib/python3.7/site-packages/pip/_internal/models/selection_prefs.py
  class SelectionPreferences (line 6) | class SelectionPreferences:
    method __init__ (line 24) | def __init__(

FILE: lib/python3.7/site-packages/pip/_internal/models/target_python.py
  class TargetPython (line 10) | class TargetPython:
    method __init__ (line 27) | def __init__(
    method format_given (line 67) | def format_given(self) -> str:
    method get_tags (line 87) | def get_tags(self) -> List[Tag]:

FILE: lib/python3.7/site-packages/pip/_internal/models/wheel.py
  class Wheel (line 12) | class Wheel:
    method __init__ (line 22) | def __init__(self, filename: str) -> None:
    method get_formatted_file_tags (line 44) | def get_formatted_file_tags(self) -> List[str]:
    method support_index_min (line 48) | def support_index_min(self, tags: List[Tag]) -> int:
    method find_most_preferred_tag (line 66) | def find_most_preferred_tag(
    method supported (line 87) | def supported(self, tags: Iterable[Tag]) -> bool:

FILE: lib/python3.7/site-packages/pip/_internal/network/auth.py
  function get_keyring_auth (line 40) | def get_keyring_auth(url: Optional[str], username: Optional[str]) -> Opt...
  class MultiDomainBasicAuth (line 73) | class MultiDomainBasicAuth(AuthBase):
    method __init__ (line 74) | def __init__(
    method _get_index_url (line 87) | def _get_index_url(self, url: str) -> Optional[str]:
    method _get_new_credentials (line 109) | def _get_new_credentials(
    method _get_url_and_credentials (line 165) | def _get_url_and_credentials(
    method __call__ (line 213) | def __call__(self, req: Request) -> Request:
    method _prompt_for_password (line 230) | def _prompt_for_password(
    method _should_save_password_to_keyring (line 243) | def _should_save_password_to_keyring(self) -> bool:
    method handle_401 (line 248) | def handle_401(self, resp: Response, **kwargs: Any) -> Response:
    method warn_on_401 (line 302) | def warn_on_401(self, resp: Response, **kwargs: Any) -> None:
    method save_credentials (line 310) | def save_credentials(self, resp: Response, **kwargs: Any) -> None:

FILE: lib/python3.7/site-packages/pip/_internal/network/cache.py
  function is_from_cache (line 16) | def is_from_cache(response: Response) -> bool:
  function suppressed_cache_errors (line 21) | def suppressed_cache_errors() -> Generator[None, None, None]:
  class SafeFileCache (line 31) | class SafeFileCache(BaseCache):
    method __init__ (line 37) | def __init__(self, directory: str) -> None:
    method _get_cache_path (line 42) | def _get_cache_path(self, name: str) -> str:
    method get (line 50) | def get(self, key: str) -> Optional[bytes]:
    method set (line 56) | def set(self, key: str, value: bytes, expires: Optional[int] = None) -...
    method delete (line 66) | def delete(self, key: str) -> None:

FILE: lib/python3.7/site-packages/pip/_internal/network/download.py
  function _get_http_response_size (line 23) | def _get_http_response_size(resp: Response) -> Optional[int]:
  function _prepare_download (line 30) | def _prepare_download(
  function sanitize_content_filename (line 72) | def sanitize_content_filename(filename: str) -> str:
  function parse_content_disposition (line 79) | def parse_content_disposition(content_disposition: str, default_filename...
  function _get_http_response_filename (line 94) | def _get_http_response_filename(resp: Response, link: Link) -> str:
  function _http_get_download (line 115) | def _http_get_download(session: PipSession, link: Link) -> Response:
  class Downloader (line 122) | class Downloader:
    method __init__ (line 123) | def __init__(
    method __call__ (line 131) | def __call__(self, link: Link, location: str) -> Tuple[str, str]:
  class BatchDownloader (line 153) | class BatchDownloader:
    method __init__ (line 154) | def __init__(
    method __call__ (line 162) | def __call__(

FILE: lib/python3.7/site-packages/pip/_internal/network/lazy_wheel.py
  class HTTPRangeRequestUnsupported (line 19) | class HTTPRangeRequestUnsupported(Exception):
  function dist_from_wheel_url (line 23) | def dist_from_wheel_url(name: str, url: str, session: PipSession) -> Bas...
  class LazyZipOverHTTP (line 40) | class LazyZipOverHTTP:
    method __init__ (line 49) | def __init__(
    method mode (line 66) | def mode(self) -> str:
    method name (line 71) | def name(self) -> str:
    method seekable (line 75) | def seekable(self) -> bool:
    method close (line 79) | def close(self) -> None:
    method closed (line 84) | def closed(self) -> bool:
    method read (line 88) | def read(self, size: int = -1) -> bytes:
    method readable (line 102) | def readable(self) -> bool:
    method seek (line 106) | def seek(self, offset: int, whence: int = 0) -> int:
    method tell (line 116) | def tell(self) -> int:
    method truncate (line 120) | def truncate(self, size: Optional[int] = None) -> int:
    method writable (line 130) | def writable(self) -> bool:
    method __enter__ (line 134) | def __enter__(self) -> "LazyZipOverHTTP":
    method __exit__ (line 138) | def __exit__(self, *exc: Any) -> None:
    method _stay (line 142) | def _stay(self) -> Generator[None, None, None]:
    method _check_zip (line 153) | def _check_zip(self) -> None:
    method _stream_response (line 168) | def _stream_response(
    method _merge (line 178) | def _merge(
    method _download (line 200) | def _download(self, start: int, end: int) -> None:

FILE: lib/python3.7/site-packages/pip/_internal/network/session.py
  function looks_like_ci (line 99) | def looks_like_ci() -> bool:
  function user_agent (line 109) | def user_agent() -> str:
  class LocalFSAdapter (line 210) | class LocalFSAdapter(BaseAdapter):
    method send (line 211) | def send(
    method close (line 250) | def close(self) -> None:
  class _SSLContextAdapterMixin (line 254) | class _SSLContextAdapterMixin:
    method __init__ (line 262) | def __init__(
    method init_poolmanager (line 271) | def init_poolmanager(
  class HTTPAdapter (line 288) | class HTTPAdapter(_SSLContextAdapterMixin, _BaseHTTPAdapter):
  class CacheControlAdapter (line 292) | class CacheControlAdapter(_SSLContextAdapterMixin, _BaseCacheControlAdap...
  class InsecureHTTPAdapter (line 296) | class InsecureHTTPAdapter(HTTPAdapter):
    method cert_verify (line 297) | def cert_verify(
  class InsecureCacheControlAdapter (line 307) | class InsecureCacheControlAdapter(CacheControlAdapter):
    method cert_verify (line 308) | def cert_verify(
  class PipSession (line 318) | class PipSession(requests.Session):
    method __init__ (line 322) | def __init__(
    method update_index_urls (line 401) | def update_index_urls(self, new_index_urls: List[str]) -> None:
    method add_trusted_host (line 408) | def add_trusted_host(
    method iter_secure_origins (line 439) | def iter_secure_origins(self) -> Generator[SecureOrigin, None, None]:
    method is_secure_origin (line 444) | def is_secure_origin(self, location: Link) -> bool:
    method request (line 511) | def request(self, method: str, url: str, *args: Any, **kwargs: Any) ->...

FILE: lib/python3.7/site-packages/pip/_internal/network/utils.py
  function raise_for_status (line 29) | def raise_for_status(resp: Response) -> None:
  function response_chunks (line 57) | def response_chunks(

FILE: lib/python3.7/site-packages/pip/_internal/network/xmlrpc.py
  class PipXmlrpcTransport (line 19) | class PipXmlrpcTransport(xmlrpc.client.Transport):
    method __init__ (line 24) | def __init__(
    method request (line 32) | def request(

FILE: lib/python3.7/site-packages/pip/_internal/operations/build/build_tracker.py
  function update_env_context_manager (line 16) | def update_env_context_manager(**changes: str) -> Generator[None, None, ...
  function get_build_tracker (line 42) | def get_build_tracker() -> Generator["BuildTracker", None, None]:
  class BuildTracker (line 54) | class BuildTracker:
    method __init__ (line 55) | def __init__(self, root: str) -> None:
    method __enter__ (line 60) | def __enter__(self) -> "BuildTracker":
    method __exit__ (line 64) | def __exit__(
    method _entry_path (line 72) | def _entry_path(self, link: Link) -> str:
    method add (line 76) | def add(self, req: InstallRequirement) -> None:
    method remove (line 104) | def remove(self, req: InstallRequirement) -> None:
    method cleanup (line 114) | def cleanup(self) -> None:
    method track (line 121) | def track(self, req: InstallRequirement) -> Generator[None, None, None]:

FILE: lib/python3.7/site-packages/pip/_internal/operations/build/metadata.py
  function generate_metadata (line 17) | def generate_metadata(

FILE: lib/python3.7/site-packages/pip/_internal/operations/build/metadata_editable.py
  function generate_editable_metadata (line 17) | def generate_editable_metadata(

FILE: lib/python3.7/site-packages/pip/_internal/operations/build/metadata_legacy.py
  function _find_egg_info (line 21) | def _find_egg_info(directory: str) -> str:
  function generate_metadata (line 36) | def generate_metadata(

FILE: lib/python3.7/site-packages/pip/_internal/operations/build/wheel.py
  function build_wheel_pep517 (line 12) | def build_wheel_pep517(

FILE: lib/python3.7/site-packages/pip/_internal/operations/build/wheel_editable.py
  function build_wheel_editable (line 12) | def build_wheel_editable(

FILE: lib/python3.7/site-packages/pip/_internal/operations/build/wheel_legacy.py
  function format_command_result (line 12) | def format_command_result(
  function get_legacy_build_wheel_path (line 32) | def get_legacy_build_wheel_path(
  function build_wheel_legacy (line 59) | def build_wheel_legacy(

FILE: lib/python3.7/site-packages/pip/_internal/operations/check.py
  class PackageDetails (line 18) | class PackageDetails(NamedTuple):
  function create_package_set_from_installed (line 34) | def create_package_set_from_installed() -> Tuple[PackageSet, bool]:
  function check_package_set (line 51) | def check_package_set(
  function check_install_conflicts (line 96) | def check_install_conflicts(to_install: List[InstallRequirement]) -> Con...
  function _simulate_installation_of (line 116) | def _simulate_installation_of(
  function _create_whitelist (line 135) | def _create_whitelist(

FILE: lib/python3.7/site-packages/pip/_internal/operations/freeze.py
  class _EditableInfo (line 21) | class _EditableInfo(NamedTuple):
  function freeze (line 26) | def freeze(
  function _format_as_name_version (line 147) | def _format_as_name_version(dist: BaseDistribution) -> str:
  function _get_editable_info (line 153) | def _get_editable_info(dist: BaseDistribution) -> _EditableInfo:
  class FrozenRequirement (line 219) | class FrozenRequirement:
    method __init__ (line 220) | def __init__(
    method from_dist (line 234) | def from_dist(cls, dist: BaseDistribution) -> "FrozenRequirement":
    method __str__ (line 250) | def __str__(self) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/operations/install/editable_legacy.py
  function install_editable (line 14) | def install_editable(

FILE: lib/python3.7/site-packages/pip/_internal/operations/install/legacy.py
  function write_installed_files_from_setuptools_record (line 20) | def write_installed_files_from_setuptools_record(
  function install (line 57) | def install(

FILE: lib/python3.7/site-packages/pip/_internal/operations/install/wheel.py
  class File (line 65) | class File(Protocol):
    method save (line 70) | def save(self) -> None:
  function rehash (line 80) | def rehash(path: str, blocksize: int = 1 << 20) -> Tuple[str, str]:
  function csv_io_kwargs (line 87) | def csv_io_kwargs(mode: str) -> Dict[str, Any]:
  function fix_script (line 94) | def fix_script(path: str) -> bool:
  function wheel_root_is_purelib (line 114) | def wheel_root_is_purelib(metadata: Message) -> bool:
  function get_entrypoints (line 118) | def get_entrypoints(dist: BaseDistribution) -> Tuple[Dict[str, str], Dic...
  function message_about_scripts_not_on_PATH (line 129) | def message_about_scripts_not_on_PATH(scripts: Sequence[str]) -> Optiona...
  function _normalized_outrows (line 201) | def _normalized_outrows(
  function _record_to_fs_path (line 227) | def _record_to_fs_path(record_path: RecordPath, lib_dir: str) -> str:
  function _fs_to_record_path (line 231) | def _fs_to_record_path(path: str, lib_dir: str) -> RecordPath:
  function get_csv_rows_for_installed (line 241) | def get_csv_rows_for_installed(
  function get_console_script_specs (line 273) | def get_console_script_specs(console: Dict[str, str]) -> List[str]:
  class ZipBackedFile (line 354) | class ZipBackedFile:
    method __init__ (line 355) | def __init__(
    method _getinfo (line 363) | def _getinfo(self) -> ZipInfo:
    method save (line 366) | def save(self) -> None:
  class ScriptFile (line 394) | class ScriptFile:
    method __init__ (line 395) | def __init__(self, file: "File") -> None:
    method save (line 401) | def save(self) -> None:
  class MissingCallableSuffix (line 406) | class MissingCallableSuffix(InstallationError):
    method __init__ (line 407) | def __init__(self, entry_point: str) -> None:
  function _raise_for_invalid_entrypoint (line 416) | def _raise_for_invalid_entrypoint(specification: str) -> None:
  class PipScriptMaker (line 422) | class PipScriptMaker(ScriptMaker):
    method make (line 423) | def make(
  function _install_wheel (line 430) | def _install_wheel(
  function req_error_context (line 709) | def req_error_context(req_description: str) -> Generator[None, None, None]:
  function install_wheel (line 717) | def install_wheel(

FILE: lib/python3.7/site-packages/pip/_internal/operations/prepare.py
  function _get_prepared_distribution (line 59) | def _get_prepared_distribution(
  function unpack_vcs_link (line 75) | def unpack_vcs_link(link: Link, location: str, verbosity: int) -> None:
  class File (line 81) | class File:
    method __init__ (line 82) | def __init__(self, path: str, content_type: Optional[str]) -> None:
  function get_http_url (line 90) | def get_http_url(
  function get_file_url (line 114) | def get_file_url(
  function unpack_url (line 138) | def unpack_url(
  function _check_download_dir (line 181) | def _check_download_dir(
  class RequirementPreparer (line 207) | class RequirementPreparer:
    method __init__ (line 210) | def __init__(
    method _log_preparing_link (line 264) | def _log_preparing_link(self, req: InstallRequirement) -> None:
    method _ensure_link_req_src_dir (line 281) | def _ensure_link_req_src_dir(
    method _get_linked_req_hashes (line 318) | def _get_linked_req_hashes(self, req: InstallRequirement) -> Hashes:
    method _fetch_metadata_only (line 350) | def _fetch_metadata_only(
    method _fetch_metadata_using_link_data_attr (line 364) | def _fetch_metadata_using_link_data_attr(
    method _fetch_metadata_using_lazy_wheel (line 405) | def _fetch_metadata_using_lazy_wheel(
    method _complete_partial_requirements (line 434) | def _complete_partial_requirements(
    method prepare_linked_requirement (line 466) | def prepare_linked_requirement(
    method prepare_linked_requirements_more (line 493) | def prepare_linked_requirements_more(
    method _prepare_linked_requirement (line 523) | def _prepare_linked_requirement(
    method save_linked_requirement (line 586) | def save_linked_requirement(self, req: InstallRequirement) -> None:
    method prepare_editable_requirement (line 612) | def prepare_editable_requirement(
    method prepare_installed_requirement (line 645) | def prepare_installed_requirement(

FILE: lib/python3.7/site-packages/pip/_internal/pyproject.py
  function _is_list_of_str (line 16) | def _is_list_of_str(obj: Any) -> bool:
  function make_pyproject_path (line 20) | def make_pyproject_path(unpacked_source_directory: str) -> str:
  function load_pyproject_toml (line 29) | def load_pyproject_toml(

FILE: lib/python3.7/site-packages/pip/_internal/req/__init__.py
  class InstallationResult (line 21) | class InstallationResult:
    method __init__ (line 22) | def __init__(self, name: str) -> None:
    method __repr__ (line 25) | def __repr__(self) -> str:
  function _validate_requirements (line 29) | def _validate_requirements(
  function install_given_reqs (line 37) | def install_given_reqs(

FILE: lib/python3.7/site-packages/pip/_internal/req/constructors.py
  function _strip_extras (line 42) | def _strip_extras(path: str) -> Tuple[str, Optional[str]]:
  function convert_extras (line 54) | def convert_extras(extras: Optional[str]) -> Set[str]:
  function parse_editable (line 60) | def parse_editable(editable_req: str) -> Tuple[Optional[str], str, Set[s...
  function check_first_requirement_in_file (line 115) | def check_first_requirement_in_file(filename: str) -> None:
  function deduce_helpful_msg (line 143) | def deduce_helpful_msg(req: str) -> str:
  class RequirementParts (line 168) | class RequirementParts:
    method __init__ (line 169) | def __init__(
  function parse_req_from_editable (line 182) | def parse_req_from_editable(editable_req: str) -> RequirementParts:
  function install_req_from_editable (line 201) | def install_req_from_editable(
  function _looks_like_path (line 233) | def _looks_like_path(name: str) -> bool:
  function _get_url_from_path (line 252) | def _get_url_from_path(path: str, name: str) -> Optional[str]:
  function parse_req_from_line (line 286) | def parse_req_from_line(name: str, line_source: Optional[str]) -> Requir...
  function install_req_from_line (line 376) | def install_req_from_line(
  function install_req_from_req_string (line 412) | def install_req_from_req_string(
  function install_req_from_parsed_requirement (line 452) | def install_req_from_parsed_requirement(
  function install_req_from_link_and_ireq (line 485) | def install_req_from_link_and_ireq(

FILE: lib/python3.7/site-packages/pip/_internal/req/req_file.py
  class ParsedRequirement (line 81) | class ParsedRequirement:
    method __init__ (line 82) | def __init__(
  class ParsedLine (line 99) | class ParsedLine:
    method __init__ (line 100) | def __init__(
  function parse_requirements (line 126) | def parse_requirements(
  function preprocess (line 153) | def preprocess(content: str) -> ReqFileLines:
  function handle_requirement_line (line 165) | def handle_requirement_line(
  function handle_option_line (line 206) | def handle_option_line(
  function handle_line (line 270) | def handle_line(
  class RequirementsFileParser (line 314) | class RequirementsFileParser:
    method __init__ (line 315) | def __init__(
    method parse (line 323) | def parse(
    method _parse_and_recurse (line 329) | def _parse_and_recurse(
    method _parse_file (line 360) | def _parse_file(
  function get_line_parser (line 384) | def get_line_parser(finder: Optional["PackageFinder"]) -> LineParser:
  function break_args_options (line 408) | def break_args_options(line: str) -> Tuple[str, str]:
  class OptionParsingError (line 425) | class OptionParsingError(Exception):
    method __init__ (line 426) | def __init__(self, msg: str) -> None:
  function build_parser (line 430) | def build_parser() -> optparse.OptionParser:
  function join_lines (line 453) | def join_lines(lines_enum: ReqFileLines) -> ReqFileLines:
  function ignore_comments (line 484) | def ignore_comments(lines_enum: ReqFileLines) -> ReqFileLines:
  function expand_env_variables (line 495) | def expand_env_variables(lines_enum: ReqFileLines) -> ReqFileLines:
  function get_file_content (line 522) | def get_file_content(url: str, session: PipSession) -> Tuple[str, str]:

FILE: lib/python3.7/site-packages/pip/_internal/req/req_install.py
  class InstallRequirement (line 70) | class InstallRequirement:
    method __init__ (line 77) | def __init__(
    method __str__ (line 188) | def __str__(self) -> str:
    method __repr__ (line 208) | def __repr__(self) -> str:
    method format_debug (line 213) | def format_debug(self) -> str:
    method name (line 226) | def name(self) -> Optional[str]:
    method supports_pyproject_editable (line 232) | def supports_pyproject_editable(self) -> bool:
    method specifier (line 244) | def specifier(self) -> SpecifierSet:
    method is_pinned (line 248) | def is_pinned(self) -> bool:
    method match_markers (line 256) | def match_markers(self, extras_requested: Optional[Iterable[str]] = No...
    method has_hash_options (line 269) | def has_hash_options(self) -> bool:
    method hashes (line 278) | def hashes(self, trust_internet: bool = True) -> Hashes:
    method from_path (line 299) | def from_path(self) -> Optional[str]:
    method ensure_build_location (line 313) | def ensure_build_location(
    method _set_requirement (line 356) | def _set_requirement(self) -> None:
    method warn_on_mismatching_name (line 378) | def warn_on_mismatching_name(self) -> None:
    method check_if_exists (line 395) | def check_if_exists(self, use_user_site: bool) -> None:
    method is_wheel (line 434) | def is_wheel(self) -> bool:
    method unpacked_source_directory (line 441) | def unpacked_source_directory(self) -> str:
    method setup_py_path (line 447) | def setup_py_path(self) -> str:
    method setup_cfg_path (line 454) | def setup_cfg_path(self) -> str:
    method pyproject_toml_path (line 461) | def pyproject_toml_path(self) -> str:
    method load_pyproject_toml (line 465) | def load_pyproject_toml(self) -> None:
    method isolated_editable_sanity_check (line 492) | def isolated_editable_sanity_check(self) -> None:
    method prepare_metadata (line 513) | def prepare_metadata(self) -> None:
    method metadata (line 558) | def metadata(self) -> Any:
    method get_dist (line 564) | def get_dist(self) -> BaseDistribution:
    method assert_source_matches_version (line 576) | def assert_source_matches_version(self) -> None:
    method ensure_has_source_dir (line 594) | def ensure_has_source_dir(
    method update_editable (line 617) | def update_editable(self) -> None:
    method uninstall (line 637) | def uninstall(
    method _get_archive_name (line 663) | def _get_archive_name(self, path: str, parentdir: str, rootdir: str) -...
    method archive (line 676) | def archive(self, build_dir: Optional[str]) -> None:
    method install (line 743) | def install(
  function check_invalid_constraint_type (line 854) | def check_invalid_constraint_type(req: InstallRequirement) -> str:
  function _has_option (line 883) | def _has_option(options: Values, reqs: List[InstallRequirement], option:...
  function _install_option_ignored (line 892) | def _install_option_ignored(
  class LegacySetupPyOptionsCheckMode (line 901) | class LegacySetupPyOptionsCheckMode(Enum):
  function check_legacy_setup_py_options (line 907) | def check_legacy_setup_py_options(

FILE: lib/python3.7/site-packages/pip/_internal/req/req_set.py
  class RequirementSet (line 12) | class RequirementSet:
    method __init__ (line 13) | def __init__(self, check_supported_wheels: bool = True) -> None:
    method __str__ (line 21) | def __str__(self) -> str:
    method __repr__ (line 28) | def __repr__(self) -> str:
    method add_unnamed_requirement (line 41) | def add_unnamed_requirement(self, install_req: InstallRequirement) -> ...
    method add_named_requirement (line 45) | def add_named_requirement(self, install_req: InstallRequirement) -> None:
    method has_requirement (line 51) | def has_requirement(self, name: str) -> bool:
    method get_requirement (line 59) | def get_requirement(self, name: str) -> InstallRequirement:
    method all_requirements (line 68) | def all_requirements(self) -> List[InstallRequirement]:
    method requirements_to_install (line 72) | def requirements_to_install(self) -> List[InstallRequirement]:

FILE: lib/python3.7/site-packages/pip/_internal/req/req_uninstall.py
  function _script_names (line 20) | def _script_names(
  function _unique (line 39) | def _unique(
  function uninstallation_paths (line 54) | def uninstallation_paths(dist: BaseDistribution) -> Generator[str, None,...
  function compact (line 97) | def compact(paths: Iterable[str]) -> Set[str]:
  function compress_for_rename (line 116) | def compress_for_rename(paths: Iterable[str]) -> Set[str]:
  function compress_for_output_listing (line 150) | def compress_for_output_listing(paths: Iterable[str]) -> Tuple[Set[str],...
  class StashedUninstallPathSet (line 200) | class StashedUninstallPathSet:
    method __init__ (line 204) | def __init__(self) -> None:
    method _get_directory_stash (line 212) | def _get_directory_stash(self, path: str) -> str:
    method _get_file_stash (line 226) | def _get_file_stash(self, path: str) -> str:
    method stash (line 253) | def stash(self, path: str) -> str:
    method commit (line 274) | def commit(self) -> None:
    method rollback (line 281) | def rollback(self) -> None:
    method can_rollback (line 301) | def can_rollback(self) -> bool:
  class UninstallPathSet (line 305) | class UninstallPathSet:
    method __init__ (line 309) | def __init__(self, dist: BaseDistribution) -> None:
    method _permitted (line 316) | def _permitted(self, path: str) -> bool:
    method add (line 324) | def add(self, path: str) -> None:
    method add_pth (line 343) | def add_pth(self, pth_file: str, entry: str) -> None:
    method remove (line 352) | def remove(self, auto_confirm: bool = False, verbose: bool = False) ->...
    method _allowed_to_proceed (line 381) | def _allowed_to_proceed(self, verbose: bool) -> bool:
    method rollback (line 409) | def rollback(self) -> None:
    method commit (line 422) | def commit(self) -> None:
    method from_dist (line 427) | def from_dist(cls, dist: BaseDistribution) -> "UninstallPathSet":
  class UninstallPthEntries (line 585) | class UninstallPthEntries:
    method __init__ (line 586) | def __init__(self, pth_file: str) -> None:
    method add (line 591) | def add(self, entry: str) -> None:
    method remove (line 606) | def remove(self) -> None:
    method rollback (line 633) | def rollback(self) -> bool:

FILE: lib/python3.7/site-packages/pip/_internal/resolution/base.py
  class BaseResolver (line 11) | class BaseResolver:
    method resolve (line 12) | def resolve(
    method get_installation_order (line 17) | def get_installation_order(

FILE: lib/python3.7/site-packages/pip/_internal/resolution/legacy/resolver.py
  function _check_dist_requires_python (line 58) | def _check_dist_requires_python(
  class Resolver (line 113) | class Resolver(BaseResolver):
    method __init__ (line 120) | def __init__(
    method resolve (line 158) | def resolve(
    method _add_requirement_to_set (line 195) | def _add_requirement_to_set(
    method _is_upgrade_allowed (line 313) | def _is_upgrade_allowed(self, req: InstallRequirement) -> bool:
    method _set_req_to_reinstall (line 322) | def _set_req_to_reinstall(self, req: InstallRequirement) -> None:
    method _check_skip_installed (line 332) | def _check_skip_installed(
    method _find_requirement_link (line 386) | def _find_requirement_link(self, req: InstallRequirement) -> Optional[...
    method _populate_link (line 408) | def _populate_link(self, req: InstallRequirement) -> None:
    method _get_dist_for (line 445) | def _get_dist_for(self, req: InstallRequirement) -> BaseDistribution:
    method _resolve_one (line 491) | def _resolve_one(
    method get_installation_order (line 573) | def get_installation_order(

FILE: lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/base.py
  function format_name (line 15) | def format_name(project: str, extras: FrozenSet[str]) -> str:
  class Constraint (line 22) | class Constraint:
    method __init__ (line 23) | def __init__(
    method empty (line 31) | def empty(cls) -> "Constraint":
    method from_ireq (line 35) | def from_ireq(cls, ireq: InstallRequirement) -> "Constraint":
    method __bool__ (line 39) | def __bool__(self) -> bool:
    method __and__ (line 42) | def __and__(self, other: InstallRequirement) -> "Constraint":
    method is_satisfied_by (line 52) | def is_satisfied_by(self, candidate: "Candidate") -> bool:
  class Requirement (line 62) | class Requirement:
    method project_name (line 64) | def project_name(self) -> NormalizedName:
    method name (line 74) | def name(self) -> str:
    method is_satisfied_by (line 82) | def is_satisfied_by(self, candidate: "Candidate") -> bool:
    method get_candidate_lookup (line 85) | def get_candidate_lookup(self) -> CandidateLookup:
    method format_for_error (line 88) | def format_for_error(self) -> str:
  function _match_link (line 92) | def _match_link(link: Link, candidate: "Candidate") -> bool:
  class Candidate (line 98) | class Candidate:
    method project_name (line 100) | def project_name(self) -> NormalizedName:
    method name (line 110) | def name(self) -> str:
    method version (line 119) | def version(self) -> CandidateVersion:
    method is_installed (line 123) | def is_installed(self) -> bool:
    method is_editable (line 127) | def is_editable(self) -> bool:
    method source_link (line 131) | def source_link(self) -> Optional[Link]:
    method iter_dependencies (line 134) | def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[...
    method get_install_requirement (line 137) | def get_install_requirement(self) -> Optional[InstallRequirement]:
    method format_for_error (line 140) | def format_for_error(self) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/candidates.py
  function as_base_candidate (line 41) | def as_base_candidate(candidate: Candidate) -> Optional[BaseCandidate]:
  function make_install_req_from_link (line 53) | def make_install_req_from_link(
  function make_install_req_from_editable (line 80) | def make_install_req_from_editable(
  function _make_install_req_from_dist (line 101) | def _make_install_req_from_dist(
  class _InstallRequirementBackedCandidate (line 128) | class _InstallRequirementBackedCandidate(Candidate):
    method __init__ (line 147) | def __init__(
    method __str__ (line 164) | def __str__(self) -> str:
    method __repr__ (line 167) | def __repr__(self) -> str:
    method __hash__ (line 173) | def __hash__(self) -> int:
    method __eq__ (line 176) | def __eq__(self, other: Any) -> bool:
    method source_link (line 182) | def source_link(self) -> Optional[Link]:
    method project_name (line 186) | def project_name(self) -> NormalizedName:
    method name (line 193) | def name(self) -> str:
    method version (line 197) | def version(self) -> CandidateVersion:
    method format_for_error (line 202) | def format_for_error(self) -> str:
    method _prepare_distribution (line 209) | def _prepare_distribution(self) -> BaseDistribution:
    method _check_metadata_consistency (line 212) | def _check_metadata_consistency(self, dist: BaseDistribution) -> None:
    method _prepare (line 229) | def _prepare(self) -> BaseDistribution:
    method iter_dependencies (line 246) | def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[...
    method get_install_requirement (line 252) | def get_install_requirement(self) -> Optional[InstallRequirement]:
  class LinkCandidate (line 256) | class LinkCandidate(_InstallRequirementBackedCandidate):
    method __init__ (line 259) | def __init__(
    method _prepare_distribution (line 306) | def _prepare_distribution(self) -> BaseDistribution:
  class EditableCandidate (line 311) | class EditableCandidate(_InstallRequirementBackedCandidate):
    method __init__ (line 314) | def __init__(
    method _prepare_distribution (line 331) | def _prepare_distribution(self) -> BaseDistribution:
  class AlreadyInstalledCandidate (line 335) | class AlreadyInstalledCandidate(Candidate):
    method __init__ (line 339) | def __init__(
    method __str__ (line 356) | def __str__(self) -> str:
    method __repr__ (line 359) | def __repr__(self) -> str:
    method __hash__ (line 365) | def __hash__(self) -> int:
    method __eq__ (line 368) | def __eq__(self, other: Any) -> bool:
    method project_name (line 374) | def project_name(self) -> NormalizedName:
    method name (line 378) | def name(self) -> str:
    method version (line 382) | def version(self) -> CandidateVersion:
    method is_editable (line 386) | def is_editable(self) -> bool:
    method format_for_error (line 389) | def format_for_error(self) -> str:
    method iter_dependencies (line 392) | def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[...
    method get_install_requirement (line 398) | def get_install_requirement(self) -> Optional[InstallRequirement]:
  class ExtrasCandidate (line 402) | class ExtrasCandidate(Candidate):
    method __init__ (line 427) | def __init__(
    method __str__ (line 435) | def __str__(self) -> str:
    method __repr__ (line 439) | def __repr__(self) -> str:
    method __hash__ (line 446) | def __hash__(self) -> int:
    method __eq__ (line 449) | def __eq__(self, other: Any) -> bool:
    method project_name (line 455) | def project_name(self) -> NormalizedName:
    method name (line 459) | def name(self) -> str:
    method version (line 464) | def version(self) -> CandidateVersion:
    method format_for_error (line 467) | def format_for_error(self) -> str:
    method is_installed (line 473) | def is_installed(self) -> bool:
    method is_editable (line 477) | def is_editable(self) -> bool:
    method source_link (line 481) | def source_link(self) -> Optional[Link]:
    method iter_dependencies (line 484) | def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[...
    method get_install_requirement (line 512) | def get_install_requirement(self) -> Optional[InstallRequirement]:
  class RequiresPythonCandidate (line 519) | class RequiresPythonCandidate(Candidate):
    method __init__ (line 523) | def __init__(self, py_version_info: Optional[Tuple[int, ...]]) -> None:
    method __str__ (line 534) | def __str__(self) -> str:
    method project_name (line 538) | def project_name(self) -> NormalizedName:
    method name (line 542) | def name(self) -> str:
    method version (line 546) | def version(self) -> CandidateVersion:
    method format_for_error (line 549) | def format_for_error(self) -> str:
    method iter_dependencies (line 552) | def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[...
    method get_install_requirement (line 555) | def get_install_requirement(self) -> Optional[InstallRequirement]:

FILE: lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/factory.py
  class ConflictCause (line 71) | class ConflictCause(Protocol):
  class CollectedRootRequirements (line 82) | class CollectedRootRequirements(NamedTuple):
  class Factory (line 88) | class Factory:
    method __init__ (line 89) | def __init__(
    method force_reinstall (line 128) | def force_reinstall(self) -> bool:
    method _fail_if_link_is_unsupported_wheel (line 131) | def _fail_if_link_is_unsupported_wheel(self, link: Link) -> None:
    method _make_extras_candidate (line 140) | def _make_extras_candidate(
    method _make_candidate_from_dist (line 151) | def _make_candidate_from_dist(
    method _make_candidate_from_link (line 166) | def _make_candidate_from_link(
    method _iter_found_candidates (line 228) | def _iter_found_candidates(
    method _iter_explicit_candidates_from_base (line 325) | def _iter_explicit_candidates_from_base(
    method _iter_candidates_from_constraints (line 347) | def _iter_candidates_from_constraints(
    method find_candidates (line 370) | def find_candidates(
    method _make_requirement_from_install_req (line 440) | def _make_requirement_from_install_req(
    method collect_root_requirements (line 472) | def collect_root_requirements(
    method make_requirement_from_candidate (line 502) | def make_requirement_from_candidate(
    method make_requirement_from_spec (line 507) | def make_requirement_from_spec(
    method make_requires_python_requirement (line 516) | def make_requires_python_requirement(
    method get_wheel_cache_entry (line 527) | def get_wheel_cache_entry(
    method get_dist_to_uninstall (line 546) | def get_dist_to_uninstall(self, candidate: Candidate) -> Optional[Base...
    method _report_requires_python_error (line 574) | def _report_requires_python_error(
    method _report_single_requirement_conflict (line 596) | def _report_single_requirement_conflict(
    method get_installation_error (line 630) | def get_installation_error(

FILE: lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py
  function _iter_built (line 37) | def _iter_built(infos: Iterator[IndexCandidateInfo]) -> Iterator[Candida...
  function _iter_built_with_prepended (line 54) | def _iter_built_with_prepended(
  function _iter_built_with_inserted (line 76) | def _iter_built_with_inserted(
  class FoundCandidates (line 108) | class FoundCandidates(SequenceCandidate):
    method __init__ (line 117) | def __init__(
    method __getitem__ (line 129) | def __getitem__(self, index: Any) -> Any:
    method __iter__ (line 135) | def __iter__(self) -> Iterator[Candidate]:
    method __len__ (line 145) | def __len__(self) -> int:
    method __bool__ (line 152) | def __bool__(self) -> bool:

FILE: lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/provider.py
  function _get_with_identifier (line 53) | def _get_with_identifier(
  class PipProvider (line 78) | class PipProvider(_ProviderBase):
    method __init__ (line 89) | def __init__(
    method identify (line 104) | def identify(self, requirement_or_candidate: Union[Requirement, Candid...
    method get_preference (line 107) | def get_preference(  # type: ignore
    method find_matches (line 191) | def find_matches(
    method is_satisfied_by (line 232) | def is_satisfied_by(self, requirement: Requirement, candidate: Candida...
    method get_dependencies (line 235) | def get_dependencies(self, candidate: Candidate) -> Sequence[Requireme...
    method is_backtrack_cause (line 240) | def is_backtrack_cause(

FILE: lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/reporter.py
  class PipReporter (line 12) | class PipReporter(BaseReporter):
    method __init__ (line 13) | def __init__(self) -> None:
    method backtracking (line 35) | def backtracking(self, candidate: Candidate) -> None:
  class PipDebuggingReporter (line 46) | class PipDebuggingReporter(BaseReporter):
    method starting (line 49) | def starting(self) -> None:
    method starting_round (line 52) | def starting_round(self, index: int) -> None:
    method ending_round (line 55) | def ending_round(self, index: int, state: Any) -> None:
    method ending (line 58) | def ending(self, state: Any) -> None:
    method adding_requirement (line 61) | def adding_requirement(self, requirement: Requirement, parent: Candida...
    method backtracking (line 64) | def backtracking(self, candidate: Candidate) -> None:
    method pinning (line 67) | def pinning(self, candidate: Candidate) -> None:

FILE: lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/requirements.py
  class ExplicitRequirement (line 9) | class ExplicitRequirement(Requirement):
    method __init__ (line 10) | def __init__(self, candidate: Candidate) -> None:
    method __str__ (line 13) | def __str__(self) -> str:
    method __repr__ (line 16) | def __repr__(self) -> str:
    method project_name (line 23) | def project_name(self) -> NormalizedName:
    method name (line 28) | def name(self) -> str:
    method format_for_error (line 32) | def format_for_error(self) -> str:
    method get_candidate_lookup (line 35) | def get_candidate_lookup(self) -> CandidateLookup:
    method is_satisfied_by (line 38) | def is_satisfied_by(self, candidate: Candidate) -> bool:
  class SpecifierRequirement (line 42) | class SpecifierRequirement(Requirement):
    method __init__ (line 43) | def __init__(self, ireq: InstallRequirement) -> None:
    method __str__ (line 48) | def __str__(self) -> str:
    method __repr__ (line 51) | def __repr__(self) -> str:
    method project_name (line 58) | def project_name(self) -> NormalizedName:
    method name (line 63) | def name(self) -> str:
    method format_for_error (line 66) | def format_for_error(self) -> str:
    method get_candidate_lookup (line 80) | def get_candidate_lookup(self) -> CandidateLookup:
    method is_satisfied_by (line 83) | def is_satisfied_by(self, candidate: Candidate) -> bool:
  class RequiresPythonRequirement (line 96) | class RequiresPythonRequirement(Requirement):
    method __init__ (line 99) | def __init__(self, specifier: SpecifierSet, match: Candidate) -> None:
    method __str__ (line 103) | def __str__(self) -> str:
    method __repr__ (line 106) | def __repr__(self) -> str:
    method project_name (line 113) | def project_name(self) -> NormalizedName:
    method name (line 117) | def name(self) -> str:
    method format_for_error (line 120) | def format_for_error(self) -> str:
    method get_candidate_lookup (line 123) | def get_candidate_lookup(self) -> CandidateLookup:
    method is_satisfied_by (line 128) | def is_satisfied_by(self, candidate: Candidate) -> bool:
  class UnsatisfiableRequirement (line 136) | class UnsatisfiableRequirement(Requirement):
    method __init__ (line 139) | def __init__(self, name: NormalizedName) -> None:
    method __str__ (line 142) | def __str__(self) -> str:
    method __repr__ (line 145) | def __repr__(self) -> str:
    method project_name (line 152) | def project_name(self) -> NormalizedName:
    method name (line 156) | def name(self) -> str:
    method format_for_error (line 159) | def format_for_error(self) -> str:
    method get_candidate_lookup (line 162) | def get_candidate_lookup(self) -> CandidateLookup:
    method is_satisfied_by (line 165) | def is_satisfied_by(self, candidate: Candidate) -> bool:

FILE: lib/python3.7/site-packages/pip/_internal/resolution/resolvelib/resolver.py
  class Resolver (line 35) | class Resolver(BaseResolver):
    method __init__ (line 38) | def __init__(
    method resolve (line 70) | def resolve(
    method get_installation_order (line 164) | def get_installation_order(
  function get_topological_weights (line 196) | def get_topological_weights(
  function _req_set_item_sorter (line 285) | def _req_set_item_sorter(

FILE: lib/python3.7/site-packages/pip/_internal/self_outdated_check.py
  function _get_statefile_name (line 37) | def _get_statefile_name(key: str) -> str:
  class SelfCheckState (line 43) | class SelfCheckState:
    method __init__ (line 44) | def __init__(self, cache_dir: str) -> None:
    method key (line 62) | def key(self) -> str:
    method get (line 65) | def get(self, current_time: datetime.datetime) -> Optional[str]:
    method set (line 86) | def set(self, pypi_version: str, current_time: datetime.datetime) -> N...
  class UpgradePrompt (line 122) | class UpgradePrompt:
    method __rich__ (line 126) | def __rich__(self) -> Group:
  function was_installed_by_pip (line 146) | def was_installed_by_pip(pkg: str) -> bool:
  function _get_current_remote_pip_version (line 156) | def _get_current_remote_pip_version(
  function _self_version_check_logic (line 184) | def _self_version_check_logic(
  function pip_self_version_check (line 215) | def pip_self_version_check(session: PipSession, options: optparse.Values...

FILE: lib/python3.7/site-packages/pip/_internal/utils/_log.py
  class VerboseLogger (line 16) | class VerboseLogger(logging.Logger):
    method verbose (line 22) | def verbose(self, msg: str, *args: Any, **kwargs: Any) -> None:
  function getLogger (line 26) | def getLogger(name: str) -> VerboseLogger:
  function init_logging (line 31) | def init_logging() -> None:

FILE: lib/python3.7/site-packages/pip/_internal/utils/appdirs.py
  function user_cache_dir (line 16) | def user_cache_dir(appname: str) -> str:
  function _macos_user_config_dir (line 20) | def _macos_user_config_dir(appname: str, roaming: bool = True) -> str:
  function user_config_dir (line 34) | def user_config_dir(appname: str, roaming: bool = True) -> str:
  function site_config_dirs (line 43) | def site_config_dirs(appname: str) -> List[str]:

FILE: lib/python3.7/site-packages/pip/_internal/utils/compat.py
  function has_tls (line 14) | def has_tls() -> bool:
  function get_path_uid (line 27) | def get_path_uid(path: str) -> int:

FILE: lib/python3.7/site-packages/pip/_internal/utils/compatibility_tags.py
  function version_info_to_nodot (line 21) | def version_info_to_nodot(version_info: Tuple[int, ...]) -> str:
  function _mac_platforms (line 26) | def _mac_platforms(arch: str) -> List[str]:
  function _custom_manylinux_platforms (line 46) | def _custom_manylinux_platforms(arch: str) -> List[str]:
  function _get_custom_platforms (line 67) | def _get_custom_platforms(arch: str) -> List[str]:
  function _expand_allowed_platforms (line 78) | def _expand_allowed_platforms(platforms: Optional[List[str]]) -> Optiona...
  function _get_python_version (line 95) | def _get_python_version(version: str) -> PythonVersion:
  function _get_custom_interpreter (line 102) | def _get_custom_interpreter(
  function get_supported (line 112) | def get_supported(

FILE: lib/python3.7/site-packages/pip/_internal/utils/datetime.py
  function today_is_later_than (line 7) | def today_is_later_than(year: int, month: int, day: int) -> bool:

FILE: lib/python3.7/site-packages/pip/_internal/utils/deprecation.py
  class PipDeprecationWarning (line 16) | class PipDeprecationWarning(Warning):
  function _showwarning (line 24) | def _showwarning(
  function install_warning_logger (line 44) | def install_warning_logger() -> None:
  function deprecated (line 55) | def deprecated(
  class LegacyInstallReason (line 123) | class LegacyInstallReason:
    method __init__ (line 124) | def __init__(
    method emit_deprecation (line 142) | def emit_deprecation(self, name: str) -> None:

FILE: lib/python3.7/site-packages/pip/_internal/utils/direct_url_helpers.py
  function direct_url_as_pep440_direct_reference (line 9) | def direct_url_as_pep440_direct_reference(direct_url: DirectUrl, name: s...
  function direct_url_for_editable (line 32) | def direct_url_for_editable(source_dir: str) -> DirectUrl:
  function direct_url_from_link (line 39) | def direct_url_from_link(

FILE: lib/python3.7/site-packages/pip/_internal/utils/distutils_args.py
  function parse_distutils_args (line 20) | def parse_distutils_args(args: List[str]) -> Dict[str, str]:

FILE: lib/python3.7/site-packages/pip/_internal/utils/egg_link.py
  function _egg_link_name (line 21) | def _egg_link_name(raw_name: str) -> str:
  function egg_link_path_from_sys_path (line 30) | def egg_link_path_from_sys_path(raw_name: str) -> Optional[str]:
  function egg_link_path_from_location (line 42) | def egg_link_path_from_location(raw_name: str) -> Optional[str]:

FILE: lib/python3.7/site-packages/pip/_internal/utils/encoding.py
  function auto_decode (line 20) | def auto_decode(data: bytes) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/utils/entrypoints.py
  function _wrapper (line 23) | def _wrapper(args: Optional[List[str]] = None) -> int:
  function get_best_invocation_for_this_pip (line 46) | def get_best_invocation_for_this_pip() -> str:
  function get_best_invocation_for_this_python (line 73) | def get_best_invocation_for_this_python() -> str:

FILE: lib/python3.7/site-packages/pip/_internal/utils/filesystem.py
  function check_path_owner (line 16) | def check_path_owner(path: str) -> bool:
  function adjacent_tmp_file (line 44) | def adjacent_tmp_file(path: str, **kwargs: Any) -> Generator[BinaryIO, N...
  function test_writable_dir (line 76) | def test_writable_dir(path: str) -> bool:
  function _test_writable_dir_win (line 94) | def _test_writable_dir_win(path: str) -> bool:
  function find_files (line 122) | def find_files(path: str, pattern: str) -> List[str]:
  function file_size (line 132) | def file_size(path: str) -> Union[int, float]:
  function format_file_size (line 139) | def format_file_size(path: str) -> str:
  function directory_size (line 143) | def directory_size(path: str) -> Union[int, float]:
  function format_directory_size (line 152) | def format_directory_size(path: str) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/utils/filetypes.py
  function is_archive_file (line 22) | def is_archive_file(name: str) -> bool:

FILE: lib/python3.7/site-packages/pip/_internal/utils/glibc.py
  function glibc_version_string (line 9) | def glibc_version_string() -> Optional[str]:
  function glibc_version_string_confstr (line 14) | def glibc_version_string_confstr() -> Optional[str]:
  function glibc_version_string_ctypes (line 31) | def glibc_version_string_ctypes() -> Optional[str]:
  function libc_ver (line 78) | def libc_ver() -> Tuple[str, str]:

FILE: lib/python3.7/site-packages/pip/_internal/utils/hashes.py
  class Hashes (line 25) | class Hashes:
    method __init__ (line 31) | def __init__(self, hashes: Optional[Dict[str, List[str]]] = None) -> N...
    method __and__ (line 43) | def __and__(self, other: "Hashes") -> "Hashes":
    method digest_count (line 63) | def digest_count(self) -> int:
    method is_hash_allowed (line 66) | def is_hash_allowed(self, hash_name: str, hex_digest: str) -> bool:
    method check_against_chunks (line 70) | def check_against_chunks(self, chunks: Iterable[bytes]) -> None:
    method _raise (line 93) | def _raise(self, gots: Dict[str, "_Hash"]) -> "NoReturn":
    method check_against_file (line 96) | def check_against_file(self, file: BinaryIO) -> None:
    method check_against_path (line 104) | def check_against_path(self, path: str) -> None:
    method __bool__ (line 108) | def __bool__(self) -> bool:
    method __eq__ (line 112) | def __eq__(self, other: object) -> bool:
    method __hash__ (line 117) | def __hash__(self) -> int:
  class MissingHashes (line 129) | class MissingHashes(Hashes):
    method __init__ (line 137) | def __init__(self) -> None:
    method _raise (line 143) | def _raise(self, gots: Dict[str, "_Hash"]) -> "NoReturn":

FILE: lib/python3.7/site-packages/pip/_internal/utils/inject_securetransport.py
  function inject_securetransport (line 13) | def inject_securetransport() -> None:

FILE: lib/python3.7/site-packages/pip/_internal/utils/logging.py
  class BrokenStdoutLoggingError (line 35) | class BrokenStdoutLoggingError(Exception):
  function _is_broken_pipe_error (line 41) | def _is_broken_pipe_error(exc_class: Type[BaseException], exc: BaseExcep...
  function indent_log (line 55) | def indent_log(num: int = 2) -> Generator[None, None, None]:
  function get_indentation (line 69) | def get_indentation() -> int:
  class IndentingFormatter (line 73) | class IndentingFormatter(logging.Formatter):
    method __init__ (line 76) | def __init__(
    method get_message_start (line 91) | def get_message_start(self, formatted: str, levelno: int) -> str:
    method format (line 107) | def format(self, record: logging.LogRecord) -> str:
  class IndentedRenderable (line 125) | class IndentedRenderable:
    method __rich_console__ (line 129) | def __rich_console__(
  class RichPipStreamHandler (line 140) | class RichPipStreamHandler(RichHandler):
    method __init__ (line 143) | def __init__(self, stream: Optional[TextIO], no_color: bool) -> None:
    method emit (line 153) | def emit(self, record: logging.LogRecord) -> None:
    method handleError (line 181) | def handleError(self, record: logging.LogRecord) -> None:
  class BetterRotatingFileHandler (line 200) | class BetterRotatingFileHandler(logging.handlers.RotatingFileHandler):
    method _open (line 201) | def _open(self) -> TextIOWrapper:
  class MaxLevelFilter (line 206) | class MaxLevelFilter(Filter):
    method __init__ (line 207) | def __init__(self, level: int) -> None:
    method filter (line 210) | def filter(self, record: logging.LogRecord) -> bool:
  class ExcludeLoggerFilter (line 214) | class ExcludeLoggerFilter(Filter):
    method filter (line 220) | def filter(self, record: logging.LogRecord) -> bool:
  function setup_logging (line 226) | def setup_logging(verbosity: int, no_color: bool, user_log_file: Optiona...

FILE: lib/python3.7/site-packages/pip/_internal/utils/misc.py
  function get_pip_version (line 72) | def get_pip_version() -> str:
  function normalize_version_info (line 83) | def normalize_version_info(py_version_info: Tuple[int, ...]) -> Tuple[in...
  function ensure_dir (line 102) | def ensure_dir(path: str) -> None:
  function get_prog (line 112) | def get_prog() -> str:
  function rmtree (line 127) | def rmtree(dir: str, ignore_errors: bool = False) -> None:
  function rmtree_errorhandler (line 131) | def rmtree_errorhandler(func: Callable[..., Any], path: str, exc_info: E...
  function display_path (line 151) | def display_path(path: str) -> str:
  function backup_dir (line 160) | def backup_dir(dir: str, ext: str = ".bak") -> str:
  function ask_path_exists (line 171) | def ask_path_exists(message: str, options: Iterable[str]) -> str:
  function _check_no_input (line 178) | def _check_no_input(message: str) -> None:
  function ask (line 186) | def ask(message: str, options: Iterable[str]) -> str:
  function ask_input (line 201) | def ask_input(message: str) -> str:
  function ask_password (line 207) | def ask_password(message: str) -> str:
  function strtobool (line 213) | def strtobool(val: str) -> int:
  function format_size (line 229) | def format_size(bytes: float) -> str:
  function tabulate (line 240) | def tabulate(rows: Iterable[Iterable[Any]]) -> Tuple[List[str], List[int]]:
  function is_installable_dir (line 254) | def is_installable_dir(path: str) -> bool:
  function read_chunks (line 271) | def read_chunks(
  function normalize_path (line 282) | def normalize_path(path: str, resolve_symlinks: bool = True) -> str:
  function splitext (line 295) | def splitext(path: str) -> Tuple[str, str]:
  function renames (line 304) | def renames(old: str, new: str) -> None:
  function is_local (line 321) | def is_local(path: str) -> bool:
  function write_output (line 335) | def write_output(msg: Any, *args: Any) -> None:
  class StreamWrapper (line 339) | class StreamWrapper(StringIO):
    method from_stream (line 343) | def from_stream(cls, orig_stream: TextIO) -> "StreamWrapper":
    method encoding (line 350) | def encoding(self):  # type: ignore
  function captured_output (line 355) | def captured_output(stream_name: str) -> Generator[StreamWrapper, None, ...
  function captured_stdout (line 369) | def captured_stdout() -> ContextManager[StreamWrapper]:
  function captured_stderr (line 381) | def captured_stderr() -> ContextManager[StreamWrapper]:
  function enum (line 389) | def enum(*sequential: Any, **named: Any) -> Type[Any]:
  function build_netloc (line 396) | def build_netloc(host: str, port: Optional[int]) -> str:
  function build_url_from_netloc (line 408) | def build_url_from_netloc(netloc: str, scheme: str = "https") -> str:
  function parse_netloc (line 418) | def parse_netloc(netloc: str) -> Tuple[str, Optional[int]]:
  function split_auth_from_netloc (line 427) | def split_auth_from_netloc(netloc: str) -> NetlocTuple:
  function redact_netloc (line 456) | def redact_netloc(netloc: str) -> str:
  function _transform_url (line 478) | def _transform_url(
  function _get_netloc (line 498) | def _get_netloc(netloc: str) -> NetlocTuple:
  function _redact_netloc (line 502) | def _redact_netloc(netloc: str) -> Tuple[str]:
  function split_auth_netloc_from_url (line 506) | def split_auth_netloc_from_url(url: str) -> Tuple[str, str, Tuple[str, s...
  function remove_auth_from_url (line 516) | def remove_auth_from_url(url: str) -> str:
  function redact_auth_from_url (line 523) | def redact_auth_from_url(url: str) -> str:
  class HiddenText (line 528) | class HiddenText:
    method __init__ (line 529) | def __init__(self, secret: str, redacted: str) -> None:
    method __repr__ (line 533) | def __repr__(self) -> str:
    method __str__ (line 536) | def __str__(self) -> str:
    method __eq__ (line 540) | def __eq__(self, other: Any) -> bool:
  function hide_value (line 549) | def hide_value(value: str) -> HiddenText:
  function hide_url (line 553) | def hide_url(url: str) -> HiddenText:
  function protect_pip_from_modification_on_windows (line 558) | def protect_pip_from_modification_on_windows(modifying_pip: bool) -> None:
  function is_console_interactive (line 584) | def is_console_interactive() -> bool:
  function hash_file (line 589) | def hash_file(path: str, blocksize: int = 1 << 20) -> Tuple[Any, int]:
  function is_wheel_installed (line 601) | def is_wheel_installed() -> bool:
  function pairwise (line 613) | def pairwise(iterable: Iterable[Any]) -> Iterator[Tuple[Any, Any]]:
  function partition (line 624) | def partition(
  class ConfiguredPep517HookCaller (line 638) | class ConfiguredPep517HookCaller(Pep517HookCaller):
    method __init__ (line 639) | def __init__(
    method build_wheel (line 653) | def build_wheel(
    method build_sdist (line 664) | def build_sdist(
    method build_editable (line 670) | def build_editable(
    method get_requires_for_build_wheel (line 681) | def get_requires_for_build_wheel(
    method get_requires_for_build_sdist (line 687) | def get_requires_for_build_sdist(
    method get_requires_for_build_editable (line 693) | def get_requires_for_build_editable(
    method prepare_metadata_for_build_wheel (line 699) | def prepare_metadata_for_build_wheel(
    method prepare_metadata_for_build_editable (line 712) | def prepare_metadata_for_build_editable(

FILE: lib/python3.7/site-packages/pip/_internal/utils/models.py
  class KeyBasedCompareMixin (line 8) | class KeyBasedCompareMixin:
    method __init__ (line 13) | def __init__(self, key: Any, defining_class: Type["KeyBasedCompareMixi...
    method __hash__ (line 17) | def __hash__(self) -> int:
    method __lt__ (line 20) | def __lt__(self, other: Any) -> bool:
    method __le__ (line 23) | def __le__(self, other: Any) -> bool:
    method __gt__ (line 26) | def __gt__(self, other: Any) -> bool:
    method __ge__ (line 29) | def __ge__(self, other: Any) -> bool:
    method __eq__ (line 32) | def __eq__(self, other: Any) -> bool:
    method _compare (line 35) | def _compare(self, other: Any, method: Callable[[Any, Any], bool]) -> ...

FILE: lib/python3.7/site-packages/pip/_internal/utils/packaging.py
  function check_requires_python (line 14) | def check_requires_python(
  function get_requirement (line 38) | def get_requirement(req_string: str) -> Requirement:
  function safe_extra (line 48) | def safe_extra(extra: str) -> NormalizedExtra:

FILE: lib/python3.7/site-packages/pip/_internal/utils/setuptools_build.py
  function make_setuptools_shim_args (line 49) | def make_setuptools_shim_args(
  function make_setuptools_bdist_wheel_args (line 75) | def make_setuptools_bdist_wheel_args(
  function make_setuptools_clean_args (line 93) | def make_setuptools_clean_args(
  function make_setuptools_develop_args (line 104) | def make_setuptools_develop_args(
  function make_setuptools_egg_info_args (line 136) | def make_setuptools_egg_info_args(
  function make_setuptools_install_args (line 151) | def make_setuptools_install_args(

FILE: lib/python3.7/site-packages/pip/_internal/utils/subprocess.py
  function make_command (line 32) | def make_command(*args: Union[str, HiddenText, CommandArgs]) -> CommandA...
  function format_command_args (line 49) | def format_command_args(args: Union[List[str], CommandArgs]) -> str:
  function reveal_command_args (line 64) | def reveal_command_args(args: Union[List[str], CommandArgs]) -> List[str]:
  function call_subprocess (line 71) | def call_subprocess(
  function runner_with_spinner_message (line 239) | def runner_with_spinner_message(message: str) -> Callable[..., None]:

FILE: lib/python3.7/site-packages/pip/_internal/utils/temp_dir.py
  function global_tempdir_manager (line 29) | def global_tempdir_manager() -> Generator[None, None, None]:
  class TempDirectoryTypeRegistry (line 39) | class TempDirectoryTypeRegistry:
    method __init__ (line 42) | def __init__(self) -> None:
    method set_delete (line 45) | def set_delete(self, kind: str, value: bool) -> None:
    method get_delete (line 51) | def get_delete(self, kind: str) -> bool:
  function tempdir_registry (line 62) | def tempdir_registry() -> Generator[TempDirectoryTypeRegistry, None, None]:
  class _Default (line 75) | class _Default:
  class TempDirectory (line 82) | class TempDirectory:
    method __init__ (line 103) | def __init__(
    method path (line 137) | def path(self) -> str:
    method __repr__ (line 141) | def __repr__(self) -> str:
    method __enter__ (line 144) | def __enter__(self: _T) -> _T:
    method __exit__ (line 147) | def __exit__(self, exc: Any, value: Any, tb: Any) -> None:
    method _create (line 158) | def _create(self, kind: str) -> str:
    method cleanup (line 168) | def cleanup(self) -> None:
  class AdjacentTempDirectory (line 176) | class AdjacentTempDirectory(TempDirectory):
    method __init__ (line 198) | def __init__(self, original: str, delete: Optional[bool] = None) -> None:
    method _generate_names (line 203) | def _generate_names(cls, name: str) -> Generator[str, None, None]:
    method _create (line 228) | def _create(self, kind: str) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/utils/unpacking.py
  function current_umask (line 43) | def current_umask() -> int:
  function split_leading_dir (line 50) | def split_leading_dir(path: str) -> List[str]:
  function has_leading_dir (line 62) | def has_leading_dir(paths: Iterable[str]) -> bool:
  function is_within_directory (line 77) | def is_within_directory(directory: str, target: str) -> bool:
  function set_extracted_file_to_default_mode_plus_executable (line 88) | def set_extracted_file_to_default_mode_plus_executable(path: str) -> None:
  function zip_item_is_executable (line 96) | def zip_item_is_executable(info: ZipInfo) -> bool:
  function unzip_file (line 103) | def unzip_file(filename: str, location: str, flatten: bool = True) -> None:
  function untar_file (line 149) | def untar_file(filename: str, location: str) -> None:
  function unpack_file (line 229) | def unpack_file(

FILE: lib/python3.7/site-packages/pip/_internal/utils/urls.py
  function get_url_scheme (line 10) | def get_url_scheme(url: str) -> Optional[str]:
  function path_to_url (line 16) | def path_to_url(path: str) -> str:
  function url_to_path (line 26) | def url_to_path(url: str) -> str:

FILE: lib/python3.7/site-packages/pip/_internal/utils/virtualenv.py
  function _running_under_venv (line 14) | def _running_under_venv() -> bool:
  function _running_under_regular_virtualenv (line 22) | def _running_under_regular_virtualenv() -> bool:
  function running_under_virtualenv (line 31) | def running_under_virtualenv() -> bool:
  function _get_pyvenv_cfg_lines (line 36) | def _get_pyvenv_cfg_lines() -> Optional[List[str]]:
  function _no_global_under_venv (line 51) | def _no_global_under_venv() -> bool:
  function _no_global_under_regular_virtualenv (line 80) | def _no_global_under_regular_virtualenv() -> bool:
  function virtualenv_no_global (line 94) | def virtualenv_no_global() -> bool:

FILE: lib/python3.7/site-packages/pip/_internal/utils/wheel.py
  function parse_wheel (line 20) | def parse_wheel(wheel_zip: ZipFile, name: str) -> Tuple[str, Message]:
  function wheel_dist_info_dir (line 38) | def wheel_dist_info_dir(source: ZipFile, name: str) -> str:
  function read_wheel_metadata_file (line 71) | def read_wheel_metadata_file(source: ZipFile, path: str) -> bytes:
  function wheel_metadata (line 80) | def wheel_metadata(source: ZipFile, dist_info_dir: str) -> Message:
  function wheel_version (line 99) | def wheel_version(wheel_data: Message) -> Tuple[int, ...]:
  function check_compatibility (line 115) | def check_compatibility(version: Tuple[int, ...], name: str) -> None:

FILE: lib/python3.7/site-packages/pip/_internal/vcs/bazaar.py
  class Bazaar (line 18) | class Bazaar(VersionControl):
    method get_base_rev_args (line 33) | def get_base_rev_args(rev: str) -> List[str]:
    method fetch_new (line 36) | def fetch_new(
    method switch (line 57) | def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) ...
    method update (line 60) | def update(self, dest: str, url: HiddenText, rev_options: RevOptions) ...
    method get_url_rev_and_auth (line 74) | def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], A...
    method get_remote_url (line 82) | def get_remote_url(cls, location: str) -> str:
    method get_revision (line 97) | def get_revision(cls, location: str) -> str:
    method is_commit_id_equal (line 107) | def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool:

FILE: lib/python3.7/site-packages/pip/_internal/vcs/git.py
  function looks_like_hash (line 55) | def looks_like_hash(sha: str) -> bool:
  class Git (line 59) | class Git(VersionControl):
    method get_base_rev_args (line 76) | def get_base_rev_args(rev: str) -> List[str]:
    method is_immutable_rev_checkout (line 79) | def is_immutable_rev_checkout(self, url: str, dest: str) -> bool:
    method get_git_version (line 93) | def get_git_version(self) -> Tuple[int, ...]:
    method get_current_branch (line 107) | def get_current_branch(cls, location: str) -> Optional[str]:
    method get_revision_sha (line 132) | def get_revision_sha(cls, dest: str, rev: str) -> Tuple[Optional[str],...
    method _should_fetch (line 178) | def _should_fetch(cls, dest: str, rev: str) -> bool:
    method resolve_revision (line 201) | def resolve_revision(
    method is_commit_id_equal (line 247) | def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool:
    method fetch_new (line 261) | def fetch_new(
    method switch (line 324) | def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) ...
    method update (line 334) | def update(self, dest: str, url: HiddenText, rev_options: RevOptions) ...
    method get_remote_url (line 349) | def get_remote_url(cls, location: str) -> str:
    method _git_remote_to_pip_url (line 379) | def _git_remote_to_pip_url(url: str) -> str:
    method has_commit (line 410) | def has_commit(cls, location: str, rev: str) -> bool:
    method get_revision (line 426) | def get_revision(cls, location: str, rev: Optional[str] = None) -> str:
    method get_subdirectory (line 438) | def get_subdirectory(cls, location: str) -> Optional[str]:
    method get_url_rev_and_auth (line 456) | def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], A...
    method update_submodules (line 487) | def update_submodules(cls, location: str) -> None:
    method get_repository_root (line 496) | def get_repository_root(cls, location: str) -> Optional[str]:
    method should_add_vcs_url_prefix (line 521) | def should_add_vcs_url_prefix(repo_url: str) -> bool:

FILE: lib/python3.7/site-packages/pip/_internal/vcs/mercurial.py
  class Mercurial (line 20) | class Mercurial(VersionControl):
    method get_base_rev_args (line 33) | def get_base_rev_args(rev: str) -> List[str]:
    method fetch_new (line 36) | def fetch_new(
    method switch (line 60) | def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) ...
    method update (line 74) | def update(self, dest: str, url: HiddenText, rev_options: RevOptions) ...
    method get_remote_url (line 80) | def get_remote_url(cls, location: str) -> str:
    method get_revision (line 92) | def get_revision(cls, location: str) -> str:
    method get_requirement_revision (line 105) | def get_requirement_revision(cls, location: str) -> str:
    method is_commit_id_equal (line 119) | def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool:
    method get_subdirectory (line 124) | def get_subdirectory(cls, location: str) -> Optional[str]:
    method get_repository_root (line 138) | def get_repository_root(cls, location: str) -> Optional[str]:

FILE: lib/python3.7/site-packages/pip/_internal/vcs/subversion.py
  class Subversion (line 30) | class Subversion(VersionControl):
    method should_add_vcs_url_prefix (line 37) | def should_add_vcs_url_prefix(cls, remote_url: str) -> bool:
    method get_base_rev_args (line 41) | def get_base_rev_args(rev: str) -> List[str]:
    method get_revision (line 45) | def get_revision(cls, location: str) -> str:
    method get_netloc_and_auth (line 74) | def get_netloc_and_auth(
    method get_url_rev_and_auth (line 89) | def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], A...
    method make_rev_args (line 97) | def make_rev_args(
    method get_remote_url (line 109) | def get_remote_url(cls, location: str) -> str:
    method _get_svn_url_rev (line 133) | def _get_svn_url_rev(cls, location: str) -> Tuple[Optional[str], int]:
    method is_commit_id_equal (line 183) | def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool:
    method __init__ (line 187) | def __init__(self, use_interactive: Optional[bool] = None) -> None:
    method call_vcs_version (line 201) | def call_vcs_version(self) -> Tuple[int, ...]:
    method get_vcs_version (line 229) | def get_vcs_version(self) -> Tuple[int, ...]:
    method get_remote_call_options (line 249) | def get_remote_call_options(self) -> CommandArgs:
    method fetch_new (line 280) | def fetch_new(
    method switch (line 304) | def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) ...
    method update (line 314) | def update(self, dest: str, url: HiddenText, rev_options: RevOptions) ...

FILE: lib/python3.7/site-packages/pip/_internal/vcs/versioncontrol.py
  function is_url (line 57) | def is_url(name: str) -> bool:
  function make_vcs_requirement_url (line 67) | def make_vcs_requirement_url(
  function find_path_to_project_root_from_repo_root (line 85) | def find_path_to_project_root_from_repo_root(
  class RemoteNotFoundError (line 114) | class RemoteNotFoundError(Exception):
  class RemoteNotValidError (line 118) | class RemoteNotValidError(Exception):
    method __init__ (line 119) | def __init__(self, url: str):
  class RevOptions (line 124) | class RevOptions:
    method __init__ (line 133) | def __init__(
    method __repr__ (line 153) | def __repr__(self) -> str:
    method arg_rev (line 157) | def arg_rev(self) -> Optional[str]:
    method to_args (line 163) | def to_args(self) -> CommandArgs:
    method to_display (line 175) | def to_display(self) -> str:
    method make_new (line 181) | def make_new(self, rev: str) -> "RevOptions":
  class VcsSupport (line 191) | class VcsSupport:
    method __init__ (line 195) | def __init__(self) -> None:
    method __iter__ (line 201) | def __iter__(self) -> Iterator[str]:
    method backends (line 205) | def backends(self) -> List["VersionControl"]:
    method dirnames (line 209) | def dirnames(self) -> List[str]:
    method all_schemes (line 213) | def all_schemes(self) -> List[str]:
    method register (line 219) | def register(self, cls: Type["VersionControl"]) -> None:
    method unregister (line 227) | def unregister(self, name: str) -> None:
    method get_backend_for_dir (line 231) | def get_backend_for_dir(self, location: str) -> Optional["VersionContr...
    method get_backend_for_scheme (line 254) | def get_backend_for_scheme(self, scheme: str) -> Optional["VersionCont...
    method get_backend (line 263) | def get_backend(self, name: str) -> Optional["VersionControl"]:
  class VersionControl (line 274) | class VersionControl:
    method should_add_vcs_url_prefix (line 285) | def should_add_vcs_url_prefix(cls, remote_url: str) -> bool:
    method get_subdirectory (line 293) | def get_subdirectory(cls, location: str) -> Optional[str]:
    method get_requirement_revision (line 301) | def get_requirement_revision(cls, repo_dir: str) -> str:
    method get_src_requirement (line 308) | def get_src_requirement(cls, repo_dir: str, project_name: str) -> str:
    method get_base_rev_args (line 332) | def get_base_rev_args(rev: str) -> List[str]:
    method is_immutable_rev_checkout (line 341) | def is_immutable_rev_checkout(self, url: str, dest: str) -> bool:
    method make_rev_options (line 355) | def make_rev_options(
    method _is_local_repository (line 368) | def _is_local_repository(cls, repo: str) -> bool:
    method get_netloc_and_auth (line 377) | def get_netloc_and_auth(
    method get_url_rev_and_auth (line 398) | def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], A...
    method make_rev_args (line 428) | def make_rev_args(
    method get_url_rev_options (line 436) | def get_url_rev_options(self, url: HiddenText) -> Tuple[HiddenText, Re...
    method normalize_url (line 452) | def normalize_url(url: str) -> str:
    method compare_urls (line 460) | def compare_urls(cls, url1: str, url2: str) -> bool:
    method fetch_new (line 466) | def fetch_new(
    method switch (line 480) | def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) ...
    method update (line 489) | def update(self, dest: str, url: HiddenText, rev_options: RevOptions) ...
    method is_commit_id_equal (line 499) | def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool:
    method obtain (line 509) | def obtain(self, dest: str, url: HiddenText, verbosity: int) -> None:
    method unpack (line 598) | def unpack(self, location: str, url: HiddenText, verbosity: int) -> None:
    method get_remote_url (line 611) | def get_remote_url(cls, location: str) -> str:
    method get_revision (line 621) | def get_revision(cls, location: str) -> str:
    method run_command (line 628) | def run_command(
    method is_repository_directory (line 684) | def is_repository_directory(cls, path: str) -> bool:
    method get_repository_root (line 692) | def get_repository_root(cls, location: str) -> Optional[str]:

FILE: lib/python3.7/site-packages/pip/_internal/wheel_builder.py
  function _contains_egg_info (line 42) | def _contains_egg_info(s: str) -> bool:
  function _should_build (line 50) | def _should_build(
  function should_build_for_wheel_command (line 102) | def should_build_for_wheel_command(
  function should_build_for_install_command (line 108) | def should_build_for_install_command(
  function _should_cache (line 117) | def _should_cache(
  function _get_cache_dir (line 149) | def _get_cache_dir(
  function _verify_one (line 165) | def _verify_one(req: InstallRequirement, wheel_path: str) -> None:
  function _build_one (line 195) | def _build_one(
  function _build_one_inside_env (line 233) | def _build_one_inside_env(
  function _clean_one_legacy (line 304) | def _clean_one_legacy(req: InstallRequirement, global_options: List[str]...
  function build (line 321) | def build(

FILE: lib/python3.7/site-packages/pip/_vendor/__init__.py
  function vendored (line 29) | def vendored(modulename):

FILE: lib/python3.7/site-packages/pip/_vendor/cachecontrol/_cmd.py
  function setup_logging (line 16) | def setup_logging():
  function get_session (line 22) | def get_session():
  function get_args (line 34) | def get_args():
  function main (line 40) | def main(args=None):

FILE: lib/python3.7/site-packages/pip/_vendor/cachecontrol/adapter.py
  class CacheControlAdapter (line 16) | class CacheControlAdapter(HTTPAdapter):
    method __init__ (line 19) | def __init__(
    method send (line 40) | def send(self, request, cacheable_methods=None, **kw):
    method build_response (line 61) | def build_response(
    method close (line 135) | def close(self):

FILE: lib/python3.7/site-packages/pip/_vendor/cachecontrol/cache.py
  class BaseCache (line 12) | class BaseCache(object):
    method get (line 14) | def get(self, key):
    method set (line 17) | def set(self, key, value, expires=None):
    method delete (line 20) | def delete(self, key):
    method close (line 23) | def close(self):
  class DictCache (line 27) | class DictCache(BaseCache):
    method __init__ (line 29) | def __init__(self, init_dict=None):
    method get (line 33) | def get(self, key):
    method set (line 36) | def set(self, key, value, expires=None):
    method delete (line 40) | def delete(self, key):
  class SeparateBodyBaseCache (line 46) | class SeparateBodyBaseCache(BaseCache):
    method set_body (line 58) | def set_body(self, key, body):
    method get_body (line 61) | def get_body(self, key):

FILE: lib/python3.7/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py
  function _secure_open_write (line 19) | def _secure_open_write(filename, fmode):
  class _FileCacheMixin (line 60) | class _FileCacheMixin:
    method __init__ (line 63) | def __init__(
    method encode (line 103) | def encode(x):
    method _fn (line 106) | def _fn(self, name):
    method get (line 113) | def get(self, key):
    method set (line 122) | def set(self, key, value, expires=None):
    method _write (line 126) | def _write(self, path, data: bytes):
    method _delete (line 141) | def _delete(self, key, suffix):
  class FileCache (line 150) | class FileCache(_FileCacheMixin, BaseCache):
    method delete (line 156) | def delete(self, key):
  class SeparateBodyFileCache (line 160) | class SeparateBodyFileCache(_FileCacheMixin, SeparateBodyBaseCache):
    method get_body (line 166) | def get_body(self, key):
    method set_body (line 173) | def set_body(self, key, body):
    method delete (line 177) | def delete(self, key):
  function url_to_file_path (line 182) | def url_to_file_path(url, filecache):

FILE: lib/python3.7/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py
  class RedisCache (line 11) | class RedisCache(BaseCache):
    method __init__ (line 13) | def __init__(self, conn):
    method get (line 16) | def get(self, key):
    method set (line 19) | def set(self, key, value, expires=None):
    method delete (line 28) | def delete(self, key):
    method clear (line 31) | def clear(self):
    method close (line 37) | def close(self):

FILE: lib/python3.7/site-packages/pip/_vendor/cachecontrol/controller.py
  function parse_uri (line 27) | def parse_uri(uri):
  class CacheController (line 36) | class CacheController(object):
    method __init__ (line 39) | def __init__(
    method _urlnorm (line 48) | def _urlnorm(cls, uri):
    method cache_url (line 68) | def cache_url(cls, uri):
    method parse_cache_control (line 71) | def parse_cache_control(self, headers):
    method cached_request (line 125) | def cached_request(self, request):
    method conditional_headers (line 242) | def conditional_headers(self, request):
    method _cache_set (line 258) | def _cache_set(self, cache_url, request, response, body=None, expires_...
    method cache_response (line 278) | def cache_response(self, request, response, body=None, status_codes=No...
    method update_cached_response (line 401) | def update_cached_response(self, request, response):

FILE: lib/python3.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py
  class CallbackFileWrapper (line 9) | class CallbackFileWrapper(object):
    method __init__ (line 28) | def __init__(self, fp, callback):
    method __getattr__ (line 33) | def __getattr__(self, name):
    method __is_fp_closed (line 45) | def __is_fp_closed(self):
    method _close (line 62) | def _close(self):
    method read (line 89) | def read(self, amt=None):
    method _safe_read (line 100) | def _safe_read(self, amt):

FILE: lib/python3.7/site-packages/pip/_vendor/cachecontrol/heuristics.py
  function expire_after (line 15) | def expire_after(delta, date=None):
  function datetime_to_header (line 20) | def datetime_to_header(dt):
  class BaseHeuristic (line 24) | class BaseHeuristic(object):
    method warning (line 26) | def warning(self, response):
    method update_headers (line 37) | def update_headers(self, response):
    method apply (line 46) | def apply(self, response):
  class OneDayCache (line 58) | class OneDayCache(BaseHeuristic):
    method update_headers (line 64) | def update_headers(self, response):
  class ExpiresAfter (line 75) | class ExpiresAfter(BaseHeuristic):
    method __init__ (line 80) | def __init__(self, **kw):
    method update_headers (line 83) | def update_headers(self, response):
    method warning (line 87) | def warning(self, response):
  class LastModified (line 92) | class LastModified(BaseHeuristic):
    method update_headers (line 108) | def update_headers(self, resp):
    method warning (line 138) | def warning(self, resp):

FILE: lib/python3.7/site-packages/pip/_vendor/cachecontrol/serialize.py
  function _b64_decode_bytes (line 16) | def _b64_decode_bytes(b):
  function _b64_decode_str (line 20) | def _b64_decode_str(s):
  class Serializer (line 27) | class Serializer(object):
    method dumps (line 28) | def dumps(self, request, response, body=None):
    method loads (line 72) | def loads(self, request, data, body_file=None):
    method prepare_response (line 102) | def prepare_response(self, request, cached, body_file=None):
    method _loads_v0 (line 143) | def _loads_v0(self, request, data, body_file=None):
    method _loads_v1 (line 149) | def _loads_v1(self, request, data, body_file=None):
    method _loads_v2 (line 157) | def _loads_v2(self, request, data, body_file=None):
    method _loads_v3 (line 178) | def _loads_v3(self, request, data, body_file):
    method _loads_v4 (line 184) | def _loads_v4(self, request, data, body_file=None):

FILE: lib/python3.7/site-packages/pip/_vendor/cachecontrol/wrapper.py
  function CacheControl (line 9) | def CacheControl(

FILE: lib/python3.7/site-packages/pip/_vendor/certifi/core.py
  function where (line 17) | def where() -> str:
  function contents (line 41) | def contents() -> str:
  function where (line 51) | def where() -> str:
  function contents (line 76) | def contents() -> str:
  function read_text (line 91) | def read_text(
  function where (line 102) | def where() -> str:
  function contents (line 107) | def contents() -> str:

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/__init__.py
  function detect (line 25) | def detect(byte_str):
  function detect_all (line 43) | def detect_all(byte_str, ignore_threshold=False):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/big5prober.py
  class Big5Prober (line 34) | class Big5Prober(MultiByteCharSetProber):
    method __init__ (line 35) | def __init__(self):
    method charset_name (line 42) | def charset_name(self):
    method language (line 46) | def language(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/chardistribution.py
  class CharDistributionAnalysis (line 56) | class CharDistributionAnalysis:
    method __init__ (line 62) | def __init__(self):
    method reset (line 77) | def reset(self):
    method feed (line 86) | def feed(self, char, char_len):
    method get_confidence (line 100) | def get_confidence(self):
    method got_enough_data (line 117) | def got_enough_data(self):
    method get_order (line 122) | def get_order(self, _):
  class EUCTWDistributionAnalysis (line 130) | class EUCTWDistributionAnalysis(CharDistributionAnalysis):
    method __init__ (line 131) | def __init__(self):
    method get_order (line 137) | def get_order(self, byte_str):
  class EUCKRDistributionAnalysis (line 148) | class EUCKRDistributionAnalysis(CharDistributionAnalysis):
    method __init__ (line 149) | def __init__(self):
    method get_order (line 155) | def get_order(self, byte_str):
  class JOHABDistributionAnalysis (line 166) | class JOHABDistributionAnalysis(CharDistributionAnalysis):
    method __init__ (line 167) | def __init__(self):
    method get_order (line 173) | def get_order(self, byte_str):
  class GB2312DistributionAnalysis (line 181) | class GB2312DistributionAnalysis(CharDistributionAnalysis):
    method __init__ (line 182) | def __init__(self):
    method get_order (line 188) | def get_order(self, byte_str):
  class Big5DistributionAnalysis (line 199) | class Big5DistributionAnalysis(CharDistributionAnalysis):
    method __init__ (line 200) | def __init__(self):
    method get_order (line 206) | def get_order(self, byte_str):
  class SJISDistributionAnalysis (line 219) | class SJISDistributionAnalysis(CharDistributionAnalysis):
    method __init__ (line 220) | def __init__(self):
    method get_order (line 226) | def get_order(self, byte_str):
  class EUCJPDistributionAnalysis (line 244) | class EUCJPDistributionAnalysis(CharDistributionAnalysis):
    method __init__ (line 245) | def __init__(self):
    method get_order (line 251) | def get_order(self, byte_str):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/charsetgroupprober.py
  class CharSetGroupProber (line 32) | class CharSetGroupProber(CharSetProber):
    method __init__ (line 33) | def __init__(self, lang_filter=None):
    method reset (line 39) | def reset(self):
    method charset_name (line 50) | def charset_name(self):
    method language (line 58) | def language(self):
    method feed (line 65) | def feed(self, byte_str):
    method get_confidence (line 86) | def get_confidence(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/charsetprober.py
  class CharSetProber (line 39) | class CharSetProber:
    method __init__ (line 43) | def __init__(self, lang_filter=None):
    method reset (line 48) | def reset(self):
    method charset_name (line 52) | def charset_name(self):
    method feed (line 55) | def feed(self, byte_str):
    method state (line 59) | def state(self):
    method get_confidence (line 62) | def get_confidence(self):
    method filter_high_byte_only (line 66) | def filter_high_byte_only(buf):
    method filter_international_words (line 71) | def filter_international_words(buf):
    method remove_xml_tags (line 105) | def remove_xml_tags(buf):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/cli/chardetect.py
  function description_of (line 23) | def description_of(lines, name="stdin"):
  function main (line 47) | def main(argv=None):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/codingstatemachine.py
  class CodingStateMachine (line 33) | class CodingStateMachine:
    method __init__ (line 56) | def __init__(self, sm):
    method reset (line 64) | def reset(self):
    method next_state (line 67) | def next_state(self, c):
    method get_current_charlen (line 80) | def get_current_charlen(self):
    method get_coding_state_machine (line 83) | def get_coding_state_machine(self):
    method language (line 87) | def language(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/cp949prober.py
  class CP949Prober (line 34) | class CP949Prober(MultiByteCharSetProber):
    method __init__ (line 35) | def __init__(self):
    method charset_name (line 44) | def charset_name(self):
    method language (line 48) | def language(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/enums.py
  class InputState (line 8) | class InputState:
  class LanguageFilter (line 18) | class LanguageFilter:
  class ProbingState (line 34) | class ProbingState:
  class MachineState (line 44) | class MachineState:
  class SequenceLikelihood (line 54) | class SequenceLikelihood:
    method get_num_categories (line 65) | def get_num_categories(cls):
  class CharacterCategory (line 70) | class CharacterCategory:

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/escprober.py
  class EscCharSetProber (line 39) | class EscCharSetProber(CharSetProber):
    method __init__ (line 46) | def __init__(self, lang_filter=None):
    method reset (line 62) | def reset(self):
    method charset_name (line 74) | def charset_name(self):
    method language (line 78) | def language(self):
    method get_confidence (line 81) | def get_confidence(self):
    method feed (line 84) | def feed(self, byte_str):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/eucjpprober.py
  class EUCJPProber (line 36) | class EUCJPProber(MultiByteCharSetProber):
    method __init__ (line 37) | def __init__(self):
    method reset (line 44) | def reset(self):
    method charset_name (line 49) | def charset_name(self):
    method language (line 53) | def language(self):
    method feed (line 56) | def feed(self, byte_str):
    method get_confidence (line 92) | def get_confidence(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/euckrprober.py
  class EUCKRProber (line 34) | class EUCKRProber(MultiByteCharSetProber):
    method __init__ (line 35) | def __init__(self):
    method charset_name (line 42) | def charset_name(self):
    method language (line 46) | def language(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/euctwprober.py
  class EUCTWProber (line 34) | class EUCTWProber(MultiByteCharSetProber):
    method __init__ (line 35) | def __init__(self):
    method charset_name (line 42) | def charset_name(self):
    method language (line 46) | def language(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/gb2312prober.py
  class GB2312Prober (line 34) | class GB2312Prober(MultiByteCharSetProber):
    method __init__ (line 35) | def __init__(self):
    method charset_name (line 42) | def charset_name(self):
    method language (line 46) | def language(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/hebrewprober.py
  class HebrewProber (line 129) | class HebrewProber(CharSetProber):
    method __init__ (line 155) | def __init__(self):
    method reset (line 165) | def reset(self):
    method set_model_probers (line 175) | def set_model_probers(self, logical_prober, visual_prober):
    method is_final (line 179) | def is_final(self, c):
    method is_non_final (line 188) | def is_non_final(self, c):
    method feed (line 201) | def feed(self, byte_str):
    method charset_name (line 264) | def charset_name(self):
    method language (line 292) | def language(self):
    method state (line 296) | def state(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/johabprober.py
  class JOHABProber (line 34) | class JOHABProber(MultiByteCharSetProber):
    method __init__ (line 35) | def __init__(self):
    method charset_name (line 42) | def charset_name(self):
    method language (line 46) | def language(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/jpcntx.py
  class JapaneseContextAnalysis (line 119) | class JapaneseContextAnalysis:
    method __init__ (line 126) | def __init__(self):
    method reset (line 134) | def reset(self):
    method feed (line 146) | def feed(self, byte_str, num_bytes):
    method got_enough_data (line 175) | def got_enough_data(self):
    method get_confidence (line 178) | def get_confidence(self):
    method get_order (line 184) | def get_order(self, _):
  class SJISContextAnalysis (line 188) | class SJISContextAnalysis(JapaneseContextAnalysis):
    method __init__ (line 189) | def __init__(self):
    method charset_name (line 194) | def charset_name(self):
    method get_order (line 197) | def get_order(self, byte_str):
  class EUCJPContextAnalysis (line 218) | class EUCJPContextAnalysis(JapaneseContextAnalysis):
    method get_order (line 219) | def get_order(self, byte_str):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/latin1prober.py
  class Latin1Prober (line 98) | class Latin1Prober(CharSetProber):
    method __init__ (line 99) | def __init__(self):
    method reset (line 105) | def reset(self):
    method charset_name (line 111) | def charset_name(self):
    method language (line 115) | def language(self):
    method feed (line 118) | def feed(self, byte_str):
    method get_confidence (line 131) | def get_confidence(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/mbcharsetprober.py
  class MultiByteCharSetProber (line 34) | class MultiByteCharSetProber(CharSetProber):
    method __init__ (line 39) | def __init__(self, lang_filter=None):
    method reset (line 45) | def reset(self):
    method charset_name (line 54) | def charset_name(self):
    method language (line 58) | def language(self):
    method feed (line 61) | def feed(self, byte_str):
    method get_confidence (line 94) | def get_confidence(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/mbcsgroupprober.py
  class MBCSGroupProber (line 42) | class MBCSGroupProber(CharSetGroupProber):
    method __init__ (line 43) | def __init__(self, lang_filter=None):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/metadata/languages.py
  class Language (line 13) | class Language:
    method __init__ (line 34) | def __init__(
    method __repr__ (line 58) | def __repr__(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/sbcharsetprober.py
  class SingleByteCharSetProber (line 48) | class SingleByteCharSetProber(CharSetProber):
    method __init__ (line 54) | def __init__(self, model, is_reversed=False, name_prober=None):
    method reset (line 69) | def reset(self):
    method charset_name (line 81) | def charset_name(self):
    method language (line 87) | def language(self):
    method feed (line 92) | def feed(self, byte_str):
    method get_confidence (line 142) | def get_confidence(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/sbcsgroupprober.py
  class SBCSGroupProber (line 50) | class SBCSGroupProber(CharSetGroupProber):
    method __init__ (line 51) | def __init__(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/sjisprober.py
  class SJISProber (line 36) | class SJISProber(MultiByteCharSetProber):
    method __init__ (line 37) | def __init__(self):
    method reset (line 44) | def reset(self):
    method charset_name (line 49) | def charset_name(self):
    method language (line 53) | def language(self):
    method feed (line 56) | def feed(self, byte_str):
    method get_confidence (line 95) | def get_confidence(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/universaldetector.py
  class UniversalDetector (line 52) | class UniversalDetector:
    method __init__ (line 84) | def __init__(self, lang_filter=LanguageFilter.ALL):
    method input_state (line 99) | def input_state(self):
    method has_win_bytes (line 103) | def has_win_bytes(self):
    method charset_probers (line 107) | def charset_probers(self):
    method reset (line 110) | def reset(self):
    method feed (line 129) | def feed(self, byte_str):
    method close (line 257) | def close(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/utf1632prober.py
  class UTF1632Prober (line 25) | class UTF1632Prober(CharSetProber):
    method __init__ (line 39) | def __init__(self):
    method reset (line 54) | def reset(self):
    method charset_name (line 69) | def charset_name(self):
    method language (line 82) | def language(self):
    method approx_32bit_chars (line 85) | def approx_32bit_chars(self):
    method approx_16bit_chars (line 88) | def approx_16bit_chars(self):
    method is_likely_utf32be (line 91) | def is_likely_utf32be(self):
    method is_likely_utf32le (line 101) | def is_likely_utf32le(self):
    method is_likely_utf16be (line 111) | def is_likely_utf16be(self):
    method is_likely_utf16le (line 121) | def is_likely_utf16le(self):
    method validate_utf32_characters (line 131) | def validate_utf32_characters(self, quad):
    method validate_utf16_characters (line 153) | def validate_utf16_characters(self, pair):
    method feed (line 185) | def feed(self, byte_str):
    method state (line 201) | def state(self):
    method get_confidence (line 213) | def get_confidence(self):

FILE: lib/python3.7/site-packages/pip/_vendor/chardet/utf8prober.py
  class UTF8Prober (line 34) | class UTF8Prober(CharSetProber):
    method __init__ (line 37) | def __init__(self):
    method reset (line 43) | def reset(self):
    method charset_name (line 49) | def charset_name(self):
    method language (line 53) | def language(self):
    method feed (line 56) | def feed(self, byte_str):
    method get_confidence (line 75) | def get_confidence(self):

FILE: lib/python3.7/site-packages/pip/_vendor/colorama/ansi.py
  function code_to_chars (line 12) | def code_to_chars(code):
  function set_title (line 15) | def set_title(title):
  function clear_screen (line 18) | def clear_screen(mode=2):
  function clear_line (line 21) | def clear_line(mode=2):
  class AnsiCodes (line 25) | class AnsiCodes(object):
    method __init__ (line 26) | def __init__(self):
  class AnsiCursor (line 36) | class AnsiCursor(object):
    method UP (line 37) | def UP(self, n=1):
    method DOWN (line 39) | def DOWN(self, n=1):
    method FORWARD (line 41) | def FORWARD(self, n=1):
    method BACK (line 43) | def BACK(self, n=1):
    method POS (line 45) | def POS(self, x=1, y=1):
  class AnsiFore (line 49) | class AnsiFore(AnsiCodes):
  class AnsiBack (line 71) | class AnsiBack(AnsiCodes):
  class AnsiStyle (line 93) | class AnsiStyle(AnsiCodes):

FILE: lib/python3.7/site-packages/pip/_vendor/colorama/ansitowin32.py
  class StreamWrapper (line 16) | class StreamWrapper(object):
    method __init__ (line 22) | def __init__(self, wrapped, converter):
    method __getattr__ (line 28) | def __getattr__(self, name):
    method __enter__ (line 31) | def __enter__(self, *args, **kwargs):
    method __exit__ (line 37) | def __exit__(self, *args, **kwargs):
    method __setstate__ (line 40) | def __setstate__(self, state):
    method __getstate__ (line 43) | def __getstate__(self):
    method write (line 46) | def write(self, text):
    method isatty (line 49) | def isatty(self):
    method closed (line 62) | def closed(self):
  class AnsiToWin32 (line 72) | class AnsiToWin32(object):
    method __init__ (line 81) | def __init__(self, wrapped, convert=None, strip=None, autoreset=False):
    method should_wrap (line 114) | def should_wrap(self):
    method get_win32_calls (line 124) | def get_win32_calls(self):
    method write (line 168) | def write(self, text):
    method reset_all (line 178) | def reset_all(self):
    method write_and_convert (line 185) | def write_and_convert(self, text):
    method write_plain_text (line 201) | def write_plain_text(self, text, start, end):
    method convert_ansi (line 207) | def convert_ansi(self, paramstring, command):
    method extract_params (line 213) | def extract_params(self, command, paramstring):
    method call_win32 (line 231) | def call_win32(self, command, params):
    method convert_osc (line 253) | def convert_osc(self, text):

FILE: lib/python3.7/site-packages/pip/_vendor/colorama/initialise.py
  function reset_all (line 18) | def reset_all():
  function init (line 23) | def init(autoreset=False, convert=None, strip=None, wrap=True):
  function deinit (line 51) | def deinit():
  function colorama_text (line 59) | def colorama_text(*args, **kwargs):
  function reinit (line 67) | def reinit():
  function wrap_stream (line 74) | def wrap_stream(stream, convert, strip, autoreset, wrap):

FILE: lib/python3.7/site-packages/pip/_vendor/colorama/win32.py
  class CONSOLE_SCREEN_BUFFER_INFO (line 21) | class CONSOLE_SCREEN_BUFFER_INFO(Structure):
    method __str__ (line 30) | def __str__(self):
  function _winapi_test (line 92) | def _winapi_test(handle):
  function winapi_test (line 98) | def winapi_test():
  function GetConsoleScreenBufferInfo (line 102) | def GetConsoleScreenBufferInfo(stream_id=STDOUT):
  function SetConsoleTextAttribute (line 109) | def SetConsoleTextAttribute(stream_id, attrs):
  function SetConsoleCursorPosition (line 113) | def SetConsoleCursorPosition(stream_id, position, adjust=True):
  function FillConsoleOutputCharacter (line 131) | def FillConsoleOutputCharacter(stream_id, char, length, start):
  function FillConsoleOutputAttribute (line 141) | def FillConsoleOutputAttribute(stream_id, attr, length, start):
  function SetConsoleTitle (line 151) | def SetConsoleTitle(title):

FILE: lib/python3.7/site-packages/pip/_vendor/colorama/winterm.py
  class WinColor (line 6) | class WinColor(object):
  class WinStyle (line 17) | class WinStyle(object):
  class WinTerm (line 22) | class WinTerm(object):
    method __init__ (line 24) | def __init__(self):
    method get_attrs (line 36) | def get_attrs(self):
    method set_attrs (line 39) | def set_attrs(self, value):
    method reset_all (line 44) | def reset_all(self, on_stderr=None):
    method fore (line 49) | def fore(self, fore=None, light=False, on_stderr=False):
    method back (line 60) | def back(self, back=None, light=False, on_stderr=False):
    method style (line 71) | def style(self, style=None, on_stderr=False):
    method set_console (line 77) | def set_console(self, attrs=None, on_stderr=False):
    method get_position (line 85) | def get_position(self, handle):
    method set_cursor_position (line 93) | def set_cursor_position(self, position=None, on_stderr=False):
    method cursor_adjust (line 103) | def cursor_adjust(self, x, y, on_stderr=False):
    method erase_screen (line 111) | def erase_screen(self, mode=0, on_stderr=False):
    method erase_line (line 143) | def erase_line(self, mode=0, on_stderr=False):
    method set_title (line 168) | def set_title(self, title):

FILE: lib/python3.7/site-packages/pip/_vendor/distlib/__init__.py
  class DistlibException (line 11) | class DistlibException(Exception):
  class NullHandler (line 17) | class NullHandler(logging.Handler):
    method handle (line 18) | def handle(self, record): pass
    method emit (line 19) | def emit(self, record): pass
    method createLock (line 20) | def createLock(self): self.lock = None

FILE: lib/python3.7/site-packages/pip/_vendor/distlib/compat.py
  function quote (line 29) | def quote(s):
  class CertificateError (line 95) | class CertificateError(ValueError):
  function _dnsname_match (line 99) | def _dnsname_match(dn, hostname, max_wildcards=1):
  function match_hostname (line 149) | def match_hostname(cert, hostname):
  class Container (line 195) | class Container(object):
    method __init__ (line 199) | def __init__(self, **kwargs):
  function which (line 207) | def which(cmd, mode=os.F_OK | os.X_OK, path=None):
  class ZipExtFile (line 279) | class ZipExtFile(BaseZipExtFile):
    method __init__ (line 280) | def __init__(self, base):
    method __enter__ (line 283) | def __enter__(self):
    method __exit__ (line 286) | def __exit__(self, *exc_info):
  class ZipFile (line 290) | class ZipFile(BaseZipFile):
    method __enter__ (line 291) | def __enter__(self):
    method __exit__ (line 294) | def __exit__(self, *exc_info):
    method open (line 298) | def open(self, *args, **kwargs):
  function python_implementation (line 305) | def python_implementation():
  function callable (line 323) | def callable(obj):
  function fsencode (line 343) | def fsencode(filename):
  function fsdecode (line 352) | def fsdecode(filename):
  function _get_normal_name (line 369) | def _get_normal_name(orig_enc):
  function detect_encoding (line 380) | def detect_encoding(readline):
  function _recursive_repr (line 488) | def _recursive_repr(fillvalue='...'):
  class ChainMap (line 517) | class ChainMap(MutableMapping):
    method __init__ (line 530) | def __init__(self, *maps):
    method __missing__ (line 537) | def __missing__(self, key):
    method __getitem__ (line 540) | def __getitem__(self, key):
    method get (line 548) | def get(self, key, default=None):
    method __len__ (line 551) | def __len__(self):
    method __iter__ (line 554) | def __iter__(self):
    method __contains__ (line 557) | def __contains__(self, key):
    method __bool__ (line 560) | def __bool__(self):
    method __repr__ (line 564) | def __repr__(self):
    method fromkeys (line 569) | def fromkeys(cls, iterable, *args):
    method copy (line 573) | def copy(self):
    method new_child (line 579) | def new_child(self):                        # like Django's Context.pu...
    method parents (line 584) | def parents(self):                          # like Django's Context.pop()
    method __setitem__ (line 588) | def __setitem__(self, key, value):
    method __delitem__ (line 591) | def __delitem__(self, key):
    method popitem (line 597) | def popitem(self):
    method pop (line 604) | def pop(self, key, *args):
    method clear (line 611) | def clear(self):
  function cache_from_source (line 618) | def cache_from_source(path, debug_override=None):
  class OrderedDict (line 645) | class OrderedDict(dict):
    method __init__ (line 657) | def __init__(self, *args, **kwds):
    method __setitem__ (line 673) | def __setitem__(self, key, value, dict_setitem=dict.__setitem__):
    method __delitem__ (line 683) | def __delitem__(self, key, dict_delitem=dict.__delitem__):
    method __iter__ (line 692) | def __iter__(self):
    method __reversed__ (line 700) | def __reversed__(self):
    method clear (line 708) | def clear(self):
    method popitem (line 720) | def popitem(self, last=True):
    method keys (line 745) | def keys(self):
    method values (line 749) | def values(self):
    method items (line 753) | def items(self):
    method iterkeys (line 757) | def iterkeys(self):
    method itervalues (line 761) | def itervalues(self):
    method iteritems (line 766) | def iteritems(self):
    method update (line 771) | def update(*args, **kwds):
    method pop (line 806) | def pop(self, key, default=__marker):
    method setdefault (line 819) | def setdefault(self, key, default=None):
    method __repr__ (line 826) | def __repr__(self, _repr_running=None):
    method __reduce__ (line 840) | def __reduce__(self):
    method copy (line 850) | def copy(self):
    method fromkeys (line 855) | def fromkeys(cls, iterable, value=None):
    method __eq__ (line 865) | def __eq__(self, other):
    method __ne__ (line 874) | def __ne__(self, other):
    method viewkeys (line 879) | def viewkeys(self):
    method viewvalues (line 883) | def viewvalues(self):
    method viewitems (line 887) | def viewitems(self):
  function valid_ident (line 897) | def valid_ident(s):
  class ConvertingDict (line 913) | class ConvertingDict(dict):
    method __getitem__ (line 916) | def __getitem__(self, key):
    method get (line 928) | def get(self, key, default=None):
  function pop (line 940) | def pop(self, key, default=None):
  class ConvertingList (line 950) | class ConvertingList(list):
    method __getitem__ (line 952) | def __getitem__(self, key):
    method pop (line 964) | def pop(self, idx=-1):
  class ConvertingTuple (line 973) | class ConvertingTuple(tuple):
    method __getitem__ (line 975) | def __getitem__(self, key):
  class BaseConfigurator (line 985) | class BaseConfigurator(object):
    method __init__ (line 1005) | def __init__(self, config):
    method resolve (line 1009) | def resolve(self, s):
    method ext_convert (line 1032) | def ext_convert(self, value):
    method cfg_convert (line 1036) | def cfg_convert(self, value):
    method convert (line 1070) | def convert(self, value):
    method configure_custom (line 1098) | def configure_custom(self, config):
    method as_tuple (line 1112) | def as_tuple(self, value):

FILE: lib/python3.7/site-packages/pip/_vendor/distlib/database.py
  class _Cache (line 45) | class _Cache(object):
    method __init__ (line 49) | def __init__(self):
    method clear (line 57) | def clear(self):
    method add (line 65) | def add(self, dist):
  class DistributionPath (line 75) | class DistributionPath(object):
    method __init__ (line 79) | def __init__(self, path=None, include_egg=False):
    method _get_cache_enabled (line 99) | def _get_cache_enabled(self):
    method _set_cache_enabled (line 102) | def _set_cache_enabled(self, value):
    method clear_cache (line 107) | def clear_cache(self):
    method _yield_distributions (line 115) | def _yield_distributions(self):
    method _generate_cache (line 165) | def _generate_cache(self):
    method distinfo_dirname (line 185) | def distinfo_dirname(cls, name, version):
    method get_distributions (line 206) | def get_distributions(self):
    method get_distribution (line 228) | def get_distribution(self, name):
    method provides_distribution (line 254) | def provides_distribution(self, name, version=None):
    method get_file_path (line 295) | def get_file_path(self, name, relative_path):
    method get_exported_entries (line 304) | def get_exported_entries(self, category, name=None):
  class Distribution (line 323) | class Distribution(object):
    method __init__ (line 341) | def __init__(self, metadata):
    method source_url (line 359) | def source_url(self):
    method name_and_version (line 368) | def name_and_version(self):
    method provides (line 375) | def provides(self):
    method _get_requirements (line 386) | def _get_requirements(self, req_attr):
    method run_requires (line 395) | def run_requires(self):
    method meta_requires (line 399) | def meta_requires(self):
    method build_requires (line 403) | def build_requires(self):
    method test_requires (line 407) | def test_requires(self):
    method dev_requires (line 411) | def dev_requires(self):
    method matches_requirement (line 414) | def matches_requirement(self, req):
    method __repr__ (line 448) | def __repr__(self):
    method __eq__ (line 458) | def __eq__(self, other):
    method __hash__ (line 474) | def __hash__(self):
  class BaseInstalledDistribution (line 481) | class BaseInstalledDistribution(Distribution):
    method __init__ (line 489) | def __init__(self, metadata, path, env=None):
    method get_hash (line 504) | def get_hash(self, data, hasher=None):
  class InstalledDistribution (line 536) | class InstalledDistribution(BaseInstalledDistribution):
    method __init__ (line 546) | def __init__(self, path, metadata=None, env=None):
    method __repr__ (line 580) | def __repr__(self):
    method __str__ (line 584) | def __str__(self):
    method _get_records (line 587) | def _get_records(self):
    method exports (line 611) | def exports(self):
    method read_exports (line 624) | def read_exports(self):
    method write_exports (line 639) | def write_exports(self, exports):
    method get_resource_path (line 650) | def get_resource_path(self, relative_path):
    method list_installed_files (line 670) | def list_installed_files(self):
    method write_installed_files (line 680) | def write_installed_files(self, paths, prefix, dry_run=False):
    method check_installed_files (line 715) | def check_installed_files(self):
    method shared_locations (line 751) | def shared_locations(self):
    method write_shared_locations (line 777) | def write_shared_locations(self, paths, dry_run=False):
    method get_distinfo_resource (line 802) | def get_distinfo_resource(self, path):
    method get_distinfo_file (line 811) | def get_distinfo_file(self, path):
    method list_distinfo_files (line 840) | def list_distinfo_files(self):
    method __eq__ (line 856) | def __eq__(self, other):
  class EggInfoDistribution (line 864) | class EggInfoDistribution(BaseInstalledDistribution):
    method __init__ (line 873) | def __init__(self, path, env=None):
    method _get_metadata (line 894) | def _get_metadata(self, path):
    method __repr__ (line 984) | def __repr__(self):
    method __str__ (line 988) | def __str__(self):
    method check_installed_files (line 991) | def check_installed_files(self):
    method list_installed_files (line 1010) | def list_installed_files(self):
    method list_distinfo_files (line 1048) | def list_distinfo_files(self, absolute=False):
    method __eq__ (line 1077) | def __eq__(self, other):
  class DependencyGraph (line 1088) | class DependencyGraph(object):
    method __init__ (line 1104) | def __init__(self):
    method add_distribution (line 1109) | def add_distribution(self, distribution):
    method add_edge (line 1119) | def add_edge(self, x, y, label=None):
    method add_missing (line 1134) | def add_missing(self, distribution, requirement):
    method _repr_dist (line 1145) | def _repr_dist(self, dist):
    method repr_node (line 1148) | def repr_node(self, dist, level=1):
    method to_dot (line 1161) | def to_dot(self, f, skip_disconnected=True):
    method topological_sort (line 1193) | def topological_sort(self):
    method __repr__ (line 1224) | def __repr__(self):
  function make_graph (line 1232) | def make_graph(dists, scheme='default'):
  function get_dependent_dists (line 1286) | def get_dependent_dists(dists, dist):
  function get_required_dists (line 1312) | def get_required_dists(dists, dist):
  function make_dist (line 1341) | def make_dist(name, version, **kwargs):

FILE: lib/python3.7/site-packages/pip/_vendor/distlib/index.py
  class PackageIndex (line 28) | class PackageIndex(object):
    method __init__ (line 36) | def __init__(self, url=None):
    method _get_pypirc_command (line 65) | def _get_pypirc_command(self):
    method read_configuration (line 73) | def read_configuration(self):
    method save_configuration (line 86) | def save_configuration(self):
    method check_credentials (line 95) | def check_credentials(self):
    method register (line 107) | def register(self, metadata):  # pragma: no cover
    method _reader (line 127) | def _reader(self, name, stream, outbuf):
    method get_sign_command (line 145) | def get_sign_command(self, filename, signer, sign_password, keystore=N...
    method run_command (line 173) | def run_command(self, cmd, input_data=None):
    method sign_file (line 208) | def sign_file(self, filename, signer, sign_password, keystore=None):  ...
    method upload_file (line 231) | def upload_file(self, metadata, filename, signer=None, sign_password=N...
    method upload_documentation (line 288) | def upload_documentation(self, metadata, doc_dir):  # pragma: no cover
    method get_verify_command (line 316) | def get_verify_command(self, signature_filename, data_filename,
    method verify_signature (line 340) | def verify_signature(self, signature_filename, data_filename,
    method download_file (line 365) | def download_file(self, url, destfile, digest=None, reporthook=None):
    method send_request (line 442) | def send_request(self, req):
    method encode_request (line 458) | def encode_request(self, fields, files):
    method search (line 501) | def search(self, terms, operator=None):  # pragma: no cover

FILE: lib/python3.7/site-packages/pip/_vendor/distlib/locators.py
  function get_all_distribution_names (line 41) | def get_all_distribution_names(url=None):
  class RedirectHandler (line 55) | class RedirectHandler(BaseRedirectHandler):
    method http_error_302 (line 64) | def http_error_302(self, req, fp, code, msg, headers):
  class Locator (line 86) | class Locator(object):
    method __init__ (line 102) | def __init__(self, scheme='default'):
    method get_errors (line 121) | def get_errors(self):
    method clear_errors (line 135) | def clear_errors(self):
    method clear_cache (line 142) | def clear_cache(self):
    method _get_scheme (line 145) | def _get_scheme(self):
    method _set_scheme (line 148) | def _set_scheme(self, value):
    method _get_project (line 153) | def _get_project(self, name):
    method get_distribution_names (line 165) | def get_distribution_names(self):
    method get_project (line 171) | def get_project(self, name):
    method score_url (line 188) | def score_url(self, url):
    method prefer_url (line 203) | def prefer_url(self, url1, url2):
    method split_filename (line 225) | def split_filename(self, filename, project_name):
    method convert_url_to_download_info (line 231) | def convert_url_to_download_info(self, url, project_name):
    method _get_digest (line 305) | def _get_digest(self, info):
    method _update_version_data (line 328) | def _update_version_data(self, result, info):
    method locate (line 351) | def locate(self, requirement, prereleases=False):
  class PyPIRPCLocator (line 411) | class PyPIRPCLocator(Locator):
    method __init__ (line 416) | def __init__(self, url, **kwargs):
    method get_distribution_names (line 427) | def get_distribution_names(self):
    method _get_project (line 433) | def _get_project(self, name):
  class PyPIJSONLocator (line 459) | class PyPIJSONLocator(Locator):
    method __init__ (line 464) | def __init__(self, url, **kwargs):
    method get_distribution_names (line 468) | def get_distribution_names(self):
    method _get_project (line 474) | def _get_project(self, name):
  class Page (line 528) | class Page(object):
    method __init__ (line 544) | def __init__(self, data, url):
    method links (line 558) | def links(self):
  class SimpleScrapingLocator (line 586) | class SimpleScrapingLocator(Locator):
    method __init__ (line 600) | def __init__(self, url, timeout=None, num_workers=10, **kwargs):
    method _prepare_threads (line 627) | def _prepare_threads(self):
    method _wait_threads (line 640) | def _wait_threads(self):
    method _get_project (line 653) | def _get_project(self, name):
    method _is_platform_dependent (line 674) | def _is_platform_dependent(self, url):
    method _process_download (line 680) | def _process_download(self, url):
    method _should_queue (line 700) | def _should_queue(self, link, referrer, rel):
    method _fetch (line 729) | def _fetch(self):
    method get_page (line 762) | def get_page(self, url):
    method get_distribution_names (line 823) | def get_distribution_names(self):
  class DirectoryLocator (line 835) | class DirectoryLocator(Locator):
    method __init__ (line 840) | def __init__(self, path, **kwargs):
    method should_include (line 857) | def should_include(self, filename, parent):
    method _get_project (line 865) | def _get_project(self, name):
    method get_distribution_names (line 881) | def get_distribution_names(self):
  class JSONLocator (line 900) | class JSONLocator(Locator):
    method get_distribution_names (line 907) | def get_distribution_names(self):
    method _get_project (line 913) | def _get_project(self, name):
  class DistPathLocator (line 938) | class DistPathLocator(Locator):
    method __init__ (line 943) | def __init__(self, distpath, **kwargs):
    method _get_project (line 953) | def _get_project(self, name):
  class AggregatingLocator (line 966) | class AggregatingLocator(Locator):
    method __init__ (line 970) | def __init__(self, *locators, **kwargs):
    method clear_cache (line 986) | def clear_cache(self):
    method _set_scheme (line 991) | def _set_scheme(self, value):
    method _get_project (line 998) | def _get_project(self, name):
    method get_distribution_names (line 1042) | def get_distribution_names(self):
  class DependencyFinder (line 1066) | class DependencyFinder(object):
    method __init__ (line 1071) | def __init__(self, locator=None):
    method add_distribution (line 1079) | def add_distribution(self, dist):
    method remove_distribution (line 1094) | def remove_distribution(self, dist):
    method get_matcher (line 1112) | def get_matcher(self, reqt):
    method find_providers (line 1128) | def find_providers(self, reqt):
    method try_to_replace (line 1152) | def try_to_replace(self, provider, other, problems):
    method find (line 1192) | def find(self, requirement, meta_extras=None, prereleases=False):

FILE: lib/python3.7/site-packages/pip/_vendor/distlib/manifest.py
  class Manifest (line 37) | class Manifest(object):
    method __init__ (line 42) | def __init__(self, base=None):
    method findall (line 57) | def findall(self):
    method add (line 84) | def add(self, item):
    method add_many (line 94) | def add_many(self, items):
    method sorted (line 103) | def sorted(self, wantdirs=False):
    method clear (line 125) | def clear(self):
    method process_directive (line 130) | def process_directive(self, directive):
    method _parse_directive (line 209) | def _parse_directive(self, directive):
    method _include_pattern (line 256) | def _include_pattern(self, pattern, anchor=True, prefix=None,
    method _exclude_pattern (line 297) | def _exclude_pattern(self, pattern, anchor=True, prefix=None,
    method _translate_pattern (line 317) | def _translate_pattern(self, pattern, anchor=True, prefix=None,
    method _glob_to_re (line 372) | def _glob_to_re(self, pattern):

FILE: lib/python3.7/site-packages/pip/_vendor/distlib/markers.py
  function _is_literal (line 28) | def _is_literal(o):
  function _get_versions (line 33) | def _get_versions(s):
  class Evaluator (line 39) | class Evaluator(object):
    method evaluate (line 59) | def evaluate(self, expr, context):
  function default_context (line 95) | def default_context():
  function interpret (line 134) | def interpret(marker, execution_context=None):

FILE: lib/python3.7/site-packages/pip/_vendor/distlib/metadata.py
  class MetadataMissingError (line 28) | class MetadataMissingError(DistlibException):
  class MetadataConflictError (line 32) | class MetadataConflictError(DistlibException):
  class MetadataUnrecognizedVersionError (line 36) | class MetadataUnrecognizedVersionError(DistlibException):
  class MetadataInvalidError (line 40) | class MetadataInvalidError(DistlibException):
  function _version2fieldlist (line 118) | def _version2fieldlist(version):
  function _best_version (line 136) | def _best_version(fields):
  function _get_name_and_version (line 240) | def _get_name_and_version(name, version, for_filename=False):
  class LegacyMetadata (line 253) | class LegacyMetadata(object):
    method __init__ (line 265) | def __init__(self, path=None, fileobj=None, mapping=None,
    method set_metadata_version (line 281) | def set_metadata_version(self):
    method _write_field (line 284) | def _write_field(self, fileobj, name, value):
    method __getitem__ (line 287) | def __getitem__(self, name):
    method __setitem__ (line 290) | def __setitem__(self, name, value):
    method __delitem__ (line 293) | def __delitem__(self, name):
    method __contains__ (line 300) | def __contains__(self, name):
    method _convert_name (line 304) | def _convert_name(self, name):
    method _default_value (line 310) | def _default_value(self, name):
    method _remove_line_prefix (line 315) | def _remove_line_prefix(self, value):
    method __getattr__ (line 321) | def __getattr__(self, name):
    method get_fullname (line 332) | def get_fullname(self, filesafe=False):
    method is_field (line 338) | def is_field(self, name):
    method is_multi_field (line 343) | def is_multi_field(self, name):
    method read (line 347) | def read(self, filepath):
    method read_file (line 355) | def read_file(self, fileob):
    method write (line 383) | def write(self, filepath, skip_unknown=False):
    method write_file (line 391) | def write_file(self, fileobject, skip_unknown=False):
    method update (line 416) | def update(self, other=None, **kwargs):
    method set (line 444) | def set(self, name, value):
    method get (line 488) | def get(self, name, default=_MISSING):
    method check (line 517) | def check(self, strict=False):
    method todict (line 561) | def todict(self, skip_missing=False):
    method add_requirements (line 584) | def add_requirements(self, requirements):
    method keys (line 595) | def keys(self):
    method __iter__ (line 598) | def __iter__(self):
    method values (line 602) | def values(self):
    method items (line 605) | def items(self):
    method __repr__ (line 608) | def __repr__(self):
  class Metadata (line 618) | class Metadata(object):
    method __init__ (line 663) | def __init__(self, path=None, fileobj=None, mapping=None,
    method __getattribute__ (line 731) | def __getattribute__(self, key):
    method _validate_value (line 774) | def _validate_value(self, key, value, scheme=None):
    method __setattr__ (line 784) | def __setattr__(self, key, value):
    method name_and_version (line 824) | def name_and_version(self):
    method provides (line 828) | def provides(self):
    method provides (line 839) | def provides(self, value):
    method get_requirements (line 845) | def get_requirements(self, reqts, extras=None, env=None):
    method dictionary (line 888) | def dictionary(self):
    method dependencies (line 894) | def dependencies(self):
    method dependencies (line 901) | def dependencies(self, value):
    method _validate_mapping (line 907) | def _validate_mapping(self, mapping, scheme):
    method validate (line 921) | def validate(self):
    method todict (line 930) | def todict(self):
    method _from_legacy (line 937) | def _from_legacy(self):
    method _to_legacy (line 979) | def _to_legacy(self):
    method write (line 1029) | def write(self, path=None, fileobj=None, legacy=False, skip_unknown=Tr...
    method add_requirements (line 1055) | def add_requirements(self, requirements):
    method __repr__ (line 1072) | def __repr__(self):

FILE: lib/python3.7/site-packages/pip/_vendor/distlib/resources.py
  class ResourceCache (line 27) | class ResourceCache(Cache):
    method __init__ (line 28) | def __init__(self, base=None):
    method is_stale (line 34) | def is_stale(self, resource, path):
    method get (line 45) | def get(self, resource):
  class ResourceBase (line 71) | class ResourceBase(object):
    method __init__ (line 72) | def __init__(self, finder, name):
  class Resource (line 77) | class Resource(ResourceBase):
    method as_stream (line 85) | def as_stream(self):
    method file_path (line 95) | def file_path(self):
    method bytes (line 102) | def bytes(self):
    method size (line 106) | def size(self):
  class ResourceContainer (line 110) | class ResourceContainer(ResourceBase):
    method resources (line 114) | def resources(self):
  class ResourceFinder (line 118) | class ResourceFinder(object):
    method __init__ (line 128) | def __init__(self, module):
    method _adjust_path (line 133) | def _adjust_path(self, path):
    method _make_path (line 136) | def _make_path(self, resource_name):
    method _find (line 148) | def _find(self, path):
    method get_cache_info (line 151) | def get_cache_info(self, resource):
    method find (line 154) | def find(self, resource_name):
    method get_stream (line 166) | def get_stream(self, resource):
    method get_bytes (line 169) | def get_bytes(self, resource):
    method get_size (line 173) | def get_size(self, resource):
    method get_resources (line 176) | def get_resources(self, resource):
    method is_container (line 182) | def is_container(self, resource):
    method iterator (line 187) | def iterator(self, resource_name):
  class ZipResourceFinder (line 208) | class ZipResourceFinder(ResourceFinder):
    method __init__ (line 212) | def __init__(self, module):
    method _adjust_path (line 223) | def _adjust_path(self, path):
    method _find (line 226) | def _find(self, path):
    method get_cache_info (line 244) | def get_cache_info(self, resource):
    method get_bytes (line 249) | def get_bytes(self, resource):
    method get_stream (line 252) | def get_stream(self, resource):
    method get_size (line 255) | def get_size(self, resource):
    method get_resources (line 259) | def get_resources(self, resource):
    method _is_directory (line 274) | def _is_directory(self, path):
  function register_finder (line 306) | def register_finder(loader, finder_maker):
  function finder (line 313) | def finder(package):
  function finder_for_path (line 341) | def finder_for_path(path):

FILE: lib/python3.7/site-packages/pip/_vendor/distlib/scripts.py
  function enquote_executable (line 53) | def enquote_executable(executable):
  class ScriptMaker (line 71) | class ScriptMaker(object):
    method __init__ (line 80) | def __init__(self, source_dir, target_dir, add_launchers=True,
    method _get_alternate_executable (line 97) | def _get_alternate_executable(self, executable, options):
    method _is_shell (line 105) | def _is_shell(self, executable):
    method _fix_jython_executable (line 117) | def _fix_jython_executable(self, executable):
    method _build_shebang (line 129) | def _build_shebang(self, executable, post_interp):
    method _get_shebang (line 160) | def _get_shebang(self, encoding, post_interp=b'', options=None):
    method _get_script_text (line 229) | def _get_script_text(self, entry):
    method get_manifest (line 236) | def get_manifest(self, exename):
    method _write_script (line 240) | def _write_script(self, names, shebang, script_bytes, filenames, ext):
    method get_script_filenames (line 300) | def get_script_filenames(self, name):
    method _make_script (line 311) | def _make_script(self, entry, filenames, options=None):
    method _copy_script (line 327) | def _copy_script(self, script, filenames):
    method dry_run (line 379) | def dry_run(self):
    method dry_run (line 383) | def dry_run(self, value):
    method _get_launcher (line 390) | def _get_launcher(self, kind):
    method make (line 409) | def make(self, specification, options=None):
    method make_multiple (line 428) | def make_multiple(self, specifications, options=None):

FILE: lib/python3.7/site-packages/pip/_vendor/distlib/util.py
  function parse_marker (line 56) | def parse_marker(marker_string):
  function parse_requirement (line 145) | def parse_requirement(req):
  function get_resources_dests (line 270) | def get_resources_dests(resources_root, rules):
  function in_venv (line 296) | def in_venv():
  function get_executable (line 306) | def get_executable():
  function proceed (line 324) | def proceed(prompt, allowed_chars, error_prompt=None, default=None):
  function extract_by_key (line 340) | def extract_by_key(d, keys):
  function read_exports (line 349) | def read_exports(stream):
  function write_exports (line 396) | def write_exports(exports, stream):
  function tempdir (line 416) | def tempdir():
  function chdir (line 424) | def chdir(d):
  function socket_timeout (line 434) | def socket_timeout(seconds=15):
  class cached_property (line 443) | class cached_property(object):
    method __init__ (line 444) | def __init__(self, func):
    method __get__ (line 449) | def __get__(self, obj, cls=None):
  function convert_path (line 457) | def convert_path(pathname):
  class FileOperator (line 484) | class FileOperator(object):
    method __init__ (line 485) | def __init__(self, dry_run=False):
    method _init_record (line 490) | def _init_record(self):
    method record_as_written (line 495) | def record_as_written(self, path):
    method newer (line 499) | def newer(self, source, target):
    method copy_file (line 519) | def copy_file(self, infile, outfile, check=True):
    method copy_stream (line 536) | def copy_strea
Copy disabled (too large) Download .json
Condensed preview — 1157 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (12,289K chars).
[
  {
    "path": "CITATION.cff",
    "chars": 612,
    "preview": "cff-version: 1.2.0\npreferred-citation:\n  type: software\n  message: If you use this software, please cite it as below.\n  "
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 5572,
    "preview": "## Contributing to YOLOv8 🚀\n\nWe love your input! We want to make contributing to YOLOv8 as easy and transparent as possi"
  },
  {
    "path": "LICENSE",
    "chars": 34523,
    "preview": "                    GNU AFFERO GENERAL PUBLIC LICENSE\n                       Version 3, 19 November 2007\n\n Copyright (C)"
  },
  {
    "path": "MANIFEST.in",
    "chars": 213,
    "preview": "include *.md\ninclude requirements.txt\ninclude LICENSE\ninclude setup.py\ninclude ultralytics/assets/bus.jpg\ninclude ultral"
  },
  {
    "path": "README.md",
    "chars": 15674,
    "preview": "<div align=\"left\">   \n\n\n## You Only Look at Once for Real-time and Generic Multi-Task\nThis repository(Yolov8 multi-task)"
  },
  {
    "path": "bin/activate",
    "chars": 2149,
    "preview": "# This file must be used with \"source bin/activate\" *from bash*\n# you cannot run it directly\n\n\nif [ \"${BASH_SOURCE-}\" = "
  },
  {
    "path": "bin/activate.csh",
    "chars": 1441,
    "preview": "# This file must be used with \"source bin/activate.csh\" *from csh*.\n# You cannot run it directly.\n# Created by Davide Di"
  },
  {
    "path": "bin/activate.fish",
    "chars": 3026,
    "preview": "# This file must be used using `source bin/activate.fish` *within a running fish ( http://fishshell.com ) session*.\n# Do"
  },
  {
    "path": "bin/activate.nu",
    "chars": 2571,
    "preview": "# This command prepares the required environment variables\ndef-env activate-virtualenv [] {\n    def is-string [x] {\n    "
  },
  {
    "path": "bin/activate.ps1",
    "chars": 1754,
    "preview": "$script:THIS_PATH = $myinvocation.mycommand.path\n$script:BASE_DIR = Split-Path (Resolve-Path \"$THIS_PATH/..\") -Parent\n\nf"
  },
  {
    "path": "bin/activate_this.py",
    "chars": 1175,
    "preview": "\"\"\"Activate virtualenv for current interpreter:\n\nUse exec(open(this_file).read(), {'__file__': this_file}).\n\nThis can be"
  },
  {
    "path": "bin/deactivate.nu",
    "chars": 682,
    "preview": "def-env deactivate-virtualenv [] {\n    def has-env [name: string] {\n        $name in (env).name\n    }\n\n    let is_window"
  },
  {
    "path": "bin/pip",
    "chars": 246,
    "preview": "#!/home/jiayuan/ultralytics-main/bin/python\n# -*- coding: utf-8 -*-\nimport re\nimport sys\nfrom pip._internal.cli.main imp"
  },
  {
    "path": "bin/pip-3.7",
    "chars": 246,
    "preview": "#!/home/jiayuan/ultralytics-main/bin/python\n# -*- coding: utf-8 -*-\nimport re\nimport sys\nfrom pip._internal.cli.main imp"
  },
  {
    "path": "bin/pip3",
    "chars": 246,
    "preview": "#!/home/jiayuan/ultralytics-main/bin/python\n# -*- coding: utf-8 -*-\nimport re\nimport sys\nfrom pip._internal.cli.main imp"
  },
  {
    "path": "bin/pip3.7",
    "chars": 246,
    "preview": "#!/home/jiayuan/ultralytics-main/bin/python\n# -*- coding: utf-8 -*-\nimport re\nimport sys\nfrom pip._internal.cli.main imp"
  },
  {
    "path": "bin/wheel",
    "chars": 233,
    "preview": "#!/home/jiayuan/ultralytics-main/bin/python\n# -*- coding: utf-8 -*-\nimport re\nimport sys\nfrom wheel.cli import main\nif _"
  },
  {
    "path": "bin/wheel-3.7",
    "chars": 233,
    "preview": "#!/home/jiayuan/ultralytics-main/bin/python\n# -*- coding: utf-8 -*-\nimport re\nimport sys\nfrom wheel.cli import main\nif _"
  },
  {
    "path": "bin/wheel3",
    "chars": 233,
    "preview": "#!/home/jiayuan/ultralytics-main/bin/python\n# -*- coding: utf-8 -*-\nimport re\nimport sys\nfrom wheel.cli import main\nif _"
  },
  {
    "path": "bin/wheel3.7",
    "chars": 233,
    "preview": "#!/home/jiayuan/ultralytics-main/bin/python\n# -*- coding: utf-8 -*-\nimport re\nimport sys\nfrom wheel.cli import main\nif _"
  },
  {
    "path": "docker/Dockerfile",
    "chars": 2644,
    "preview": "# Ultralytics YOLO 🚀, AGPL-3.0 license\n# Builds ultralytics/ultralytics:latest image on DockerHub https://hub.docker.com"
  },
  {
    "path": "docker/Dockerfile-arm64",
    "chars": 1575,
    "preview": "# Ultralytics YOLO 🚀, AGPL-3.0 license\n# Builds ultralytics/ultralytics:latest-arm64 image on DockerHub https://hub.dock"
  },
  {
    "path": "docker/Dockerfile-cpu",
    "chars": 1616,
    "preview": "# Ultralytics YOLO 🚀, AGPL-3.0 license\n# Builds ultralytics/ultralytics:latest-cpu image on DockerHub https://hub.docker"
  },
  {
    "path": "docker/Dockerfile-jetson",
    "chars": 1837,
    "preview": "# Ultralytics YOLO 🚀, AGPL-3.0 license\n# Builds ultralytics/ultralytics:jetson image on DockerHub https://hub.docker.com"
  },
  {
    "path": "docs/CNAME",
    "chars": 20,
    "preview": "docs.ultralytics.com"
  },
  {
    "path": "docs/README.md",
    "chars": 3961,
    "preview": "---\ndescription: Learn how to install the Ultralytics package in developer mode and build/serve locally using MkDocs. De"
  },
  {
    "path": "docs/SECURITY.md",
    "chars": 1624,
    "preview": "---\ndescription: Learn how Ultralytics prioritize security. Get insights into Snyk and GitHub CodeQL scans, and how to r"
  },
  {
    "path": "docs/build_reference.py",
    "chars": 3957,
    "preview": "# Ultralytics YOLO 🚀, AGPL-3.0 license\n\"\"\"\nHelper file to build Ultralytics Docs reference section. Recursively walks th"
  },
  {
    "path": "docs/datasets/classify/caltech101.md",
    "chars": 140,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/datasets/classify/caltech256.md",
    "chars": 140,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/datasets/classify/cifar10.md",
    "chars": 140,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/datasets/classify/cifar100.md",
    "chars": 140,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/datasets/classify/fashion-mnist.md",
    "chars": 140,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/datasets/classify/imagenet.md",
    "chars": 140,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/datasets/classify/imagenet10.md",
    "chars": 140,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/datasets/classify/imagenette.md",
    "chars": 140,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/datasets/classify/imagewoof.md",
    "chars": 140,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/datasets/classify/index.md",
    "chars": 2437,
    "preview": "---\ncomments: true\ndescription: Learn how torchvision organizes classification image datasets. Use this code to create a"
  },
  {
    "path": "docs/datasets/classify/mnist.md",
    "chars": 4339,
    "preview": "---\ncomments: true\ndescription: Learn about the MNIST dataset, a large database of handwritten digits commonly used for "
  },
  {
    "path": "docs/datasets/detect/argoverse.md",
    "chars": 5215,
    "preview": "---\ncomments: true\ndescription: Learn about the Argoverse dataset, a rich dataset designed to support research in autono"
  },
  {
    "path": "docs/datasets/detect/coco.md",
    "chars": 5286,
    "preview": "---\ncomments: true\ndescription: Learn about the COCO dataset, designed to encourage research on object detection, segmen"
  },
  {
    "path": "docs/datasets/detect/coco8.md",
    "chars": 3774,
    "preview": "---\ncomments: true\ndescription: Get started with Ultralytics COCO8. Ideal for testing and debugging object detection mod"
  },
  {
    "path": "docs/datasets/detect/globalwheat2020.md",
    "chars": 5396,
    "preview": "---\ncomments: true\ndescription: Learn about the Global Wheat Head Dataset, aimed at supporting the development of accura"
  },
  {
    "path": "docs/datasets/detect/index.md",
    "chars": 3305,
    "preview": "---\ncomments: true\ndescription: Learn about supported dataset formats for training YOLO detection models, including Ultr"
  },
  {
    "path": "docs/datasets/detect/objects365.md",
    "chars": 4824,
    "preview": "---\ncomments: true\ndescription: Discover the Objects365 dataset, designed for object detection research with a focus on "
  },
  {
    "path": "docs/datasets/detect/sku-110k.md",
    "chars": 4712,
    "preview": "---\ncomments: true\ndescription: Explore the SKU-110k dataset, designed for object detection in densely packed retail she"
  },
  {
    "path": "docs/datasets/detect/visdrone.md",
    "chars": 5569,
    "preview": "---\ncomments: true\ndescription: Discover the VisDrone dataset, a comprehensive benchmark for drone-based computer vision"
  },
  {
    "path": "docs/datasets/detect/voc.md",
    "chars": 5187,
    "preview": "---\ncomments: true\ndescription: Learn about the VOC dataset, designed to encourage research on object detection, segment"
  },
  {
    "path": "docs/datasets/detect/xview.md",
    "chars": 4935,
    "preview": "---\ncomments: true\ndescription: Discover the xView Dataset, a large-scale overhead imagery dataset for object detection "
  },
  {
    "path": "docs/datasets/index.md",
    "chars": 5062,
    "preview": "---\ncomments: true\ndescription: Ultralytics provides support for various datasets to facilitate multiple computer vision"
  },
  {
    "path": "docs/datasets/pose/coco.md",
    "chars": 140,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/datasets/pose/coco8-pose.md",
    "chars": 3831,
    "preview": "---\ncomments: true\ndescription: Test and debug object detection models with Ultralytics COCO8-Pose Dataset - a small, ve"
  },
  {
    "path": "docs/datasets/pose/index.md",
    "chars": 4275,
    "preview": "---\ncomments: true\ndescription: Learn how to format your dataset for training YOLO models with Ultralytics YOLO format u"
  },
  {
    "path": "docs/datasets/segment/coco.md",
    "chars": 140,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/datasets/segment/coco8-seg.md",
    "chars": 3838,
    "preview": "---\ncomments: true\ndescription: Test and debug segmentation models on small, versatile COCO8-Seg instance segmentation d"
  },
  {
    "path": "docs/datasets/segment/index.md",
    "chars": 5787,
    "preview": "---\ncomments: true\ndescription: Learn about the Ultralytics YOLO dataset format for segmentation models. Use YAML to tra"
  },
  {
    "path": "docs/datasets/track/index.md",
    "chars": 833,
    "preview": "---\ncomments: true\ndescription: Discover the datasets compatible with Multi-Object Detector. Train your trackers and mak"
  },
  {
    "path": "docs/help/CLA.md",
    "chars": 5747,
    "preview": "---\ndescription: Individual Contributor License Agreement. Settle Intellectual Property issues for Contributions made to"
  },
  {
    "path": "docs/help/FAQ.md",
    "chars": 2940,
    "preview": "---\ncomments: true\ndescription: 'Get quick answers to common Ultralytics YOLO questions: Hardware requirements, fine-tun"
  },
  {
    "path": "docs/help/code_of_conduct.md",
    "chars": 5414,
    "preview": "---\ncomments: true\ndescription: Read the Ultralytics Contributor Covenant Code of Conduct. Learn ways to create a welcom"
  },
  {
    "path": "docs/help/contributing.md",
    "chars": 3747,
    "preview": "---\ncomments: true\ndescription: Learn how to contribute to Ultralytics Open-Source YOLO Repositories with contributions "
  },
  {
    "path": "docs/help/index.md",
    "chars": 1904,
    "preview": "---\ncomments: true\ndescription: Get comprehensive resources for Ultralytics YOLO repositories. Find guides, FAQs, MRE cr"
  },
  {
    "path": "docs/help/minimum_reproducible_example.md",
    "chars": 3587,
    "preview": "---\ncomments: true\ndescription: Learn how to create a Minimum Reproducible Example (MRE) for Ultralytics YOLO bug report"
  },
  {
    "path": "docs/hub/app/android.md",
    "chars": 7378,
    "preview": "---\ncomments: true\ndescription: Run YOLO models on your Android device for real-time object detection with Ultralytics A"
  },
  {
    "path": "docs/hub/app/index.md",
    "chars": 4201,
    "preview": "---\ncomments: true\ndescription: Experience the power of YOLOv5 and YOLOv8 models with Ultralytics HUB app. Download from"
  },
  {
    "path": "docs/hub/app/ios.md",
    "chars": 4401,
    "preview": "---\ncomments: true\ndescription: Get started with the Ultralytics iOS app and run YOLO models in real-time for object det"
  },
  {
    "path": "docs/hub/datasets.md",
    "chars": 2420,
    "preview": "---\ncomments: true\ndescription: Upload custom datasets to Ultralytics HUB for YOLOv5 and YOLOv8 models. Follow YAML stru"
  },
  {
    "path": "docs/hub/index.md",
    "chars": 3076,
    "preview": "---\ncomments: true\ndescription: 'Ultralytics HUB: Train & deploy YOLO models from one spot! Use drag-and-drop interface "
  },
  {
    "path": "docs/hub/inference_api.md",
    "chars": 14538,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/hub/integrations.md",
    "chars": 140,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/hub/models.md",
    "chars": 893,
    "preview": "---\ncomments: true\ndescription: Train and Deploy your Model to 13 different formats, including TensorFlow, ONNX, OpenVIN"
  },
  {
    "path": "docs/hub/projects.md",
    "chars": 140,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/hub/quickstart.md",
    "chars": 140,
    "preview": "---\ncomments: true\n---\n\n# 🚧 Page Under Construction ⚒\n\nThis page is currently under construction!️ 👷Please check back la"
  },
  {
    "path": "docs/index.md",
    "chars": 4807,
    "preview": "---\ncomments: true\ndescription: Explore Ultralytics YOLOv8, a cutting-edge real-time object detection and image segmenta"
  },
  {
    "path": "docs/models/index.md",
    "chars": 1768,
    "preview": "---\ncomments: true\ndescription: Learn about the supported models and architectures, such as YOLOv3, YOLOv5, and YOLOv8, "
  },
  {
    "path": "docs/models/rtdetr.md",
    "chars": 3750,
    "preview": "---\ncomments: true\ndescription: Explore RT-DETR, a high-performance real-time object detector. Learn how to use pre-trai"
  },
  {
    "path": "docs/models/sam.md",
    "chars": 6785,
    "preview": "---\ncomments: true\ndescription: Learn about the Segment Anything Model (SAM) and how it provides promptable image segmen"
  },
  {
    "path": "docs/models/yolov3.md",
    "chars": 138,
    "preview": "---\ncomments: true\n---\n\n# 🚧Page Under Construction ⚒\n\nThis page is currently under construction!️👷Please check back late"
  },
  {
    "path": "docs/models/yolov5.md",
    "chars": 5098,
    "preview": "---\ncomments: true\ndescription: Detect objects faster and more accurately using Ultralytics YOLOv5u. Find pre-trained mo"
  },
  {
    "path": "docs/models/yolov8.md",
    "chars": 10797,
    "preview": "---\ncomments: true\ndescription: Learn about YOLOv8's pre-trained weights supporting detection, instance segmentation, po"
  },
  {
    "path": "docs/modes/benchmark.md",
    "chars": 4519,
    "preview": "---\ncomments: true\ndescription: Benchmark mode compares speed and accuracy of various YOLOv8 export formats like ONNX or"
  },
  {
    "path": "docs/modes/export.md",
    "chars": 6206,
    "preview": "---\ncomments: true\ndescription: 'Export mode: Create a deployment-ready YOLOv8 model by converting it to various formats"
  },
  {
    "path": "docs/modes/index.md",
    "chars": 3428,
    "preview": "---\ncomments: true\ndescription: Use Ultralytics YOLOv8 Modes (Train, Val, Predict, Export, Track, Benchmark) to train, v"
  },
  {
    "path": "docs/modes/predict.md",
    "chars": 16168,
    "preview": "---\ncomments: true\ndescription: Get started with YOLOv8 Predict mode and input sources. Accepts various input sources su"
  },
  {
    "path": "docs/modes/track.md",
    "chars": 3475,
    "preview": "---\ncomments: true\ndescription: Explore YOLOv8n-based object tracking with Ultralytics' BoT-SORT and ByteTrack. Learn co"
  },
  {
    "path": "docs/modes/train.md",
    "chars": 7524,
    "preview": "---\ncomments: true\ndescription: Learn how to train custom YOLOv8 models on various datasets, configure hyperparameters, "
  },
  {
    "path": "docs/modes/val.md",
    "chars": 6867,
    "preview": "---\ncomments: true\ndescription: Validate and improve YOLOv8n model accuracy on COCO128 and other datasets using hyperpar"
  },
  {
    "path": "docs/overrides/partials/comments.html",
    "chars": 1725,
    "preview": "{% if page.meta.comments %}\n<h2 id=\"__comments\">{{ lang.t(\"meta.comments\") }}</h2>\n\n<!-- Insert Giscus code snippet from"
  },
  {
    "path": "docs/overrides/partials/source-file.html",
    "chars": 849,
    "preview": "{% import \"partials/language.html\" as lang with context %}\n\n<!-- taken from\nhttps://github.com/squidfunk/mkdocs-material"
  },
  {
    "path": "docs/quickstart.md",
    "chars": 5347,
    "preview": "---\ncomments: true\ndescription: Install and use YOLOv8 via CLI or Python. Run single-line commands or integrate with Pyt"
  },
  {
    "path": "docs/reference/hub/auth.md",
    "chars": 205,
    "preview": "---\ndescription: Learn how to use Ultralytics hub authentication in your projects with examples and guidelines from the "
  },
  {
    "path": "docs/reference/hub/session.md",
    "chars": 230,
    "preview": "---\ndescription: Accelerate your AI development with the Ultralytics HUB Training Session. High-performance training of "
  },
  {
    "path": "docs/reference/hub/utils.md",
    "chars": 463,
    "preview": "---\ndescription: Explore Ultralytics events, including 'request_with_credentials' and 'smart_request', to improve your p"
  },
  {
    "path": "docs/reference/nn/autobackend.md",
    "chars": 292,
    "preview": "---\ndescription: Ensure class names match filenames for easy imports. Use AutoBackend to automatically rename and refact"
  },
  {
    "path": "docs/reference/nn/autoshape.md",
    "chars": 295,
    "preview": "---\ndescription: Detect 80+ object categories with bounding box coordinates and class probabilities using AutoShape in U"
  },
  {
    "path": "docs/reference/nn/modules/block.md",
    "chars": 1194,
    "preview": "---\ndescription: Explore ultralytics.nn.modules.block to build powerful YOLO object detection models. Master DFL, HGStem"
  },
  {
    "path": "docs/reference/nn/modules/conv.md",
    "chars": 1045,
    "preview": "---\ndescription: Explore convolutional neural network modules & techniques such as LightConv, DWConv, ConvTranspose, Gho"
  },
  {
    "path": "docs/reference/nn/modules/head.md",
    "chars": 482,
    "preview": "---\ndescription: 'Learn about Ultralytics YOLO modules: Segment, Classify, and RTDETRDecoder. Optimize object detection "
  },
  {
    "path": "docs/reference/nn/modules/transformer.md",
    "chars": 1016,
    "preview": "---\ndescription: Explore the Ultralytics nn modules pages on Transformer and MLP blocks, LayerNorm2d, and Deformable Tra"
  },
  {
    "path": "docs/reference/nn/modules/utils.md",
    "chars": 590,
    "preview": "---\ndescription: 'Learn about Ultralytics NN modules: get_clones, linear_init_, and multi_scale_deformable_attn_pytorch."
  },
  {
    "path": "docs/reference/nn/tasks.md",
    "chars": 1084,
    "preview": "---\ndescription: Learn how to work with Ultralytics YOLO Detection, Segmentation & Classification Models, load weights a"
  },
  {
    "path": "docs/reference/tracker/track.md",
    "chars": 417,
    "preview": "---\ndescription: Learn how to register custom event-tracking and track predictions with Ultralytics YOLO via on_predict_"
  },
  {
    "path": "docs/reference/tracker/trackers/basetrack.md",
    "chars": 325,
    "preview": "---\ndescription: 'TrackState: A comprehensive guide to Ultralytics tracker''s BaseTrack for monitoring model performance"
  },
  {
    "path": "docs/reference/tracker/trackers/bot_sort.md",
    "chars": 309,
    "preview": "---\ndescription: '\"Optimize tracking with Ultralytics BOTrack. Easily sort and track bots with BOTSORT. Streamline data "
  },
  {
    "path": "docs/reference/tracker/trackers/byte_tracker.md",
    "chars": 303,
    "preview": "---\ndescription: Learn how to track ByteAI model sizes and tips for model optimization with STrack, a byte tracking tool"
  },
  {
    "path": "docs/reference/tracker/utils/gmc.md",
    "chars": 217,
    "preview": "---\ndescription: '\"Track Google Marketing Campaigns in GMC with Ultralytics Tracker. Learn to set up and use GMC for det"
  },
  {
    "path": "docs/reference/tracker/utils/kalman_filter.md",
    "chars": 333,
    "preview": "---\ndescription: Improve object tracking with KalmanFilterXYAH in Ultralytics YOLO - an efficient and accurate algorithm"
  },
  {
    "path": "docs/reference/tracker/utils/matching.md",
    "chars": 1147,
    "preview": "---\ndescription: Learn how to match and fuse object detections for accurate target tracking using Ultralytics' YOLO merg"
  },
  {
    "path": "docs/reference/yolo/data/annotator.md",
    "chars": 244,
    "preview": "---\ndescription: Learn how to use auto_annotate in Ultralytics YOLO to generate annotations automatically for your datas"
  },
  {
    "path": "docs/reference/yolo/data/augment.md",
    "chars": 1489,
    "preview": "---\ndescription: Use Ultralytics YOLO Data Augmentation transforms with Base, MixUp, and Albumentations for object detec"
  },
  {
    "path": "docs/reference/yolo/data/base.md",
    "chars": 236,
    "preview": "---\ndescription: Learn about BaseDataset in Ultralytics YOLO, a flexible dataset class for object detection. Maximize yo"
  },
  {
    "path": "docs/reference/yolo/data/build.md",
    "chars": 716,
    "preview": "---\ndescription: Maximize YOLO performance with Ultralytics' InfiniteDataLoader, seed_worker, build_dataloader, and load"
  },
  {
    "path": "docs/reference/yolo/data/converter.md",
    "chars": 663,
    "preview": "---\ndescription: Convert COCO-91 to COCO-80 class, RLE to polygon, and merge multi-segment images with Ultralytics YOLO "
  },
  {
    "path": "docs/reference/yolo/data/dataloaders/stream_loaders.md",
    "chars": 827,
    "preview": "---\ndescription: 'Ultralytics YOLO Docs: Learn about stream loaders for image and tensor data, as well as autocasting te"
  },
  {
    "path": "docs/reference/yolo/data/dataloaders/v5augmentations.md",
    "chars": 1756,
    "preview": "---\ndescription: Enhance image data with Albumentations CenterCrop, normalize, augment_hsv, replicate, random_perspectiv"
  },
  {
    "path": "docs/reference/yolo/data/dataloaders/v5loader.md",
    "chars": 1839,
    "preview": "---\ndescription: Efficiently load images and labels to models using Ultralytics YOLO's InfiniteDataLoader, LoadScreensho"
  },
  {
    "path": "docs/reference/yolo/data/dataset.md",
    "chars": 408,
    "preview": "---\ndescription: Create custom YOLOv5 datasets with Ultralytics YOLODataset and SemanticDataset. Streamline your object "
  },
  {
    "path": "docs/reference/yolo/data/dataset_wrappers.md",
    "chars": 224,
    "preview": "---\ndescription: Create a custom dataset of mixed and oriented rectangular objects with Ultralytics YOLO's MixAndRectDat"
  },
  {
    "path": "docs/reference/yolo/data/utils.md",
    "chars": 1173,
    "preview": "---\ndescription: Efficiently handle data in YOLO with Ultralytics. Utilize HUBDatasetStats and customize dataset with th"
  },
  {
    "path": "docs/reference/yolo/engine/exporter.md",
    "chars": 582,
    "preview": "---\ndescription: Learn how to export your YOLO model in various formats using Ultralytics' exporter package - iOS, GDC, "
  },
  {
    "path": "docs/reference/yolo/engine/model.md",
    "chars": 196,
    "preview": "---\ndescription: Discover the YOLO model of Ultralytics engine to simplify your object detection tasks with state-of-the"
  },
  {
    "path": "docs/reference/yolo/engine/predictor.md",
    "chars": 240,
    "preview": "---\ndescription: '\"The BasePredictor class in Ultralytics YOLO Engine predicts object detection in images and videos. Le"
  },
  {
    "path": "docs/reference/yolo/engine/results.md",
    "chars": 430,
    "preview": "---\ndescription: Learn about BaseTensor & Boxes in Ultralytics YOLO Engine. Check out Ultralytics Docs for quality tutor"
  },
  {
    "path": "docs/reference/yolo/engine/trainer.md",
    "chars": 299,
    "preview": "---\ndescription: Train faster with mixed precision. Learn how to use BaseTrainer with Advanced Mixed Precision to optimi"
  },
  {
    "path": "docs/reference/yolo/engine/validator.md",
    "chars": 210,
    "preview": "---\ndescription: Ensure YOLOv5 models meet constraints and standards with the BaseValidator class. Learn how to use it h"
  },
  {
    "path": "docs/reference/yolo/utils/autobatch.md",
    "chars": 331,
    "preview": "---\ndescription: Dynamically adjusts input size to optimize GPU memory usage during training. Learn how to use check_tra"
  },
  {
    "path": "docs/reference/yolo/utils/benchmarks.md",
    "chars": 179,
    "preview": "---\ndescription: Improve your YOLO's performance and measure its speed. Benchmark utility for YOLOv5.\n---\n\n# benchmark\n-"
  },
  {
    "path": "docs/reference/yolo/utils/callbacks/base.md",
    "chars": 2678,
    "preview": "---\ndescription: Learn about YOLO's callback functions from on_train_start to add_integration_callbacks. See how these c"
  },
  {
    "path": "docs/reference/yolo/utils/callbacks/clearml.md",
    "chars": 810,
    "preview": "---\ndescription: Improve your YOLOv5 model training with callbacks from ClearML. Learn about log debug samples, pre-trai"
  },
  {
    "path": "docs/reference/yolo/utils/callbacks/comet.md",
    "chars": 2743,
    "preview": "---\ndescription: Learn about YOLO callbacks using the Comet.ml platform, enhancing object detection training and testing"
  },
  {
    "path": "docs/reference/yolo/utils/callbacks/hub.md",
    "chars": 871,
    "preview": "---\ndescription: Improve YOLOv5 model training with Ultralytics' on-train callbacks. Boost performance on-pretrain-routi"
  },
  {
    "path": "docs/reference/yolo/utils/callbacks/mlflow.md",
    "chars": 444,
    "preview": "---\ndescription: Track model performance and metrics with MLflow in YOLOv5. Use callbacks like on_pretrain_routine_end o"
  },
  {
    "path": "docs/reference/yolo/utils/callbacks/neptune.md",
    "chars": 881,
    "preview": "---\ndescription: Improve YOLOv5 training with Neptune, a powerful logging tool. Track metrics like images, plots, and ep"
  },
  {
    "path": "docs/reference/yolo/utils/callbacks/raytune.md",
    "chars": 265,
    "preview": "---\ndescription: '\"Improve YOLO model performance with on_fit_epoch_end callback. Learn to integrate with Ray Tune for h"
  },
  {
    "path": "docs/reference/yolo/utils/callbacks/tensorboard.md",
    "chars": 542,
    "preview": "---\ndescription: Learn how to monitor the training process with Tensorboard using Ultralytics YOLO's \"_log_scalars\" and "
  },
  {
    "path": "docs/reference/yolo/utils/callbacks/wb.md",
    "chars": 534,
    "preview": "---\ndescription: Learn how to use Ultralytics YOLO's built-in callbacks `on_pretrain_routine_start` and `on_train_epoch_"
  },
  {
    "path": "docs/reference/yolo/utils/checks.md",
    "chars": 1405,
    "preview": "---\ndescription: 'Check functions for YOLO utils: image size, version, font, requirements, filename suffix, YAML file, Y"
  },
  {
    "path": "docs/reference/yolo/utils/dist.md",
    "chars": 486,
    "preview": "---\ndescription: Learn how to find free network port and generate DDP (Distributed Data Parallel) command in Ultralytics"
  },
  {
    "path": "docs/reference/yolo/utils/downloads.md",
    "chars": 638,
    "preview": "---\ndescription: Download and unzip YOLO pretrained models. Ultralytics YOLO docs utils.downloads.unzip_file, checks dis"
  },
  {
    "path": "docs/reference/yolo/utils/errors.md",
    "chars": 209,
    "preview": "---\ndescription: Learn about HUBModelError in Ultralytics YOLO Docs. Resolve the error and get the most out of your YOLO"
  },
  {
    "path": "docs/reference/yolo/utils/files.md",
    "chars": 645,
    "preview": "---\ndescription: 'Learn about Ultralytics YOLO files and directory utilities: WorkingDirectory, file_age, file_size, and"
  },
  {
    "path": "docs/reference/yolo/utils/instance.md",
    "chars": 368,
    "preview": "---\ndescription: Learn about Bounding Boxes (Bboxes) and _ntuple in Ultralytics YOLO for object detection. Improve accur"
  },
  {
    "path": "docs/reference/yolo/utils/loss.md",
    "chars": 371,
    "preview": "---\ndescription: Learn about Varifocal Loss and Keypoint Loss in Ultralytics YOLO for advanced bounding box and pose est"
  },
  {
    "path": "docs/reference/yolo/utils/metrics.md",
    "chars": 1518,
    "preview": "---\ndescription: Explore Ultralytics YOLO's FocalLoss, DetMetrics, PoseMetrics, ClassifyMetrics, and more with Ultralyti"
  },
  {
    "path": "docs/reference/yolo/utils/ops.md",
    "chars": 2096,
    "preview": "---\ndescription: Learn about various utility functions in Ultralytics YOLO, including x, y, width, height conversions, n"
  },
  {
    "path": "docs/reference/yolo/utils/plotting.md",
    "chars": 790,
    "preview": "---\ndescription: 'Discover the power of YOLO''s plotting functions: Colors, Labels and Images. Code examples to output t"
  },
  {
    "path": "docs/reference/yolo/utils/tal.md",
    "chars": 647,
    "preview": "---\ndescription: Improve your YOLO models with Ultralytics' TaskAlignedAssigner, select_highest_overlaps, and dist2bbox "
  },
  {
    "path": "docs/reference/yolo/utils/torch_utils.md",
    "chars": 2128,
    "preview": "---\ndescription: Optimize your PyTorch models with Ultralytics YOLO's torch_utils functions such as ModelEMA, select_dev"
  },
  {
    "path": "docs/reference/yolo/v8/classify/predict.md",
    "chars": 323,
    "preview": "---\ndescription: Learn how to use ClassificationPredictor in Ultralytics YOLOv8 for object classification tasks in a sim"
  },
  {
    "path": "docs/reference/yolo/v8/classify/train.md",
    "chars": 317,
    "preview": "---\ndescription: Train a custom image classification model using Ultralytics YOLOv8 with ClassificationTrainer. Boost ac"
  },
  {
    "path": "docs/reference/yolo/v8/classify/val.md",
    "chars": 310,
    "preview": "---\ndescription: Ensure model classification accuracy with Ultralytics YOLO's ClassificationValidator. Validate and impr"
  },
  {
    "path": "docs/reference/yolo/v8/detect/predict.md",
    "chars": 292,
    "preview": "---\ndescription: Detect and predict objects in images and videos using the Ultralytics YOLO v8 model with DetectionPredi"
  },
  {
    "path": "docs/reference/yolo/v8/detect/train.md",
    "chars": 370,
    "preview": "---\ndescription: Train and optimize custom object detection models with Ultralytics DetectionTrainer and train functions"
  },
  {
    "path": "docs/reference/yolo/v8/detect/val.md",
    "chars": 292,
    "preview": "---\ndescription: Validate YOLOv5 detections using this PyTorch module. Ensure model accuracy with NMS IOU threshold tuni"
  },
  {
    "path": "docs/reference/yolo/v8/pose/predict.md",
    "chars": 285,
    "preview": "---\ndescription: Predict human pose coordinates and confidence scores using YOLOv5. Use on real-time video streams or st"
  },
  {
    "path": "docs/reference/yolo/v8/pose/train.md",
    "chars": 384,
    "preview": "---\ndescription: Boost posture detection using PoseTrainer and train models using train() API. Learn PoseLoss for ultra-"
  },
  {
    "path": "docs/reference/yolo/v8/pose/val.md",
    "chars": 257,
    "preview": "---\ndescription: Ensure proper human poses in images with YOLOv8 Pose Validation, part of the Ultralytics YOLO v8 suite."
  },
  {
    "path": "docs/reference/yolo/v8/segment/predict.md",
    "chars": 332,
    "preview": "---\ndescription: '\"Use SegmentationPredictor in YOLOv8 for efficient object detection and segmentation. Explore Ultralyt"
  },
  {
    "path": "docs/reference/yolo/v8/segment/train.md",
    "chars": 397,
    "preview": "---\ndescription: Learn about SegmentationTrainer and Train in Ultralytics YOLO v8 for efficient object detection models."
  },
  {
    "path": "docs/reference/yolo/v8/segment/val.md",
    "chars": 321,
    "preview": "---\ndescription: Ensure segmentation quality on large datasets with SegmentationValidator. Review and visualize results "
  },
  {
    "path": "docs/robots.txt",
    "chars": 14,
    "preview": "User-agent: *\n"
  },
  {
    "path": "docs/stylesheets/style.css",
    "chars": 1007,
    "preview": "/* Table format like GitHub ----------------------------------------------------------------------------------------- */"
  },
  {
    "path": "docs/tasks/classify.md",
    "chars": 10817,
    "preview": "---\ncomments: true\ndescription: Check YOLO class label with only one class for the whole image, using image classificati"
  },
  {
    "path": "docs/tasks/detect.md",
    "chars": 10528,
    "preview": "---\ncomments: true\ndescription: Learn how to use YOLOv8, an object detection model pre-trained with COCO and about the d"
  },
  {
    "path": "docs/tasks/index.md",
    "chars": 2470,
    "preview": "---\ncomments: true\ndescription: Learn how Ultralytics YOLOv8 AI framework supports detection, segmentation, classificati"
  },
  {
    "path": "docs/tasks/pose.md",
    "chars": 11248,
    "preview": "---\ncomments: true\ndescription: Learn how to use YOLOv8 pose estimation models to identify the position of keypoints on "
  },
  {
    "path": "docs/tasks/segment.md",
    "chars": 11171,
    "preview": "---\ncomments: true\ndescription: Learn what Instance segmentation is. Get pretrained YOLOv8 segment models, and how to tr"
  },
  {
    "path": "docs/usage/callbacks.md",
    "chars": 4306,
    "preview": "---\ncomments: true\ndescription: Learn how to leverage callbacks in Ultralytics YOLO framework to perform custom tasks in"
  },
  {
    "path": "docs/usage/cfg.md",
    "chars": 20859,
    "preview": "---\ncomments: true\ndescription: 'Learn about YOLO settings and modes for different tasks like detection, segmentation et"
  },
  {
    "path": "docs/usage/cli.md",
    "chars": 8197,
    "preview": "---\ncomments: true\ndescription: Learn how to use YOLOv8 from the Command Line Interface (CLI) through simple, single-lin"
  },
  {
    "path": "docs/usage/engine.md",
    "chars": 2763,
    "preview": "---\ncomments: true\ndescription: Learn how to train and customize your models fast with the Ultralytics YOLO 'DetectionTr"
  },
  {
    "path": "docs/usage/hyperparameter_tuning.md",
    "chars": 8842,
    "preview": "---\ncomments: true\ndescription: Discover how to integrate hyperparameter tuning with Ray Tune and Ultralytics YOLOv8. Sp"
  },
  {
    "path": "docs/usage/python.md",
    "chars": 10277,
    "preview": "---\ncomments: true\ndescription: Integrate YOLOv8 in Python. Load, use pretrained models, train, and infer images. Export"
  },
  {
    "path": "docs/yolov5/environments/aws_quickstart_tutorial.md",
    "chars": 5878,
    "preview": "---\ncomments: true\ndescription: Get started with YOLOv5 on AWS. Our comprehensive guide provides everything you need to "
  },
  {
    "path": "docs/yolov5/environments/docker_image_quickstart_tutorial.md",
    "chars": 3263,
    "preview": "---\ncomments: true\ndescription: Get started with YOLOv5 in a Docker container. Learn to set up and run YOLOv5 models and"
  },
  {
    "path": "docs/yolov5/environments/google_cloud_quickstart_tutorial.md",
    "chars": 3365,
    "preview": "---\ncomments: true\ndescription: Set up YOLOv5 on a Google Cloud Platform (GCP) Deep Learning VM. Train, test, detect, an"
  },
  {
    "path": "docs/yolov5/index.md",
    "chars": 7403,
    "preview": "---\ncomments: true\ndescription: Discover the YOLOv5 object detection model designed to deliver fast and accurate real-ti"
  },
  {
    "path": "docs/yolov5/quickstart_tutorial.md",
    "chars": 3782,
    "preview": "---\ncomments: true\ndescription: Learn how to quickly start using YOLOv5 including installation, inference, and training "
  },
  {
    "path": "docs/yolov5/tutorials/architecture_description.md",
    "chars": 6826,
    "preview": "---\ncomments: true\ndescription: 'Ultralytics YOLOv5 Docs: Learn model structure, data augmentation &amp; training strate"
  },
  {
    "path": "docs/yolov5/tutorials/clearml_logging_integration.md",
    "chars": 10973,
    "preview": "---\ncomments: true\ndescription: Integrate ClearML with YOLOv5 to track experiments and manage data versions. Optimize hy"
  },
  {
    "path": "docs/yolov5/tutorials/comet_logging_integration.md",
    "chars": 10896,
    "preview": "---\ncomments: true\ndescription: Learn how to use YOLOv5 with Comet, a tool for logging and visualizing machine learning "
  },
  {
    "path": "docs/yolov5/tutorials/hyperparameter_evolution.md",
    "chars": 10928,
    "preview": "---\ncomments: true\ndescription: Learn to find optimum YOLOv5 hyperparameters via **evolution**. A guide to learn hyperpa"
  },
  {
    "path": "docs/yolov5/tutorials/model_ensembling.md",
    "chars": 10581,
    "preview": "---\ncomments: true\ndescription: Learn how to ensemble YOLOv5 models for improved mAP and Recall! Clone the repo, install"
  },
  {
    "path": "docs/yolov5/tutorials/model_export.md",
    "chars": 14922,
    "preview": "---\ncomments: true\ndescription: Export YOLOv5 models to TFLite, ONNX, CoreML, and TensorRT formats. Achieve up to 5x GPU"
  },
  {
    "path": "docs/yolov5/tutorials/model_pruning_and_sparsity.md",
    "chars": 8560,
    "preview": "---\ncomments: true\ndescription: Learn how to apply pruning to your YOLOv5 models. See the before and after performance w"
  },
  {
    "path": "docs/yolov5/tutorials/multi_gpu_training.md",
    "chars": 11297,
    "preview": "---\ncomments: true\ndescription: Learn how to train your dataset on single or multiple machines using YOLOv5 on multiple "
  },
  {
    "path": "docs/yolov5/tutorials/neural_magic_pruning_quantization.md",
    "chars": 10726,
    "preview": "---\ncomments: true\ndescription: Learn how to deploy YOLOv5 with DeepSparse to achieve exceptional CPU performance close "
  },
  {
    "path": "docs/yolov5/tutorials/pytorch_hub_model_loading.md",
    "chars": 14228,
    "preview": "---\ncomments: true\ndescription: Learn how to load YOLOv5🚀 from PyTorch Hub at https://pytorch.org/hub/ultralytics_yolov5"
  },
  {
    "path": "docs/yolov5/tutorials/roboflow_datasets_integration.md",
    "chars": 2610,
    "preview": "---\ncomments: true\ndescription: Use Roboflow to organize, label, prepare, version & host datasets for training YOLOv5 mo"
  },
  {
    "path": "docs/yolov5/tutorials/running_on_jetson_nano.md",
    "chars": 10052,
    "preview": "---\ncomments: true\ndescription: Deploy YOLOv5 on NVIDIA Jetson using TensorRT and DeepStream SDK for high performance in"
  },
  {
    "path": "docs/yolov5/tutorials/test_time_augmentation.md",
    "chars": 11082,
    "preview": "---\ncomments: true\ndescription: Learn how to use Test Time Augmentation (TTA) with YOLOv5 to improve mAP and Recall duri"
  },
  {
    "path": "docs/yolov5/tutorials/tips_for_best_training_results.md",
    "chars": 6922,
    "preview": "---\ncomments: true\ndescription: Get the most out of YOLOv5 with this guide; producing best results, checking dataset, hy"
  },
  {
    "path": "docs/yolov5/tutorials/train_custom_data.md",
    "chars": 16380,
    "preview": "---\ncomments: true\ndescription: Train your custom dataset with YOLOv5. Learn to collect, label and annotate images, and "
  },
  {
    "path": "docs/yolov5/tutorials/transfer_learning_with_frozen_layers.md",
    "chars": 7467,
    "preview": "---\ncomments: true\ndescription: Learn how to freeze YOLOv5 when transfer learning. Retrain a pre-trained model on new da"
  },
  {
    "path": "examples/README.md",
    "chars": 2230,
    "preview": "## Ultralytics YOLOv8 Example Applications\n\nThis repository features a collection of real-world applications and walkthr"
  },
  {
    "path": "examples/YOLOv8-CPP-Inference/CMakeLists.txt",
    "chars": 547,
    "preview": "cmake_minimum_required(VERSION 3.5)\n\nproject(Yolov8CPPInference VERSION 0.1)\n\nset(CMAKE_INCLUDE_CURRENT_DIR ON)\n\n# CUDA\n"
  },
  {
    "path": "examples/YOLOv8-CPP-Inference/README.md",
    "chars": 1806,
    "preview": "# YOLOv8/YOLOv5 Inference C++\n\nThis example demonstrates how to perform inference using YOLOv8 and YOLOv5 models in C++ "
  },
  {
    "path": "examples/YOLOv8-CPP-Inference/inference.cpp",
    "chars": 5636,
    "preview": "#include \"inference.h\"\n\nInference::Inference(const std::string &onnxModelPath, const cv::Size &modelInputShape, const st"
  },
  {
    "path": "examples/YOLOv8-CPP-Inference/inference.h",
    "chars": 1998,
    "preview": "#ifndef INFERENCE_H\n#define INFERENCE_H\n\n// Cpp native\n#include <fstream>\n#include <vector>\n#include <string>\n#include <"
  },
  {
    "path": "examples/YOLOv8-CPP-Inference/main.cpp",
    "chars": 2246,
    "preview": "#include <iostream>\n#include <vector>\n#include <getopt.h>\n\n#include <opencv2/opencv.hpp>\n\n#include \"inference.h\"\n\nusing "
  }
]

// ... and 957 more files (download for full content)

About this extraction

This page contains the full source code of the JiayuanWang-JW/YOLOv8-multi-task GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1157 files (48.3 MB), approximately 3.0M tokens, and a symbol index with 13447 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!