SYMBOL INDEX (2279 symbols across 173 files) FILE: docs/assets/extra.js function loadExpansions (line 6) | function loadExpansions() { function setExpansion (line 18) | function setExpansion() { FILE: install-pdm.py function _call_subprocess (line 38) | def _call_subprocess(args: list[str]) -> int: function _echo (line 47) | def _echo(text: str) -> None: function _get_win_folder_with_ctypes (line 54) | def _get_win_folder_with_ctypes(csidl_name: str) -> str: function _get_win_folder_from_registry (line 80) | def _get_win_folder_from_registry(csidl_name: str) -> str: function _remove_path_windows (line 105) | def _remove_path_windows(target: Path) -> None: function _add_to_path (line 122) | def _add_to_path(target: Path) -> None: function support_ansi (line 154) | def support_ansi() -> bool: function colored (line 172) | def colored(color: str, text: str, bold: bool = False) -> str: class Installer (line 183) | class Installer: method __post_init__ (line 192) | def __post_init__(self): method _decide_path (line 196) | def _decide_path(self) -> Path: method _make_env (line 212) | def _make_env(self) -> Path: method _install (line 242) | def _install(self, venv_path: Path) -> None: method _make_bin (line 282) | def _make_bin(self, venv_path: Path) -> Path: method _post_install (line 313) | def _post_install(self, venv_path: Path, bin_path: Path) -> None: method _write_output (line 338) | def _write_output(self, venv_path: Path, script: Path, pdm_version: st... method install (line 351) | def install(self) -> None: method uninstall (line 357) | def uninstall(self) -> None: function main (line 394) | def main(): FILE: src/pdm/__version__.py function read_version (line 4) | def read_version() -> str: FILE: src/pdm/_types.py function _normalize_pattern (line 11) | def _normalize_pattern(pattern: str) -> str: class RepositoryConfig (line 16) | class RepositoryConfig: method __post_init__ (line 33) | def __post_init__(self) -> None: method populate_keyring_auth (line 37) | def populate_keyring_auth(self) -> None: method passive_update (line 46) | def passive_update(self, other: RepositoryConfig | None = None, **kwar... method __rich__ (line 57) | def __rich__(self) -> str: method url_with_credentials (line 76) | def url_with_credentials(self) -> HiddenText: class SearchResult (line 96) | class SearchResult(NamedTuple): class Comparable (line 108) | class Comparable(Protocol): method __lt__ (line 109) | def __lt__(self, __other: Any) -> bool: ... class Spinner (line 113) | class Spinner(Protocol): method update (line 114) | def update(self, text: str) -> None: ... method __enter__ (line 116) | def __enter__(self: SpinnerT) -> SpinnerT: ... method __exit__ (line 118) | def __exit__(self, *args: Any) -> None: ... class RichProtocol (line 120) | class RichProtocol(Protocol): method __rich__ (line 121) | def __rich__(self) -> str: ... class FileHash (line 123) | class FileHash(TypedDict, total=False): class NotSetType (line 129) | class NotSetType: class HiddenText (line 137) | class HiddenText: method __str__ (line 141) | def __str__(self) -> str: method __repr__ (line 144) | def __repr__(self) -> str: FILE: src/pdm/builders/base.py class LoggerWrapper (line 39) | class LoggerWrapper(threading.Thread): method __init__ (line 45) | def __init__(self, logger: Logger, level: int) -> None: method fileno (line 58) | def fileno(self) -> int: method remove_newline (line 62) | def remove_newline(msg: str) -> str: method run (line 65) | def run(self) -> None: method _write (line 70) | def _write(self, message: str) -> None: method stop (line 76) | def stop(self) -> None: function wrap_error (line 81) | def wrap_error(func: Callable[P, R]) -> Callable[P, R]: function build_error (line 91) | def build_error(e: subprocess.CalledProcessError) -> BuildError: function log_subprocessor (line 109) | def log_subprocessor( class _Prefix (line 133) | class _Prefix: method __init__ (line 134) | def __init__(self, executable: str, shared: str, overlay: str) -> None: class EnvBuilder (line 170) | class EnvBuilder: method get_shared_env (line 186) | def get_shared_env(self, key: int) -> str: method get_overlay_env (line 194) | def get_overlay_env(self, key: str) -> str: method __init__ (line 199) | def __init__(self, src_dir: str | Path, environment: BaseEnvironment) ... method init_build_system (line 227) | def init_build_system(self, build_system: dict[str, Any]) -> None: method _env_vars (line 250) | def _env_vars(self) -> dict[str, str]: method subprocess_runner (line 275) | def subprocess_runner( method check_requirements (line 283) | def check_requirements(self, reqs: Iterable[str]) -> Iterable[Requirem... method install (line 314) | def install(self, requirements: Iterable[str], shared: bool = False) -... method prepare_metadata (line 332) | def prepare_metadata(self, out_dir: str) -> str: method build (line 339) | def build(self, out_dir: str, metadata_directory: str | None = None) -... FILE: src/pdm/builders/editable.py class EditableBuilder (line 8) | class EditableBuilder(EnvBuilder): method prepare_metadata (line 12) | def prepare_metadata(self, out_dir: str) -> str: method build (line 21) | def build(self, out_dir: str, metadata_directory: str | None = None) -... FILE: src/pdm/builders/sdist.py class SdistBuilder (line 8) | class SdistBuilder(EnvBuilder): method build (line 12) | def build(self, out_dir: str, metadata_directory: str | None = None) -... FILE: src/pdm/builders/wheel.py class WheelBuilder (line 8) | class WheelBuilder(EnvBuilder): method prepare_metadata (line 12) | def prepare_metadata(self, out_dir: str) -> str: method build (line 21) | def build(self, out_dir: str, metadata_directory: str | None = None) -... FILE: src/pdm/cli/actions.py function do_lock (line 40) | def do_lock( function resolve_from_lockfile (line 173) | def resolve_from_lockfile( function resolve_candidates_from_lockfile (line 239) | def resolve_candidates_from_lockfile( function check_lockfile (line 252) | def check_lockfile(project: Project, raise_not_exist: bool = True) -> st... function do_sync (line 275) | def do_sync( function ask_for_import (line 319) | def ask_for_import(project: Project) -> None: function print_pep582_command (line 342) | def print_pep582_command(project: Project, shell: str = "AUTO") -> None: function get_latest_pdm_version_from_pypi (line 391) | def get_latest_pdm_version_from_pypi(project: Project, prereleases: bool... function get_latest_version (line 399) | def get_latest_version(project: Project, expire_after: int = 7 * 24 * 36... function check_update (line 422) | def check_update(project: Project) -> None: # pragma: no cover FILE: src/pdm/cli/commands/add.py class Command (line 32) | class Command(BaseCommand): method add_arguments (line 51) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 68) | def handle(self, project: Project, options: argparse.Namespace) -> None: method do_add (line 89) | def do_add( FILE: src/pdm/cli/commands/base.py class BaseCommand (line 13) | class BaseCommand: method init_parser (line 25) | def init_parser(cls: type[C], parser: argparse.ArgumentParser) -> C: method register_to (line 33) | def register_to(cls, subparsers: _SubParsersAction, name: str | None =... method add_arguments (line 54) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 58) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/build.py class Command (line 24) | class Command(BaseCommand): method do_build (line 30) | def do_build( method add_arguments (line 114) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 138) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/cache.py class Command (line 13) | class Command(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 27) | def handle(self, project: Project, options: argparse.Namespace) -> None: function file_size (line 31) | def file_size(file: Path) -> int: function find_files (line 37) | def find_files(parent: Path, pattern: str) -> Iterable[Path]: function directory_size (line 43) | def directory_size(directory: Path) -> int: function format_size (line 47) | def format_size(size: float) -> str: function remove_cache_files (line 58) | def remove_cache_files(project: Project, pattern: str) -> None: class ClearCommand (line 74) | class ClearCommand(BaseCommand): method add_arguments (line 80) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method _clear_files (line 89) | def _clear_files(root: Path) -> int: method handle (line 95) | def handle(self, project: Project, options: argparse.Namespace) -> None: class RemoveCommand (line 120) | class RemoveCommand(BaseCommand): method add_arguments (line 125) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 128) | def handle(self, project: Project, options: argparse.Namespace) -> None: class ListCommand (line 132) | class ListCommand(BaseCommand): method add_arguments (line 137) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 140) | def handle(self, project: Project, options: argparse.Namespace) -> None: class InfoCommand (line 147) | class InfoCommand(BaseCommand): method handle (line 152) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/completion.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 25) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/config.py class Command (line 14) | class Command(BaseCommand): method add_arguments (line 19) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method get_editor (line 37) | def get_editor() -> str: method edit_file (line 49) | def edit_file(self, path: Path) -> None: method handle (line 58) | def handle(self, project: Project, options: argparse.Namespace) -> None: method _get_config (line 78) | def _get_config(self, project: Project, options: argparse.Namespace) -... method _set_config (line 96) | def _set_config(self, project: Project, options: argparse.Namespace) -... method _show_config (line 104) | def _show_config(self, config: Mapping[str, Any], supersedes: Mapping[... method _list_config (line 151) | def _list_config(self, project: Project, options: argparse.Namespace) ... method _delete_config (line 176) | def _delete_config(self, project: Project, options: argparse.Namespace... FILE: src/pdm/cli/commands/export.py class Command (line 21) | class Command(BaseCommand): method add_arguments (line 24) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 69) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/fix/__init__.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method find_problems (line 20) | def find_problems(project: Project) -> list[tuple[str, BaseFixer]]: method check_problems (line 29) | def check_problems(project: Project, strict: bool = True) -> None: method get_fixers (line 50) | def get_fixers(project: Project) -> list[BaseFixer]: method handle (line 54) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/fix/fixers.py class BaseFixer (line 10) | class BaseFixer(abc.ABC): method __init__ (line 18) | def __init__(self, project: Project) -> None: method log (line 21) | def log(self, message: str, verbosity: Verbosity = Verbosity.DETAIL) -... method get_message (line 25) | def get_message(self) -> str: method fix (line 29) | def fix(self) -> None: method check (line 33) | def check(self) -> bool: class ProjectConfigFixer (line 37) | class ProjectConfigFixer(BaseFixer): method get_message (line 42) | def get_message(self) -> str: method _fix_gitignore (line 48) | def _fix_gitignore(self) -> None: method fix (line 57) | def fix(self) -> None: method check (line 69) | def check(self) -> bool: class PackageTypeFixer (line 73) | class PackageTypeFixer(BaseFixer): # pragma: no cover method get_message (line 76) | def get_message(self) -> str: method check (line 84) | def check(self) -> bool: method fix (line 87) | def fix(self) -> None: class LockStrategyFixer (line 105) | class LockStrategyFixer(BaseFixer): method get_message (line 108) | def get_message(self) -> str: method check (line 111) | def check(self) -> bool: method fix (line 122) | def fix(self) -> None: FILE: src/pdm/cli/commands/import_cmd.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 34) | def handle(self, project: Project, options: argparse.Namespace) -> None: method do_import (line 38) | def do_import( FILE: src/pdm/cli/commands/info.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 30) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/init.py class Command (line 26) | class Command(BaseCommand): method __init__ (line 36) | def __init__(self) -> None: method initialize_git (line 39) | def initialize_git(self, project: Project) -> None: method do_init (line 65) | def do_init(self, project: Project, options: argparse.Namespace) -> None: method _init_copier (line 81) | def _init_copier(self, project: Project, options: argparse.Namespace) ... method _init_cookiecutter (line 97) | def _init_cookiecutter(self, project: Project, options: argparse.Names... method _init_builtin (line 114) | def _init_builtin(self, project: Project, options: argparse.Namespace)... method set_interactive (line 123) | def set_interactive(self, value: bool) -> None: method ask (line 126) | def ask(self, question: str, default: str) -> str: method ask_project (line 131) | def ask_project(self, project: Project) -> str: method get_metadata_from_input (line 143) | def get_metadata_from_input(self, project: Project, options: argparse.... method add_arguments (line 213) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method set_python (line 262) | def set_python(self, project: Project, python: str | None, hooks: Hook... method handle (line 283) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/install.py class Command (line 23) | class Command(BaseCommand): method add_arguments (line 38) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method install_plugins (line 46) | def install_plugins(self, project: Project) -> None: method handle (line 69) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/list.py class Command (line 32) | class Command(BaseCommand): method add_arguments (line 37) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method filter_by_patterns (line 111) | def filter_by_patterns( method handle (line 119) | def handle(self, project: Project, options: argparse.Namespace) -> None: method handle_freeze (line 186) | def handle_freeze(self, project: Project, options: argparse.Namespace)... method handle_graph (line 213) | def handle_graph( method handle_list (line 228) | def handle_list( function parse_comma_separated_string (line 292) | def parse_comma_separated_string( class Listable (line 310) | class Listable: method __init__ (line 320) | def __init__(self, dist: im.Distribution, groups: set[str]): method location (line 352) | def location(self) -> str: method license_files (line 355) | def license_files(self) -> list[im.PackagePath]: method __getitem__ (line 378) | def __getitem__(self, field: str) -> str: method json (line 383) | def json(self, fields: Sequence[str]) -> dict: method rich (line 386) | def rich(self, fields: Sequence[str]) -> Sequence[str]: method markdown (line 396) | def markdown(self, fields: Sequence[str]) -> str: FILE: src/pdm/cli/commands/lock.py class Command (line 26) | class Command(BaseCommand): method add_arguments (line 40) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 86) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/new.py class Command (line 9) | class Command(InitCommand): method add_arguments (line 16) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 20) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/outdated.py class ListPackage (line 25) | class ListPackage: function _find_first_diff (line 34) | def _find_first_diff(a: str, b: str) -> int: class Command (line 43) | class Command(BaseCommand): method add_arguments (line 46) | def add_arguments(self, parser: ArgumentParser) -> None: method _match_pattern (line 54) | def _match_pattern(name: str, patterns: list[str]) -> bool: method _populate_latest_version (line 58) | def _populate_latest_version(finder: PackageFinder, package: ListPacka... method _format_json (line 64) | def _format_json(packages: list[ListPackage]) -> str: method _render_version (line 68) | def _render_version(version: str, base_version: str) -> str: method handle (line 91) | def handle(self, project: Project, options: Namespace) -> None: FILE: src/pdm/cli/commands/publish/__init__.py class Command (line 22) | class Command(BaseCommand): method add_arguments (line 27) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method _make_package (line 88) | def _make_package(filename: str, signatures: dict[str, str], options: ... method _skip_upload (line 97) | def _skip_upload(response: Response) -> bool: method _check_response (line 120) | def _check_response(response: Response) -> None: method get_repository (line 143) | def get_repository(project: Project, options: argparse.Namespace) -> R... method handle (line 173) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/publish/package.py function parse_metadata (line 32) | def parse_metadata(fp: IO[bytes]) -> email.message.Message: class PackageFile (line 41) | class PackageFile: method __post_init__ (line 53) | def __post_init__(self) -> None: method get_hashes (line 57) | def get_hashes(self) -> dict[str, str]: method from_filename (line 74) | def from_filename(cls, filename: str, comment: str | None) -> PackageF... method read_metadata_from_tar (line 98) | def read_metadata_from_tar(filename: str) -> email.message.Message: method read_metadata_from_zip (line 120) | def read_metadata_from_zip(filename: str) -> email.message.Message: method read_metadata_from_wheel (line 135) | def read_metadata_from_wheel(filename: str) -> email.message.Message: method add_gpg_signature (line 144) | def add_gpg_signature(self, filename: str, signature_name: str) -> None: method sign (line 150) | def sign(self, identity: str | None) -> None: method _run_gpg (line 160) | def _run_gpg(gpg_args: list[str]) -> None: method metadata_dict (line 178) | def metadata_dict(self) -> dict[str, Any]: FILE: src/pdm/cli/commands/publish/repository.py class CallbackWrapperStream (line 30) | class CallbackWrapperStream(httpx.SyncByteStream): method __init__ (line 31) | def __init__(self, stream: httpx.SyncByteStream, callback: Callable[[S... method __iter__ (line 36) | def __iter__(self) -> Iterable[bytes]: class Repository (line 43) | class Repository: method __init__ (line 44) | def __init__(self, project: Project, config: RepositoryConfig) -> None: method _ensure_credentials (line 53) | def _ensure_credentials(self, username: str | None, password: str | No... method _get_pypi_token_via_oidc (line 78) | def _get_pypi_token_via_oidc(self) -> str | None: method _prompt_for_credentials (line 110) | def _prompt_for_credentials(self, service: str, username: str | None) ... method _save_credentials (line 122) | def _save_credentials(self, service: str, username: str, password: str... method get_release_urls (line 128) | def get_release_urls(self, packages: list[PackageFile]) -> Iterable[str]: method upload (line 137) | def upload(self, package: PackageFile) -> httpx.Response: FILE: src/pdm/cli/commands/python.py class Command (line 26) | class Command(BaseCommand): method add_arguments (line 31) | def add_arguments(self, parser: ArgumentParser) -> None: method register_to (line 41) | def register_to(cls, subparsers: _SubParsersAction, name: str | None =... method handle (line 44) | def handle(self, project: Project, options: Namespace) -> None: class ListCommand (line 48) | class ListCommand(BaseCommand): method handle (line 53) | def handle(self, project: Project, options: Namespace) -> None: class RemoveCommand (line 62) | class RemoveCommand(BaseCommand): method add_arguments (line 67) | def add_arguments(self, parser: ArgumentParser) -> None: method handle (line 70) | def handle(self, project: Project, options: Namespace) -> None: class InstallCommand (line 98) | class InstallCommand(BaseCommand): method add_arguments (line 103) | def add_arguments(self, parser: ArgumentParser) -> None: method handle (line 118) | def handle(self, project: Project, options: Namespace) -> None: method install_python (line 135) | def install_python(project: Project, request: str) -> PythonInfo: class LinkCommand (line 197) | class LinkCommand(BaseCommand): method add_arguments (line 202) | def add_arguments(self, parser: ArgumentParser) -> None: method handle (line 206) | def handle(self, project: Project, options: Namespace) -> None: class FindCommand (line 225) | class FindCommand(BaseCommand): method add_arguments (line 230) | def add_arguments(self, parser: ArgumentParser) -> None: method handle (line 234) | def handle(self, project: Project, options: Namespace) -> None: FILE: src/pdm/cli/commands/remove.py class Command (line 27) | class Command(BaseCommand): method add_arguments (line 41) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 59) | def handle(self, project: Project, options: argparse.Namespace) -> None: method do_remove (line 73) | def do_remove( FILE: src/pdm/cli/commands/run.py class EnvFileOptions (line 34) | class EnvFileOptions(TypedDict, total=True): class TaskOptions (line 37) | class TaskOptions(TypedDict, total=False): function merge_options (line 46) | def merge_options(*options: TaskOptions | None) -> TaskOptions: function _interpolate_args (line 64) | def _interpolate_args(script: str, args: Sequence[str]) -> tuple[str, bo... function _interpolate_pdm (line 76) | def _interpolate_pdm(script: str) -> str: function interpolate (line 85) | def interpolate(script: str, args: Sequence[str]) -> tuple[str, bool]: function read_script_metadata (line 96) | def read_script_metadata(script: str, section: str) -> dict[str, Any] | ... class Task (line 116) | class Task(NamedTuple): method __str__ (line 122) | def __str__(self) -> str: method short_description (line 126) | def short_description(self) -> str: class TaskRunner (line 138) | class TaskRunner: method __init__ (line 144) | def __init__(self, project: Project, hooks: HookManager) -> None: method _get_script_env (line 154) | def _get_script_env(self, script_file: str) -> BaseEnvironment: method get_task (line 188) | def get_task(self, script_name: str) -> Task | None: method expand_command (line 213) | def expand_command(self, env: BaseEnvironment, command: str) -> str: method _run_process (line 225) | def _run_process( method run_task (line 305) | def run_task( method display_task (line 371) | def display_task(self, task: Task, args: Sequence[str]) -> None: method run (line 384) | def run( method show_list (line 421) | def show_list(self) -> None: method as_json (line 440) | def as_json(self) -> dict[str, Any]: function _fix_env_file (line 460) | def _fix_env_file(data: dict[str, Any]) -> dict[str, Any]: class Command (line 468) | class Command(BaseCommand): method add_arguments (line 473) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method get_runner (line 504) | def get_runner(self, project: Project, hooks: HookManager, options: ar... method handle (line 515) | def handle(self, project: Project, options: argparse.Namespace) -> None: function run_script_if_present (line 531) | def run_script_if_present(script_name: str, sender: Project, hooks: Hook... FILE: src/pdm/cli/commands/search.py function print_results (line 15) | def print_results( class Command (line 45) | class Command(BaseCommand): method add_arguments (line 50) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 53) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/self_cmd.py function list_distributions (line 24) | def list_distributions(plugin_only: bool = False) -> list[Distribution]: function run_pip (line 33) | def run_pip(project: Project, args: list[str]) -> subprocess.CompletedPr... class Command (line 58) | class Command(BaseCommand): method register_to (line 65) | def register_to( method add_arguments (line 73) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 83) | def handle(self, project: Project, options: argparse.Namespace) -> None: class ListCommand (line 87) | class ListCommand(BaseCommand): method add_arguments (line 93) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 96) | def handle(self, project: Project, options: argparse.Namespace) -> None: class AddCommand (line 116) | class AddCommand(BaseCommand): method add_arguments (line 122) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 134) | def handle(self, project: Project, options: argparse.Namespace) -> None: class RemoveCommand (line 147) | class RemoveCommand(BaseCommand): method add_arguments (line 153) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method _resolve_dependencies_to_remove (line 162) | def _resolve_dependencies_to_remove(self, packages: list[str]) -> list... method handle (line 189) | def handle(self, project: Project, options: argparse.Namespace) -> None: class UpdateCommand (line 208) | class UpdateCommand(BaseCommand): method add_arguments (line 214) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 238) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/show.py function filter_stable (line 19) | def filter_stable(package: Package) -> bool: class Command (line 24) | class Command(BaseCommand): method add_arguments (line 29) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 40) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/sync.py class Command (line 19) | class Command(BaseCommand): method add_arguments (line 33) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 41) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/update.py class Command (line 32) | class Command(BaseCommand): method add_arguments (line 50) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method handle (line 74) | def handle(self, project: Project, options: argparse.Namespace) -> None: method do_update (line 93) | def do_update( FILE: src/pdm/cli/commands/use.py class Command (line 17) | class Command(BaseCommand): method add_arguments (line 20) | def add_arguments(self, parser: argparse.ArgumentParser) -> None: method select_python (line 56) | def select_python( method do_use (line 136) | def do_use( method handle (line 205) | def handle(self, project: Project, options: argparse.Namespace) -> None: FILE: src/pdm/cli/commands/venv/__init__.py class Command (line 20) | class Command(BaseCommand): method add_arguments (line 26) | def add_arguments(self, parser: ArgumentParser) -> None: method handle (line 38) | def handle(self, project: Project, options: Namespace) -> None: FILE: src/pdm/cli/commands/venv/activate.py class ActivateCommand (line 21) | class ActivateCommand(BaseCommand): method add_arguments (line 26) | def add_arguments(self, parser: ArgumentParser) -> None: method handle (line 29) | def handle(self, project: Project, options: Namespace) -> None: method get_activate_command (line 50) | def get_activate_command(self, venv: VirtualEnv) -> str: # pragma: no... method quote (line 72) | def quote(command: str, shell: str) -> str: FILE: src/pdm/cli/commands/venv/backends.py class VirtualenvCreateError (line 23) | class VirtualenvCreateError(ProjectError): class Backend (line 27) | class Backend(abc.ABC): method __init__ (line 30) | def __init__(self, project: Project, python: str | None) -> None: method pip_args (line 35) | def pip_args(self, with_pip: bool) -> Iterable[str]: method _resolved_interpreter (line 39) | def _resolved_interpreter(self) -> PythonInfo: method ident (line 60) | def ident(self) -> str: method subprocess_call (line 70) | def subprocess_call(self, cmd: list[str], **kwargs: Any) -> None: method _ensure_clean (line 84) | def _ensure_clean(self, location: Path, force: bool = False) -> None: method get_location (line 105) | def get_location(self, name: str | None = None, venv_name: str | None ... method create (line 115) | def create( method perform_create (line 137) | def perform_create(self, location: Path, args: tuple[str, ...], prompt... class VirtualenvBackend (line 141) | class VirtualenvBackend(Backend): method pip_args (line 142) | def pip_args(self, with_pip: bool) -> Iterable[str]: method perform_create (line 147) | def perform_create(self, location: Path, args: tuple[str, ...], prompt... class VenvBackend (line 162) | class VenvBackend(VirtualenvBackend): method pip_args (line 163) | def pip_args(self, with_pip: bool) -> Iterable[str]: method perform_create (line 168) | def perform_create(self, location: Path, args: tuple[str, ...], prompt... class UvBackend (line 174) | class UvBackend(VirtualenvBackend): method pip_args (line 175) | def pip_args(self, with_pip: bool) -> Iterable[str]: method perform_create (line 180) | def perform_create(self, location: Path, args: tuple[str, ...], prompt... class CondaBackend (line 194) | class CondaBackend(Backend): method ident (line 196) | def ident(self) -> str: method pip_args (line 203) | def pip_args(self, with_pip: bool) -> Iterable[str]: method perform_create (line 208) | def perform_create(self, location: Path, args: tuple[str, ...], prompt... FILE: src/pdm/cli/commands/venv/create.py class CreateCommand (line 16) | class CreateCommand(BaseCommand): method add_arguments (line 25) | def add_arguments(self, parser: ArgumentParser) -> None: method handle (line 52) | def handle(self, project: Project, options: Namespace) -> None: FILE: src/pdm/cli/commands/venv/list.py class ListCommand (line 16) | class ListCommand(BaseCommand): method handle (line 21) | def handle(self, project: Project, options: Namespace) -> None: FILE: src/pdm/cli/commands/venv/purge.py class PurgeCommand (line 18) | class PurgeCommand(BaseCommand): method add_arguments (line 23) | def add_arguments(self, parser: ArgumentParser) -> None: method handle (line 37) | def handle(self, project: Project, options: Namespace) -> None: method del_all_venvs (line 66) | def del_all_venvs(self, project: Project) -> None: FILE: src/pdm/cli/commands/venv/remove.py class RemoveCommand (line 18) | class RemoveCommand(BaseCommand): method add_arguments (line 23) | def add_arguments(self, parser: ArgumentParser) -> None: method handle (line 32) | def handle(self, project: Project, options: Namespace) -> None: FILE: src/pdm/cli/commands/venv/utils.py function hash_path (line 25) | def hash_path(path: str) -> str: function get_in_project_venv (line 30) | def get_in_project_venv(root: Path) -> VirtualEnv | None: function get_venv_prefix (line 39) | def get_venv_prefix(project: Project) -> str: function iter_venvs (line 46) | def iter_venvs(project: Project) -> Iterable[tuple[str, VirtualEnv]]: function iter_central_venvs (line 60) | def iter_central_venvs(project: Project) -> Iterable[tuple[str, Path]]: class VenvProvider (line 68) | class VenvProvider(BaseProvider): method __init__ (line 71) | def __init__(self, project: Project) -> None: method create (line 75) | def create(cls) -> Self | None: method find_pythons (line 78) | def find_pythons(self) -> Iterable[PythonVersion]: function get_venv_with_name (line 83) | def get_venv_with_name(project: Project, name: str) -> VirtualEnv: FILE: src/pdm/cli/filters.py class GroupSelection (line 16) | class GroupSelection: method __init__ (line 17) | def __init__( method from_options (line 37) | def from_options(cls, project: Project, options: argparse.Namespace) -... method one (line 50) | def one(self) -> str: method is_unset (line 58) | def is_unset(self) -> bool: method all (line 61) | def all(self) -> list[str] | None: method _translated_groups (line 72) | def _translated_groups(self) -> list[str]: method validate (line 113) | def validate(self) -> None: method __iter__ (line 118) | def __iter__(self) -> Iterator[str]: method __contains__ (line 121) | def __contains__(self, group: str) -> bool: FILE: src/pdm/cli/hooks.py class HookManager (line 10) | class HookManager: method __init__ (line 11) | def __init__(self, project: Project, skip: list[str] | None = None): method skipping (line 16) | def skipping(self, *names: str) -> Generator[None]: method skip_all (line 26) | def skip_all(self) -> bool: method skip_pre (line 30) | def skip_pre(self) -> bool: method skip_post (line 34) | def skip_post(self) -> bool: method should_run (line 37) | def should_run(self, name: str) -> bool: method try_emit (line 49) | def try_emit(self, name: str, **kwargs: Any) -> None: FILE: src/pdm/cli/options.py class ActionCallback (line 14) | class ActionCallback(Protocol): method __call__ (line 15) | def __call__( class Option (line 24) | class Option: method __init__ (line 29) | def __init__(self, *args: Any, **kwargs: Any) -> None: method add_to_parser (line 33) | def add_to_parser(self, parser: argparse._ActionsContainer) -> None: method add_to_group (line 36) | def add_to_group(self, group: argparse._ArgumentGroup) -> None: method __call__ (line 39) | def __call__(self, func: ActionCallback) -> Option: class CallbackAction (line 44) | class CallbackAction(argparse.Action): method __init__ (line 45) | def __init__(self, *args: Any, callback: ActionCallback, **kwargs: Any... method __call__ (line 49) | def __call__( class ExtendMapAction (line 62) | class ExtendMapAction(argparse._AppendAction): method __call__ (line 63) | def __call__( class ArgumentGroup (line 82) | class ArgumentGroup(Option): method __init__ (line 87) | def __init__(self, name: str, is_mutually_exclusive: bool = False, req... method add_argument (line 93) | def add_argument(self, *args: Any, **kwargs: Any) -> None: method add_to_parser (line 99) | def add_to_parser(self, parser: argparse._ActionsContainer) -> None: method add_to_group (line 108) | def add_to_group(self, group: argparse._ArgumentGroup) -> None: function split_lists (line 112) | def split_lists(separator: str) -> type[argparse.Action]: function from_splitted_env (line 135) | def from_splitted_env(name: str, separator: str) -> list[str] | None: function frozen_lockfile_option (line 184) | def frozen_lockfile_option( function pep582_option (line 202) | def pep582_option( function no_isolation_option (line 239) | def no_isolation_option( function ignore_python_option (line 422) | def ignore_python_option( function non_interactive_option (line 438) | def non_interactive_option( FILE: src/pdm/cli/templates/__init__.py class ProjectTemplate (line 25) | class ProjectTemplate: method __init__ (line 28) | def __init__(self, path_or_url: str | None) -> None: method __enter__ (line 31) | def __enter__(self) -> ProjectTemplate: method __exit__ (line 36) | def __exit__(self, *args: Any) -> None: method generate (line 39) | def generate(self, target_path: Path, metadata: dict[str, Any], overwr... method prepare_template (line 84) | def prepare_template(self) -> None: method mirror (line 96) | def mirror( method _copy_package_file (line 116) | def _copy_package_file(src: Traversable, dst: Path) -> Path: method _generate_pyproject (line 120) | def _generate_pyproject(self, path: Path, metadata: dict[str, Any]) ->... method _prepare_package_template (line 147) | def _prepare_package_template(self, import_name: str) -> None: method _prepare_git_template (line 152) | def _prepare_git_template(self, url: str) -> None: method _prepare_local_template (line 165) | def _prepare_local_template(self, path: str) -> None: FILE: src/pdm/cli/utils.py class PdmFormatter (line 39) | class PdmFormatter(argparse.RawDescriptionHelpFormatter): method start_section (line 40) | def start_section(self, heading: str | None) -> None: method _format_usage (line 43) | def _format_usage( method _format_action (line 59) | def _format_action(self, action: Action) -> str: class ArgumentParser (line 123) | class ArgumentParser(argparse.ArgumentParser): method __init__ (line 126) | def __init__(self, *args: Any, **kwargs: Any) -> None: method parse_known_args (line 137) | def parse_known_args(self, args: Any = None, namespace: Any = None) ->... function format_similar_command (line 145) | def format_similar_command(root_command: str, commands: list[str], scrip... class ErrorArgumentParser (line 165) | class ErrorArgumentParser(ArgumentParser): method _parse_known_args (line 172) | def _parse_known_args( class PackageNode (line 183) | class PackageNode: method __repr__ (line 190) | def __repr__(self) -> str: function build_dependency_graph (line 194) | def build_dependency_graph( function specifier_from_requirement (line 257) | def specifier_from_requirement(requirement: Requirement) -> str: function add_package_to_tree (line 261) | def add_package_to_tree( function add_package_to_reverse_tree (line 297) | def add_package_to_reverse_tree( function package_is_project (line 331) | def package_is_project(package: PackageNode, project: Project) -> bool: function _format_forward_dependency_graph (line 335) | def _format_forward_dependency_graph( function _format_reverse_dependency_graph (line 375) | def _format_reverse_dependency_graph( function build_forward_dependency_json_subtree (line 400) | def build_forward_dependency_json_subtree( function build_reverse_dependency_json_subtree (line 444) | def build_reverse_dependency_json_subtree( function package_match_patterns (line 467) | def package_match_patterns(package: PackageNode, patterns: list[str]) ->... function build_dependency_json_tree (line 471) | def build_dependency_json_tree( function show_dependency_graph (line 502) | def show_dependency_graph( function save_version_specifiers (line 528) | def save_version_specifiers( function check_project_file (line 567) | def check_project_file(project: Project) -> None: function find_importable_files (line 575) | def find_importable_files(project: Project) -> Iterable[tuple[str, Path]]: function set_env_in_reg (line 589) | def set_env_in_reg(env_name: str, value: str) -> None: function format_resolution_impossible (line 610) | def format_resolution_impossible(err: ResolutionImpossible) -> str: function merge_dictionary (line 666) | def merge_dictionary(target: MutableMapping[Any, Any], input: Mapping[An... function is_pipx_installation (line 684) | def is_pipx_installation() -> bool: function is_homebrew_installation (line 688) | def is_homebrew_installation() -> bool: function is_scoop_installation (line 692) | def is_scoop_installation() -> bool: function get_dist_location (line 696) | def get_dist_location(dist: Distribution) -> str: function get_pep582_path (line 709) | def get_pep582_path(project: Project) -> str: function use_venv (line 725) | def use_venv(project: Project, name: str) -> None: function normalize_pattern (line 734) | def normalize_pattern(pattern: str) -> str: FILE: src/pdm/compat.py class SupportsIdentify (line 12) | class SupportsIdentify(Protocol): method identify (line 13) | def identify(self) -> str: ... function resources_open_binary (line 28) | def resources_open_binary(package: str, resource: str) -> IO[bytes]: function resources_read_text (line 31) | def resources_read_text(package: str, resource: str, encoding: str = "ut... function resources_path (line 35) | def resources_path(package: str, resource: str) -> ContextManager[Path]: class CompatibleSequence (line 53) | class CompatibleSequence(Sequence[T]): # pragma: no cover method __init__ (line 56) | def __init__(self, data: Sequence[T]) -> None: method __getitem__ (line 59) | def __getitem__(self, index: str | slice | int) -> T | Sequence[T]: #... method __len__ (line 73) | def __len__(self) -> int: method __iter__ (line 76) | def __iter__(self) -> Iterator[T]: method keys (line 79) | def keys(self) -> Sequence[str]: method values (line 87) | def values(self) -> Sequence[T]: method items (line 95) | def items(self) -> Iterator[tuple[str, T]]: FILE: src/pdm/core.py class State (line 49) | class State: class Core (line 64) | class Core: method __init__ (line 74) | def __init__(self) -> None: method create_temp_dir (line 84) | def create_temp_dir(self, *args: Any, **kwargs: Any) -> str: method init_parser (line 87) | def init_parser(self) -> None: method __call__ (line 122) | def __call__(self, *args: Any, **kwargs: Any) -> None: method ensure_project (line 125) | def ensure_project(self, options: argparse.Namespace, obj: Project | N... method create_project (line 140) | def create_project( method handle (line 158) | def handle(self, project: Project, options: argparse.Namespace) -> None: method get_command (line 198) | def get_command(args: list[str]) -> tuple[int, str]: method _get_cli_args (line 216) | def _get_cli_args(self, args: list[str], obj: Project | None) -> list[... method main (line 231) | def main( method register_command (line 284) | def register_command(self, command: type[BaseCommand], name: str | Non... method add_config (line 299) | def add_config(name: str, config_item: ConfigItem) -> None: method _add_project_plugins_library (line 308) | def _add_project_plugins_library(self) -> None: method load_plugins (line 333) | def load_plugins(self) -> None: method uv_cmd (line 357) | def uv_cmd(self) -> list[str]: function main (line 387) | def main(args: list[str] | None = None) -> None: FILE: src/pdm/environments/base.py class BaseEnvironment (line 34) | class BaseEnvironment(abc.ABC): method __init__ (line 40) | def __init__(self, project: Project, *, python: str | None = None) -> ... method auth (line 56) | def auth(self) -> PdmBasicAuth: method is_global (line 62) | def is_global(self) -> bool: method interpreter (line 67) | def interpreter(self) -> PythonInfo: method get_paths (line 71) | def get_paths(self, dist_name: str | None = None) -> dict[str, str]: method process_env (line 79) | def process_env(self) -> dict[str, str]: method _build_session (line 87) | def _build_session( method session (line 106) | def session(self) -> PDMPyPIClient: method get_finder (line 111) | def get_finder( method _setting_list (line 172) | def _setting_list(self, var: str, key: str) -> list[str]: method get_working_set (line 184) | def get_working_set(self) -> WorkingSet: method spec (line 190) | def spec(self) -> EnvSpec: method allow_all_spec (line 194) | def allow_all_spec(self) -> EnvSpec: method which (line 197) | def which(self, command: str) -> str | None: method _download_pip_wheel (line 210) | def _download_pip_wheel(self, path: str | Path) -> None: # pragma: no... method pip_command (line 227) | def pip_command(self) -> list[str]: method script_kind (line 257) | def script_kind(self) -> str: class BareEnvironment (line 270) | class BareEnvironment(BaseEnvironment): method __init__ (line 273) | def __init__(self, project: Project) -> None: method get_paths (line 276) | def get_paths(self, dist_name: str | None = None) -> dict[str, str]: method get_working_set (line 279) | def get_working_set(self) -> WorkingSet: FILE: src/pdm/environments/local.py function _get_shebang_path (line 13) | def _get_shebang_path(executable: str, is_launcher: bool) -> bytes: function _is_console_script (line 26) | def _is_console_script(content: bytes) -> bool: function _replace_shebang (line 45) | def _replace_shebang(path: Path, new_executable: bytes) -> None: class PythonLocalEnvironment (line 76) | class PythonLocalEnvironment(BaseEnvironment): method process_env (line 84) | def process_env(self) -> dict[str, str]: method packages_path (line 95) | def packages_path(self) -> Path: method get_paths (line 110) | def get_paths(self, dist_name: str | None = None) -> dict[str, str]: method update_shebangs (line 115) | def update_shebangs(self, new_path: str) -> None: FILE: src/pdm/environments/python.py class PythonEnvironment (line 14) | class PythonEnvironment(BaseEnvironment): method __init__ (line 17) | def __init__( method get_paths (line 29) | def get_paths(self, dist_name: str | None = None) -> dict[str, str]: method process_env (line 50) | def process_env(self) -> dict[str, str]: method get_working_set (line 57) | def get_working_set(self) -> WorkingSet: FILE: src/pdm/exceptions.py class PdmException (line 10) | class PdmException(Exception): class ResolutionError (line 14) | class ResolutionError(PdmException): class PdmArgumentError (line 18) | class PdmArgumentError(PdmException): class PdmUsageError (line 22) | class PdmUsageError(PdmException): class RequirementError (line 26) | class RequirementError(PdmUsageError, ValueError): class PublishError (line 30) | class PublishError(PdmUsageError): class InvalidPyVersion (line 34) | class InvalidPyVersion(PdmUsageError, ValueError): class CandidateNotFound (line 38) | class CandidateNotFound(PdmException): class CandidateInfoNotFound (line 42) | class CandidateInfoNotFound(PdmException): method __init__ (line 43) | def __init__(self, candidate: Candidate) -> None: class PDMWarning (line 49) | class PDMWarning(Warning): class PackageWarning (line 53) | class PackageWarning(PDMWarning): class PDMDeprecationWarning (line 57) | class PDMDeprecationWarning(PDMWarning, DeprecationWarning): class ExtrasWarning (line 64) | class ExtrasWarning(PDMWarning): method __init__ (line 65) | def __init__(self, project_name: str, extras: list[str]) -> None: class ProjectError (line 70) | class ProjectError(PdmUsageError): class InstallationError (line 74) | class InstallationError(PdmException): class UninstallError (line 78) | class UninstallError(PdmException): class NoConfigError (line 82) | class NoConfigError(PdmUsageError, KeyError): method __str__ (line 83) | def __str__(self) -> str: class NoPythonVersion (line 87) | class NoPythonVersion(PdmUsageError): class BuildError (line 91) | class BuildError(PdmException, RuntimeError): FILE: src/pdm/formats/__init__.py class _Format (line 19) | class _Format(Protocol): method check_fingerprint (line 20) | def check_fingerprint(self, project: Project | None, filename: str | P... method convert (line 22) | def convert( method export (line 29) | def export(self, project: Project, candidates: ExportItems, options: N... FILE: src/pdm/formats/base.py function convert_from (line 12) | def convert_from(field: str | None = None, name: str | None = None) -> C... class Unset (line 21) | class Unset(Exception): class MetaConvertError (line 25) | class MetaConvertError(Exception): method __init__ (line 28) | def __init__(self, errors: list[str], *, data: dict[str, Any], setting... method __str__ (line 33) | def __str__(self) -> str: class _MetaConverterMeta (line 37) | class _MetaConverterMeta(type): method __init__ (line 38) | def __init__(cls, name: str, bases: tuple[type, ...], ns: dict[str, An... class MetaConverter (line 48) | class MetaConverter(metaclass=_MetaConverterMeta): method __init__ (line 53) | def __init__(self, source: dict, ui: termui.UI | None = None) -> None: method convert (line 59) | def convert(self) -> tuple[Mapping[str, Any], Mapping[str, Any]]: function make_inline_table (line 88) | def make_inline_table(data: Mapping) -> dict: function make_array (line 95) | def make_array(data: list, multiline: bool = False) -> list: function array_of_inline_tables (line 103) | def array_of_inline_tables(value: list[Mapping], multiline: bool = True)... FILE: src/pdm/formats/flit.py function check_fingerprint (line 26) | def check_fingerprint(project: Project | None, filename: PathLike) -> bool: function _get_author (line 36) | def _get_author(metadata: dict[str, Any], type_: str = "author") -> list... function get_docstring_and_version_via_ast (line 42) | def get_docstring_and_version_via_ast( class FlitMetaConverter (line 73) | class FlitMetaConverter(MetaConverter): method warn_against_dynamic_version_or_docstring (line 74) | def warn_against_dynamic_version_or_docstring(self, source: Path, vers... method name (line 93) | def name(self, metadata: dict[str, Any]) -> str: method entry_points (line 134) | def entry_points(self, value: dict[str, dict[str, str]]) -> dict[str, ... method includes (line 138) | def includes(self, value: dict[str, list[str]]) -> None: function convert (line 145) | def convert(project: Project | None, filename: PathLike, options: Namesp... function export (line 151) | def export(project: Project, candidates: list, options: Namespace | None... FILE: src/pdm/formats/pipfile.py function convert_pipfile_requirement (line 26) | def convert_pipfile_requirement(name: str, req: RequirementDict, backend... function check_fingerprint (line 46) | def check_fingerprint(project: Project, filename: PathLike) -> bool: function convert (line 50) | def convert(project: Project, filename: PathLike, options: Namespace | N... function export (line 76) | def export(project: Project, candidates: list, options: Any) -> None: FILE: src/pdm/formats/poetry.py function check_fingerprint (line 31) | def check_fingerprint(project: Project | None, filename: Path | str) -> ... function _convert_specifier (line 46) | def _convert_specifier(version: str) -> str: function _convert_python (line 62) | def _convert_python(python: str) -> PySpecSet: function _convert_req (line 69) | def _convert_req(name: str, req_dict: RequirementDict | list[Requirement... function parse_name_email (line 115) | def parse_name_email(name_email: list[str]) -> list[dict]: class PoetryMetaConverter (line 128) | class PoetryMetaConverter(MetaConverter): method authors (line 130) | def authors(self, value: list[str]) -> list[dict]: method maintainers (line 134) | def maintainers(self, value: list[str]) -> list[dict]: method license (line 138) | def license(self, value: str) -> dict[str, str]: method requires_python (line 142) | def requires_python(self, source: dict[str, Any]) -> str: method urls (line 147) | def urls(self, source: dict[str, Any]) -> dict[str, str]: method entry_points (line 158) | def entry_points(self, value: dict[str, dict[str, str]]) -> dict[str, ... method dependencies (line 162) | def dependencies(self, source: dict[str, Any]) -> list[str]: method dev_dependencies (line 178) | def dev_dependencies(self, value: dict) -> None: method group_dependencies (line 185) | def group_dependencies(self, value: dict[str, dict[str, Any]]) -> None: method package_mode (line 193) | def package_mode(self, value: bool) -> None: method includes (line 198) | def includes(self, source: dict[str, list[str] | str]) -> list[str]: method excludes (line 218) | def excludes(self, value: list[str]) -> None: method build (line 223) | def build(self, value: str | dict) -> None: method sources (line 231) | def sources(self, value: list[dict[str, Any]]) -> None: function convert (line 243) | def convert( function export (line 253) | def export(project: Project, candidates: list, options: Any) -> None: FILE: src/pdm/formats/pylock.py function _group_sort_key (line 21) | def _group_sort_key(group: str) -> tuple[bool, str]: class PyLockConverter (line 25) | class PyLockConverter: method __init__ (line 28) | def __init__(self, project: Project, locked_repository: LockedReposito... method make_package (line 32) | def make_package(self, package: Package) -> dict[str, Any]: method _populate_hashes (line 95) | def _populate_hashes(self, packages: Iterable[Package]) -> None: method convert (line 110) | def convert(self, all_groups: Iterable[str] | None = None) -> dict[str... FILE: src/pdm/formats/requirements.py class RequirementParser (line 24) | class RequirementParser: method __init__ (line 31) | def __init__(self, session: PDMPyPIClient) -> None: method _clean_line (line 49) | def _clean_line(self, line: str) -> str: method _parse_line (line 56) | def _parse_line(self, filename: str, line: str) -> None: method parse_lines (line 83) | def parse_lines(self, lines: Iterable[str], filename: str = " None: function check_fingerprint (line 108) | def check_fingerprint(project: Project, filename: PathLike) -> bool: function _is_url_trusted (line 122) | def _is_url_trusted(url: str, trusted_hosts: list[str]) -> bool: function convert_url_to_source (line 132) | def convert_url_to_source(url: str, name: str | None, trusted_hosts: lis... function convert (line 145) | def convert(project: Project, filename: PathLike, options: Namespace) ->... function export (line 194) | def export( FILE: src/pdm/formats/setup_py.py function check_fingerprint (line 13) | def check_fingerprint(project: Project, filename: Path) -> bool: function convert (line 17) | def convert(project: Project, filename: Path, options: Any | None) -> tu... function export (line 64) | def export(project: Project, candidates: list, options: Any | None) -> str: FILE: src/pdm/formats/uv.py class _UvFileBuilder (line 22) | class _UvFileBuilder: method default_source (line 30) | def default_source(self) -> str: method __post_init__ (line 33) | def __post_init__(self) -> None: method build_pyproject_toml (line 36) | def build_pyproject_toml(self) -> Path: method _enter_path (line 80) | def _enter_path(self, path: Path) -> Path: method build_uv_lock (line 93) | def build_uv_lock(self, include_self: bool = False) -> Path: method _get_name (line 137) | def _get_name(self, req: FileRequirement) -> str: method _build_source (line 143) | def _build_source(self, req: FileRequirement) -> dict[str, Any]: method _build_lock_source (line 157) | def _build_lock_source(self, req: Requirement) -> dict[str, Any]: method _build_lock_entry (line 168) | def _build_lock_entry(self, packages: list[Package]) -> dict[str, Any]: method _make_dependency (line 213) | def _make_dependency(self, parent: Candidate | None, req: Requirement)... function uv_file_builder (line 243) | def uv_file_builder( FILE: src/pdm/installers/base.py function editables_candidate (line 20) | def editables_candidate(environment: BaseEnvironment) -> Candidate | None: class BaseSynchronizer (line 27) | class BaseSynchronizer: method __init__ (line 46) | def __init__( method self_candidate (line 87) | def self_candidate(self) -> Candidate: method candidates (line 92) | def candidates(self) -> dict[str, Candidate]: method should_install_editables (line 121) | def should_install_editables(self) -> bool: method manager (line 133) | def manager(self) -> InstallManager: method get_manager (line 138) | def get_manager(self, rename_pth: bool = False) -> InstallManager: method self_key (line 144) | def self_key(self) -> str | None: method _should_update (line 152) | def _should_update(self, dist: Distribution, can: Candidate) -> bool: method compare_with_working_set (line 179) | def compare_with_working_set(self) -> tuple[list[str], list[str], list... method synchronize (line 214) | def synchronize(self) -> None: FILE: src/pdm/installers/core.py function install_requirements (line 10) | def install_requirements( FILE: src/pdm/installers/installers.py class WheelFile (line 31) | class WheelFile(_WheelFile): method dist_info_dir (line 33) | def dist_info_dir(self) -> str: class PackageWheelSource (line 42) | class PackageWheelSource(WheelSource): method __init__ (line 43) | def __init__(self, package: CachedPackage) -> None: method dist_info_dir (line 50) | def dist_info_dir(self) -> str: method dist_info_filenames (line 54) | def dist_info_filenames(self) -> list[str]: method read_dist_info (line 57) | def read_dist_info(self, filename: str) -> str: method iter_files (line 60) | def iter_files(self) -> Iterable[Path]: method get_contents (line 67) | def get_contents(self) -> Iterator[WheelContentElement]: class InstallDestination (line 89) | class InstallDestination(SchemeDictionaryDestination): method __init__ (line 90) | def __init__( method write_to_fs (line 101) | def write_to_fs(self, scheme: Scheme, path: str, stream: BinaryIO, is_... function _get_link_method (line 134) | def _get_link_method(cache_method: str) -> LinkMethod: function install_wheel (line 145) | def install_wheel( function install (line 195) | def install( FILE: src/pdm/installers/manager.py class InstallManager (line 16) | class InstallManager: method __init__ (line 22) | def __init__( method install (line 29) | def install(self, candidate: Candidate) -> Distribution: method get_paths_to_remove (line 42) | def get_paths_to_remove(self, dist: Distribution) -> BaseRemovePaths: method uninstall (line 46) | def uninstall(self, dist: Distribution) -> None: method overwrite (line 59) | def overwrite(self, dist: Distribution, candidate: Candidate) -> None: FILE: src/pdm/installers/synchronizers.py class Synchronizer (line 22) | class Synchronizer(BaseSynchronizer): method install_candidate (line 23) | def install_candidate(self, key: str, progress: Progress) -> Candidate: method update_candidate (line 40) | def update_candidate(self, key: str, progress: Progress) -> tuple[Dist... method remove_distribution (line 70) | def remove_distribution(self, key: str, progress: Progress) -> Distrib... method _show_headline (line 91) | def _show_headline(self, packages: dict[str, list[str]]) -> None: method _show_summary (line 106) | def _show_summary(self, packages: dict[str, list[str]]) -> None: method _fix_pth_files (line 128) | def _fix_pth_files(self) -> None: method synchronize (line 143) | def synchronize(self) -> None: FILE: src/pdm/installers/uninstallers.py function renames (line 24) | def renames(old: str, new: str) -> None: function compress_for_rename (line 41) | def compress_for_rename(paths: Iterable[NormalizedPath]) -> set[Normaliz... function _script_names (line 84) | def _script_names(script_name: str, is_gui: bool) -> Iterable[str]: function _cache_file_from_source (line 95) | def _cache_file_from_source(py_file: NormalizedPath) -> Iterable[Normali... function _get_file_root (line 104) | def _get_file_root(path: str, base: str) -> str | None: function _get_all_parents (line 114) | def _get_all_parents(path: NormalizedPath) -> Iterable[NormalizedPath]: class BaseRemovePaths (line 123) | class BaseRemovePaths(abc.ABC): method __init__ (line 126) | def __init__(self, dist: Distribution, environment: BaseEnvironment) -... method difference_update (line 133) | def difference_update(self, other: BaseRemovePaths) -> None: method remove (line 142) | def remove(self) -> None: method commit (line 146) | def commit(self) -> None: method rollback (line 150) | def rollback(self) -> None: method from_dist (line 154) | def from_dist(cls: type[_T], dist: Distribution, environment: BaseEnvi... method add_pth (line 210) | def add_pth(self, line: str) -> None: method add_path (line 213) | def add_path(self, path: str) -> None: class StashedRemovePaths (line 225) | class StashedRemovePaths(BaseRemovePaths): method __init__ (line 230) | def __init__(self, dist: Distribution, environment: BaseEnvironment) -... method remove (line 237) | def remove(self) -> None: method _remove_pth (line 241) | def _remove_pth(self) -> None: method _stash_files (line 254) | def _stash_files(self) -> None: method commit (line 281) | def commit(self) -> None: method rollback (line 295) | def rollback(self) -> None: FILE: src/pdm/installers/uv.py class UvSynchronizer (line 15) | class UvSynchronizer(BaseSynchronizer): method __init__ (line 16) | def __init__(self, *args: Any, **kwargs: Any) -> None: method synchronize (line 25) | def synchronize(self) -> None: method _get_sync_command (line 56) | def _get_sync_command(self) -> list[str | HiddenText]: class QuietUvSynchronizer (line 91) | class QuietUvSynchronizer(UvSynchronizer): method _get_sync_command (line 92) | def _get_sync_command(self) -> list[str | HiddenText]: FILE: src/pdm/misc/sysconfig_patcher.py class WordReplace (line 46) | class WordReplace: function read_sysconfig_data_ast (line 64) | def read_sysconfig_data_ast(fname): function update_prefix (line 70) | def update_prefix(value: str, real_prefix: str): function sync_file (line 76) | def sync_file(fn): function select_child (line 83) | def select_child(ast_obj, type_): function patch_sysconfig_ast (line 87) | def patch_sysconfig_ast(obj, real_prefix, variable_updates=None): function patch_sysconfig (line 149) | def patch_sysconfig(path: Path, real_prefix: Path, dry_run: bool, backup... function find_pkgconfigs (line 180) | def find_pkgconfigs(path: Path): function write_new_pkgconfig (line 191) | def write_new_pkgconfig(fname: Path, real_prefix: Path, dest_path: Path): function patch_pkgconfig (line 219) | def patch_pkgconfig(pkgconfig_file, real_prefix, dry_run: bool, backup_f... function find_libdir (line 237) | def find_libdir(real_prefix: Path): function find_sysconfigdata (line 252) | def find_sysconfigdata(real_prefix: Path): function patch (line 269) | def patch(real_prefix: Path) -> None: FILE: src/pdm/models/auth.py class PdmBasicAuth (line 14) | class PdmBasicAuth(MultiDomainBasicAuth): method __init__ (line 21) | def __init__(self, ui: UI, sources: list[RepositoryConfig]) -> None: method _get_new_credentials (line 27) | def _get_new_credentials( method _get_auth_from_index_url (line 40) | def _get_auth_from_index_url(self, url: str) -> tuple[MaybeAuth, str |... method _prompt_for_password (line 64) | def _prompt_for_password(self, netloc: str, username: str | None = Non... method _should_save_password_to_keyring (line 72) | def _should_save_password_to_keyring(self) -> bool: class Keyring (line 82) | class Keyring: method __init__ (line 83) | def __init__(self) -> None: method get_auth_info (line 88) | def get_auth_info(self, url: str, username: str | None) -> tuple[str, ... method save_auth_info (line 100) | def save_auth_info(self, url: str, username: str, password: str) -> bool: method delete_auth_info (line 113) | def delete_auth_info(self, url: str, username: str) -> bool: FILE: src/pdm/models/backends.py class BuildBackend (line 17) | class BuildBackend(metaclass=abc.ABCMeta): method __init__ (line 20) | def __init__(self, root: Path) -> None: method expand_line (line 23) | def expand_line(self, line: str, expand_env: bool = True) -> str: method relative_path_to_url (line 26) | def relative_path_to_url(self, path: str) -> str: method build_system (line 31) | def build_system(cls) -> BuildSystem: class FlitBackend (line 35) | class FlitBackend(BuildBackend): method build_system (line 37) | def build_system(cls) -> BuildSystem: class SetuptoolsBackend (line 44) | class SetuptoolsBackend(BuildBackend): method build_system (line 46) | def build_system(cls) -> BuildSystem: class PDMBackend (line 53) | class PDMBackend(BuildBackend): method expand_line (line 54) | def expand_line(self, req: str, expand_env: bool = True) -> str: method relative_path_to_url (line 60) | def relative_path_to_url(self, path: str) -> str: method build_system (line 66) | def build_system(cls) -> BuildSystem: class PathContext (line 74) | class PathContext: method __init__ (line 75) | def __init__(self, path: Path) -> None: method __format__ (line 78) | def __format__(self, __format_spec: str) -> str: class EnvContext (line 88) | class EnvContext: method __init__ (line 89) | def __init__(self, expand: bool = True) -> None: method __format__ (line 92) | def __format__(self, __format_spec: str) -> str: class HatchBackend (line 103) | class HatchBackend(BuildBackend): method expand_line (line 104) | def expand_line(self, line: str, expand_env: bool = True) -> str: method relative_path_to_url (line 111) | def relative_path_to_url(self, path: str) -> str: method build_system (line 117) | def build_system(cls) -> BuildSystem: function get_backend (line 134) | def get_backend(name: str) -> type[BuildBackend]: function get_backend_by_spec (line 139) | def get_backend_by_spec(spec: dict) -> type[BuildBackend]: function get_relative_path (line 151) | def get_relative_path(url: str) -> str | None: FILE: src/pdm/models/cached_package.py class CachedPackage (line 12) | class CachedPackage: method __init__ (line 28) | def __init__(self, path: str | Path, original_wheel: Path | None = Non... method lock (line 33) | def lock(self) -> ContextManager[Any]: method checksum (line 39) | def checksum(self) -> str: method dist_info (line 44) | def dist_info(self) -> Path: method referrers (line 54) | def referrers(self) -> set[str]: method add_referrer (line 67) | def add_referrer(self, path: str) -> None: method remove_referrer (line 74) | def remove_referrer(self, path: str) -> None: method cleanup (line 81) | def cleanup(self) -> None: FILE: src/pdm/models/caches.py class JSONFileCache (line 31) | class JSONFileCache(Generic[KT, VT]): method __init__ (line 34) | def __init__(self, cache_file: Path | str) -> None: method _read_cache (line 39) | def _read_cache(self) -> None: method _write_cache (line 49) | def _write_cache(self) -> None: method __contains__ (line 53) | def __contains__(self, obj: KT) -> bool: method _get_key (line 57) | def _get_key(cls, obj: KT) -> str: method get (line 60) | def get(self, obj: KT) -> VT: method set (line 64) | def set(self, obj: KT, value: VT) -> None: class CandidateInfoCache (line 70) | class CandidateInfoCache(JSONFileCache[Candidate, CandidateInfo]): method get_url_part (line 76) | def get_url_part(link: Link) -> str: method _get_key (line 85) | def _get_key(cls, obj: Candidate) -> str: class HashCache (line 97) | class HashCache: method __init__ (line 108) | def __init__(self, directory: Path | str) -> None: method _read_from_link (line 111) | def _read_from_link(self, link: Link, session: Client) -> Iterable[byt... method _get_file_hash (line 125) | def _get_file_hash(self, link: Link, session: Client) -> str: method _should_cache (line 132) | def _should_cache(self, link: Link) -> bool: method get_hash (line 137) | def get_hash(self, link: Link, session: Client) -> str: method _get_path_for_key (line 155) | def _get_path_for_key(self, key: str) -> Path: method get (line 160) | def get(self, url: str) -> str | None: method set (line 166) | def set(self, url: str, hash: str) -> None: class EmptyCandidateInfoCache (line 174) | class EmptyCandidateInfoCache(CandidateInfoCache): method get (line 175) | def get(self, obj: Candidate) -> CandidateInfo: method set (line 178) | def set(self, obj: Candidate, value: CandidateInfo) -> None: class EmptyHashCache (line 182) | class EmptyHashCache(HashCache): method get (line 183) | def get(self, url: str) -> str | None: method set (line 186) | def set(self, url: str, hash: str) -> None: class WheelCache (line 190) | class WheelCache: method __init__ (line 198) | def __init__(self, directory: Path | str) -> None: method _get_candidates (line 202) | def _get_candidates(self, path: Path) -> Iterable[Path]: method _get_path_parts (line 209) | def _get_path_parts(self, link: Link, env_spec: EnvSpec) -> tuple[str,... method get_path_for_link (line 226) | def get_path_for_link(self, link: Link, env_spec: EnvSpec) -> Path: method get_ephemeral_path_for_link (line 230) | def get_ephemeral_path_for_link(self, link: Link, env_spec: EnvSpec) -... method get (line 234) | def get(self, link: Link, project_name: str | None, env_spec: EnvSpec)... method _get_from_path (line 244) | def _get_from_path(self, path: Path, canonical_name: str, env_spec: En... function get_wheel_cache (line 269) | def get_wheel_cache(directory: Path | str) -> WheelCache: class PackageCache (line 273) | class PackageCache: method __init__ (line 274) | def __init__(self, root: Path) -> None: method cache_wheel (line 277) | def cache_wheel(self, wheel: Path) -> CachedPackage: method iter_packages (line 303) | def iter_packages(self) -> Iterable[CachedPackage]: method cleanup (line 310) | def cleanup(self) -> int: FILE: src/pdm/models/candidates.py function _dist_info_files (line 49) | def _dist_info_files(whl_zip: ZipFile) -> list[str]: function _get_wheel_metadata_from_wheel (line 61) | def _get_wheel_metadata_from_wheel(whl_file: Path, metadata_directory: s... function _filter_none (line 72) | def _filter_none(data: dict[str, Any]) -> dict[str, Any]: function _find_best_match_link (line 77) | def _find_best_match_link(finder: PackageFinder, req: Requirement, files... class MetadataDistribution (line 99) | class MetadataDistribution(im.Distribution): method __init__ (line 102) | def __init__(self, text: str) -> None: method locate_file (line 105) | def locate_file(self, path: str | os.PathLike[str]) -> _SimplePath: method read_text (line 108) | def read_text(self, filename: str) -> str | None: class Candidate (line 114) | class Candidate: method __init__ (line 136) | def __init__( method identify (line 165) | def identify(self) -> str: method copy_with (line 168) | def copy_with(self, requirement: Requirement) -> Candidate: method dep_key (line 180) | def dep_key(self) -> tuple[str, str | None]: method prepared (line 189) | def prepared(self) -> PreparedCandidate | None: method __eq__ (line 192) | def __eq__(self, other: Any) -> bool: method get_revision (line 199) | def get_revision(self) -> str: method __repr__ (line 208) | def __repr__(self) -> str: method __str__ (line 213) | def __str__(self) -> str: method from_installation_candidate (line 220) | def from_installation_candidate(cls, candidate: Package, req: Requirem... method requires_python (line 230) | def requires_python(self) -> str: method requires_python (line 248) | def requires_python(self, value: str) -> None: method as_lockfile_entry (line 256) | def as_lockfile_entry(self, project_root: Path) -> dict[str, Any]: method format (line 295) | def format(self) -> str: method prepare (line 299) | def prepare(self, environment: BaseEnvironment, reporter: CandidateRep... class PreparedCandidate (line 313) | class PreparedCandidate: method __post_init__ (line 324) | def __post_init__(self) -> None: method _replace_url_vars (line 338) | def _replace_url_vars(self, link: Link | None) -> Link | None: method revision (line 345) | def revision(self) -> str: method direct_url (line 361) | def direct_url(self) -> dict[str, Any] | None: method build (line 410) | def build(self) -> Path: method _obtain (line 430) | def _obtain(self, allow_all: bool = False, unpack: bool = True) -> None: method _unpack (line 468) | def _unpack(self, validate_hashes: bool = False) -> None: method prepare_metadata (line 494) | def prepare_metadata(self, force_build: bool = False) -> im.Distribution: method _get_metadata_from_metadata_link (line 527) | def _get_metadata_from_metadata_link( method _get_metadata_from_wheel (line 538) | def _get_metadata_from_wheel(self, wheel: Path) -> im.Distribution: method _get_metadata_from_project (line 544) | def _get_metadata_from_project(self, pyproject_toml: Path) -> im.Distr... method _get_metadata_from_build (line 598) | def _get_metadata_from_build(self, source_dir: Path, metadata_parent: ... method metadata (line 619) | def metadata(self) -> im.Distribution: method get_dependencies_from_metadata (line 631) | def get_dependencies_from_metadata(self) -> list[Requirement]: method should_cache (line 636) | def should_cache(self) -> bool: method _get_build_cache (line 660) | def _get_build_cache(self) -> Path | None: method _get_build_dir (line 670) | def _get_build_dir(self) -> str: method _wheel_compatible (line 701) | def _wheel_compatible(self, wheel_file: str, allow_all: bool = False) ... method _get_wheel_dir (line 705) | def _get_wheel_dir(self) -> str: FILE: src/pdm/models/finder.py class ReverseVersion (line 20) | class ReverseVersion(Version): method __lt__ (line 23) | def __lt__(self, other: Any) -> bool: method __le__ (line 26) | def __le__(self, other: Any) -> bool: method __gt__ (line 29) | def __gt__(self, other: Any) -> bool: method __ge__ (line 32) | def __ge__(self, other: Any) -> bool: class PDMEvaluator (line 36) | class PDMEvaluator(Evaluator): method __init__ (line 37) | def __init__(self, *args: Any, env_spec: EnvSpec, **kwargs: Any) -> None: method check_requires_python (line 41) | def check_requires_python(self, link: unearth.Link) -> None: method check_wheel_tags (line 55) | def check_wheel_tags(self, filename: str) -> None: class PDMPackageFinder (line 62) | class PDMPackageFinder(unearth.PackageFinder): method __init__ (line 63) | def __init__( method build_evaluator (line 75) | def build_evaluator(self, package_name: str, allow_yanked: bool = Fals... method _sort_key (line 86) | def _sort_key(self, package: Package) -> tuple: FILE: src/pdm/models/in_process/__init__.py function _in_process_script (line 22) | def _in_process_script(name: str) -> Generator[str, None, None]: function get_sys_config_paths (line 27) | def get_sys_config_paths(executable: str, vars: dict[str, str] | None = ... function parse_setup_py (line 39) | def parse_setup_py(executable: str, path: str) -> dict[str, Any]: function get_env_spec (line 50) | def get_env_spec(executable: str) -> EnvSpec: FILE: src/pdm/models/in_process/env_spec.py function get_current_env_spec (line 10) | def get_current_env_spec() -> dict[str, str | bool]: FILE: src/pdm/models/in_process/parse_setup.py function _parse_setup_cfg (line 8) | def _parse_setup_cfg(path: str) -> dict[str, Any]: function fake_setup (line 116) | def fake_setup(**kwargs): function clean_metadata (line 120) | def clean_metadata(metadata: dict[str, Any]) -> None: function parse_setup (line 167) | def parse_setup(path: str) -> dict[str, Any]: function json_default (line 210) | def json_default(o): FILE: src/pdm/models/in_process/sysconfig_get_paths.py function _running_under_venv (line 7) | def _running_under_venv(): function _running_under_regular_virtualenv (line 12) | def _running_under_regular_virtualenv(): function running_under_virtualenv (line 18) | def running_under_virtualenv(): function _get_user_scheme (line 23) | def _get_user_scheme(): function get_paths (line 31) | def get_paths(kind="default", vars=None): function main (line 46) | def main(): FILE: src/pdm/models/markers.py function exclude_multi (line 35) | def exclude_multi(marker: Marker, *names: str) -> Marker: class Marker (line 43) | class Marker: method __and__ (line 46) | def __and__(self, other: Any) -> Marker: method __or__ (line 51) | def __or__(self, other: Any) -> Marker: method is_any (line 56) | def is_any(self) -> bool: method is_empty (line 59) | def is_empty(self) -> bool: method __str__ (line 62) | def __str__(self) -> str: method __repr__ (line 65) | def __repr__(self) -> str: method evaluate (line 68) | def evaluate(self, environment: dict[str, Any] | None = None) -> bool: method matches (line 71) | def matches(self, spec: EnvSpec) -> bool: method split_pyspec (line 80) | def split_pyspec(self) -> tuple[Marker, PySpecSet]: method split_extras (line 88) | def split_extras(self) -> tuple[Marker, Marker]: function get_marker (line 97) | def get_marker(marker: None) -> None: ... function get_marker (line 101) | def get_marker(marker: PackageMarker | Marker | str) -> Marker: ... function get_marker (line 104) | def get_marker(marker: PackageMarker | Marker | str | None) -> Marker | ... function _build_pyspec_from_marker (line 117) | def _build_pyspec_from_marker(marker: BaseMarker) -> PySpecSet: class EnvSpec (line 155) | class EnvSpec(_EnvSpec): method replace (line 156) | def replace(self, **kwargs: Any) -> Self: method markers_with_defaults (line 165) | def markers_with_defaults(self) -> dict[str, str]: method from_marker (line 171) | def from_marker(cls, marker: Marker) -> Self: # pragma: no cover method markers_with_python (line 195) | def markers_with_python(self) -> Marker: method is_allow_all (line 214) | def is_allow_all(self) -> bool: FILE: src/pdm/models/project_info.py class ProjectInfo (line 16) | class ProjectInfo: method from_distribution (line 32) | def from_distribution(cls, data: Distribution) -> ProjectInfo: method from_metadata (line 59) | def from_metadata(cls, metadata: dict[str, Any]) -> ProjectInfo: method generate_rows (line 81) | def generate_rows(self) -> Iterator[tuple[str, str]]: FILE: src/pdm/models/python.py class PythonInfo (line 16) | class PythonInfo: method __init__ (line 21) | def __init__(self, py_version: PythonVersion) -> None: method from_path (line 25) | def from_path(cls, path: str | Path) -> PythonInfo: method valid (line 32) | def valid(self) -> bool: method __hash__ (line 35) | def __hash__(self) -> int: method __eq__ (line 38) | def __eq__(self, o: Any) -> bool: method path (line 44) | def path(self) -> Path: method executable (line 48) | def executable(self) -> Path: method version (line 52) | def version(self) -> Version: method implementation (line 56) | def implementation(self) -> str: method major (line 60) | def major(self) -> int: method minor (line 64) | def minor(self) -> int: method micro (line 68) | def micro(self) -> int: method version_tuple (line 72) | def version_tuple(self) -> tuple[int, ...]: method is_32bit (line 76) | def is_32bit(self) -> bool: method for_tag (line 79) | def for_tag(self) -> str: method identifier (line 83) | def identifier(self) -> str: method get_venv (line 95) | def get_venv(self) -> VirtualEnv | None: FILE: src/pdm/models/reporter.py class CandidateReporter (line 18) | class CandidateReporter: method report_download (line 19) | def report_download(self, link: Any, completed: int, total: int | None... method report_build_start (line 22) | def report_build_start(self, filename: str) -> None: method report_build_end (line 25) | def report_build_end(self, filename: str) -> None: method report_unpack (line 28) | def report_unpack(self, filename: Path, completed: int, total: int | N... class RichProgressReporter (line 33) | class RichProgressReporter(CandidateReporter): method report_download (line 37) | def report_download(self, link: Any, completed: int, total: int | None... method report_unpack (line 40) | def report_unpack(self, filename: Path, completed: int, total: int | N... method report_build_start (line 43) | def report_build_start(self, filename: str) -> None: method report_build_end (line 49) | def report_build_end(self, filename: str) -> None: class InstallationStatus (line 53) | class InstallationStatus: method __init__ (line 54) | def __init__(self, ui: termui.UI, text: str) -> None: method __rich_console__ (line 75) | def __rich_console__(self, console: Console, options: ConsoleOptions) ... method update_spinner (line 80) | def update_spinner( method start (line 95) | def start(self) -> None: method stop (line 100) | def stop(self) -> None: method __enter__ (line 106) | def __enter__(self) -> InstallationStatus: method __exit__ (line 110) | def __exit__(self, *args: Any) -> None: FILE: src/pdm/models/repositories/base.py class CandidateMetadata (line 31) | class CandidateMetadata(NamedTuple): function cache_result (line 37) | def cache_result(func: Callable[[T, Candidate], CandidateMetadata]) -> C... class BaseRepository (line 50) | class BaseRepository: method __init__ (line 53) | def __init__( method get_filtered_sources (line 90) | def get_filtered_sources(self, req: Requirement) -> list[RepositoryCon... method get_dependencies (line 94) | def get_dependencies(self, candidate: Candidate) -> tuple[list[Require... method _find_candidates (line 114) | def _find_candidates(self, requirement: Requirement, minimal_version: ... method is_this_package (line 117) | def is_this_package(self, requirement: Requirement) -> bool: method make_this_candidate (line 122) | def make_this_candidate(self, requirement: Requirement) -> Candidate: method _should_ignore_package_warning (line 135) | def _should_ignore_package_warning(self, requirement: Requirement) -> ... method find_candidates (line 145) | def find_candidates( method _get_dependencies_from_cache (line 256) | def _get_dependencies_from_cache(self, candidate: Candidate) -> Candid... method _get_dependencies_from_metadata (line 269) | def _get_dependencies_from_metadata(self, candidate: Candidate) -> Can... method get_hashes (line 277) | def get_hashes(self, candidate: Candidate) -> list[FileHash]: method dependency_generators (line 320) | def dependency_generators(self) -> Iterable[Callable[[Candidate], Cand... method search (line 326) | def search(self, query: str) -> SearchResults: method fetch_hashes (line 334) | def fetch_hashes(self, candidates: Iterable[Candidate]) -> None: FILE: src/pdm/models/repositories/lock.py class Package (line 30) | class Package: class LockedRepository (line 37) | class LockedRepository(BaseRepository): method __init__ (line 38) | def __init__( method add_package (line 50) | def add_package(self, package: Package) -> None: method all_candidates (line 54) | def all_candidates(self) -> dict[str, list[Candidate]]: method candidates (line 62) | def candidates(self) -> dict[str, Candidate]: method _read_lockfile (line 74) | def _read_lockfile(self, lockfile: Mapping[str, Any]) -> None: method _read_pylock (line 80) | def _read_pylock(self, lockfile: Mapping[str, Any]) -> None: method _read_pdm_lock (line 133) | def _read_pdm_lock(self, lockfile: Mapping[str, Any]) -> None: method _identify_candidate (line 174) | def _identify_candidate(self, candidate: Candidate) -> CandidateKey: method _get_dependencies_from_lockfile (line 189) | def _get_dependencies_from_lockfile(self, candidate: Candidate) -> Can... method dependency_generators (line 213) | def dependency_generators(self) -> Iterable[Callable[[Candidate], Cand... method _matching_entries (line 216) | def _matching_entries(self, requirement: Requirement) -> Iterable[Pack... method find_candidates (line 234) | def find_candidates( method get_hashes (line 253) | def get_hashes(self, candidate: Candidate) -> list[FileHash]: method evaluate_candidates (line 256) | def evaluate_candidates(self, groups: Collection[str], evaluate_marker... method merge_result (line 271) | def merge_result(self, env_spec: EnvSpec, result: Iterable[Package]) -... FILE: src/pdm/models/repositories/pypi.py class PyPIRepository (line 17) | class PyPIRepository(BaseRepository): method _get_dependencies_from_json (line 23) | def _get_dependencies_from_json(self, candidate: Candidate) -> Candida... method dependency_generators (line 52) | def dependency_generators(self) -> Iterable[Callable[[Candidate], Cand... method _find_candidates (line 58) | def _find_candidates(self, requirement: Requirement, minimal_version: ... method search (line 75) | def search(self, query: str) -> SearchResults: FILE: src/pdm/models/requirements.py function strip_extras (line 58) | def strip_extras(line: str) -> tuple[str, tuple[str, ...] | None]: function _get_random_key (line 67) | def _get_random_key(req: Requirement) -> str: class Requirement (line 72) | class Requirement: method __post_init__ (line 86) | def __post_init__(self) -> None: method project_name (line 90) | def project_name(self) -> str | None: method key (line 94) | def key(self) -> str | None: method is_pinned (line 98) | def is_pinned(self) -> bool: method as_pinned_version (line 105) | def as_pinned_version(self: T, other_version: str | None) -> T: method _hash_key (line 112) | def _hash_key(self) -> tuple: method __hash__ (line 119) | def __hash__(self) -> int: method __eq__ (line 122) | def __eq__(self, o: object) -> bool: method identify (line 125) | def identify(self) -> str: method __repr__ (line 131) | def __repr__(self) -> str: method __str__ (line 134) | def __str__(self) -> str: method create (line 138) | def create(cls: type[T], **kwargs: Any) -> T: method from_dist (line 151) | def from_dist(cls, dist: Distribution) -> Requirement: method from_req_dict (line 173) | def from_req_dict(cls, name: str, req_dict: RequirementDict) -> Requir... method is_named (line 186) | def is_named(self) -> bool: method is_vcs (line 190) | def is_vcs(self) -> bool: method is_file_or_url (line 194) | def is_file_or_url(self) -> bool: method as_line (line 197) | def as_line(self) -> str: method matches (line 200) | def matches(self, line: str) -> bool: method from_pkg_requirement (line 212) | def from_pkg_requirement(cls, req: PackageRequirement) -> Requirement: method _format_marker (line 228) | def _format_marker(self) -> str: class NamedRequirement (line 235) | class NamedRequirement(Requirement): method as_line (line 236) | def as_line(self) -> str: class FileRequirement (line 246) | class FileRequirement(Requirement): method __post_init__ (line 252) | def __post_init__(self) -> None: method _hash_key (line 256) | def _hash_key(self) -> tuple: method guess_name (line 259) | def guess_name(self) -> str | None: method create (line 289) | def create(cls: type[T], **kwargs: Any) -> T: method str_path (line 295) | def str_path(self) -> str | None: method _parse_url (line 312) | def _parse_url(self) -> None: method relocate (line 344) | def relocate(self, backend: BuildBackend) -> None: method absolute_path (line 358) | def absolute_path(self) -> Path | None: method is_local (line 362) | def is_local(self) -> bool: method is_local_dir (line 366) | def is_local_dir(self) -> bool: method as_file_link (line 369) | def as_file_link(self) -> Link: method get_full_url (line 378) | def get_full_url(self) -> str: method as_line (line 381) | def as_line(self) -> str: method _parse_name_from_url (line 400) | def _parse_name_from_url(self) -> None: method check_installable (line 412) | def check_installable(self) -> None: class VcsRequirement (line 424) | class VcsRequirement(FileRequirement): method __post_init__ (line 429) | def __post_init__(self) -> None: method get_full_url (line 434) | def get_full_url(self) -> str: method _parse_url (line 442) | def _parse_url(self) -> None: function filter_requirements_with_extras (line 461) | def filter_requirements_with_extras( function parse_as_pkg_requirement (line 486) | def parse_as_pkg_requirement(line: str) -> PackageRequirement: function parse_line (line 495) | def parse_line(line: str) -> Requirement: function parse_requirement (line 501) | def parse_requirement(line: str, editable: bool = False) -> Requirement: FILE: src/pdm/models/search.py class Result (line 12) | class Result: method as_frozen (line 17) | def as_frozen(self) -> SearchResult: class SearchResultParser (line 21) | class SearchResultParser(HTMLParser): method __init__ (line 24) | def __init__(self) -> None: method _match_class (line 32) | def _match_class(attrs: list[tuple[str, str | None]], name: str) -> bool: method handle_starttag (line 36) | def handle_starttag(self, tag: str, attrs: list[tuple[str, str | None]... method handle_data (line 51) | def handle_data(self, data: str) -> None: method handle_endtag (line 56) | def handle_endtag(self, tag: str) -> None: FILE: src/pdm/models/session.py function _create_truststore_ssl_context (line 26) | def _create_truststore_ssl_context() -> SSLContext | None: function _get_transport (line 53) | def _get_transport( class ThreadedSyncSqliteStorage (line 61) | class ThreadedSyncSqliteStorage(hishel.SyncSqliteStorage): method __init__ (line 62) | def __init__(self, *args: Any, **kwargs: Any) -> None: method connection (line 69) | def connection(self) -> sqlite3.Connection | None: method connection (line 73) | def connection(self, conn: sqlite3.Connection | None) -> None: method close (line 77) | def close(self) -> None: method _ensure_connection (line 83) | def _ensure_connection(self) -> sqlite3.Connection: class PDMPyPIClient (line 108) | class PDMPyPIClient(PyPIClient): method __init__ (line 109) | def __init__(self, *, sources: list[RepositoryConfig], cache_dir: Path... method _transport_for (line 158) | def _transport_for(self, source: RepositoryConfig) -> httpx.BaseTransp... method _make_user_agent (line 173) | def _make_user_agent(self) -> str: method on_response (line 178) | def on_response(self, response: httpx.Response) -> None: FILE: src/pdm/models/setup.py class Setup (line 17) | class Setup: method update (line 29) | def update(self, other: Setup) -> None: method as_dict (line 35) | def as_dict(self) -> dict[str, Any]: method from_directory (line 39) | def from_directory(cls, dir: Path) -> Setup: method as_dist (line 42) | def as_dist(self) -> Distribution: class _SetupReader (line 46) | class _SetupReader: method read_from_directory (line 52) | def read_from_directory(cls, directory: Path) -> Setup: method read_pyproject_toml (line 70) | def read_pyproject_toml(file: Path) -> Setup: method read_setup_py (line 94) | def read_setup_py(cls, file: Path) -> Setup: method read_setup_cfg (line 113) | def read_setup_cfg(file: Path) -> Setup: method _find_setup_call (line 163) | def _find_setup_call(cls, elements: list[Any]) -> tuple[ast.Call | Non... method _find_sub_setup_call (line 212) | def _find_sub_setup_call(cls, elements: list[Any]) -> tuple[ast.Call |... method _find_install_requires (line 229) | def _find_install_requires(cls, call: ast.Call, body: Iterable[Any]) -... method _find_extras_require (line 273) | def _find_extras_require(cls, call: ast.Call, body: Iterable[Any]) -> ... method _find_single_string (line 328) | def _find_single_string(cls, call: ast.Call, body: list[Any], name: st... method _find_in_call (line 366) | def _find_in_call(call: ast.Call, name: str) -> Any | None: method _find_call_kwargs (line 373) | def _find_call_kwargs(call: ast.Call) -> Any | None: method _find_variable_in_body (line 382) | def _find_variable_in_body(body: Iterable[Any], name: str) -> Any | None: method _find_in_dict (line 396) | def _find_in_dict(dict_: ast.Dict, name: str) -> Any | None: class SetupDistribution (line 403) | class SetupDistribution(Distribution): method __init__ (line 404) | def __init__(self, data: Setup) -> None: method read_text (line 407) | def read_text(self, filename: str) -> str | None: method locate_file (line 410) | def locate_file(self, path: str | os.PathLike[str]) -> _SimplePath: method metadata (line 414) | def metadata(self) -> dict[str, Any]: # type: ignore[override] method requires (line 427) | def requires(self) -> list[str] | None: FILE: src/pdm/models/specifiers.py function _read_max_versions (line 27) | def _read_max_versions() -> dict[Version, int]: function get_specifier (line 35) | def get_specifier(version_str: str | None) -> SpecifierSet: function fix_legacy_specifier (line 45) | def fix_legacy_specifier(specifier: str) -> str: class PySpecSet (line 71) | class PySpecSet(SpecifierSet): method __init__ (line 79) | def __init__(self, spec: str | VersionSpecifier = "") -> None: method __hash__ (line 94) | def __hash__(self) -> int: method __str__ (line 97) | def __str__(self) -> str: method __eq__ (line 102) | def __eq__(self, other: Any) -> bool: method is_empty (line 107) | def is_empty(self) -> bool: method is_any (line 111) | def is_any(self) -> bool: method _normalize (line 116) | def _normalize(cls, spec: VersionSpecifier) -> str: method __repr__ (line 141) | def __repr__(self) -> str: method __and__ (line 144) | def __and__(self, other: Any) -> PySpecSet: method __or__ (line 151) | def __or__(self, other: Any) -> PySpecSet: method _populate_version_range (line 159) | def _populate_version_range(cls, lower: Version, upper: Version) -> It... method is_superset (line 199) | def is_superset(self, other: str | PySpecSet) -> bool: method is_subset (line 210) | def is_subset(self, other: str | PySpecSet) -> bool: method as_marker_string (line 220) | def as_marker_string(self) -> str: function _convert_spec (line 229) | def _convert_spec(specifier: VersionSpecifier) -> str: function _fix_py4k (line 259) | def _fix_py4k(spec: VersionSpecifier) -> VersionSpecifier: FILE: src/pdm/models/venv.py function get_venv_python (line 15) | def get_venv_python(venv: Path) -> Path: function is_conda_venv (line 28) | def is_conda_venv(root: Path) -> bool: class VirtualEnv (line 33) | class VirtualEnv: method get (line 39) | def get(cls, root: Path) -> VirtualEnv | None: method from_interpreter (line 46) | def from_interpreter(cls, interpreter: Path) -> VirtualEnv | None: method env_vars (line 52) | def env_vars(self) -> dict[str, str]: method venv_config (line 57) | def venv_config(self) -> dict[str, str]: method include_system_site_packages (line 74) | def include_system_site_packages(self) -> bool: method base_paths (line 78) | def base_paths(self) -> list[str]: FILE: src/pdm/models/versions.py class Version (line 19) | class Version: method __init__ (line 35) | def __init__(self, version: tuple[VersionBit, ...] | str) -> None: method complete (line 60) | def complete(self, complete_with: VersionBit = 0, max_bits: int = 3) -... method bump (line 70) | def bump(self, idx: int = -1) -> Version: method startswith (line 85) | def startswith(self, other: Version) -> bool: method is_wildcard (line 90) | def is_wildcard(self) -> bool: method is_prerelease (line 95) | def is_prerelease(self) -> bool: method __str__ (line 99) | def __str__(self) -> str: method __repr__ (line 108) | def __repr__(self) -> str: method __eq__ (line 111) | def __eq__(self, other: Any) -> bool: method __lt__ (line 116) | def __lt__(self, other: Any) -> bool: method __gt__ (line 132) | def __gt__(self, other: Any) -> bool: method __le__ (line 135) | def __le__(self, other: Any) -> bool: method __ge__ (line 138) | def __ge__(self, other: Any) -> bool: method __getitem__ (line 142) | def __getitem__(self, idx: int) -> VersionBit: ... method __getitem__ (line 145) | def __getitem__(self, idx: slice) -> Version: ... method __getitem__ (line 147) | def __getitem__(self, idx: int | slice) -> VersionBit | Version: method __setitem__ (line 153) | def __setitem__(self, idx: int, value: VersionBit) -> None: method __hash__ (line 160) | def __hash__(self) -> int: method is_py2 (line 164) | def is_py2(self) -> bool: FILE: src/pdm/models/working_set.py class EgglinkFinder (line 15) | class EgglinkFinder(im.DistributionFinder): method find_distributions (line 17) | def find_distributions(cls, context: im.DistributionFinder.Context = d... method _search_paths (line 37) | def _search_paths(cls, name: str | None, paths: list[str]) -> Iterable... function distributions (line 46) | def distributions(path: list[str]) -> Iterable[im.Distribution]: class WorkingSet (line 61) | class WorkingSet(Mapping[str, im.Distribution]): method __init__ (line 64) | def __init__(self, paths: list[str] | None = None, shared_paths: list[... method __getitem__ (line 81) | def __getitem__(self, key: str) -> im.Distribution: method is_owned (line 84) | def is_owned(self, key: str) -> bool: method __len__ (line 87) | def __len__(self) -> int: method __iter__ (line 90) | def __iter__(self) -> Iterator[str]: method __repr__ (line 93) | def __repr__(self) -> str: FILE: src/pdm/pep582/sitecustomize.py function get_pypackages_path (line 7) | def get_pypackages_path(): function load_next_sitecustomize_py2 (line 45) | def load_next_sitecustomize_py2(): function load_next_sitecustomize_py3 (line 58) | def load_next_sitecustomize_py3(): function patch_sysconfig (line 70) | def patch_sysconfig(libpath): function main (line 109) | def main(): FILE: src/pdm/project/config.py function choices (line 28) | def choices(*choices: str) -> Callable[[str], str]: function load_config (line 37) | def load_config(file_path: Path) -> dict[str, Any]: function ensure_boolean (line 61) | def ensure_boolean(val: Any) -> bool: function split_by_comma (line 69) | def split_by_comma(val: list[str] | str) -> list[str]: class ConfigItem (line 80) | class ConfigItem: method should_show (line 101) | def should_show(self) -> bool: class Config (line 105) | class Config(MutableMapping[str, str]): method get_defaults (line 287) | def get_defaults(cls) -> dict[str, Any]: method env_map (line 295) | def env_map(self) -> Mapping[str, Any]: method add_config (line 299) | def add_config(cls, name: str, item: ConfigItem) -> None: method __init__ (line 303) | def __init__(self, config_file: Path, is_global: bool = False): method reload (line 314) | def reload(self) -> None: method load_theme (line 320) | def load_theme(self) -> rich.theme.Theme: method self_data (line 326) | def self_data(self) -> dict[str, Any]: method iter_sources (line 329) | def iter_sources(self) -> Iterator[RepositoryConfig]: method _save_config (line 334) | def _save_config(self) -> None: method __getitem__ (line 352) | def __getitem__(self, key: str) -> Any: method __setitem__ (line 378) | def __setitem__(self, key: str, value: Any) -> None: method __len__ (line 416) | def __len__(self) -> int: method __iter__ (line 419) | def __iter__(self) -> Iterator[str]: method __delitem__ (line 427) | def __delitem__(self, key: str) -> None: method get_repository_config (line 460) | def get_repository_config(self, name_or_url: str, prefix: str) -> Repo... class EnvMap (line 498) | class EnvMap(Mapping[str, Any]): method __init__ (line 499) | def __init__(self, config_items: Mapping[str, ConfigItem]) -> None: method __repr__ (line 502) | def __repr__(self) -> str: method __getitem__ (line 505) | def __getitem__(self, k: str) -> Any: method __iter__ (line 514) | def __iter__(self) -> Iterator[str]: method __len__ (line 519) | def __len__(self) -> int: FILE: src/pdm/project/core.py class Project (line 62) | class Project: method __init__ (line 75) | def __init__( method __repr__ (line 116) | def __repr__(self) -> str: method cache_dir (line 120) | def cache_dir(self) -> Path: method pyproject (line 124) | def pyproject(self) -> PyProject: method lockfile (line 128) | def lockfile(self) -> Lockfile: method set_lockfile (line 146) | def set_lockfile(self, path: str | Path) -> None: method config (line 154) | def config(self) -> Mapping[str, Any]: method scripts (line 161) | def scripts(self) -> dict[str, str | dict[str, str]]: method project_config (line 165) | def project_config(self) -> Config: method name (line 175) | def name(self) -> str: method python (line 179) | def python(self) -> PythonInfo: method python (line 193) | def python(self, value: PythonInfo) -> None: method _saved_python (line 198) | def _saved_python(self) -> str | None: method _saved_python (line 212) | def _saved_python(self, value: str | None) -> None: method resolve_interpreter (line 221) | def resolve_interpreter(self) -> PythonInfo: method get_environment (line 293) | def get_environment(self) -> BaseEnvironment: method _create_virtualenv (line 311) | def _create_virtualenv(self, python: str | None = None) -> Path: method environment (line 328) | def environment(self) -> BaseEnvironment: method environment (line 334) | def environment(self, value: BaseEnvironment | None) -> None: method python_requires (line 338) | def python_requires(self) -> PySpecSet: method get_dependencies (line 341) | def get_dependencies( method iter_groups (line 351) | def iter_groups(self) -> Iterable[str]: method _resolve_dependencies (line 359) | def _resolve_dependencies( method all_dependencies (line 479) | def all_dependencies(self) -> dict[str, Sequence[Requirement]]: method default_source (line 483) | def default_source(self) -> RepositoryConfig: method sources (line 499) | def sources(self) -> list[RepositoryConfig]: method get_sources (line 502) | def get_sources(self, expand_env: bool = True, include_stored: bool = ... method get_repository (line 532) | def get_repository( method get_locked_repository (line 548) | def get_locked_repository(self, env_spec: EnvSpec | None = None) -> Lo... method split_extras_groups (line 556) | def split_extras_groups(self, all_groups: list[str]) -> tuple[list[str... method locked_repository (line 569) | def locked_repository(self) -> LockedRepository: method get_provider (line 573) | def get_provider( method get_reporter (line 626) | def get_reporter( method write_lockfile (line 640) | def write_lockfile( method make_self_candidate (line 655) | def make_self_candidate(self, editable: bool = True) -> Candidate: method is_lockfile_hash_match (line 667) | def is_lockfile_hash_match(self) -> bool: method use_pyproject_dependencies (line 674) | def use_pyproject_dependencies( method add_dependencies (line 735) | def add_dependencies( method init_global_project (line 784) | def init_global_project(self) -> None: method backend (line 792) | def backend(self) -> BuildBackend: method cache (line 795) | def cache(self, name: str) -> Path: method make_wheel_cache (line 804) | def make_wheel_cache(self) -> WheelCache: method package_cache (line 810) | def package_cache(self) -> PackageCache: method make_candidate_info_cache (line 813) | def make_candidate_info_cache(self) -> CandidateInfoCache: method make_hash_cache (line 824) | def make_hash_cache(self) -> HashCache: method iter_interpreters (line 829) | def iter_interpreters( method find_interpreters (line 886) | def find_interpreters( method _get_python_finder (line 936) | def _get_python_finder(self, search_venv: bool = True) -> Finder: method is_distribution (line 962) | def is_distribution(self) -> bool: method get_setting (line 973) | def get_setting(self, key: str) -> Any: method env_or_setting (line 984) | def env_or_setting(self, var: str, key: str) -> Any: method get_best_matching_cpython_version (line 992) | def get_best_matching_cpython_version( method lock_targets (line 1022) | def lock_targets(self) -> list[EnvSpec]: method get_resolver (line 1025) | def get_resolver(self, allow_uv: bool = True) -> type[Resolver]: method get_synchronizer (line 1035) | def get_synchronizer(self, quiet: bool = False, allow_uv: bool = True)... FILE: src/pdm/project/lockfile/__init__.py function load_lockfile (line 38) | def load_lockfile(project: Project, path: str | Path) -> Lockfile: FILE: src/pdm/project/lockfile/base.py class Compatibility (line 27) | class Compatibility(enum.IntEnum): class Lockfile (line 34) | class Lockfile(TOMLFile, metaclass=abc.ABCMeta): method hash (line 39) | def hash(self) -> tuple[str, str]: method update_hash (line 44) | def update_hash(self, hash_value: str, algo: str = "sha256") -> None: method groups (line 50) | def groups(self) -> list[str] | None: method strategy (line 56) | def strategy(self) -> set[str]: method default_strategies (line 62) | def default_strategies(self) -> set[str]: method apply_strategy_change (line 66) | def apply_strategy_change(self, changes: Iterable[str]) -> set[str]: method compare_groups (line 82) | def compare_groups(self, groups: Iterable[str]) -> list[str]: method set_data (line 88) | def set_data(self, data: Mapping[str, Any]) -> None: method write (line 95) | def write(self, show_message: bool = True) -> None: method __getitem__ (line 100) | def __getitem__(self, key: str) -> dict: method compatibility (line 104) | def compatibility(self) -> Compatibility: method format_lockfile (line 110) | def format_lockfile(self, repository: LockedRepository, groups: Iterab... FILE: src/pdm/project/lockfile/pdmlock.py class PDMLock (line 22) | class PDMLock(Lockfile): method hash (line 29) | def hash(self) -> tuple[str, str]: method file_version (line 34) | def file_version(self) -> str: method groups (line 38) | def groups(self) -> list[str] | None: method default_strategies (line 42) | def default_strategies(self) -> set[str]: method strategy (line 46) | def strategy(self) -> set[str]: method update_hash (line 58) | def update_hash(self, hash_value: str, algo: str = "sha256") -> None: method compatibility (line 61) | def compatibility(self) -> Compatibility: method format_lockfile (line 78) | def format_lockfile(self, repository: LockedRepository, groups: Iterab... FILE: src/pdm/project/lockfile/pylock.py class PyLock (line 17) | class PyLock(Lockfile): method hash (line 21) | def hash(self) -> tuple[str, str]: method update_hash (line 24) | def update_hash(self, hash_value: str, algo: str = "sha256") -> None: method groups (line 28) | def groups(self) -> list[str] | None: method default_strategies (line 32) | def default_strategies(self) -> set[str]: method strategy (line 36) | def strategy(self) -> set[str]: method apply_strategy_change (line 39) | def apply_strategy_change(self, changes: Iterable[str]) -> set[str]: method format_lockfile (line 46) | def format_lockfile(self, repository: LockedRepository, groups: Iterab... method compatibility (line 54) | def compatibility(self) -> Compatibility: # pragma: no cover FILE: src/pdm/project/project_file.py function _remove_empty_tables (line 15) | def _remove_empty_tables(doc: dict) -> None: class PyProject (line 23) | class PyProject(TOMLFile): method _parse (line 26) | def _parse(self) -> dict[str, Any]: method open_for_write (line 31) | def open_for_write(self) -> tomlkit.TOMLDocument: method _convert_pyproject (line 38) | def _convert_pyproject(self, data: dict[str, Any]) -> None: method write (line 51) | def write(self, show_message: bool = True) -> None: method is_valid (line 69) | def is_valid(self) -> bool: method metadata (line 73) | def metadata(self) -> dict[str, Any]: method dependency_groups (line 77) | def dependency_groups(self) -> dict[str, Any]: method dev_dependencies (line 81) | def dev_dependencies(self) -> dict[str, list[Any]]: method settings (line 94) | def settings(self) -> dict[str, Any]: method build_system (line 98) | def build_system(self) -> dict[str, Any]: method resolution (line 102) | def resolution(self) -> dict[str, Any]: method allow_prereleases (line 109) | def allow_prereleases(self) -> bool | None: method content_hash (line 112) | def content_hash(self, algo: str = "sha256") -> str: method plugins (line 130) | def plugins(self) -> list[str]: FILE: src/pdm/project/toml_file.py class TOMLFile (line 13) | class TOMLFile: method __init__ (line 14) | def __init__(self, path: str | Path, *, parse: bool = True, ui: termui... method _path (line 23) | def _path(self) -> Path: method _parse (line 26) | def _parse(self) -> dict[str, Any]: method open_for_write (line 34) | def open_for_write(self) -> tomlkit.TOMLDocument: method open_for_read (line 45) | def open_for_read(self) -> dict[str, Any]: method set_data (line 51) | def set_data(self, data: dict[str, Any]) -> None: method reload (line 56) | def reload(self) -> None: method write (line 60) | def write(self) -> None: method exists (line 71) | def exists(self) -> bool: method empty (line 74) | def empty(self) -> bool: FILE: src/pdm/pytest.py class FileByteStream (line 76) | class FileByteStream(IteratorByteStream): method close (line 77) | def close(self) -> None: class LocalIndexTransport (line 81) | class LocalIndexTransport(httpx.BaseTransport): method __init__ (line 88) | def __init__( method get_file_path (line 99) | def get_file_path(self, path: str) -> Path | None: method handle_request (line 111) | def handle_request(self, request: httpx.Request) -> httpx.Response: class RepositoryData (line 133) | class RepositoryData: method __init__ (line 134) | def __init__(self, pypi_json: Path) -> None: method load_fixtures (line 138) | def load_fixtures(pypi_json: Path) -> dict[str, Any]: method add_candidate (line 141) | def add_candidate(self, name: str, version: str, requires_python: str ... method add_dependencies (line 145) | def add_dependencies(self, name: str, version: str, requirements: list... method get_raw_dependencies (line 149) | def get_raw_dependencies(self, candidate: Candidate) -> tuple[str, lis... class TestRepository (line 163) | class TestRepository(BaseRepository): method __init__ (line 168) | def __init__(self, *args: Any, **kwargs: Any) -> None: method get_data (line 172) | def get_data(self) -> dict[str, Any]: method _get_dependencies_from_fixture (line 175) | def _get_dependencies_from_fixture(self, candidate: Candidate) -> Cand... method dependency_generators (line 184) | def dependency_generators(self) -> Iterable[Callable[[Candidate], Cand... method get_hashes (line 191) | def get_hashes(self, candidate: Candidate) -> list[FileHash]: method _find_candidates (line 194) | def _find_candidates(self, requirement: Requirement, minimal_version: ... class Metadata (line 210) | class Metadata(dict): method get_all (line 211) | def get_all(self, name: str, fallback: list[str] | None = None) -> lis... method __getitem__ (line 214) | def __getitem__(self, __key: str) -> str: class Distribution (line 218) | class Distribution: method __init__ (line 221) | def __init__( method metadata (line 237) | def metadata(self) -> Metadata: method as_req (line 240) | def as_req(self) -> Requirement: method requires (line 244) | def requires(self) -> list[str]: method read_text (line 247) | def read_text(self, path: Path | str) -> None: class MockWorkingSet (line 251) | class MockWorkingSet(collections.abc.MutableMapping): method __init__ (line 256) | def __init__(self, *args: Any, **kwargs: Any) -> None: method add_distribution (line 259) | def add_distribution(self, dist: Distribution) -> None: method is_owned (line 262) | def is_owned(self, key: str) -> bool: method __getitem__ (line 265) | def __getitem__(self, key: str) -> Distribution: method __len__ (line 268) | def __len__(self) -> int: method __iter__ (line 271) | def __iter__(self) -> Iterator[str]: method __setitem__ (line 274) | def __setitem__(self, key: str, value: Distribution) -> None: method __delitem__ (line 277) | def __delitem__(self, key: str) -> None: function build_env_wheels (line 294) | def build_env_wheels() -> Iterable[Path]: function temp_env (line 307) | def temp_env(monkeypatch: pytest.MonkeyPatch) -> Generator[MutableMappin... function build_env (line 318) | def build_env(build_env_wheels: Iterable[Path], tmp_path_factory: pytest... function pypi_indexes (line 337) | def pypi_indexes() -> IndexesDefinition: function build_test_session (line 351) | def build_test_session(pypi_indexes: IndexesDefinition) -> Callable[...,... function remove_pep582_path_from_pythonpath (line 363) | def remove_pep582_path_from_pythonpath(pythonpath: str) -> str: function core (line 371) | def core() -> Iterator[Core]: function project_no_init (line 383) | def project_no_init( function project (line 425) | def project(project_no_init: Project) -> Project: function working_set (line 455) | def working_set(mocker: MockerFixture, repository: RepositoryData) -> Mo... function local_finder_artifacts (line 490) | def local_finder_artifacts() -> Path: function local_finder (line 503) | def local_finder(project_no_init: Project, local_finder_artifacts: Path)... function repository_pypi_json (line 516) | def repository_pypi_json() -> Path: function repository (line 529) | def repository( class RunResult (line 548) | class RunResult: method output (line 563) | def output(self) -> str: method outputs (line 568) | def outputs(self) -> str: method print (line 572) | def print(self) -> None: class PDMCallable (line 581) | class PDMCallable(Protocol): method __call__ (line 584) | def __call__( function pdm (line 609) | def pdm(core: Core, monkeypatch: pytest.MonkeyPatch) -> PDMCallable: function venv_backends (line 676) | def venv_backends(project: Project, request: SubRequest) -> None: FILE: src/pdm/resolver/base.py class Resolution (line 20) | class Resolution(t.NamedTuple): method candidates (line 29) | def candidates(self) -> dict[str, Candidate]: class Resolver (line 34) | class Resolver(abc.ABC): method __post_init__ (line 58) | def __post_init__(self) -> None: method resolve (line 62) | def resolve(self) -> Resolution: method project (line 67) | def project(self) -> Project: FILE: src/pdm/resolver/graph.py class OrderedSet (line 16) | class OrderedSet(AbstractSet[T]): method __init__ (line 21) | def __init__(self, iterable: Iterable[T] = ()) -> None: method __hash__ (line 24) | def __hash__(self) -> int: method __repr__ (line 27) | def __repr__(self) -> str: method __str__ (line 30) | def __str__(self) -> str: method __contains__ (line 33) | def __contains__(self, obj: object) -> bool: method __iter__ (line 36) | def __iter__(self) -> Iterator[T]: method __len__ (line 39) | def __len__(self) -> int: function _identify_parent (line 44) | def _identify_parent(parent: None) -> None: ... function _identify_parent (line 48) | def _identify_parent(parent: Candidate) -> str: ... function _identify_parent (line 51) | def _identify_parent(parent: Candidate | None) -> str | None: function merge_markers (line 55) | def merge_markers(result: Result[Requirement, Candidate, str]) -> dict[s... function _build_marker (line 100) | def _build_marker( function populate_groups (line 120) | def populate_groups(result: Result[Requirement, Candidate, str]) -> None: FILE: src/pdm/resolver/providers.py function get_provider (line 44) | def get_provider(strategy: str) -> type[BaseProvider]: function register_provider (line 48) | def register_provider(strategy: str) -> Callable[[ProviderT], ProviderT]: class BaseProvider (line 57) | class BaseProvider(AbstractProvider[Requirement, Candidate, str]): method __init__ (line 58) | def __init__( method requirement_preference (line 83) | def requirement_preference(self, requirement: Requirement) -> Comparable: method identify (line 97) | def identify(self, requirement_or_candidate: Requirement | Candidate) ... method get_preference (line 100) | def get_preference( method locked_candidates (line 137) | def locked_candidates(self) -> dict[str, list[Candidate]]: method overrides (line 141) | def overrides(self) -> dict[str, Requirement]: method _is_direct_requirement (line 165) | def _is_direct_requirement(self, requirement: Requirement) -> bool: method _find_candidates (line 172) | def _find_candidates(self, requirement: Requirement) -> Iterable[Candi... method find_matches (line 227) | def find_matches( method _compare_file_reqs (line 266) | def _compare_file_reqs(self, req1: FileRequirement, req2: FileRequirem... method is_satisfied_by (line 274) | def is_satisfied_by(self, requirement: Requirement, candidate: Candida... method _get_dependencies_from_repository (line 298) | def _get_dependencies_from_repository(self, candidate: Candidate) -> t... method get_dependencies (line 301) | def get_dependencies(self, candidate: Candidate) -> list[Requirement]: class ReusePinProvider (line 358) | class ReusePinProvider(BaseProvider): method __init__ (line 365) | def __init__( method iter_reuse_candidates (line 384) | def iter_reuse_candidates(self, identifier: str, requirement: Requirem... method get_reuse_candidate (line 390) | def get_reuse_candidate(self, identifier: str, requirement: Requiremen... method find_matches (line 396) | def find_matches( method _get_dependencies_from_repository (line 417) | def _get_dependencies_from_repository(self, candidate: Candidate) -> t... class EagerUpdateProvider (line 430) | class EagerUpdateProvider(ReusePinProvider): method iter_reuse_candidates (line 442) | def iter_reuse_candidates(self, identifier: str, requirement: Requirem... method get_dependencies (line 448) | def get_dependencies(self, candidate: Candidate) -> list[Requirement]: method get_preference (line 458) | def get_preference( class ReuseInstalledProvider (line 472) | class ReuseInstalledProvider(ReusePinProvider): method installed (line 476) | def installed(self) -> WorkingSet: method iter_reuse_candidates (line 479) | def iter_reuse_candidates(self, identifier: str, requirement: Requirem... FILE: src/pdm/resolver/python.py class PythonCandidate (line 14) | class PythonCandidate(Candidate): method format (line 15) | def format(self) -> str: class PythonRequirement (line 19) | class PythonRequirement(NamedRequirement): method from_pyspec_set (line 21) | def from_pyspec_set(cls, spec: PySpecSet) -> PythonRequirement: method as_candidate (line 24) | def as_candidate(self) -> PythonCandidate: function find_python_matches (line 28) | def find_python_matches( function is_python_satisfied_by (line 45) | def is_python_satisfied_by(requirement: Requirement, candidate: Candidat... FILE: src/pdm/resolver/reporters.py function log_title (line 22) | def log_title(title: str) -> None: class LockReporter (line 26) | class LockReporter(BaseReporter): method make_candidate_reporter (line 28) | def make_candidate_reporter(self, candidate: Candidate) -> Generator[C... method starting (line 31) | def starting(self) -> Any: method adding_requirement (line 34) | def adding_requirement(self, requirement: Requirement, parent: Candida... method ending (line 38) | def ending(self, state: State) -> Any: class RichLockReporter (line 52) | class RichLockReporter(LockReporter): method __init__ (line 53) | def __init__(self, requirements: list[Requirement], ui: UI) -> None: method make_candidate_reporter (line 75) | def make_candidate_reporter(self, candidate: Candidate) -> Generator[C... method update (line 84) | def update(self, description: str | None = None, info: str | None = No... method __rich_console__ (line 88) | def __rich_console__(self, console: Console, options: ConsoleOptions) ... method start (line 92) | def start(self) -> None: method stop (line 97) | def stop(self) -> None: method __enter__ (line 103) | def __enter__(self) -> RichLockReporter: method __exit__ (line 107) | def __exit__(self, *args: Any) -> None: method starting_round (line 110) | def starting_round(self, index: int) -> None: method starting (line 113) | def starting(self) -> None: method ending_round (line 119) | def ending_round(self, index: int, state: State) -> None: method rejecting_candidate (line 129) | def rejecting_candidate(self, criterion: Criterion, candidate: Candida... method pinning (line 144) | def pinning(self, candidate: Candidate) -> None: method resolving_conflicts (line 148) | def resolving_conflicts(self, causes: list[RequirementInformation]) ->... FILE: src/pdm/resolver/resolvelib.py class RLResolver (line 23) | class RLResolver(Resolver): method __post_init__ (line 24) | def __post_init__(self) -> None: method resolve (line 48) | def resolve(self) -> Resolution: method _do_resolve (line 78) | def _do_resolve(self) -> dict[str, Candidate]: FILE: src/pdm/resolver/uv.py class UvResolver (line 32) | class UvResolver(Resolver): method __post_init__ (line 33) | def __post_init__(self) -> None: method _build_lock_command (line 57) | def _build_lock_command(self) -> list[str | HiddenText]: method _parse_uv_lock (line 113) | def _parse_uv_lock(self, path: Path) -> Resolution: method resolve (line 189) | def resolve(self) -> Resolution: FILE: src/pdm/termui.py function is_interactive (line 47) | def is_interactive(console: Console | None = None) -> bool: function is_legacy_windows (line 54) | def is_legacy_windows(console: Console | None = None) -> bool: function style (line 61) | def style(text: str, *args: str, style: str | None = None, **kwargs: Any... function confirm (line 76) | def confirm(*args: str, **kwargs: Any) -> bool: function ask (line 83) | def ask(*args: str, prompt_type: type[str] | type[int] | None = None, **... class Verbosity (line 98) | class Verbosity(enum.IntEnum): class Emoji (line 112) | class Emoji: class DummySpinner (line 135) | class DummySpinner: method __init__ (line 140) | def __init__(self, text: str) -> None: method _show (line 143) | def _show(self) -> None: method update (line 146) | def update(self, text: str) -> None: method __enter__ (line 150) | def __enter__(self: SpinnerT) -> SpinnerT: method __exit__ (line 154) | def __exit__(self, *args: Any) -> None: class SilentSpinner (line 158) | class SilentSpinner(DummySpinner): method _show (line 159) | def _show(self) -> None: class TruncatedIO (line 163) | class TruncatedIO: method __init__ (line 166) | def __init__(self, wrapped: IO[str], max_length: int = 100 * 1024 * 10... method write (line 171) | def write(self, s: str) -> int: method __getattr__ (line 180) | def __getattr__(self, name: str) -> Any: class UI (line 184) | class UI: method __init__ (line 189) | def __init__( method set_verbosity (line 196) | def set_verbosity(self, verbosity: int) -> None: method set_theme (line 203) | def set_theme(self, theme: Theme) -> None: method echo (line 211) | def echo( method display_columns (line 231) | def display_columns(self, rows: Sequence[Sequence[str]], header: list[... method logging (line 258) | def logging(self, type_: str = "install") -> Iterator[logging.Logger]: method open_spinner (line 304) | def open_spinner(self, title: str) -> Spinner: method make_progress (line 311) | def make_progress(self, *columns: str | ProgressColumn, **kwargs: Any)... method info (line 315) | def info(self, message: str, verbosity: Verbosity = Verbosity.NORMAL) ... method deprecated (line 319) | def deprecated(self, message: str, verbosity: Verbosity = Verbosity.NO... method warn (line 323) | def warn(self, message: str, verbosity: Verbosity = Verbosity.NORMAL) ... method error (line 327) | def error(self, message: str, verbosity: Verbosity = Verbosity.QUIET) ... method _clean_logs (line 331) | def _clean_logs(self) -> None: FILE: src/pdm/utils.py function parse_version (line 48) | def parse_version(version: str) -> Version: function create_tracked_tempdir (line 55) | def create_tracked_tempdir(suffix: str | None = None, prefix: str | None... function get_trusted_hosts (line 66) | def get_trusted_hosts(sources: list[RepositoryConfig]) -> list[str]: function url_without_fragments (line 79) | def url_without_fragments(url: str) -> str: function join_list_with (line 83) | def join_list_with(items: list[Any], sep: Any) -> list[Any]: function find_project_root (line 90) | def find_project_root(cwd: str = ".") -> str | None: function convert_hashes (line 102) | def convert_hashes(files: list[FileHash]) -> dict[str, list[str]]: function get_user_email_from_git (line 118) | def get_user_email_from_git() -> tuple[str, str]: function add_ssh_scheme_to_git_uri (line 136) | def add_ssh_scheme_to_git_uri(uri: str) -> str: function atomic_open_for_write (line 150) | def atomic_open_for_write(filename: str | Path, *, mode: str = "w", enco... function cd (line 174) | def cd(path: str | Path) -> Iterator: function url_to_path (line 183) | def url_to_path(url: str) -> str: function split_path_fragments (line 223) | def split_path_fragments(path: Path) -> tuple[Path, str]: function expand_env_vars (line 229) | def expand_env_vars(credential: str, quote: bool = False, env: Mapping[s... function expand_env_vars_in_auth (line 247) | def expand_env_vars_in_auth(url: str) -> str: function path_replace (line 258) | def path_replace(pattern: str, replace_with: str, dest: str) -> str: function is_path_relative_to (line 275) | def is_path_relative_to(path: str | Path, other: str | Path) -> bool: function get_venv_like_prefix (line 283) | def get_venv_like_prefix(interpreter: str | Path) -> tuple[Path | None, ... function find_python_in_path (line 307) | def find_python_in_path(path: str | Path) -> Path | None: function get_rev_from_url (line 331) | def get_rev_from_url(url: str) -> str: function normalize_name (line 341) | def normalize_name(name: str, lowercase: bool = True) -> str: function comparable_version (line 346) | def comparable_version(version: str) -> Version: function is_egg_link (line 381) | def is_egg_link(dist: Distribution) -> bool: function is_editable (line 386) | def is_editable(dist: Distribution) -> bool: function pdm_scheme (line 397) | def pdm_scheme(base: str) -> dict[str, str]: function is_url (line 415) | def is_url(url: str) -> bool: function fs_supports_link_method (line 421) | def fs_supports_link_method(method: str) -> bool: function deprecation_warning (line 438) | def deprecation_warning(message: str, stacklevel: int = 1, raise_since: ... function is_pip_compatible_with_python (line 450) | def is_pip_compatible_with_python(python_version: Version | str) -> bool: function is_in_zipapp (line 460) | def is_in_zipapp() -> bool: function package_installed (line 466) | def package_installed(package_name: str) -> bool: function validate_project_name (line 475) | def validate_project_name(name: str) -> bool: function sanitize_project_name (line 482) | def sanitize_project_name(name: str) -> str: function is_conda_base (line 492) | def is_conda_base() -> bool: function is_conda_base_python (line 496) | def is_conda_base_python(python: Path) -> bool: function filtered_sources (line 507) | def filtered_sources(sources: list[RepositoryConfig], package: str | Non... function _source_preference (line 516) | def _source_preference(package: str | None, source: RepositoryConfig) ->... function get_file_hash (line 529) | def get_file_hash(filename: str | Path, algorithm: str = "sha256") -> str: function convert_to_datetime (line 540) | def convert_to_datetime(value: str) -> datetime: function get_all_installable_python_versions (line 546) | def get_all_installable_python_versions(build_dir: bool = False) -> list... function get_class_init_params (line 563) | def get_class_init_params(klass: type) -> set[str]: function get_requirement_from_override (line 575) | def get_requirement_from_override(name: str, value: str) -> str: function hide_url (line 588) | def hide_url(url: str) -> HiddenText: FILE: tasks/complete.py function main (line 10) | def main(): FILE: tasks/max_versions.py class PythonVersionParser (line 12) | class PythonVersionParser(HTMLParser): method __init__ (line 13) | def __init__(self, *, convert_charrefs: bool = True) -> None: method handle_starttag (line 19) | def handle_starttag(self, tag: str, attrs: list[tuple[str, str]]) -> N... method handle_endtag (line 27) | def handle_endtag(self, tag: str) -> None: method handle_data (line 34) | def handle_data(self, data: str) -> None: function dump_python_version_module (line 39) | def dump_python_version_module(dest_file) -> None: FILE: tasks/release.py function echo (line 19) | def echo(*args: str, err: bool = False, **kwargs: Any): function get_current_version (line 29) | def get_current_version() -> str: function bump_version (line 33) | def bump_version(pre: str | None = None, major: bool = False, minor: boo... function release (line 56) | def release( function parse_args (line 73) | def parse_args(argv=None): FILE: tests/cli/conftest.py function mock_run_gpg (line 21) | def mock_run_gpg(mocker: MockerFixture): function prepare_packages (line 31) | def prepare_packages(tmp_path: Path): function mock_pypi (line 43) | def mock_pypi(mocker: MockerFixture): function uploaded (line 53) | def uploaded(mocker: MockerFixture): class PublishMock (line 65) | class PublishMock: function mock_publish (line 72) | def mock_publish(mock_pypi, uploaded) -> PublishMock: function _echo (line 80) | def _echo(project): function keyring_fixture (line 98) | def keyring_fixture(mocker: MockerFixture, monkeypatch: pytest.MonkeyPat... FILE: tests/cli/test_add.py function test_add_package (line 12) | def test_add_package(project, working_set, dev_option, pdm): function test_add_package_no_lock (line 23) | def test_add_package_no_lock(project, working_set, dev_option, pdm): function test_add_command (line 33) | def test_add_command(project, pdm, mocker): function test_add_package_to_custom_group (line 39) | def test_add_package_to_custom_group(project, working_set, pdm): function test_add_package_to_custom_dev_group (line 49) | def test_add_package_to_custom_dev_group(project, working_set, pdm): function test_add_editable_package (line 61) | def test_add_editable_package(project, working_set, pdm): function test_add_editable_package_to_metadata_forbidden (line 81) | def test_add_editable_package_to_metadata_forbidden(project, pdm): function test_non_editable_override_editable (line 90) | def test_non_editable_override_editable(project, pdm): function test_add_editable_normal_dev_dependency (line 99) | def test_add_editable_normal_dev_dependency(project, pdm): function test_add_dev_dependency_with_existing_editables_group (line 112) | def test_add_dev_dependency_with_existing_editables_group(project, pdm): function test_add_remote_package_url (line 131) | def test_add_remote_package_url(project, dev_option, pdm): function test_add_no_install (line 139) | def test_add_no_install(project, working_set, pdm): function test_add_package_save_exact (line 146) | def test_add_package_save_exact(project, pdm): function test_add_package_save_wildcard (line 152) | def test_add_package_save_wildcard(project, pdm): function test_add_package_save_minimum (line 158) | def test_add_package_save_minimum(project, pdm): function test_add_package_update_reuse (line 163) | def test_add_package_update_reuse(project, repository, pdm): function test_add_package_update_eager (line 191) | def test_add_package_update_eager(project, repository, pdm): function test_add_package_with_mismatch_marker (line 219) | def test_add_package_with_mismatch_marker(project, working_set, pdm): function test_add_dependency_from_multiple_parents (line 226) | def test_add_dependency_from_multiple_parents(project, working_set, pdm): function test_add_packages_without_self (line 233) | def test_add_packages_without_self(project, working_set, pdm): function test_add_package_unconstrained_rewrite_specifier (line 240) | def test_add_package_unconstrained_rewrite_specifier(project, pdm): function test_add_cached_vcs_requirement (line 254) | def test_add_cached_vcs_requirement(project, mocker, pdm): function test_add_with_dry_run (line 273) | def test_add_with_dry_run(project, pdm): function test_add_with_prerelease (line 281) | def test_add_with_prerelease(project, working_set, pdm): function test_add_editable_package_with_extras (line 287) | def test_add_editable_package_with_extras(project, working_set, pdm): function test_add_dependency_with_extras (line 298) | def test_add_dependency_with_extras(project, pdm): function test_add_package_with_local_version (line 311) | def test_add_package_with_local_version(project, repository, working_set... function test_add_group_to_lockfile (line 319) | def test_add_group_to_lockfile(project, working_set, pdm): function test_add_group_to_lockfile_without_package (line 327) | def test_add_group_to_lockfile_without_package(project, working_set, pdm): function test_add_update_reuse_installed (line 338) | def test_add_update_reuse_installed(project, working_set, repository, pdm): function test_add_update_reuse_installed_config (line 347) | def test_add_update_reuse_installed_config(project, working_set, reposit... function test_add_disable_cache (line 357) | def test_add_disable_cache(project, pdm, working_set): function test_add_dependency_with_direct_minimal_versions (line 367) | def test_add_dependency_with_direct_minimal_versions(project, pdm, repos... function test_add_group_with_normalized_name (line 377) | def test_add_group_with_normalized_name(project, pdm, working_set): function test_add_to_dependency_group_with_include (line 390) | def test_add_to_dependency_group_with_include(project, pdm): FILE: tests/cli/test_build.py function get_tarball_names (line 12) | def get_tarball_names(path): function get_wheel_names (line 17) | def get_wheel_names(path): function test_build_command (line 22) | def test_build_command(project, pdm, mocker): function test_build_global_project_forbidden (line 39) | def test_build_global_project_forbidden(pdm): function test_build_single_module (line 44) | def test_build_single_module(fixture_project): function test_build_single_module_with_readme (line 69) | def test_build_single_module_with_readme(fixture_project): function test_build_package (line 77) | def test_build_package(fixture_project): function test_build_src_package (line 94) | def test_build_src_package(fixture_project): function test_build_package_include (line 107) | def test_build_package_include(fixture_project): function test_build_src_package_by_include (line 132) | def test_build_src_package_by_include(fixture_project): function test_build_with_config_settings (line 147) | def test_build_with_config_settings(fixture_project): function test_cli_build_with_config_settings (line 155) | def test_cli_build_with_config_settings(fixture_project, pdm): function test_build_with_no_isolation (line 163) | def test_build_with_no_isolation(pdm, project): function test_build_ignoring_pip_environment (line 171) | def test_build_ignoring_pip_environment(fixture_project, monkeypatch): FILE: tests/cli/test_cache.py function prepare_wheel_cache (line 9) | def prepare_wheel_cache(project): function prepare_http_cache (line 22) | def prepare_http_cache(project): function test_cache_list (line 35) | def test_cache_list(project, pdm): function test_cache_list_pattern (line 49) | def test_cache_list_pattern(project, pdm): function test_cache_remove_pattern (line 67) | def test_cache_remove_pattern(project, pdm): function test_cache_remove_wildcard (line 87) | def test_cache_remove_wildcard(project, pdm): function test_cache_clear (line 103) | def test_cache_clear(project, pdm): function test_cache_remove_no_pattern (line 119) | def test_cache_remove_no_pattern(project, pdm): function test_cache_info (line 125) | def test_cache_info(project, pdm): function test_hash_cache (line 157) | def test_hash_cache(project, url, hash): function test_clear_package_cache (line 162) | def test_clear_package_cache(project, pdm): FILE: tests/cli/test_completion.py function test_completion_bash (line 4) | def test_completion_bash(pdm): function test_completion_zsh (line 11) | def test_completion_zsh(pdm): function test_completion_fish (line 18) | def test_completion_fish(pdm): function test_completion_powershell (line 25) | def test_completion_powershell(pdm): function test_completion_pwsh (line 32) | def test_completion_pwsh(pdm): function test_completion_unsupported_shell (line 39) | def test_completion_unsupported_shell(pdm): function test_completion_auto_detect (line 46) | def test_completion_auto_detect(pdm, monkeypatch): function test_completion_auto_detect_unsupported (line 56) | def test_completion_auto_detect_unsupported(pdm, monkeypatch): FILE: tests/cli/test_config.py function test_config_command (line 7) | def test_config_command(project, pdm): function test_config_get_command (line 17) | def test_config_get_command(project, pdm): function test_config_set_command (line 26) | def test_config_set_command(project, pdm): function test_config_del_command (line 39) | def test_config_del_command(project, pdm): function test_config_env_var_shadowing (line 53) | def test_config_env_var_shadowing(project, pdm, monkeypatch): function test_config_project_global_precedence (line 68) | def test_config_project_global_precedence(project, pdm): function test_specify_config_file (line 76) | def test_specify_config_file(tmp_path, pdm, monkeypatch): function test_default_repository_setting (line 89) | def test_default_repository_setting(project): function test_repository_config_key_short (line 102) | def test_repository_config_key_short(project): function test_repository_overwrite_default (line 113) | def test_repository_overwrite_default(project): function test_hide_password_in_output_repository (line 126) | def test_hide_password_in_output_repository(project, pdm): function test_hide_password_in_output_pypi (line 136) | def test_hide_password_in_output_pypi(project, pdm): function test_config_get_repository (line 151) | def test_config_get_repository(project, pdm): function test_config_set_repository (line 168) | def test_config_set_repository(project): function test_config_del_repository (line 177) | def test_config_del_repository(project): function test_config_password_save_into_keyring (line 185) | def test_config_password_save_into_keyring(project, keyring): function test_keyring_operation_error_disables_itself (line 212) | def test_keyring_operation_error_disables_itself(project, keyring, mocker): FILE: tests/cli/test_fix.py function test_fix_non_existing_problem (line 5) | def test_fix_non_existing_problem(project, pdm): function test_fix_individual_problem (line 10) | def test_fix_individual_problem(project, pdm): function test_show_fix_command (line 18) | def test_show_fix_command(project, pdm): function test_show_fix_command_global_project (line 28) | def test_show_fix_command_global_project(core, pdm, project_no_init): function test_fix_project_config (line 39) | def test_fix_project_config(project, pdm): FILE: tests/cli/test_hooks.py function test_pre_script_fail_fast (line 15) | def test_pre_script_fail_fast(project, pdm, capfd, mocker): function test_pre_and_post_scripts (line 30) | def test_pre_and_post_scripts(project, pdm, capfd, _echo): function test_composite_runs_all_hooks (line 58) | def test_composite_runs_all_hooks(project, pdm, capfd, _echo): function test_skip_all_hooks_option (line 98) | def test_skip_all_hooks_option(project, pdm, capfd, option: str, _echo): function test_skip_option (line 151) | def test_skip_option(project, pdm, capfd, args, _echo): function test_skip_option_default_from_env (line 188) | def test_skip_option_default_from_env(env, expected, monkeypatch): function hooked_project (line 239) | def hooked_project(project, capfd, specs, request): function lock (line 249) | def lock(project, capfd): function test_hooks (line 256) | def test_hooks(hooked_project, pdm, capfd, specs: HookSpecs): function test_skip_option_from_signal (line 264) | def test_skip_option_from_signal(hooked_project, pdm, capfd, specs: Hook... function test_skip_all_option_from_signal (line 275) | def test_skip_all_option_from_signal(hooked_project, pdm, capfd, specs: ... function test_skip_pre_post_option_from_signal (line 288) | def test_skip_pre_post_option_from_signal(hooked_project, pdm, capfd, sp... FILE: tests/cli/test_info.py function test_info_command_packages_option (line 6) | def test_info_command_packages_option(project, pdm): function test_info_command_all_options_mutually_exclusive (line 14) | def test_info_command_all_options_mutually_exclusive(project, pdm): function test_info_command_env_output_format (line 30) | def test_info_command_env_output_format(project, pdm): function test_info_command_json_contains_all_fields (line 42) | def test_info_command_json_contains_all_fields(project, pdm): function test_info_command_default_output (line 65) | def test_info_command_default_output(project, pdm): function test_info_command_with_global_project (line 76) | def test_info_command_with_global_project(pdm, tmp_path, monkeypatch): function test_info_command_shows_venv_info (line 84) | def test_info_command_shows_venv_info(project, pdm): function test_info_command_non_local_environment (line 93) | def test_info_command_non_local_environment(project, pdm, mocker): function test_info_command_global_project_prefix (line 106) | def test_info_command_global_project_prefix(project, pdm): FILE: tests/cli/test_init.py function enable_interactive_mode (line 14) | def enable_interactive_mode(mocker): function test_init_validate_python_requires (line 21) | def test_init_validate_python_requires(project_no_init, pdm): function test_init_command (line 27) | def test_init_command(project_no_init, pdm, mocker): function test_new_command (line 52) | def test_new_command(project_no_init, pdm, mocker): function test_init_command_library (line 78) | def test_init_command_library(project_no_init, pdm, mocker): function test_init_non_interactive (line 109) | def test_init_non_interactive(project_no_init, pdm, mocker): function test_init_auto_create_venv (line 145) | def test_init_auto_create_venv(project_no_init, pdm, mocker): function test_init_auto_create_venv_specify_python (line 154) | def test_init_auto_create_venv_specify_python(project_no_init, pdm, mock... function test_init_with_backend_default_library (line 166) | def test_init_with_backend_default_library(project_no_init, pdm): function test_init_with_backend_default_library_non_interactive (line 171) | def test_init_with_backend_default_library_non_interactive(project_no_in... function test_init_with_license_non_interactive (line 176) | def test_init_with_license_non_interactive(project_no_init, pdm, mocker): function test_init_with_project_version_non_interactive (line 213) | def test_init_with_project_version_non_interactive(project_no_init, pdm,... FILE: tests/cli/test_install.py function test_sync_packages_with_group_all (line 9) | def test_sync_packages_with_group_all(project, working_set, pdm): function test_sync_packages_with_all_dev (line 20) | def test_sync_packages_with_all_dev(project, working_set, pdm): function test_sync_no_lockfile (line 31) | def test_sync_no_lockfile(project, pdm): function test_sync_clean_packages (line 37) | def test_sync_clean_packages(project, working_set, pdm): function test_sync_dry_run (line 49) | def test_sync_dry_run(project, working_set, pdm): function test_sync_only_different (line 63) | def test_sync_only_different(project, working_set, pdm): function test_sync_in_sequential_mode (line 76) | def test_sync_in_sequential_mode(project, working_set, pdm): function test_sync_packages_with_groups (line 84) | def test_sync_packages_with_groups(project, working_set, pdm): function test_sync_production_packages (line 94) | def test_sync_production_packages(project, working_set, prod_option, pdm): function test_sync_without_self (line 102) | def test_sync_without_self(project, working_set, pdm): function test_sync_with_index_change (line 108) | def test_sync_with_index_change(project, index, pdm): function test_install_command (line 134) | def test_install_command(project, pdm, mocker): function test_sync_command (line 142) | def test_sync_command(project, pdm, mocker): function test_install_with_lockfile (line 150) | def test_install_with_lockfile(project, pdm): function test_install_with_dry_run (line 163) | def test_install_with_dry_run(project, pdm, repository): function test_install_frozen_lockfile (line 171) | def test_install_frozen_lockfile(project, pdm, working_set): function test_install_no_lock_deprecated (line 180) | def test_install_no_lock_deprecated(project, pdm, working_set): function test_install_check (line 190) | def test_install_check(pdm, project, repository): function test_sync_with_clean_unselected_option (line 200) | def test_sync_with_clean_unselected_option(project, working_set, pdm): function test_install_referencing_self_package (line 211) | def test_install_referencing_self_package(project, working_set, pdm): function test_install_monorepo_with_rel_paths (line 220) | def test_install_monorepo_with_rel_paths(fixture_project, pdm, working_s... function test_install_retry (line 229) | def test_install_retry(project, pdm, mocker): function test_install_fail_fast (line 249) | def test_install_fail_fast(project, pdm, mocker): function test_install_groups_not_in_lockfile (line 263) | def test_install_groups_not_in_lockfile(project, pdm): function test_install_locked_groups (line 275) | def test_install_locked_groups(project, pdm, working_set): function test_install_groups_and_lock (line 284) | def test_install_groups_and_lock(project, pdm, working_set): function test_install_requirement_with_extras (line 295) | def test_install_requirement_with_extras(project, pdm, working_set): function test_fix_package_type_and_update (line 303) | def test_fix_package_type_and_update(fixture_project, pdm, working_set): function test_install_all_with_excluded_groups (line 321) | def test_install_all_with_excluded_groups(project, working_set, pdm, args): function test_sync_all_with_excluded_groups (line 332) | def test_sync_all_with_excluded_groups(project, working_set, pdm, args): function test_excluded_groups_ignored_if_prod_passed (line 343) | def test_excluded_groups_ignored_if_prod_passed(project, working_set, pdm): function test_excluded_groups_ignored_if_dev_passed (line 353) | def test_excluded_groups_ignored_if_dev_passed(project, working_set, pdm): function test_install_from_multi_target_lock (line 365) | def test_install_from_multi_target_lock(project, pdm, repository, nested... function test_install_from_lock_with_higher_version (line 394) | def test_install_from_lock_with_higher_version(project, pdm, working_set): function test_install_from_lock_with_lower_version (line 404) | def test_install_from_lock_with_lower_version(project, pdm, working_set): function test_install_from_lock_with_incompatible_targets (line 416) | def test_install_from_lock_with_incompatible_targets(project, pdm, pytho... function test_uv_install (line 426) | def test_uv_install(project, pdm): function test_uv_install_pep582_not_allowed (line 438) | def test_uv_install_pep582_not_allowed(project, pdm): FILE: tests/cli/test_list.py function test_list_command (line 15) | def test_list_command(project, pdm, mocker): function test_list_graph_command (line 23) | def test_list_graph_command(project, pdm, mocker): function test_list_dependency_graph (line 32) | def test_list_dependency_graph(project, pdm): function test_list_dependency_graph_include_exclude (line 42) | def test_list_dependency_graph_include_exclude(project, pdm): function test_list_dependency_graph_with_circular_forward (line 76) | def test_list_dependency_graph_with_circular_forward(project, pdm, repos... function test_list_dependency_graph_with_circular_reverse (line 90) | def test_list_dependency_graph_with_circular_reverse(project, pdm, repos... function test_list_reverse_without_graph_flag (line 115) | def test_list_reverse_without_graph_flag(project, pdm): function test_list_reverse_dependency_graph (line 128) | def test_list_reverse_dependency_graph(project, pdm): function test_list_json (line 136) | def test_list_json(project, pdm): function test_list_json_with_pattern (line 178) | def test_list_json_with_pattern(project, pdm): function test_list_json_reverse (line 194) | def test_list_json_reverse(project, pdm): function test_list_reverse_json_with_pattern (line 257) | def test_list_reverse_json_with_pattern(project, pdm): function test_list_json_with_circular_forward (line 281) | def test_list_json_with_circular_forward(project, pdm, repository): function test_list_json_with_circular_reverse (line 324) | def test_list_json_with_circular_reverse(project, pdm, repository): function test_list_field_unknown (line 366) | def test_list_field_unknown(project, pdm): function test_list_sort_unknown (line 373) | def test_list_sort_unknown(project, pdm): function test_list_freeze_banned_options (line 380) | def test_list_freeze_banned_options(project, pdm): function test_list_multiple_export_formats (line 427) | def test_list_multiple_export_formats(project, pdm): function test_list_bare (line 456) | def test_list_bare(project, pdm): function test_list_bare_sorted_name (line 472) | def test_list_bare_sorted_name(project, pdm): function test_list_with_pattern (line 492) | def test_list_with_pattern(project, pdm): function fake_working_set (line 507) | def fake_working_set(working_set): function fake_metadata (line 570) | def fake_metadata(mocker, repository): function test_list_freeze (line 586) | def test_list_freeze(project, pdm): function test_list_bare_sorted_version (line 595) | def test_list_bare_sorted_version(project, pdm): function test_list_bare_sorted_version_resolve (line 615) | def test_list_bare_sorted_version_resolve(project, pdm, working_set): function test_list_bare_fields_licences (line 637) | def test_list_bare_fields_licences(project, pdm): function test_list_csv_fields_licences (line 654) | def test_list_csv_fields_licences(project, pdm): function test_list_json_fields_licences (line 668) | def test_list_json_fields_licences(project, pdm): function test_list_markdown_fields_licences (line 682) | def test_list_markdown_fields_licences(project, pdm): function test_list_csv_include_exclude_valid (line 739) | def test_list_csv_include_exclude_valid(project, pdm): function test_list_packages_in_given_venv (line 764) | def test_list_packages_in_given_venv(project, pdm): function test_list_csv_include_exclude (line 786) | def test_list_csv_include_exclude(project, pdm): FILE: tests/cli/test_lock.py function test_lock_command (line 17) | def test_lock_command(project, pdm, mocker): function test_lock_dependencies (line 34) | def test_lock_dependencies(project, lock_format): function test_lock_refresh (line 46) | def test_lock_refresh(pdm, project, repository, args, core, mocker): function test_lock_refresh_keep_consistent (line 85) | def test_lock_refresh_keep_consistent(pdm, project, repository): function test_lock_check_no_change_success (line 96) | def test_lock_check_no_change_success(pdm, project, repository): function test_lock_check_change_fails (line 106) | def test_lock_check_change_fails(pdm, project, repository): function test_innovations_with_specified_lockfile (line 118) | def test_innovations_with_specified_lockfile(pdm, project, working_set): function test_skip_editable_dependencies_in_metadata (line 131) | def test_skip_editable_dependencies_in_metadata(project, capsys): function test_lock_selected_groups (line 142) | def test_lock_selected_groups(project, pdm): function test_lock_self_referencing_dev_groups (line 153) | def test_lock_self_referencing_dev_groups(project, pdm, to_dev): function test_lock_self_referencing_optional_groups (line 173) | def test_lock_self_referencing_optional_groups(project, pdm): function test_lock_include_groups_not_allowed (line 192) | def test_lock_include_groups_not_allowed(project, pdm): function test_lock_optional_referencing_dev_group_not_allowed (line 202) | def test_lock_optional_referencing_dev_group_not_allowed(project, pdm): function test_lock_multiple_platform_wheels (line 213) | def test_lock_multiple_platform_wheels(project, pdm): function test_lock_specific_platform_wheels (line 224) | def test_lock_specific_platform_wheels(project, pdm, platform): function test_parse_lock_strategy_group_options (line 235) | def test_parse_lock_strategy_group_options(core): function test_apply_lock_strategy_changes (line 247) | def test_apply_lock_strategy_changes(project): function test_apply_lock_strategy_changes_invalid (line 257) | def test_apply_lock_strategy_changes_invalid(project, strategy): function test_lock_direct_minimal_versions (line 262) | def test_lock_direct_minimal_versions(project, repository, pdm): function test_lock_direct_minimal_versions_real (line 274) | def test_lock_direct_minimal_versions_real(project, pdm, args): function test_lockfile_compatibility (line 295) | def test_lockfile_compatibility(project, monkeypatch, lock_version, expe... function test_lock_default_inherit_metadata (line 304) | def test_lock_default_inherit_metadata(project, pdm, mocker, working_set): function test_lock_inherit_metadata_strategy (line 318) | def test_lock_inherit_metadata_strategy(project, pdm, mocker, working_set): function test_lock_exclude_newer (line 332) | def test_lock_exclude_newer(project, pdm): function test_lock_all_with_excluded_groups (line 355) | def test_lock_all_with_excluded_groups(project, pdm, args): function test_forbidden_lock_target_options (line 374) | def test_forbidden_lock_target_options(project, pdm, args): function test_lock_for_multiple_targets (line 381) | def test_lock_for_multiple_targets(project, pdm, repository, nested): function test_lock_with_override_file (line 429) | def test_lock_with_override_file(project, pdm, constraint): function test_pylock_add_remove_strategy (line 438) | def test_pylock_add_remove_strategy(project, pdm): function test_lock_with_invalid_python_requirement (line 453) | def test_lock_with_invalid_python_requirement(project, pdm): FILE: tests/cli/test_others.py function test_build_distributions (line 11) | def test_build_distributions(project): function test_project_no_init_error (line 23) | def test_project_no_init_error(project_no_init, pdm): function test_help_option (line 30) | def test_help_option(pdm): function test_pep582_option (line 35) | def test_pep582_option(pdm): function test_info_command (line 40) | def test_info_command(project, pdm): function test_info_command_json (line 55) | def test_info_command_json(project, pdm): function test_info_global_project (line 68) | def test_info_global_project(pdm, tmp_path): function test_info_with_multiple_venvs (line 74) | def test_info_with_multiple_venvs(pdm, project): function test_global_project_other_location (line 91) | def test_global_project_other_location(pdm, project): function test_uncaught_error (line 96) | def test_uncaught_error(pdm, mocker): function test_import_other_format_file (line 114) | def test_import_other_format_file(project, pdm, filename): function test_import_requirement_no_overwrite (line 120) | def test_import_requirement_no_overwrite(project, pdm, tmp_path): function test_search_package (line 131) | def test_search_package(pdm, tmp_path): function test_show_package_on_pypi (line 140) | def test_show_package_on_pypi(pdm): function test_show_self_package (line 158) | def test_show_self_package(project, pdm): function test_export_to_requirements_txt (line 167) | def test_export_to_requirements_txt(pdm, fixture_project): function test_export_doesnt_include_dep_with_extras (line 205) | def test_export_doesnt_include_dep_with_extras(pdm, fixture_project, ext... function test_completion_command (line 216) | def test_completion_command(pdm): function test_show_update_hint (line 223) | def test_show_update_hint(pdm, project, monkeypatch): function test_export_with_platform_markers (line 236) | def test_export_with_platform_markers(pdm, project): function test_export_with_vcs_deps (line 254) | def test_export_with_vcs_deps(pdm, project): function test_keep_log_on_failure (line 265) | def test_keep_log_on_failure(pdm, project, tmp_path): function test_truncated_log_on_failure (line 274) | def test_truncated_log_on_failure(pdm, project, tmp_path, monkeypatch): FILE: tests/cli/test_outdated.py function test_outdated (line 10) | def test_outdated(project, pdm, index): FILE: tests/cli/test_publish.py function test_package_parse_metadata (line 21) | def test_package_parse_metadata(filename): function test_parse_metadata_with_non_ascii_chars (line 38) | def test_parse_metadata_with_non_ascii_chars(): function test_package_add_signature (line 47) | def test_package_add_signature(tmp_path): function test_package_call_gpg_sign (line 54) | def test_package_call_gpg_sign(): function test_repository_get_release_urls (line 66) | def test_repository_get_release_urls(project): function test_publish_pick_up_asc_files (line 90) | def test_publish_pick_up_asc_files(project, uploaded, pdm): function test_publish_package_with_signature (line 110) | def test_publish_package_with_signature(project, uploaded, pdm): function test_publish_and_build_in_one_run (line 124) | def test_publish_and_build_in_one_run(fixture_project, pdm, mock_pypi): function test_publish_cli_args_and_env_var_precedence (line 134) | def test_publish_cli_args_and_env_var_precedence(project, monkeypatch, m... function test_repository_get_credentials_from_keyring (line 212) | def test_repository_get_credentials_from_keyring(project, keyring, mocker): function test_repository_get_token_from_oidc (line 220) | def test_repository_get_token_from_oidc(project, mocker, httpx_mock): function test_repository_get_token_from_oidc_request_error (line 243) | def test_repository_get_token_from_oidc_request_error(project, mocker, h... function test_repository_get_token_from_oidc_unsupported_platform (line 258) | def test_repository_get_token_from_oidc_unsupported_platform(project, mo... function test_repository_get_token_misconfigured_github (line 278) | def test_repository_get_token_misconfigured_github(project, monkeypatch,... FILE: tests/cli/test_python.py function mock_install (line 13) | def mock_install(mocker): function test_install_python (line 64) | def test_install_python(project, pdm, mock_install): function test_install_python_best_match (line 83) | def test_install_python_best_match(project, pdm, mock_install, mocker): function test_install_python_min_match (line 95) | def test_install_python_min_match(project, pdm, mock_install, mocker): function test_use_auto_install_missing (line 107) | def test_use_auto_install_missing(project, pdm, mock_install, mocker): function test_use_auto_install_pick_latest (line 119) | def test_use_auto_install_pick_latest(project, pdm, mock_install, mocker): function test_use_no_auto_install (line 133) | def test_use_no_auto_install(project, pdm, mocker): function test_use_auto_install_strategy_max (line 142) | def test_use_auto_install_strategy_max(project, pdm, mock_install, mocker): function test_use_auto_install_strategy_min (line 156) | def test_use_auto_install_strategy_min(project, pdm, mock_install, mocker): function test_link_python (line 170) | def test_link_python(project, pdm): function test_link_python_invalid_interpreter (line 187) | def test_link_python_invalid_interpreter(project, pdm): function test_find_python (line 200) | def test_find_python(project, pdm, mock_install): FILE: tests/cli/test_remove.py function test_remove_command (line 7) | def test_remove_command(project, pdm, mocker): function test_remove_editable_packages_while_keeping_normal (line 14) | def test_remove_editable_packages_while_keeping_normal(project, pdm): function test_remove_package (line 26) | def test_remove_package(project, working_set, dev_option, pdm): function test_remove_package_no_lock (line 34) | def test_remove_package_no_lock(project, working_set, dev_option, pdm): function test_remove_package_with_dry_run (line 43) | def test_remove_package_with_dry_run(project, working_set, pdm): function test_remove_package_no_sync (line 53) | def test_remove_package_no_sync(project, working_set, pdm): function test_remove_package_not_exist (line 62) | def test_remove_package_not_exist(project, pdm): function test_remove_package_exist_in_multi_groups (line 68) | def test_remove_package_exist_in_multi_groups(project, working_set, pdm): function test_remove_no_package (line 78) | def test_remove_no_package(project, pdm): function test_remove_package_wont_break_toml (line 84) | def test_remove_package_wont_break_toml(project_no_init, pdm): function test_remove_group_not_in_lockfile (line 100) | def test_remove_group_not_in_lockfile(project, pdm, mocker): function test_remove_exclude_non_existing_dev_group_in_lockfile (line 111) | def test_remove_exclude_non_existing_dev_group_in_lockfile(project, pdm): function test_remove_package_with_group_include (line 120) | def test_remove_package_with_group_include(project, pdm): FILE: tests/cli/test_run.py function _args (line 17) | def _args(project): function test_pep582_launcher_for_python_interpreter (line 31) | def test_pep582_launcher_for_python_interpreter(project, local_finder, p... function test_auto_isolate_site_packages (line 44) | def test_auto_isolate_site_packages(project, pdm): function test_run_with_site_packages (line 65) | def test_run_with_site_packages(project, pdm): function test_run_command_not_found (line 88) | def test_run_command_not_found(pdm): function test_run_pass_exit_code (line 94) | def test_run_pass_exit_code(pdm): function test_run_cmd_script (line 99) | def test_run_cmd_script(project, pdm): function test_run_cmd_script_with_array (line 106) | def test_run_cmd_script_with_array(project, pdm): function test_run_script_pass_project_root (line 113) | def test_run_script_pass_project_root(project, pdm, capfd): function test_run_shell_script (line 129) | def test_run_shell_script(project, pdm): function test_run_script_with_relative_path (line 143) | def test_run_script_with_relative_path(project, pdm, capfd): function test_run_non_existing_local_script (line 155) | def test_run_non_existing_local_script(project, pdm): function test_run_shell_script_with_args_placeholder (line 169) | def test_run_shell_script_with_args_placeholder(project, pdm, args, expe... function test_run_shell_script_with_args_placeholder_with_default (line 190) | def test_run_shell_script_with_args_placeholder_with_default(project, pd... function test_run_call_script (line 204) | def test_run_call_script(project, pdm): function test_run_script_with_extra_args (line 232) | def test_run_script_with_extra_args(project, pdm, capfd): function test_run_script_with_args_placeholder (line 263) | def test_run_script_with_args_placeholder(project, pdm, capfd, script, a... function test_run_script_with_args_placeholder_with_default (line 294) | def test_run_script_with_args_placeholder_with_default(project, pdm, cap... function test_run_shell_script_with_pdm_placeholder (line 311) | def test_run_shell_script_with_pdm_placeholder(project, pdm): function test_run_expand_env_vars (line 325) | def test_run_expand_env_vars(project, pdm, capfd, monkeypatch): function test_run_expand_env_vars_from_config (line 354) | def test_run_expand_env_vars_from_config(project, pdm, capfd): function test_run_script_with_env_defined (line 383) | def test_run_script_with_env_defined(project, pdm, capfd): function test_run_script_with_dotenv_file (line 393) | def test_run_script_with_dotenv_file(project, pdm, capfd, monkeypatch): function test_run_script_override_global_env (line 413) | def test_run_script_override_global_env(project, pdm, capfd): function test_run_show_list_of_scripts (line 429) | def test_run_show_list_of_scripts(project, pdm): function test_run_show_list_of_scripts_hide_internals (line 451) | def test_run_show_list_of_scripts_hide_internals(project, pdm): function test_run_json_list_of_scripts (line 462) | def test_run_json_list_of_scripts(project, pdm): function test_run_with_another_project_root (line 532) | def test_run_with_another_project_root(project, pdm, capfd, explicit_pyt... function test_import_another_sitecustomize (line 549) | def test_import_another_sitecustomize(project, pdm, capfd): function test_run_with_patched_sysconfig (line 571) | def test_run_with_patched_sysconfig(project, pdm, capfd): function test_run_composite (line 587) | def test_run_composite(project, pdm, capfd, _echo): function test_composite_stops_on_first_failure (line 601) | def test_composite_stops_on_first_failure(project, pdm, capfd): function test_composite_keep_going_on_failure (line 617) | def test_composite_keep_going_on_failure(project, pdm, capfd): function test_composite_inherit_env (line 633) | def test_composite_inherit_env(project, pdm, capfd, _echo): function test_composite_fail_on_first_missing_task (line 662) | def test_composite_fail_on_first_missing_task(project, pdm, capfd, _echo): function test_composite_fails_on_recursive_script (line 677) | def test_composite_fails_on_recursive_script(project, pdm): function test_composite_runs_all_hooks (line 701) | def test_composite_runs_all_hooks(project, pdm, capfd, _echo): function test_composite_pass_parameters_to_subtasks (line 723) | def test_composite_pass_parameters_to_subtasks(project, pdm, capfd, _args): function test_composite_can_pass_parameters (line 745) | def test_composite_can_pass_parameters(project, pdm, capfd, _args): function test_composite_only_pass_parameters_to_subtasks_with_args (line 774) | def test_composite_only_pass_parameters_to_subtasks_with_args(project, p... function test_composite_only_pass_parameters_to_subtasks_with_args_with_default (line 795) | def test_composite_only_pass_parameters_to_subtasks_with_args_with_defau... function test_composite_hooks_inherit_env (line 809) | def test_composite_hooks_inherit_env(project, pdm, capfd, _echo): function test_composite_inherit_env_in_cascade (line 825) | def test_composite_inherit_env_in_cascade(project, pdm, capfd, _echo): function test_composite_inherit_dotfile (line 851) | def test_composite_inherit_dotfile(project, pdm, capfd, _echo): function test_resolve_env_vars_in_dotfile (line 869) | def test_resolve_env_vars_in_dotfile(project, pdm, capfd, _echo): function test_composite_can_have_commands (line 882) | def test_composite_can_have_commands(project, pdm, capfd): function test_run_shortcut (line 895) | def test_run_shortcut(project, pdm, capfd): function test_run_shortcuts_dont_override_commands (line 907) | def test_run_shortcuts_dont_override_commands(project, pdm, capfd, mocker): function test_run_shortcut_fail_with_usage_if_script_not_found (line 923) | def test_run_shortcut_fail_with_usage_if_script_not_found(project, pdm): function test_empty_positional_args_still_display_usage (line 937) | def test_empty_positional_args_still_display_usage(project, pdm, args): function test_empty_positional_args_display_help (line 943) | def test_empty_positional_args_display_help(project, pdm): function test_run_script_changing_working_dir (line 951) | def test_run_script_changing_working_dir(project, pdm, capfd): function test_run_script_with_inline_metadata (line 963) | def test_run_script_with_inline_metadata(project, pdm, local_finder, loc... function test_run_script_pass_run_cwd (line 1000) | def test_run_script_pass_run_cwd(project, pdm, capfd): function test_run_script_pass_run_cwd_to_original_working_dir_when_working_dir_of_script_is_changed (line 1016) | def test_run_script_pass_run_cwd_to_original_working_dir_when_working_di... function test_run_script_default_verbosity (line 1033) | def test_run_script_default_verbosity(project, pdm): function test_run_script_default_verbosity_with_show_header (line 1044) | def test_run_script_default_verbosity_with_show_header(project, pdm): function test_run_script_default_verbosity_with_show_header_no_help (line 1057) | def test_run_script_default_verbosity_with_show_header_no_help(project, ... function test_run_script_verbose (line 1069) | def test_run_script_verbose(project, pdm): function test_run_composite_script_default_verbosity_with_show_header (line 1081) | def test_run_composite_script_default_verbosity_with_show_header(project... function test_run_composite_script_default_verbosity_with_show_header_and_help (line 1100) | def test_run_composite_script_default_verbosity_with_show_header_and_hel... function test_run_composite_script_verbose (line 1120) | def test_run_composite_script_verbose(project, pdm): FILE: tests/cli/test_search.py function test_print_results_empty_hits (line 6) | def test_print_results_empty_hits(mocker): function test_print_results_with_hits (line 17) | def test_print_results_with_hits(mocker): function test_print_results_with_installed_package (line 41) | def test_print_results_with_installed_package(mocker): function test_print_results_with_terminal_width (line 65) | def test_print_results_with_terminal_width(mocker): function test_print_results_unicode_error (line 81) | def test_print_results_unicode_error(mocker): function test_search_command_deprecation_warning (line 98) | def test_search_command_deprecation_warning(pdm): FILE: tests/cli/test_self_command.py function mock_distribution (line 9) | def mock_distribution(metadata, entry_points=()): function mock_pip (line 22) | def mock_pip(mocker): function mock_all_distributions (line 28) | def mock_all_distributions(mocker): function mock_latest_pdm_version (line 33) | def mock_latest_pdm_version(mocker): function test_self_list (line 40) | def test_self_list(pdm): function test_self_list_plugins (line 48) | def test_self_list_plugins(pdm): function test_self_add (line 55) | def test_self_add(pdm, mock_pip): function test_self_remove (line 65) | def test_self_remove(pdm, mock_pip, mocker, monkeypatch): function test_self_update (line 109) | def test_self_update(pdm, mock_pip, mock_latest_pdm_version, args, expec... function test_self_update_already_latest (line 120) | def test_self_update_already_latest(pdm, mock_pip, mock_latest_pdm_versi... FILE: tests/cli/test_show.py function test_filter_stable_with_stable_version (line 8) | def test_filter_stable_with_stable_version(mocker): function test_filter_stable_with_prerelease_alpha (line 16) | def test_filter_stable_with_prerelease_alpha(mocker): function test_filter_stable_with_prerelease_beta (line 23) | def test_filter_stable_with_prerelease_beta(mocker): function test_filter_stable_with_prerelease_rc (line 30) | def test_filter_stable_with_prerelease_rc(mocker): function test_filter_stable_with_dev_version (line 37) | def test_filter_stable_with_dev_version(mocker): function test_show_command_with_specific_metadata_keys (line 45) | def test_show_command_with_specific_metadata_keys(pdm): function test_show_command_with_multiple_metadata_keys (line 57) | def test_show_command_with_multiple_metadata_keys(pdm): function test_show_command_non_distribution_project (line 64) | def test_show_command_non_distribution_project(project, pdm): FILE: tests/cli/test_template.py function test_non_pyproject_template_disallowed (line 9) | def test_non_pyproject_template_disallowed(project_no_init): function test_module_project_template (line 15) | def test_module_project_template(project_no_init): function test_module_project_template_generate_application (line 34) | def test_module_project_template_generate_application(project_no_init): function test_package_project_template (line 49) | def test_package_project_template(project_no_init): FILE: tests/cli/test_update.py function test_update_packages_with_top (line 5) | def test_update_packages_with_top(project, pdm): function test_update_command (line 11) | def test_update_command(project, pdm, mocker): function test_update_ignore_constraints (line 18) | def test_update_ignore_constraints(project, repository, pdm): function test_update_all_packages (line 43) | def test_update_all_packages(project, repository, pdm, strategy): function test_update_no_lock (line 70) | def test_update_no_lock(project, working_set, repository, pdm): function test_update_dry_run (line 80) | def test_update_dry_run(project, repository, pdm): function test_update_top_packages_dry_run (line 105) | def test_update_top_packages_dry_run(project, repository, pdm): function test_update_specified_packages (line 126) | def test_update_specified_packages(project, repository, pdm): function test_update_specified_packages_eager_mode (line 148) | def test_update_specified_packages_eager_mode(project, repository, pdm): function test_update_transitive (line 171) | def test_update_transitive(project, repository, pdm): function test_update_transitive_nonexistent_dependencies (line 193) | def test_update_transitive_nonexistent_dependencies(project, pdm): function test_update_package_wrong_group (line 201) | def test_update_package_wrong_group(project, pdm): function test_update_transitive_non_transitive_dependencies (line 209) | def test_update_transitive_non_transitive_dependencies(project, reposito... function test_update_specified_packages_eager_mode_config (line 233) | def test_update_specified_packages_eager_mode_config(project, repository... function test_update_with_package_and_groups_argument (line 257) | def test_update_with_package_and_groups_argument(project, pdm): function test_update_with_prerelease_without_package_argument (line 268) | def test_update_with_prerelease_without_package_argument(project, pdm): function test_update_existing_package_with_prerelease (line 274) | def test_update_existing_package_with_prerelease(project, working_set, p... function test_update_package_with_extras (line 295) | def test_update_package_with_extras(project, repository, working_set, pdm): function test_update_groups_in_lockfile (line 309) | def test_update_groups_in_lockfile(project, working_set, pdm, repository): function test_update_group_not_in_lockfile (line 320) | def test_update_group_not_in_lockfile(project, working_set, pdm): function test_update_dependency_group_with_include (line 329) | def test_update_dependency_group_with_include(project, pdm): FILE: tests/cli/test_use.py function test_use_command (line 13) | def test_use_command(project, pdm): function test_use_python_by_version (line 28) | def test_use_python_by_version(project, pdm): function test_use_wrapper_python (line 35) | def test_use_wrapper_python(project): function test_use_invalid_wrapper_python (line 48) | def test_use_invalid_wrapper_python(project): function test_use_remember_last_selection (line 59) | def test_use_remember_last_selection(project, mocker): function test_use_venv_python (line 74) | def test_use_venv_python(project, pdm): function test_use_auto_install_and_no_auto_install_are_mutual_exclusive (line 88) | def test_use_auto_install_and_no_auto_install_are_mutual_exclusive(proje... FILE: tests/cli/test_utils.py function test_help_with_unknown_arguments (line 1) | def test_help_with_unknown_arguments(pdm): function test_output_similar_command_when_typo (line 7) | def test_output_similar_command_when_typo(pdm): FILE: tests/cli/test_venv.py function with_pip (line 16) | def with_pip(request): function fake_create (line 21) | def fake_create(monkeypatch): function test_venv_create (line 34) | def test_venv_create(pdm, project): function test_venv_create_in_project (line 45) | def test_venv_create_in_project(pdm, project): function test_venv_create_other_location (line 56) | def test_venv_create_other_location(pdm, project): function test_venv_show_path (line 66) | def test_venv_show_path(pdm, project): function test_venv_list (line 79) | def test_venv_list(pdm, project): function test_venv_remove (line 91) | def test_venv_remove(pdm, project): function test_venv_recreate (line 108) | def test_venv_recreate(pdm, project): function test_venv_activate (line 121) | def test_venv_activate(pdm, mocker, project): function test_venv_activate_tcsh (line 146) | def test_venv_activate_tcsh(pdm, mocker, project): function test_venv_activate_custom_prompt (line 159) | def test_venv_activate_custom_prompt(pdm, mocker, project): function test_venv_activate_project_without_python (line 169) | def test_venv_activate_project_without_python(pdm, project): function test_venv_activate_error (line 177) | def test_venv_activate_error(pdm, project): function test_venv_activate_no_shell (line 192) | def test_venv_activate_no_shell(pdm, mocker, project): function test_venv_auto_create (line 217) | def test_venv_auto_create(pdm, mocker, project, keep_pypackages): function test_venv_purge (line 233) | def test_venv_purge(pdm, project): function test_venv_purge_force (line 247) | def test_venv_purge_force(pdm, project): function test_venv_purge_interactive (line 262) | def test_venv_purge_interactive(pdm, user_choices, is_path_exists, proje... function test_virtualenv_backend_create (line 272) | def test_virtualenv_backend_create(project, mocker, with_pip): function test_venv_backend_create (line 292) | def test_venv_backend_create(project, mocker, with_pip): function test_conda_backend_create (line 310) | def test_conda_backend_create(project, mocker, with_pip): FILE: tests/conftest.py function index (line 28) | def index() -> dict[str, bytes]: function disable_keyring (line 33) | def disable_keyring(): function pypi_indexes (line 38) | def pypi_indexes(index) -> IndexesDefinition: function pytest_runtest_setup (line 54) | def pytest_runtest_setup(item): class MockGit (line 59) | class MockGit(Git): method fetch_new (line 60) | def fetch_new(self, location, url, rev, args): method get_revision (line 65) | def get_revision(self, location: Path) -> str: method is_immutable_revision (line 68) | def is_immutable_revision(self, location, link) -> bool: function repository_pypi_json (line 74) | def repository_pypi_json() -> Path: function build_env_wheels (line 79) | def build_env_wheels() -> Iterable[Path]: function local_finder_artifacts (line 97) | def local_finder_artifacts() -> Path: function copytree (line 101) | def copytree(src: Path, dst: Path) -> None: function fixture_project (line 112) | def fixture_project(project_no_init: Project, request: pytest.FixtureReq... function vcs (line 137) | def vcs(monkeypatch): function is_editable (line 143) | def is_editable(request): function dev_option (line 148) | def dev_option(request) -> Iterable[str]: FILE: tests/environments/test_environment.py function local_env (line 13) | def local_env(project): function test_packages_path_compat_suffix_32 (line 19) | def test_packages_path_compat_suffix_32(local_env, tmp_path, monkeypatch): function test_local_get_paths_headers_override (line 31) | def test_local_get_paths_headers_override(local_env): function test_pip_command_uses_existing_module (line 43) | def test_pip_command_uses_existing_module(monkeypatch, project): function test_pip_command_download_fallback (line 67) | def test_pip_command_download_fallback(monkeypatch, project): function test_pip_command_installed (line 104) | def test_pip_command_installed(monkeypatch, project): function test_script_kind_posix (line 117) | def test_script_kind_posix(local_env): function test_which_python_variants (line 123) | def test_which_python_variants(local_env): function test_process_env_includes_scripts_first (line 131) | def test_process_env_includes_scripts_first(local_env): FILE: tests/environments/test_shebangs.py function test_get_shebang_path (line 20) | def test_get_shebang_path(executable, is_launcher, expected): function test_is_console_script_unix_and_binary (line 24) | def test_is_console_script_unix_and_binary(): function test_replace_shebang_unix (line 43) | def test_replace_shebang_unix(tmp_path: Path, content: bytes, new_exec: ... function test_update_shebangs_changes_scripts_header (line 51) | def test_update_shebangs_changes_scripts_header(project): function test_update_shebangs_ignores_non_target_files_and_dirs (line 66) | def test_update_shebangs_ignores_non_target_files_and_dirs(project): function test_replace_shebang_early_return_when_not_console (line 83) | def test_replace_shebang_early_return_when_not_console(tmp_path: Path): function _zip_with_main_bytes (line 91) | def _zip_with_main_bytes() -> bytes: function test_is_console_script_windows_zip (line 98) | def test_is_console_script_windows_zip(monkeypatch): function test_is_console_script_windows_text_shebang (line 106) | def test_is_console_script_windows_text_shebang(monkeypatch): function test_replace_shebang_windows_zip_no_change (line 112) | def test_replace_shebang_windows_zip_no_change(monkeypatch, tmp_path: Pa... FILE: tests/fixtures/projects/test-plugin-pdm/hello.py class HelloCommand (line 4) | class HelloCommand(BaseCommand): method add_arguments (line 7) | def add_arguments(self, parser): method handle (line 10) | def handle(self, project, options): function main (line 14) | def main(core): FILE: tests/fixtures/projects/test-plugin/hello.py class HelloCommand (line 4) | class HelloCommand(BaseCommand): method add_arguments (line 7) | def add_arguments(self, parser): method handle (line 10) | def handle(self, project, options): function main (line 14) | def main(core): FILE: tests/models/test_backends.py function _setup_backend (line 12) | def _setup_backend(project: Project, backend: str): function test_project_backend (line 30) | def test_project_backend(project, working_set, backend, pdm): function test_hatch_expand_variables (line 55) | def test_hatch_expand_variables(monkeypatch): function test_pdm_backend_expand_variables (line 66) | def test_pdm_backend_expand_variables(monkeypatch): function test_get_relative_path (line 87) | def test_get_relative_path(url, path): FILE: tests/models/test_candidates.py function to_lines (line 16) | def to_lines(requirements: list[Requirement]) -> list[str]: function test_parse_local_directory_metadata (line 21) | def test_parse_local_directory_metadata(project, is_editable): function test_parse_vcs_metadata (line 34) | def test_parse_vcs_metadata(project, is_editable): function test_parse_artifact_metadata (line 60) | def test_parse_artifact_metadata(requirement_line, project): function test_parse_metadata_with_extras (line 72) | def test_parse_metadata_with_extras(project): function test_parse_remote_link_metadata (line 86) | def test_parse_remote_link_metadata(project): function test_expand_project_root_in_url (line 111) | def test_expand_project_root_in_url(req_str, core): function test_parse_project_file_on_build_error (line 131) | def test_parse_project_file_on_build_error(project): function test_parse_project_file_on_build_error_with_extras (line 143) | def test_parse_project_file_on_build_error_with_extras(project): function test_parse_project_file_on_build_error_no_dep (line 155) | def test_parse_project_file_on_build_error_no_dep(project): function test_parse_poetry_project_metadata (line 164) | def test_parse_poetry_project_metadata(project, is_editable): function test_parse_flit_project_metadata (line 174) | def test_parse_flit_project_metadata(project, is_editable): function test_vcs_candidate_in_subdirectory (line 186) | def test_vcs_candidate_in_subdirectory(project, is_editable): function test_sdist_candidate_with_wheel_cache (line 203) | def test_sdist_candidate_with_wheel_cache(project, mocker): function test_cache_vcs_immutable_revision (line 226) | def test_cache_vcs_immutable_revision(project): function test_cache_egg_info_sdist (line 246) | def test_cache_egg_info_sdist(project): function test_invalidate_incompatible_wheel_link (line 253) | def test_invalidate_incompatible_wheel_link(project): function test_legacy_pep345_tag_link (line 271) | def test_legacy_pep345_tag_link(project): function test_ignore_invalid_py_version (line 279) | def test_ignore_invalid_py_version(project): function test_find_candidates_from_find_links (line 286) | def test_find_candidates_from_find_links(project): function test_parse_metadata_from_pep621 (line 297) | def test_parse_metadata_from_pep621(project, mocker): function test_parse_metadata_with_dynamic_fields (line 307) | def test_parse_metadata_with_dynamic_fields(project, local_finder): function test_get_metadata_for_non_existing_path (line 315) | def test_get_metadata_for_non_existing_path(project): FILE: tests/models/test_marker.py function test_split_pyspec (line 26) | def test_split_pyspec(original, marker, py_spec): function test_match_env_spec (line 52) | def test_match_env_spec(marker, env_spec, expected): FILE: tests/models/test_requirements.py function filter_requirements_to_lines (line 70) | def filter_requirements_to_lines( function test_convert_req_dict_to_req_line (line 80) | def test_convert_req_dict_to_req_line(req, result): function test_illegal_requirement_line (line 93) | def test_illegal_requirement_line(line, expected): function test_not_supported_editable_requirement (line 99) | def test_not_supported_editable_requirement(line): function test_filter_requirements_with_extras (line 104) | def test_filter_requirements_with_extras(): FILE: tests/models/test_session.py function test_session_sources_all_proxy (line 9) | def test_session_sources_all_proxy(project: Project, mocker, monkeypatch): FILE: tests/models/test_setup_parsing.py function test_parse_setup_cfg (line 41) | def test_parse_setup_cfg(content, result, tmp_path): function test_parse_setup_py (line 98) | def test_parse_setup_py(content, result, tmp_path): function test_parse_pyproject_toml (line 103) | def test_parse_pyproject_toml(tmp_path): FILE: tests/models/test_setup_parsing_extra.py function test_setup_update_truthiness_semantics (line 11) | def test_setup_update_truthiness_semantics(): function test_parse_setup_py_with_kwargs_dict_and_variables (line 20) | def test_parse_setup_py_with_kwargs_dict_and_variables(tmp_path): function test_setup_as_dict (line 42) | def test_setup_as_dict(): function test_parse_setup_py_no_setup_call_branches (line 77) | def test_parse_setup_py_no_setup_call_branches(tmp_path, content): function test_parse_setup_py_irrelevant_call_and_assignment (line 82) | def test_parse_setup_py_irrelevant_call_and_assignment(tmp_path): function test_parse_setup_cfg_missing_sections_and_options (line 111) | def test_parse_setup_cfg_missing_sections_and_options(tmp_path, content,... function test_find_setup_call_in_function_and_if_main (line 116) | def test_find_setup_call_in_function_and_if_main(tmp_path): function test_if_main_direct_setup_hits_concat_body_return (line 132) | def test_if_main_direct_setup_hits_concat_body_return(tmp_path): function test_from_directory_precedence_and_falsy_update (line 144) | def test_from_directory_precedence_and_falsy_update(tmp_path): function test_read_pyproject_toml_project_error_returns_empty (line 192) | def test_read_pyproject_toml_project_error_returns_empty(tmp_path, mocker): function test_read_pyproject_toml_metaconverter_error_uses_partial_data_and_logs (line 202) | def test_read_pyproject_toml_metaconverter_error_uses_partial_data_and_l... function test_setup_distribution_metadata_and_requires_markers (line 235) | def test_setup_distribution_metadata_and_requires_markers(): function test_read_text_and_locate_file_smoke (line 274) | def test_read_text_and_locate_file_smoke(): function test_find_setup_call_skips_non_call_expr_then_finds_setup (line 283) | def test_find_setup_call_skips_non_call_expr_then_finds_setup(tmp_path): function test_find_setup_call_skips_non_functiondef_element_then_finds_setup (line 295) | def test_find_setup_call_skips_non_functiondef_element_then_finds_setup(... function test_find_setup_call_skips_non_setup_call_then_finds_setup (line 307) | def test_find_setup_call_skips_non_setup_call_then_finds_setup(tmp_path): function test_install_requires_name_resolves_to_non_list (line 320) | def test_install_requires_name_resolves_to_non_list(tmp_path): function test_extras_require_name_is_undefined_returns_empty (line 334) | def test_extras_require_name_is_undefined_returns_empty(tmp_path): function test_extras_require_name_resolves_to_non_dict (line 346) | def test_extras_require_name_resolves_to_non_dict(tmp_path): function test_single_string_name_variable_not_string (line 359) | def test_single_string_name_variable_not_string(tmp_path): function test_extras_require_from_kwargs_non_dict_non_call_returns_empty (line 372) | def test_extras_require_from_kwargs_non_dict_non_call_returns_empty(tmp_... function test_extras_require_from_kwargs_call_func_is_attribute_returns_empty (line 386) | def test_extras_require_from_kwargs_call_func_is_attribute_returns_empty... function test_extras_require_from_kwargs_call_func_name_not_dict_returns_empty (line 403) | def test_extras_require_from_kwargs_call_func_name_not_dict_returns_empt... FILE: tests/models/test_specifiers.py function test_normalize_pyspec (line 27) | def test_normalize_pyspec(original, normalized): function test_pyspec_and_op (line 44) | def test_pyspec_and_op(left, right, result): function test_pyspec_or_op (line 62) | def test_pyspec_or_op(left, right, result): function test_impossible_pyspec (line 68) | def test_impossible_pyspec(): function test_pyspec_is_subset_superset (line 92) | def test_pyspec_is_subset_superset(left, right): function test_pyspec_isnot_subset_superset (line 109) | def test_pyspec_isnot_subset_superset(left, right): FILE: tests/models/test_versions.py function test_unsupported_post_version (line 6) | def test_unsupported_post_version() -> None: function test_support_prerelease_version (line 11) | def test_support_prerelease_version() -> None: function test_normalize_non_standard_version (line 21) | def test_normalize_non_standard_version(): function test_version_comparison (line 26) | def test_version_comparison(): function test_version_is_wildcard (line 39) | def test_version_is_wildcard(): function test_version_is_py2 (line 44) | def test_version_is_py2(): function test_version_complete (line 53) | def test_version_complete(version, args, result): function test_version_bump (line 66) | def test_version_bump(version, idx, result): function test_version_startswith (line 79) | def test_version_startswith(version, other, result): function test_version_getitem (line 83) | def test_version_getitem(): function test_version_setitem (line 92) | def test_version_setitem(): FILE: tests/resolver/test_graph.py function test_ordered_set (line 6) | def test_ordered_set(): FILE: tests/resolver/test_resolve.py function resolve (line 16) | def resolve(project, repository): function test_resolve_named_requirement (line 65) | def test_resolve_named_requirement(resolve): function test_resolve_exclude (line 75) | def test_resolve_exclude(resolve, project): function test_resolve_requires_python (line 86) | def test_resolve_requires_python(resolve, project): function test_resolve_allow_prereleases (line 103) | def test_resolve_allow_prereleases(resolve, repository): function test_resolve_prereleases_if_disabled_by_project (line 124) | def test_resolve_prereleases_if_disabled_by_project(resolve): function test_resolve_with_extras (line 129) | def test_resolve_with_extras(resolve): function test_resolve_with_extras_and_excludes (line 139) | def test_resolve_with_extras_and_excludes(resolve, project): function test_resolve_local_artifacts (line 155) | def test_resolve_local_artifacts(resolve, requirement_line): function test_resolve_vcs_and_local_requirements (line 167) | def test_resolve_vcs_and_local_requirements(resolve, line, is_editable, ... function test_resolve_vcs_without_explicit_name (line 173) | def test_resolve_vcs_without_explicit_name(resolve, vcs): function test_resolve_local_and_named_requirement (line 179) | def test_resolve_local_and_named_requirement(resolve, vcs): function test_resolving_auto_avoid_conflicts (line 189) | def test_resolving_auto_avoid_conflicts(resolve, repository): function test_resolve_conflicting_dependencies (line 205) | def test_resolve_conflicting_dependencies(resolve, repository): function test_resolve_conflicting_dependencies_with_overrides (line 217) | def test_resolve_conflicting_dependencies_with_overrides(project, resolv... function test_resolve_no_available_versions (line 233) | def test_resolve_no_available_versions(resolve, repository): function test_exclude_incompatible_requirements (line 239) | def test_exclude_incompatible_requirements(resolve, repository): function test_union_markers_from_different_parents (line 246) | def test_union_markers_from_different_parents(resolve, repository): function test_requirements_from_different_groups (line 254) | def test_requirements_from_different_groups(resolve, repository): function test_resolve_two_extras_from_the_same_package (line 262) | def test_resolve_two_extras_from_the_same_package(resolve): function test_resolve_package_with_dummy_upbound (line 270) | def test_resolve_package_with_dummy_upbound(resolve, repository): function test_resolve_dependency_with_extra_marker (line 276) | def test_resolve_dependency_with_extra_marker(resolve, repository): function test_resolve_circular_dependencies (line 286) | def test_resolve_circular_dependencies(resolve, repository): function test_resolve_candidates_to_install (line 296) | def test_resolve_candidates_to_install(project): function test_resolve_prefer_requirement_with_prereleases (line 340) | def test_resolve_prefer_requirement_with_prereleases(resolve): function test_resolve_with_python_marker (line 345) | def test_resolve_with_python_marker(resolve): function test_resolve_file_req_with_prerelease (line 350) | def test_resolve_file_req_with_prerelease(resolve, vcs): function test_resolve_extra_requirements_no_break_constraints (line 362) | def test_resolve_extra_requirements_no_break_constraints(resolve, reposi... function test_resolve_extra_and_underlying_to_the_same_version (line 372) | def test_resolve_extra_and_underlying_to_the_same_version(resolve, repos... function test_resolve_skip_candidate_with_invalid_metadata (line 383) | def test_resolve_skip_candidate_with_invalid_metadata(resolve, repository): function test_resolve_direct_minimal_versions (line 390) | def test_resolve_direct_minimal_versions(resolve, repository, project): function test_resolve_record_markers (line 398) | def test_resolve_record_markers(resolve, repository, project): function test_requirement_from_override (line 441) | def test_requirement_from_override(name, value, output): FILE: tests/resolver/test_uv_resolver.py function resolve (line 11) | def resolve(environment, requirements, target=None): function test_resolve_requirements (line 31) | def test_resolve_requirements(project): function test_resolve_vcs_requirement (line 39) | def test_resolve_vcs_requirement(project): function test_resolve_with_python_requires (line 47) | def test_resolve_with_python_requires(project): function test_resolve_dependencies_with_nested_extras (line 60) | def test_resolve_dependencies_with_nested_extras(project): function test_resolve_dependencies_with_overrides (line 76) | def test_resolve_dependencies_with_overrides(project, overrides): function test_parse_uv_lock_with_source_url_fallback (line 87) | def test_parse_uv_lock_with_source_url_fallback(project): FILE: tests/test_formats.py function ns (line 12) | def ns(**kwargs): function test_convert_pipfile (line 28) | def test_convert_pipfile(project): function test_convert_requirements_file (line 45) | def test_convert_requirements_file(project, is_dev): function test_convert_requirements_file_without_name (line 65) | def test_convert_requirements_file_without_name(project, vcs): function test_convert_poetry (line 74) | def test_convert_poetry(project): function test_convert_poetry_12 (line 109) | def test_convert_poetry_12(project): function test_convert_flit (line 118) | def test_convert_flit(project): function test_convert_error_preserve_metadata (line 152) | def test_convert_error_preserve_metadata(project): function test_import_requirements_with_group (line 163) | def test_import_requirements_with_group(project): function test_export_requirements_with_self (line 177) | def test_export_requirements_with_self(project): function test_export_requirements_with_editable_self (line 182) | def test_export_requirements_with_editable_self(project): function test_keep_env_vars_in_source (line 187) | def test_keep_env_vars_in_source(project, monkeypatch): function test_expand_env_vars_in_source (line 195) | def test_expand_env_vars_in_source(project, monkeypatch): function test_export_find_links (line 203) | def test_export_find_links(project, monkeypatch): function test_export_replace_project_root (line 210) | def test_export_replace_project_root(project): function test_convert_setup_py_project (line 220) | def test_convert_setup_py_project(project, pdm): function test_convert_poetry_project_with_circular_dependency (line 243) | def test_convert_poetry_project_with_circular_dependency(project): function test_export_pylock_toml (line 254) | def test_export_pylock_toml(core, pdm): function test_export_from_pylock_not_empty (line 265) | def test_export_from_pylock_not_empty(core, pdm): FILE: tests/test_installer.py function supports_link (line 28) | def supports_link(preferred: str | None, monkeypatch: pytest.MonkeyPatch... function _prepare_project_for_env (line 42) | def _prepare_project_for_env(project: Project, env_cls: type[BaseEnviron... function environment (line 51) | def environment(request: pytest.RequestFixture, project: Project) -> typ... function test_install_wheel_with_inconsistent_dist_info (line 58) | def test_install_wheel_with_inconsistent_dist_info(project): function test_install_with_file_existing (line 69) | def test_install_with_file_existing(project): function test_uninstall_commit_rollback (line 83) | def test_uninstall_commit_rollback(project): function test_rollback_after_commit (line 101) | def test_rollback_after_commit(project, caplog): function test_uninstall_with_console_scripts (line 126) | def test_uninstall_with_console_scripts(project, use_install_cache): function test_install_wheel_with_cache (line 144) | def test_install_wheel_with_cache(project, pdm, supports_link): function test_can_install_wheel_with_cache_in_multiple_projects (line 183) | def test_can_install_wheel_with_cache_in_multiple_projects( function test_url_requirement_is_not_cached (line 216) | def test_url_requirement_is_not_cached(project): function test_editable_is_not_cached (line 232) | def test_editable_is_not_cached(project, tmp_path_factory): function test_install_wheel_with_data_scripts (line 262) | def test_install_wheel_with_data_scripts(project, use_install_cache): function test_compress_file_list_for_rename (line 280) | def test_compress_file_list_for_rename(): FILE: tests/test_integration.py function get_python_versions (line 13) | def get_python_versions(): function test_basic_integration (line 30) | def test_basic_integration(python_version, core, tmp_path, pdm): function test_use_python_write_file (line 49) | def test_use_python_write_file(pdm, project): function test_use_python_write_no_file (line 60) | def test_use_python_write_no_file(pdm, project): function test_init_project_respect_version_file (line 76) | def test_init_project_respect_version_file(pdm, project, python_version,... function test_use_python_write_file_multiple_versions (line 91) | def test_use_python_write_file_multiple_versions(pdm, project, python_ve... function test_use_python_write_file_with_use_python_version (line 112) | def test_use_python_write_file_with_use_python_version(pdm, project, mon... function test_use_python_write_file_without_use_python_version (line 125) | def test_use_python_write_file_without_use_python_version(pdm, project): function test_actual_list_freeze (line 135) | def test_actual_list_freeze(project, local_finder, pdm): FILE: tests/test_plugin.py class HelloCommand (line 12) | class HelloCommand(BaseCommand): method add_arguments (line 13) | def add_arguments(self, parser) -> None: method handle (line 16) | def handle(self, project, options) -> None: function new_command (line 23) | def new_command(core): function replace_command (line 27) | def replace_command(core): function add_new_config (line 31) | def add_new_config(core): function make_entry_point (line 35) | def make_entry_point(plugin): function test_plugin_new_command (line 41) | def test_plugin_new_command(pdm, mocker, project, core): function test_plugin_replace_command (line 59) | def test_plugin_replace_command(pdm, mocker, project, core): function test_load_multiple_plugins (line 75) | def test_load_multiple_plugins(pdm, mocker, core): function test_old_entry_point_compatibility (line 91) | def test_old_entry_point_compatibility(pdm, mocker, core): function test_project_plugin_library (line 111) | def test_project_plugin_library(pdm, project, core, monkeypatch): function test_install_local_plugin_without_name (line 131) | def test_install_local_plugin_without_name(pdm, project, core, req_str): FILE: tests/test_project.py function get_python_versions (line 27) | def get_python_versions() -> list[PythonVersion]: function test_project_python_with_pyenv_support (line 35) | def test_project_python_with_pyenv_support(project, mocker, monkeypatch): function test_project_config_items (line 60) | def test_project_config_items(project): function test_project_config_set_invalid_key (line 67) | def test_project_config_set_invalid_key(project): function test_project_sources_overriding_pypi (line 74) | def test_project_sources_overriding_pypi(project): function test_project_sources_env_var_expansion (line 82) | def test_project_sources_env_var_expansion(project, monkeypatch): function test_global_project (line 116) | def test_global_project(tmp_path, core): function test_auto_global_project (line 122) | def test_auto_global_project(tmp_path, core): function test_project_use_venv (line 130) | def test_project_use_venv(project): function test_project_packages_path (line 143) | def test_project_packages_path(project): function test_project_auto_detect_venv (line 152) | def test_project_auto_detect_venv(project): function test_ignore_saved_python (line 166) | def test_ignore_saved_python(project, monkeypatch): function test_select_dependencies (line 177) | def test_select_dependencies(project): function test_invalid_dependency_group (line 204) | def test_invalid_dependency_group(project): function test_set_non_exist_python_path (line 223) | def test_set_non_exist_python_path(project_no_init): function test_create_venv_first_time (line 230) | def test_create_venv_first_time(pdm, project, local_finder): function test_create_venv_in_project (line 244) | def test_create_venv_in_project(pdm, project, with_pip): function test_find_interpreters_from_venv (line 255) | def test_find_interpreters_from_venv(pdm, project, local_finder): function test_find_interpreters_without_duplicate_relative_paths (line 268) | def test_find_interpreters_without_duplicate_relative_paths(pdm, project): function test_iter_project_venvs (line 278) | def test_iter_project_venvs(project): function test_load_extra_sources (line 295) | def test_load_extra_sources(project): function test_no_index_raise_error (line 313) | def test_no_index_raise_error(project): function test_access_index_with_auth (line 320) | def test_access_index_with_auth(project, httpserver: HTTPServer): function test_configured_source_overwriting (line 336) | def test_configured_source_overwriting(project): function test_invoke_pdm_adding_configured_args (line 356) | def test_invoke_pdm_adding_configured_args(project, pdm, mocker): function prepare_repository (line 377) | def prepare_repository(repository, project): function test_quiet_mode (line 387) | def test_quiet_mode(pdm, project, is_quiet, extra_args, recwarn): function test_ignore_package_warning (line 401) | def test_ignore_package_warning(pdm, project, recwarn, pattern, suppress... function test_filter_sources_with_config (line 409) | def test_filter_sources_with_config(project): function test_find_interpreters_with_PDM_IGNORE_ACTIVE_VENV (line 434) | def test_find_interpreters_with_PDM_IGNORE_ACTIVE_VENV( function test_env_or_setting (line 477) | def test_env_or_setting( function test_env_setting_list (line 512) | def test_env_setting_list( function test_project_best_match_max (line 527) | def test_project_best_match_max(project, mocker): function test_project_best_match_min (line 536) | def test_project_best_match_min(project, mocker): function test_default_lockfile_format (line 545) | def test_default_lockfile_format(project): function test_select_lockfile_format (line 555) | def test_select_lockfile_format(project, pdm, capsys): FILE: tests/test_signals.py function test_post_init_signal (line 12) | def test_post_init_signal(project_no_init, pdm): function test_post_lock_and_install_signals (line 21) | def test_post_lock_and_install_signals(project, pdm): function test_lock_and_install_signals_injection_with_add (line 36) | def test_lock_and_install_signals_injection_with_add(project, pdm): function test_lock_and_install_signals_injection_with_install (line 65) | def test_lock_and_install_signals_injection_with_install(project, pdm): function test_lock_signals_injection_with_update (line 96) | def test_lock_signals_injection_with_update(project, pdm): FILE: tests/test_utils.py function test_create_tracked_tempdir (line 34) | def test_create_tracked_tempdir(mock_tempfile_mkdtemp, mock_os_makedirs,... function test_get_trusted_hosts (line 44) | def test_get_trusted_hosts(mocker): function test_url_without_fragments (line 74) | def test_url_without_fragments(given, expected): function test_join_list_with (line 87) | def test_join_list_with(given, expected): class TestGetUserEmailFromGit (line 93) | class TestGetUserEmailFromGit: method test_no_git (line 95) | def test_no_git(self, no_git_patch): method test_no_git_username_and_email (line 107) | def test_no_git_username_and_email(self, git_patch, no_git_username_an... method test_no_git_email (line 120) | def test_no_git_email(self, git_patch, no_git_email_patch): method test_no_git_username (line 130) | def test_no_git_username(self, git_patch, no_git_username_patch): method test_git_username_and_email (line 137) | def test_git_username_and_email(self, git_patch, git_username_and_emai... function test_add_ssh_scheme_to_git_uri (line 153) | def test_add_ssh_scheme_to_git_uri(given, expected): class TestUrlToPath (line 157) | class TestUrlToPath: method test_non_file_url (line 158) | def test_non_file_url(self): method test_non_windows_non_local_file_url (line 163) | def test_non_windows_non_local_file_url(self): method test_non_windows_localhost_local_file_url (line 168) | def test_non_windows_localhost_local_file_url(self): method test_windows_localhost_local_file_url (line 172) | def test_windows_localhost_local_file_url(self): function test_expand_env_vars (line 188) | def test_expand_env_vars(given, expected, monkeypatch): function test_expand_env_vars_in_auth (line 211) | def test_expand_env_vars_in_auth(given, expected, monkeypatch): function test_path_replace (line 230) | def test_path_replace(os_name, given, expected): function test_is_path_relative_to (line 250) | def test_is_path_relative_to(given, expected): class TestGetVenvLikePrefix (line 255) | class TestGetVenvLikePrefix: method test_conda_env_with_conda_meta_in_bin (line 256) | def test_conda_env_with_conda_meta_in_bin(self, tmp_path: Path): method test_py_env_with_pyvenv_cfg (line 266) | def test_py_env_with_pyvenv_cfg(self, tmp_path: Path): method test_conda_env_with_conda_meta (line 278) | def test_conda_env_with_conda_meta(self, tmp_path: Path): method test_virtual_env (line 290) | def test_virtual_env(self, monkeypatch): method test_conda_virtual_env (line 297) | def test_conda_virtual_env(self, monkeypatch): method test_no_virtual_env (line 304) | def test_no_virtual_env(self): function compare_python_paths (line 311) | def compare_python_paths(path1, path2): function test_find_python_in_path (line 316) | def test_find_python_in_path(tmp_path): function test_get_rev_from_url (line 337) | def test_get_rev_from_url(given, expected): function test_normalize_name (line 360) | def test_normalize_name(given, expected): class TestIsEditable (line 364) | class TestIsEditable: method test_is_egg_link (line 367) | def test_is_egg_link(self, distribution, is_egg_link_patch): method test_not_direct_url_distribution (line 373) | def test_not_direct_url_distribution(self, distribution, is_egg_link_p... method test_direct_url_distribution (line 380) | def test_direct_url_distribution(self, distribution, is_egg_link_patch): function test_merge_dictionary (line 386) | def test_merge_dictionary(): function setup_dependencies (line 406) | def setup_dependencies(project): function test_dependency_group_selection (line 442) | def test_dependency_group_selection(project, args, golden): function test_exclude_optional_groups_from_all (line 456) | def test_exclude_optional_groups_from_all(project, args, golden): function test_prod_should_not_be_with_dev (line 462) | def test_prod_should_not_be_with_dev(project): function test_deprecation_warning (line 469) | def test_deprecation_warning(): function test_comparable_version (line 479) | def test_comparable_version(): function test_validate_project_name (line 485) | def test_validate_project_name(name): function test_invalidate_project_name (line 490) | def test_invalidate_project_name(name): function test_sanitize_project_name (line 498) | def test_sanitize_project_name(given, sanitized): function test_hide_url (line 513) | def test_hide_url(url, redacted): function test_fs_supports_link_method_when_method_doesnt_exist (line 519) | def test_fs_supports_link_method_when_method_doesnt_exist(): function test_convert_to_datetime_when_uppercase_t_is_present (line 523) | def test_convert_to_datetime_when_uppercase_t_is_present(): function test_convert_to_datetime_when_uppercase_t_is_absent (line 530) | def test_convert_to_datetime_when_uppercase_t_is_absent(): FILE: typings/shellingham.pyi function detect_shell (line 1) | def detect_shell(pid: int | None = None, max_depth: int = 10) -> tuple[s... class ShellDetectionFailure (line 3) | class ShellDetectionFailure(OSError): ...