SYMBOL INDEX (693 symbols across 37 files) FILE: .github/release.py function get_repo (line 12) | def get_repo() -> git.Repo: function is_already_tagged (line 17) | def is_already_tagged(repo: git.Repo) -> bool: function should_skip_release (line 22) | def should_skip_release(repo: git.Repo) -> bool: function get_new_version (line 28) | def get_new_version(repo: git.Repo) -> str: function set_author (line 41) | def set_author(repo: git.Repo) -> None: function create_tag (line 51) | def create_tag(repo: git.Repo, new_version: str, release_notes: str) -> ... function push_tag (line 57) | def push_tag(repo: git.Repo, new_version: str) -> None: function get_commit_messages_since_last_release (line 63) | def get_commit_messages_since_last_release(repo: git.Repo) -> str: function format_release_notes (line 69) | def format_release_notes(commit_messages: str, new_version: str) -> str: function main (line 87) | def main() -> None: FILE: docs/source/conf.py function replace_named_emojis (line 77) | def replace_named_emojis(input_file: Path, output_file: Path) -> None: function _change_alerts_to_admonitions (line 89) | def _change_alerts_to_admonitions(input_text: str) -> str: function change_alerts_to_admonitions (line 135) | def change_alerts_to_admonitions(input_file: Path, output_file: Path) ->... function replace_example_links (line 154) | def replace_example_links(input_file: Path, output_file: Path) -> None: function fix_anchors_with_named_emojis (line 166) | def fix_anchors_with_named_emojis(input_file: Path, output_file: Path) -... function normalize_slug (line 188) | def normalize_slug(slug: str) -> str: function split_markdown_by_headers (line 193) | def split_markdown_by_headers( function replace_header (line 243) | def replace_header(file_path: Path, new_header: str) -> None: function extract_toc_links (line 263) | def extract_toc_links(md_file_path: Path) -> dict[str, str]: function extract_headers_from_markdown (line 299) | def extract_headers_from_markdown(md_file_path: Path) -> list[tuple[int,... function replace_links_in_markdown (line 325) | def replace_links_in_markdown( function decrease_header_levels (line 364) | def decrease_header_levels(md_file_path: Path) -> None: function write_index_file (line 393) | def write_index_file(docs_path: Path, toctree_entries: list[str]) -> None: function process_readme_for_sphinx_docs (line 421) | def process_readme_for_sphinx_docs(readme_path: Path, docs_path: Path) -... FILE: tests/helpers.py function maybe_as_toml (line 22) | def maybe_as_toml(toml_or_yaml: Literal["toml", "yaml"], p: Path) -> Path: FILE: tests/test_cli.py function current_env_and_prefix (line 59) | def current_env_and_prefix() -> tuple[str, Path]: function test_install_command (line 75) | def test_install_command(project: str, capsys: pytest.CaptureFixture) ->... function test_unidep_install_dry_run (line 101) | def test_unidep_install_dry_run(project: str) -> None: function test_install_all_command (line 130) | def test_install_all_command(capsys: pytest.CaptureFixture) -> None: function test_install_command_deduplicates_shared_local_dependencies (line 150) | def test_install_command_deduplicates_shared_local_dependencies( function mock_uv_env (line 181) | def mock_uv_env(tmp_path: Path) -> dict[str, str]: function test_unidep_install_all_dry_run (line 197) | def test_unidep_install_all_dry_run(tmp_path: Path, with_uv: bool) -> No... function test_unidep_conda (line 240) | def test_unidep_conda() -> None: function test_unidep_pixi_cli_respects_overrides (line 264) | def test_unidep_pixi_cli_respects_overrides(tmp_path: Path) -> None: function test_unidep_pixi_cli_channel_override (line 321) | def test_unidep_pixi_cli_channel_override(tmp_path: Path) -> None: function test_unidep_pixi_cli_ranged_build_string (line 363) | def test_unidep_pixi_cli_ranged_build_string(tmp_path: Path) -> None: function test_merge_uses_selector_platforms_when_no_platforms_declared (line 403) | def test_merge_uses_selector_platforms_when_no_platforms_declared( function test_merge_uses_selector_platforms_even_for_losing_alternatives (line 476) | def test_merge_uses_selector_platforms_even_for_losing_alternatives( function test_merge_command_includes_selected_optional_dependencies (line 514) | def test_merge_command_includes_selected_optional_dependencies( function test_merge_command_includes_all_optional_dependencies (line 556) | def test_merge_command_includes_all_optional_dependencies( function test_merge_command_includes_local_only_optional_dependencies (line 598) | def test_merge_command_includes_local_only_optional_dependencies( function test_merge_optional_dependency_extras_rejects_unknown_group (line 651) | def test_merge_optional_dependency_extras_rejects_unknown_group( function test_merge_optional_dependency_extras_validates_across_all_files (line 680) | def test_merge_optional_dependency_extras_validates_across_all_files( function test_collect_available_optional_dependency_groups_preserves_local_only_groups (line 717) | def test_collect_available_optional_dependency_groups_preserves_local_on... function test_merge_optional_dependency_extras_reports_when_no_groups_exist (line 738) | def test_merge_optional_dependency_extras_reports_when_no_groups_exist( function test_flatten_selected_dependency_entries_includes_optional_groups (line 757) | def test_flatten_selected_dependency_entries_includes_optional_groups( function test_collect_selected_conda_like_platforms_uses_both_source_selectors (line 793) | def test_collect_selected_conda_like_platforms_uses_both_source_selectors( function test_collect_selected_conda_like_platforms_preserves_selector_platforms (line 820) | def test_collect_selected_conda_like_platforms_preserves_selector_platfo... function test_unidep_pixi_cli_optional_monorepo_env_includes_base (line 846) | def test_unidep_pixi_cli_optional_monorepo_env_includes_base( function test_unidep_file_not_found_error (line 910) | def test_unidep_file_not_found_error() -> None: function test_doubly_nested_project_folder_installable (line 934) | def test_doubly_nested_project_folder_installable( function test_pip_compile_command (line 1037) | def test_pip_compile_command(tmp_path: Path, capsys: pytest.CaptureFixtu... function test_install_non_existing_file (line 1066) | def test_install_non_existing_file() -> None: function test_install_non_existing_folder (line 1080) | def test_install_non_existing_folder(tmp_path: Path) -> None: function test_version (line 1100) | def test_version(capsys: pytest.CaptureFixture) -> None: function test_conda_env_list (line 1108) | def test_conda_env_list() -> None: function test_conda_root_prefix_uses_conda_info_when_env_vars_are_unset (line 1113) | def test_conda_root_prefix_uses_conda_info_when_env_vars_are_unset( function test_get_conda_executable_uses_env_var_fallback (line 1135) | def test_get_conda_executable_uses_env_var_fallback( function test_unidep_version_uses_rich_when_available (line 1147) | def test_unidep_version_uses_rich_when_available( function test_pip_optional (line 1195) | def test_pip_optional(tmp_path: Path) -> None: function test_capitalize_last_dir (line 1231) | def test_capitalize_last_dir() -> None: function test_find_conda_windows (line 1242) | def test_find_conda_windows() -> None: function test_find_windows_path_returns_existing_mamba_location (line 1364) | def test_find_windows_path_returns_existing_mamba_location( function test_find_windows_path_returns_existing_micromamba_location (line 1375) | def test_find_windows_path_returns_existing_micromamba_location( function set_env_var (line 1387) | def set_env_var(key: str, value: str) -> Generator[None, None, None]: function test_maybe_conda_run (line 1403) | def test_maybe_conda_run() -> None: function test_maybe_conda_run_without_executable_returns_empty (line 1418) | def test_maybe_conda_run_without_executable_returns_empty() -> None: function test_maybe_conda_run_without_active_environment_returns_empty (line 1422) | def test_maybe_conda_run_without_active_environment_returns_empty( function test_maybe_create_conda_env_args_creates_env (line 1430) | def test_maybe_create_conda_env_args_creates_env( function test_install_command_with_conda_lock_skips_dependency_install (line 1503) | def test_install_command_with_conda_lock_skips_dependency_install( function test_unidep_merge_cli_optional_dependencies (line 1553) | def test_unidep_merge_cli_optional_dependencies(tmp_path: Path) -> None: function test_unidep_merge_cli_all_optional_dependencies (line 1598) | def test_unidep_merge_cli_all_optional_dependencies(tmp_path: Path) -> N... function test_unidep_merge_cli_rejects_unknown_optional_dependency_group (line 1645) | def test_unidep_merge_cli_rejects_unknown_optional_dependency_group( function test_unidep_merge_cli_rejects_mutually_exclusive_optional_flags (line 1686) | def test_unidep_merge_cli_rejects_mutually_exclusive_optional_flags( function test_unidep_merge_cli_optional_dependencies_across_multiple_files (line 1727) | def test_unidep_merge_cli_optional_dependencies_across_multiple_files( FILE: tests/test_cli_install_conda_lock.py function mock_subprocess_run (line 17) | def mock_subprocess_run(monkeypatch: pytest.MonkeyPatch) -> Mock: function mock_print (line 24) | def mock_print(monkeypatch: pytest.MonkeyPatch) -> Mock: function test_create_env_from_lock_dry_run (line 38) | def test_create_env_from_lock_dry_run( function test_create_env_from_lock_no_env_specified (line 99) | def test_create_env_from_lock_no_env_specified(mock_print: Mock) -> None: function test_create_env_from_lock_verifies_installation_for_conda (line 118) | def test_create_env_from_lock_verifies_installation_for_conda( function test_verify_conda_lock_installed_not_found (line 135) | def test_verify_conda_lock_installed_not_found( function test_verify_conda_lock_installed_not_working (line 150) | def test_verify_conda_lock_installed_not_working( FILE: tests/test_conda_lock.py function test_conda_lock_command (line 31) | def test_conda_lock_command(tmp_path: Path) -> None: function test_conda_lock_command_pip_package_with_conda_dependency (line 65) | def test_conda_lock_command_pip_package_with_conda_dependency(tmp_path: ... function test_conda_lock_global_infers_selector_platforms (line 148) | def test_conda_lock_global_infers_selector_platforms(tmp_path: Path) -> ... function test_conda_lock_command_pip_and_conda_different_name (line 183) | def test_conda_lock_command_pip_and_conda_different_name( function test_remove_top_comments (line 210) | def test_remove_top_comments(tmp_path: Path) -> None: function test_handle_missing_keys (line 224) | def test_handle_missing_keys(capsys: pytest.CaptureFixture) -> None: function test_handle_missing_keys_adds_matching_conda_package (line 261) | def test_handle_missing_keys_adds_matching_conda_package() -> None: function test_download_and_get_package_names_reads_site_packages (line 295) | def test_download_and_get_package_names_reads_site_packages( function test_download_and_get_package_names_returns_none_without_python_dirs (line 333) | def test_download_and_get_package_names_returns_none_without_python_dirs( function test_download_and_get_package_names_returns_none_without_lib_or_site_packages (line 368) | def test_download_and_get_package_names_returns_none_without_lib_or_site... function test_download_and_get_package_names_returns_none_without_site_packages (line 403) | def test_download_and_get_package_names_returns_none_without_site_packages( function test_conda_lock_subpackages_skips_root_requirements (line 438) | def test_conda_lock_subpackages_skips_root_requirements( function test_check_consistent_lock_files_reports_mismatches (line 476) | def test_check_consistent_lock_files_reports_mismatches(tmp_path: Path) ... function test_conda_lock_subpackage_uses_selected_same_name_pip_winner (line 514) | def test_conda_lock_subpackage_uses_selected_same_name_pip_winner( function test_conda_lock_subpackage_uses_selected_paired_different_name_pip_winner (line 556) | def test_conda_lock_subpackage_uses_selected_paired_different_name_pip_w... function test_conda_lock_subpackage_uses_selected_pip_winner_with_extras (line 598) | def test_conda_lock_subpackage_uses_selected_pip_winner_with_extras( function test_circular_dependency (line 651) | def test_circular_dependency() -> None: FILE: tests/test_dependencies_parsing_internal.py function test_move_optional_dependencies_star_promotes_all_groups (line 19) | def test_move_optional_dependencies_star_promotes_all_groups( function test_parse_requirements_skips_empty_paired_dependency_after_filtering (line 41) | def test_parse_requirements_skips_empty_paired_dependency_after_filtering( function test_is_empty_git_submodule_false_for_non_directory (line 59) | def test_is_empty_git_submodule_false_for_non_directory(tmp_path: Path) ... FILE: tests/test_dependency_selection.py function _write_requirements (line 26) | def _write_requirements(tmp_path: Path, content: str) -> Path: function _selected_summary (line 32) | def _selected_summary( function test_origin_to_text_includes_optional_group_and_local_chain (line 44) | def test_origin_to_text_includes_optional_group_and_local_chain() -> None: function test_origin_to_text_normalizes_windows_style_local_chain (line 56) | def test_origin_to_text_normalizes_windows_style_local_chain() -> None: function test_joined_pinnings_are_safely_satisfiable_for_user_shaped_pin_strings (line 74) | def test_joined_pinnings_are_safely_satisfiable_for_user_shaped_pin_stri... function test_select_conda_like_requirements_prefers_pinned_conda_over_unpinned_pip (line 88) | def test_select_conda_like_requirements_prefers_pinned_conda_over_unpinn... function test_select_conda_like_requirements_prefers_pip_extras_over_conda (line 113) | def test_select_conda_like_requirements_prefers_pip_extras_over_conda( function test_select_conda_like_requirements_prefers_narrower_pinned_selector_scope (line 138) | def test_select_conda_like_requirements_prefers_narrower_pinned_selector... function test_select_conda_like_requirements_reports_final_collisions_with_origins (line 167) | def test_select_conda_like_requirements_reports_final_collisions_with_or... function test_select_pip_requirements_merges_supported_wildcard_pinnings (line 198) | def test_select_pip_requirements_merges_supported_wildcard_pinnings( function test_select_pip_requirements_merges_compatible_compatible_release_pinnings (line 224) | def test_select_pip_requirements_merges_compatible_compatible_release_pi... function test_select_pip_requirements_rejects_unsafely_merged_wildcard_pinnings (line 249) | def test_select_pip_requirements_rejects_unsafely_merged_wildcard_pinnings( function test_select_pip_requirements_rejects_multiple_exact_pinnings (line 271) | def test_select_pip_requirements_rejects_multiple_exact_pinnings( function test_collapse_selected_universals_collapses_user_declared_universal_dependencies (line 296) | def test_collapse_selected_universals_collapses_user_declared_universal_... FILE: tests/test_local_wheels_and_zip.py function test_local_wheel (line 15) | def test_local_wheel(tmp_path: Path, toml_or_yaml: Literal["toml", "yaml... function test_local_zip (line 42) | def test_local_zip(tmp_path: Path, toml_or_yaml: Literal["toml", "yaml"]... function test_local_wheel_and_folder (line 64) | def test_local_wheel_and_folder( function test_local_wheel_with_extras (line 99) | def test_local_wheel_with_extras( function test_local_wheel_in_dependencies (line 124) | def test_local_wheel_in_dependencies( function test_nested_local_dependencies_with_wheel (line 149) | def test_nested_local_dependencies_with_wheel( FILE: tests/test_parse_yaml_local_dependencies.py function test_circular_local_dependencies (line 36) | def test_circular_local_dependencies( function test_parse_local_dependencies (line 85) | def test_parse_local_dependencies( function test_parse_local_dependencies_respects_use (line 128) | def test_parse_local_dependencies_respects_use( function test_nested_local_dependencies (line 173) | def test_nested_local_dependencies( function test_nonexistent_local_dependencies (line 244) | def test_nonexistent_local_dependencies( function test_no_local_dependencies (line 265) | def test_no_local_dependencies( function test_mixed_real_and_placeholder_dependencies (line 290) | def test_mixed_real_and_placeholder_dependencies( function test_parse_local_dependencies_pip_installable (line 317) | def test_parse_local_dependencies_pip_installable( function test_parse_local_dependencies_pip_installable_with_non_installable_project (line 382) | def test_parse_local_dependencies_pip_installable_with_non_installable_p... function test_local_non_unidep_managed_dependency (line 442) | def test_local_non_unidep_managed_dependency(tmp_path: Path) -> None: function test_local_non_unidep_and_non_installable_managed_dependency (line 467) | def test_local_non_unidep_and_non_installable_managed_dependency( function test_local_empty_git_submodule_dependency (line 487) | def test_local_empty_git_submodule_dependency( function test_parse_local_dependencies_missing (line 509) | def test_parse_local_dependencies_missing( function test_parse_local_dependencies_without_local_deps_themselves (line 535) | def test_parse_local_dependencies_without_local_deps_themselves( function test_parse_requirements_unmanaged_local_dependency (line 581) | def test_parse_requirements_unmanaged_local_dependency(tmp_path: Path) -... FILE: tests/test_parse_yaml_nested_local_dependencies.py function test_nested_local_dependencies_multiple_levels (line 31) | def test_nested_local_dependencies_multiple_levels( function test_nested_local_dependencies_with_circular_reference (line 111) | def test_nested_local_dependencies_with_circular_reference( function test_nested_local_dependencies_with_non_unidep_managed_project (line 172) | def test_nested_local_dependencies_with_non_unidep_managed_project( function test_skip_propagates_to_nested_local_dependency (line 232) | def test_skip_propagates_to_nested_local_dependency( function test_pypi_override_propagates_to_nested_local_dependency (line 276) | def test_pypi_override_propagates_to_nested_local_dependency( function test_skip_propagates_when_nested_entry_is_dict (line 321) | def test_skip_propagates_when_nested_entry_is_dict( function test_nested_local_dependencies_with_extras (line 365) | def test_nested_local_dependencies_with_extras( FILE: tests/test_pip_indices.py class TestPipIndicesParsing (line 19) | class TestPipIndicesParsing: method test_parse_pip_indices_from_yaml (line 22) | def test_parse_pip_indices_from_yaml(self, tmp_path: Path) -> None: method test_parse_pip_indices_from_toml (line 47) | def test_parse_pip_indices_from_toml(self, tmp_path: Path) -> None: method test_parse_empty_pip_indices (line 73) | def test_parse_empty_pip_indices(self, tmp_path: Path) -> None: method test_parse_pip_indices_with_env_vars (line 91) | def test_parse_pip_indices_with_env_vars(self, tmp_path: Path) -> None: method test_merge_pip_indices_from_multiple_files (line 113) | def test_merge_pip_indices_from_multiple_files(self, tmp_path: Path) -... method test_pip_indices_ordering_preserved (line 160) | def test_pip_indices_ordering_preserved(self, tmp_path: Path) -> None: method test_collect_pip_indices_supports_single_string (line 187) | def test_collect_pip_indices_supports_single_string(self) -> None: method test_collect_pip_indices_rejects_invalid_value_type (line 195) | def test_collect_pip_indices_rejects_invalid_value_type(self) -> None: method test_collect_pip_indices_rejects_non_string_entries (line 203) | def test_collect_pip_indices_rejects_non_string_entries(self) -> None: class TestEnvironmentGeneration (line 214) | class TestEnvironmentGeneration: method test_environment_yaml_with_pip_indices (line 217) | def test_environment_yaml_with_pip_indices(self, tmp_path: Path) -> None: method test_environment_yaml_without_pip_indices (line 258) | def test_environment_yaml_without_pip_indices(self, tmp_path: Path) ->... method test_environment_yaml_with_env_vars_in_indices (line 277) | def test_environment_yaml_with_env_vars_in_indices(self, tmp_path: Pat... class TestPipCommandConstruction (line 304) | class TestPipCommandConstruction: method test_build_pip_command_with_indices (line 307) | def test_build_pip_command_with_indices(self) -> None: method test_build_pip_command_without_indices (line 318) | def test_build_pip_command_without_indices(self) -> None: method test_build_pip_command_single_index (line 324) | def test_build_pip_command_single_index(self) -> None: method test_uv_compatibility (line 331) | def test_uv_compatibility(self) -> None: class TestEdgeCases (line 346) | class TestEdgeCases: method test_invalid_url_format (line 349) | def test_invalid_url_format(self, tmp_path: Path) -> None: method test_duplicate_indices (line 369) | def test_duplicate_indices(self, tmp_path: Path) -> None: method test_empty_string_in_indices (line 394) | def test_empty_string_in_indices(self, tmp_path: Path) -> None: method test_missing_env_var_in_url (line 414) | def test_missing_env_var_in_url(self, tmp_path: Path) -> None: FILE: tests/test_pip_indices_cli.py class TestBuildPipIndexArguments (line 15) | class TestBuildPipIndexArguments: method test_empty_indices (line 18) | def test_empty_indices(self) -> None: method test_single_index (line 23) | def test_single_index(self) -> None: method test_multiple_indices (line 29) | def test_multiple_indices(self) -> None: method test_environment_variable_expansion (line 46) | def test_environment_variable_expansion(self) -> None: method test_missing_environment_variable (line 70) | def test_missing_environment_variable(self) -> None: method test_complex_environment_variables (line 81) | def test_complex_environment_variables(self) -> None: class TestPipInstallLocalWithIndices (line 104) | class TestPipInstallLocalWithIndices: method test_pip_install_with_indices (line 109) | def test_pip_install_with_indices( method test_uv_install_with_indices (line 141) | def test_uv_install_with_indices( class TestCondaEnvWithPipRepositories (line 179) | class TestCondaEnvWithPipRepositories: method test_write_env_with_pip_repositories (line 182) | def test_write_env_with_pip_repositories(self, tmp_path: Path) -> None: method test_write_env_without_pip_repositories (line 213) | def test_write_env_without_pip_repositories(self, tmp_path: Path) -> N... class TestCreateCondaEnvSpecificationCompatibility (line 232) | class TestCreateCondaEnvSpecificationCompatibility: method test_accepts_string_keyword_pip_indices (line 235) | def test_accepts_string_keyword_pip_indices(self) -> None: method test_accepts_legacy_positional_selector (line 247) | def test_accepts_legacy_positional_selector(self) -> None: method test_accepts_legacy_positional_pip_indices_and_selector (line 254) | def test_accepts_legacy_positional_pip_indices_and_selector(self) -> N... method test_rejects_missing_platforms_argument (line 267) | def test_rejects_missing_platforms_argument(self) -> None: method test_rejects_too_many_positionals_with_platforms_keyword (line 272) | def test_rejects_too_many_positionals_with_platforms_keyword(self) -> ... method test_rejects_duplicate_pip_indices_with_platforms_keyword (line 286) | def test_rejects_duplicate_pip_indices_with_platforms_keyword(self) ->... method test_rejects_duplicate_pip_indices_in_legacy_two_argument_form (line 300) | def test_rejects_duplicate_pip_indices_in_legacy_two_argument_form(sel... method test_rejects_duplicate_pip_indices_in_legacy_three_argument_form (line 314) | def test_rejects_duplicate_pip_indices_in_legacy_three_argument_form( method test_rejects_too_many_legacy_positional_arguments (line 331) | def test_rejects_too_many_legacy_positional_arguments(self) -> None: class TestInstallCommandWithIndices (line 347) | class TestInstallCommandWithIndices: method test_install_command_with_pip_indices (line 353) | def test_install_command_with_pip_indices( method test_install_command_with_uv_and_indices (line 414) | def test_install_command_with_uv_and_indices( class TestPipIndicesIntegration (line 469) | class TestPipIndicesIntegration: method test_full_workflow_with_indices (line 472) | def test_full_workflow_with_indices(self, tmp_path: Path) -> None: method test_conda_lock_with_pip_indices (line 525) | def test_conda_lock_with_pip_indices( method test_merge_command_with_indices (line 566) | def test_merge_command_with_indices(self, tmp_path: Path) -> None: FILE: tests/test_pip_indices_integration.py class TestUnidepInstallIntegration (line 12) | class TestUnidepInstallIntegration: method mock_project (line 16) | def mock_project(self, tmp_path: Path) -> Path: method test_install_with_pip_indices (line 62) | def test_install_with_pip_indices(self, mock_run: Any, mock_project: P... method test_install_with_env_var_indices (line 86) | def test_install_with_env_var_indices(self, mock_run: Any, tmp_path: P... method test_install_with_uv_backend (line 124) | def test_install_with_uv_backend(self, mock_project: Path) -> None: #... method test_install_without_pip_indices (line 147) | def test_install_without_pip_indices(self, tmp_path: Path) -> None: class TestUnidepCondaLockIntegration (line 174) | class TestUnidepCondaLockIntegration: method mock_monorepo (line 178) | def mock_monorepo(self, tmp_path: Path) -> Path: method test_conda_lock_generates_pip_repositories (line 223) | def test_conda_lock_generates_pip_repositories(self, mock_monorepo: Pa... method test_conda_lock_with_merged_indices (line 249) | def test_conda_lock_with_merged_indices(self, mock_monorepo: Path) -> ... method test_conda_lock_creates_valid_lockfile (line 271) | def test_conda_lock_creates_valid_lockfile(self, tmp_path: Path) -> None: class TestErrorHandling (line 319) | class TestErrorHandling: method test_install_with_unreachable_index (line 322) | def test_install_with_unreachable_index(self, tmp_path: Path) -> None: method test_install_with_conflicting_packages (line 349) | def test_install_with_conflicting_packages(self, tmp_path: Path) -> None: method test_merge_with_circular_dependencies (line 375) | def test_merge_with_circular_dependencies(self, tmp_path: Path) -> None: class TestCompatibility (line 421) | class TestCompatibility: method test_pip_indices_with_platforms (line 424) | def test_pip_indices_with_platforms(self, tmp_path: Path) -> None: method test_pip_indices_with_optional_dependencies (line 456) | def test_pip_indices_with_optional_dependencies(self, tmp_path: Path) ... method test_coexistence_with_uv_index_config (line 489) | def test_coexistence_with_uv_index_config(self, tmp_path: Path) -> None: FILE: tests/test_pixi.py function _write_file (line 43) | def _write_file(path: Path, content: str) -> Path: function _generate_and_load (line 48) | def _generate_and_load( function _setup_app_lib_other (line 60) | def _setup_app_lib_other( function test_simple_pixi_generation (line 107) | def test_simple_pixi_generation(tmp_path: Path) -> None: function test_channels_resolution_behaviors (line 151) | def test_channels_resolution_behaviors(tmp_path: Path) -> None: function test_monorepo_pixi_generation (line 206) | def test_monorepo_pixi_generation(tmp_path: Path) -> None: function test_pixi_monorepo_feature_names_unique_for_same_leaf_dir (line 271) | def test_pixi_monorepo_feature_names_unique_for_same_leaf_dir(tmp_path: ... function test_pixi_monorepo_feature_name_not_empty_for_relative_root_file (line 322) | def test_pixi_monorepo_feature_name_not_empty_for_relative_root_file( function test_pixi_with_version_pins (line 363) | def test_pixi_with_version_pins(tmp_path: Path) -> None: function test_pixi_normalizes_single_equals_for_pip_pins (line 394) | def test_pixi_normalizes_single_equals_for_pip_pins(tmp_path: Path) -> N... function test_pixi_prefers_pip_pin_over_unpinned_conda (line 413) | def test_pixi_prefers_pip_pin_over_unpinned_conda(tmp_path: Path) -> None: function test_pixi_prefers_conda_for_unpinned_both_sources (line 435) | def test_pixi_prefers_conda_for_unpinned_both_sources(tmp_path: Path) ->... function test_pixi_prefers_conda_for_equally_pinned_both_sources (line 458) | def test_pixi_prefers_conda_for_equally_pinned_both_sources(tmp_path: Pa... function test_pixi_reconciles_single_platform_conflict (line 547) | def test_pixi_reconciles_single_platform_conflict( function test_pixi_reconcile_is_order_independent_for_universal_and_target_conflicts (line 591) | def test_pixi_reconcile_is_order_independent_for_universal_and_target_co... function test_pixi_demoted_reconciliation_is_order_independent_with_repeated_universals (line 632) | def test_pixi_demoted_reconciliation_is_order_independent_with_repeated_... function test_pixi_reconciles_multiplatform_conflict (line 698) | def test_pixi_reconciles_multiplatform_conflict( function test_pixi_with_local_package (line 727) | def test_pixi_with_local_package(tmp_path: Path) -> None: function test_pixi_single_file_editable_path_relative_to_output (line 770) | def test_pixi_single_file_editable_path_relative_to_output(tmp_path: Pat... function test_pixi_single_file_includes_local_dependency_package_as_editable (line 803) | def test_pixi_single_file_includes_local_dependency_package_as_editable( function test_pixi_empty_dependencies (line 850) | def test_pixi_empty_dependencies(tmp_path: Path) -> None: function test_pixi_with_platform_selectors (line 877) | def test_pixi_with_platform_selectors(tmp_path: Path) -> None: function test_pixi_selector_targets_preserved_without_explicit_platforms (line 910) | def test_pixi_selector_targets_preserved_without_explicit_platforms( function test_pixi_with_multiple_platform_selectors (line 936) | def test_pixi_with_multiple_platform_selectors(tmp_path: Path) -> None: function test_pixi_monorepo_with_platform_selectors (line 968) | def test_pixi_monorepo_with_platform_selectors(tmp_path: Path) -> None: function test_pixi_monorepo_preserves_selector_only_platforms_without_declared_platforms (line 1019) | def test_pixi_monorepo_preserves_selector_only_platforms_without_declare... function test_pixi_single_file_preserves_selector_only_platforms_without_declared_platforms (line 1062) | def test_pixi_single_file_preserves_selector_only_platforms_without_decl... function test_pixi_monorepo_optional_group_preserves_selector_only_platforms (line 1093) | def test_pixi_monorepo_optional_group_preserves_selector_only_platforms( function test_pixi_single_file_optional_group_preserves_selector_only_platforms (line 1137) | def test_pixi_single_file_optional_group_preserves_selector_only_platforms( function test_pixi_single_file_optional_group_keeps_platform_specific_dep_targeted (line 1168) | def test_pixi_single_file_optional_group_keeps_platform_specific_dep_tar... function test_pixi_rejects_contradictory_pip_constraints (line 1211) | def test_pixi_rejects_contradictory_pip_constraints( function test_pixi_monorepo_with_local_packages (line 1231) | def test_pixi_monorepo_with_local_packages(tmp_path: Path) -> None: function test_pixi_monorepo_keeps_unmanaged_local_dependency_as_editable (line 1296) | def test_pixi_monorepo_keeps_unmanaged_local_dependency_as_editable( function test_pixi_monorepo_optional_unmanaged_deduped_against_base (line 1347) | def test_pixi_monorepo_optional_unmanaged_deduped_against_base( function test_pixi_monorepo_optional_unmanaged_only_group_creates_feature (line 1408) | def test_pixi_monorepo_optional_unmanaged_only_group_creates_feature( function test_pixi_monorepo_editable_paths_use_project_paths (line 1471) | def test_pixi_monorepo_editable_paths_use_project_paths(tmp_path: Path) ... function test_pixi_monorepo_shared_local_file_becomes_single_feature (line 1532) | def test_pixi_monorepo_shared_local_file_becomes_single_feature(tmp_path... function test_pixi_monorepo_transitive_local_dependencies_are_composed_in_envs (line 1604) | def test_pixi_monorepo_transitive_local_dependencies_are_composed_in_envs( function test_pixi_monorepo_ignores_wheel_local_dependencies_in_graph (line 1678) | def test_pixi_monorepo_ignores_wheel_local_dependencies_in_graph( function test_pixi_single_file_local_dependency_use_modes (line 1718) | def test_pixi_single_file_local_dependency_use_modes(tmp_path: Path) -> ... function test_pixi_with_directory_input (line 1770) | def test_pixi_with_directory_input(tmp_path: Path) -> None: function test_pixi_verbose_output (line 1798) | def test_pixi_verbose_output(tmp_path: Path, capsys: object) -> None: function test_pixi_fallback_package_name (line 1821) | def test_pixi_fallback_package_name(tmp_path: Path) -> None: function test_pixi_filtering_removes_empty_targets (line 1855) | def test_pixi_filtering_removes_empty_targets(tmp_path: Path) -> None: function test_pixi_stdout_output (line 1882) | def test_pixi_stdout_output(tmp_path: Path, capsys: object) -> None: function test_pixi_monorepo_with_directory_input (line 1907) | def test_pixi_monorepo_with_directory_input(tmp_path: Path) -> None: function test_pixi_monorepo_filtering_removes_empty_feature_targets (line 1948) | def test_pixi_monorepo_filtering_removes_empty_feature_targets(tmp_path:... function test_pixi_default_cwd (line 1992) | def test_pixi_default_cwd(tmp_path: Path, monkeypatch: pytest.MonkeyPatc... function test_pixi_optional_dependencies_single_file (line 2019) | def test_pixi_optional_dependencies_single_file(tmp_path: Path) -> None: function test_pixi_optional_dependencies_single_group (line 2074) | def test_pixi_optional_dependencies_single_group(tmp_path: Path) -> None: function test_pixi_single_file_optional_group_named_all_keeps_unique_env (line 2106) | def test_pixi_single_file_optional_group_named_all_keeps_unique_env( function test_pixi_single_file_optional_local_dependency_stays_optional (line 2139) | def test_pixi_single_file_optional_local_dependency_stays_optional( function test_pixi_optional_dependencies_monorepo (line 2177) | def test_pixi_optional_dependencies_monorepo(tmp_path: Path) -> None: function test_pixi_monorepo_optional_local_dependency_is_only_in_optional_env (line 2235) | def test_pixi_monorepo_optional_local_dependency_is_only_in_optional_env( function test_pixi_monorepo_optional_group_with_only_local_deps_creates_env (line 2260) | def test_pixi_monorepo_optional_group_with_only_local_deps_creates_env( function test_pixi_monorepo_optional_feature_name_collision_does_not_overwrite_base_feature (line 2285) | def test_pixi_monorepo_optional_feature_name_collision_does_not_overwrit... function test_pixi_monorepo_default_env_excludes_optional_features (line 2328) | def test_pixi_monorepo_default_env_excludes_optional_features( function test_pixi_empty_platform_override_uses_file_platforms (line 2376) | def test_pixi_empty_platform_override_uses_file_platforms(tmp_path: Path... function test_pixi_monorepo_keeps_optional_groups_when_base_feature_empty (line 2400) | def test_pixi_monorepo_keeps_optional_groups_when_base_feature_empty( function test_pixi_monorepo_skips_empty_optional_feature_group (line 2442) | def test_pixi_monorepo_skips_empty_optional_feature_group(tmp_path: Path... function test_derive_feature_names_handles_commonpath_valueerror (line 2481) | def test_derive_feature_names_handles_commonpath_valueerror( function test_derive_feature_names_handles_relative_to_valueerror (line 2505) | def test_derive_feature_names_handles_relative_to_valueerror( function test_editable_dependency_path_relative_forms (line 2536) | def test_editable_dependency_path_relative_forms(tmp_path: Path) -> None: function test_editable_dependency_path_cross_drive (line 2548) | def test_editable_dependency_path_cross_drive( function test_discover_local_dependency_graph_skips_non_local_and_missing (line 2571) | def test_discover_local_dependency_graph_skips_non_local_and_missing( function test_parse_direct_requirements_for_node_extras (line 2636) | def test_parse_direct_requirements_for_node_extras( function test_collect_transitive_nodes_deduplicates_seen_nodes (line 2657) | def test_collect_transitive_nodes_deduplicates_seen_nodes(tmp_path: Path... function test_pixi_with_build_string (line 2666) | def test_pixi_with_build_string(tmp_path: Path) -> None: function test_pixi_with_pip_extras (line 2692) | def test_pixi_with_pip_extras(tmp_path: Path) -> None: function test_pixi_with_merged_constraints (line 2722) | def test_pixi_with_merged_constraints(tmp_path: Path) -> None: function test_pixi_optional_local_dep_does_not_leak_base_local_deps (line 2748) | def test_pixi_optional_local_dep_does_not_leak_base_local_deps( function test_pixi_demoted_universal_weak_target (line 2828) | def test_pixi_demoted_universal_weak_target( function test_pixi_demoted_universal_uses_latest_merged_constraint (line 2861) | def test_pixi_demoted_universal_uses_latest_merged_constraint( function test_pixi_demoted_universal_merges_constraints_across_demotions (line 2894) | def test_pixi_demoted_universal_merges_constraints_across_demotions( function test_pixi_raises_when_losing_pip_alternative_is_internally_contradictory (line 2919) | def test_pixi_raises_when_losing_pip_alternative_is_internally_contradic... function test_parse_version_build_whitespace_only (line 2943) | def test_parse_version_build_whitespace_only() -> None: function test_make_pip_version_spec_dict_with_extras (line 2947) | def test_make_pip_version_spec_dict_with_extras() -> None: function test_with_unique_order_paths_deduplicates (line 2952) | def test_with_unique_order_paths_deduplicates(tmp_path: Path) -> None: function test_unique_optional_feature_name_double_collision (line 2959) | def test_unique_optional_feature_name_double_collision() -> None: function test_unique_env_name_triple_collision (line 2970) | def test_unique_env_name_triple_collision() -> None: function test_add_single_file_optional_environments_noop_without_features (line 2975) | def test_add_single_file_optional_environments_noop_without_features() -... function test_feature_platforms_for_entries_prefers_override (line 2981) | def test_feature_platforms_for_entries_prefers_override() -> None: function test_extract_dependencies_handles_universal_pip_and_mixed_buckets (line 3001) | def test_extract_dependencies_handles_universal_pip_and_mixed_buckets() ... function test_filter_targets_by_platforms_removes_empty_sections (line 3030) | def test_filter_targets_by_platforms_removes_empty_sections() -> None: function test_pixi_single_file_optional_local_dep_transitive_dedup (line 3050) | def test_pixi_single_file_optional_local_dep_transitive_dedup( function test_pixi_single_file_optional_group_demoted_universal (line 3123) | def test_pixi_single_file_optional_group_demoted_universal( function test_pixi_monorepo_demotion (line 3203) | def test_pixi_monorepo_demotion( function test_pixi_monorepo_feature_subset_does_not_leak_universal_deps (line 3251) | def test_pixi_monorepo_feature_subset_does_not_leak_universal_deps( function test_pixi_single_file_env_name_collision (line 3294) | def test_pixi_single_file_env_name_collision(tmp_path: Path) -> None: function test_pixi_discover_graph_skips_non_list_optional_group (line 3322) | def test_pixi_discover_graph_skips_non_list_optional_group( function test_pixi_discover_graph_skips_non_local_optional_dep (line 3342) | def test_pixi_discover_graph_skips_non_local_optional_dep( function test_pixi_discover_graph_skips_non_installable_optional_unmanaged (line 3383) | def test_pixi_discover_graph_skips_non_installable_optional_unmanaged( function test_restore_demoted_skips_when_still_in_universal (line 3414) | def test_restore_demoted_skips_when_still_in_universal(tmp_path: Path) -... function test_pixi_monorepo_optional_local_feature_not_in_pixi_data (line 3434) | def test_pixi_monorepo_optional_local_feature_not_in_pixi_data( function test_pixi_single_file_installable_optional_local_dep_not_in_root (line 3487) | def test_pixi_single_file_installable_optional_local_dep_not_in_root( function test_pixi_monorepo_optional_aggregator_transitive_deps_in_env (line 3533) | def test_pixi_monorepo_optional_aggregator_transitive_deps_in_env( FILE: tests/test_project_dependency_handling.py function test_project_dependency_handling (line 41) | def test_project_dependency_handling( function test_project_dependency_handling_in_pyproject_toml (line 72) | def test_project_dependency_handling_in_pyproject_toml( FILE: tests/test_pypi_alternatives.py function test_parse_local_dependency_item_string (line 37) | def test_parse_local_dependency_item_string() -> None: function test_parse_local_dependency_item_dict (line 44) | def test_parse_local_dependency_item_dict() -> None: function test_parse_local_dependency_item_dict_with_use (line 51) | def test_parse_local_dependency_item_dict_with_use() -> None: function test_parse_local_dependency_item_dict_no_pypi (line 62) | def test_parse_local_dependency_item_dict_no_pypi() -> None: function test_parse_local_dependency_item_invalid_dict (line 69) | def test_parse_local_dependency_item_invalid_dict() -> None: function test_parse_local_dependency_item_invalid_type (line 79) | def test_parse_local_dependency_item_invalid_type() -> None: function test_parse_local_dependency_item_invalid_use (line 86) | def test_parse_local_dependency_item_invalid_use() -> None: function test_parse_local_dependency_item_use_pypi_requires_pypi (line 93) | def test_parse_local_dependency_item_use_pypi_requires_pypi() -> None: function test_get_local_dependencies_mixed_format (line 101) | def test_get_local_dependencies_mixed_format( function test_setuptools_integration_with_pypi_alternatives (line 148) | def test_setuptools_integration_with_pypi_alternatives( function test_local_dependency_use_pypi_injects_dependency (line 220) | def test_local_dependency_use_pypi_injects_dependency(tmp_path: Path) ->... function test_standard_string_format (line 244) | def test_standard_string_format( function test_yaml_to_toml_with_pypi_alternatives (line 273) | def test_yaml_to_toml_with_pypi_alternatives( function test_edge_cases (line 309) | def test_edge_cases(tmp_path: Path) -> None: # noqa: ARG001 function test_local_dependency_with_extras (line 334) | def test_local_dependency_with_extras(tmp_path: Path) -> None: function test_recursive_local_dependencies_with_pypi_alternatives (line 375) | def test_recursive_local_dependencies_with_pypi_alternatives(tmp_path: P... function test_empty_local_dependencies_list (line 423) | def test_empty_local_dependencies_list(tmp_path: Path) -> None: function test_local_dependencies_with_extras (line 448) | def test_local_dependencies_with_extras(tmp_path: Path) -> None: function test_complex_path_structures (line 503) | def test_complex_path_structures(tmp_path: Path) -> None: function test_invalid_yaml_handling (line 555) | def test_invalid_yaml_handling(tmp_path: Path) -> None: function test_pypi_alternatives_with_absolute_paths (line 579) | def test_pypi_alternatives_with_absolute_paths(tmp_path: Path) -> None: function test_pypi_alternatives_when_local_missing (line 614) | def test_pypi_alternatives_when_local_missing(tmp_path: Path) -> None: function test_mixed_string_and_dict_in_toml (line 649) | def test_mixed_string_and_dict_in_toml( function test_wheel_file_with_pypi_alternatives (line 688) | def test_wheel_file_with_pypi_alternatives(tmp_path: Path) -> None: function test_skip_local_deps_with_pypi_alternatives (line 743) | def test_skip_local_deps_with_pypi_alternatives(tmp_path: Path) -> None: function test_regular_local_deps_with_existing_paths (line 791) | def test_regular_local_deps_with_existing_paths(tmp_path: Path) -> None: function test_local_deps_with_extras_and_pypi_alternatives (line 873) | def test_local_deps_with_extras_and_pypi_alternatives(tmp_path: Path) ->... function test_local_deps_missing_with_pypi_fallback (line 934) | def test_local_deps_missing_with_pypi_fallback(tmp_path: Path) -> None: function test_missing_requirements_file_handling (line 971) | def test_missing_requirements_file_handling(tmp_path: Path) -> None: function test_package_name_extraction_edge_cases (line 989) | def test_package_name_extraction_edge_cases(tmp_path: Path) -> None: FILE: tests/test_pypi_alternatives/main_app/main_app/__init__.py function main (line 4) | def main() -> str: FILE: tests/test_pypi_alternatives/shared_lib/shared_lib/__init__.py function greet (line 4) | def greet() -> str: FILE: tests/test_pypi_alternatives_errors.py function test_local_dependency_wheel_with_pypi_alternative (line 18) | def test_local_dependency_wheel_with_pypi_alternative(tmp_path: Path) ->... function test_missing_local_dependency_with_pypi_alternative (line 55) | def test_missing_local_dependency_with_pypi_alternative(tmp_path: Path) ... function test_empty_folder_with_pypi_alternative (line 83) | def test_empty_folder_with_pypi_alternative(tmp_path: Path) -> None: function test_empty_git_submodule_with_pypi_alternative (line 114) | def test_empty_git_submodule_with_pypi_alternative(tmp_path: Path) -> None: function test_non_pip_installable_with_pypi_alternative (line 146) | def test_non_pip_installable_with_pypi_alternative(tmp_path: Path) -> None: function test_circular_dependencies_with_pypi_alternatives (line 178) | def test_circular_dependencies_with_pypi_alternatives(tmp_path: Path) ->... function test_very_long_pypi_alternative_names (line 221) | def test_very_long_pypi_alternative_names(tmp_path: Path) -> None: function test_special_characters_in_paths (line 274) | def test_special_characters_in_paths(tmp_path: Path) -> None: function test_symlink_local_dependencies (line 313) | def test_symlink_local_dependencies(tmp_path: Path) -> None: FILE: tests/test_pypi_alternatives_integration.py function test_build_with_pypi_alternatives (line 17) | def test_build_with_pypi_alternatives( function test_mixed_local_deps_with_and_without_pypi (line 102) | def test_mixed_local_deps_with_and_without_pypi(tmp_path: Path) -> None: function test_setuptools_with_skip_local_deps_env_var (line 146) | def test_setuptools_with_skip_local_deps_env_var( function test_use_skip_entries_are_ignored (line 197) | def test_use_skip_entries_are_ignored(tmp_path: Path) -> None: function test_use_pypi_entries_not_readded (line 228) | def test_use_pypi_entries_not_readded(tmp_path: Path) -> None: FILE: tests/test_setuptools_integration.py function test_package_name_from_path (line 20) | def test_package_name_from_path() -> None: function test_package_name_from_cfg (line 61) | def test_package_name_from_cfg(tmp_path: Path) -> None: function test_package_name_from_setup_py_requires_literal_name (line 91) | def test_package_name_from_setup_py_requires_literal_name(tmp_path: Path... function test_package_name_from_path_falls_back_on_invalid_pyproject (line 110) | def test_package_name_from_path_falls_back_on_invalid_pyproject(tmp_path... function test_package_name_from_path_falls_back_on_invalid_setup_py (line 117) | def test_package_name_from_path_falls_back_on_invalid_setup_py(tmp_path:... function test_package_name_from_path_does_not_suppress_unexpected_errors (line 124) | def test_package_name_from_path_does_not_suppress_unexpected_errors( function test_filter_python_dependencies_rejects_resolved_dict_input (line 137) | def test_filter_python_dependencies_rejects_resolved_dict_input() -> None: FILE: tests/test_unidep.py function setup_test_files (line 48) | def setup_test_files( function test_find_requirements_files (line 66) | def test_find_requirements_files( function test_find_requirements_files_depth (line 84) | def test_find_requirements_files_depth(tmp_path: Path) -> None: function test_parse_requirements (line 113) | def test_parse_requirements( function test_generate_conda_env_file (line 188) | def test_generate_conda_env_file( function test_generate_conda_env_stdout (line 211) | def test_generate_conda_env_stdout( function test_create_conda_env_specification_platforms (line 230) | def test_create_conda_env_specification_platforms( function test_verbose_output (line 301) | def test_verbose_output(tmp_path: Path, capsys: pytest.CaptureFixture) -... function test_create_conda_env_specification_rejects_resolved_dict_input (line 331) | def test_create_conda_env_specification_rejects_resolved_dict_input() ->... function test_pop_unused_platforms_removes_non_requested_platform (line 340) | def test_pop_unused_platforms_removes_non_requested_platform() -> None: function test_extract_python_requires (line 353) | def test_extract_python_requires(setup_test_files: tuple[Path, Path]) ->... function test_pip_install_local_dependencies (line 372) | def test_pip_install_local_dependencies(tmp_path: Path) -> None: function test_path_to_file_uri_handles_windows_drive (line 403) | def test_path_to_file_uri_handles_windows_drive() -> None: function test_channels (line 409) | def test_channels(toml_or_yaml: Literal["toml", "yaml"], tmp_path: Path)... function test_surrounding_comments (line 418) | def test_surrounding_comments( function test_filter_pip_and_conda (line 515) | def test_filter_pip_and_conda( function test_duplicates_with_version (line 808) | def test_duplicates_with_version( function test_duplicates_different_platforms (line 922) | def test_duplicates_different_platforms( function test_expand_none_with_different_platforms (line 1053) | def test_expand_none_with_different_platforms( function test_different_pins_on_conda_and_pip (line 1217) | def test_different_pins_on_conda_and_pip( function test_pip_pinned_conda_not (line 1286) | def test_pip_pinned_conda_not( function test_conda_pinned_pip_not (line 1338) | def test_conda_pinned_pip_not( function test_get_python_dependencies_preserves_platform_specific_pip_with_pinned_conda (line 1390) | def test_get_python_dependencies_preserves_platform_specific_pip_with_pi... function test_filter_python_dependencies_with_platforms (line 1419) | def test_filter_python_dependencies_with_platforms( function test_conda_with_comments (line 1444) | def test_conda_with_comments( function test_duplicate_names (line 1476) | def test_duplicate_names(toml_or_yaml: Literal["toml", "yaml"], tmp_path... function test_conflicts_when_selector_comment (line 1507) | def test_conflicts_when_selector_comment( function test_platforms_section_in_yaml (line 1584) | def test_platforms_section_in_yaml( function test_platforms_section_in_yaml_similar_platforms (line 1621) | def test_platforms_section_in_yaml_similar_platforms( function test_conda_with_non_platform_comment (line 1688) | def test_conda_with_non_platform_comment( function test_pip_and_conda_different_name_on_linux64 (line 1724) | def test_pip_and_conda_different_name_on_linux64( function test_parse_requirements_with_ignore_pin (line 1802) | def test_parse_requirements_with_ignore_pin( function test_parse_requirements_with_skip_dependency (line 1834) | def test_parse_requirements_with_skip_dependency( function test_pin_star_cuda (line 1872) | def test_pin_star_cuda(toml_or_yaml: Literal["toml", "yaml"], tmp_path: ... function test_parse_requirements_with_overwrite_pins (line 1906) | def test_parse_requirements_with_overwrite_pins( function test_duplicate_names_different_platforms (line 1953) | def test_duplicate_names_different_platforms( function test_with_unused_platform (line 2020) | def test_with_unused_platform( function test_sel_selector_merges_explicit_platform_pinnings (line 2051) | def test_sel_selector_merges_explicit_platform_pinnings( function test_pip_with_pinning (line 2084) | def test_pip_with_pinning( function test_pip_with_pinning_special_case_wildcard (line 2156) | def test_pip_with_pinning_special_case_wildcard( function test_pip_with_pinning_special_case_git_repo (line 2211) | def test_pip_with_pinning_special_case_git_repo( function test_not_equal (line 2246) | def test_not_equal( function test_dot_in_package_name (line 2287) | def test_dot_in_package_name( function test_optional_dependencies (line 2313) | def test_optional_dependencies( function test_optional_dependencies_multiple_sections (line 2353) | def test_optional_dependencies_multiple_sections( function test_optional_dependencies_get_python_dependencies (line 2383) | def test_optional_dependencies_get_python_dependencies( function test_pip_dep_with_extras (line 2408) | def test_pip_dep_with_extras( function test_explicit_conda_pip_pair_with_different_names_prefers_pinned_pip (line 2472) | def test_explicit_conda_pip_pair_with_different_names_prefers_pinned_pip( function test_same_source_final_collisions_merge_pip_extras (line 2506) | def test_same_source_final_collisions_merge_pip_extras( function test_cross_source_final_collisions_raise_for_conda_like_outputs (line 2540) | def test_cross_source_final_collisions_raise_for_conda_like_outputs( function test_same_name_cross_family_collisions_choose_deterministically (line 2573) | def test_same_name_cross_family_collisions_choose_deterministically( function test_pip_pep440_constraints_fall_back_to_explicit_joined_string (line 2608) | def test_pip_pep440_constraints_fall_back_to_explicit_joined_string( function test_pip_contradictory_pep440_constraints_raise (line 2649) | def test_pip_contradictory_pep440_constraints_raise( function test_local_dependency_in_dependencies_list (line 2682) | def test_local_dependency_in_dependencies_list( function test_optional_dependencies_with_local_dependencies (line 2702) | def test_optional_dependencies_with_local_dependencies( function test_optional_dependencies_with_local_dependencies_with_extras (line 2750) | def test_optional_dependencies_with_local_dependencies_with_extras( function test_optional_dependencies_with_dicts (line 2807) | def test_optional_dependencies_with_dicts( function test_optional_dependencies_with_version_specifier (line 2843) | def test_optional_dependencies_with_version_specifier( FILE: tests/test_utils.py function test_escape_unicode (line 33) | def test_escape_unicode() -> None: function test_build_pep508_environment_marker (line 38) | def test_build_pep508_environment_marker() -> None: function test_spec_rendering_helpers (line 64) | def test_spec_rendering_helpers() -> None: function test_detect_platform (line 77) | def test_detect_platform() -> None: function test_collect_selector_platforms_with_optional_dependencies (line 142) | def test_collect_selector_platforms_with_optional_dependencies() -> None: function test_resolve_platforms_precedence_and_fallback (line 173) | def test_resolve_platforms_precedence_and_fallback( function test_parse_package_str (line 213) | def test_parse_package_str() -> None: function test_path_with_extras_eq_handles_non_matching_object (line 240) | def test_path_with_extras_eq_handles_non_matching_object() -> None: function test_get_package_version_missing_package (line 245) | def test_get_package_version_missing_package(monkeypatch: pytest.MonkeyP... function test_parse_package_str_with_selector (line 254) | def test_parse_package_str_with_selector() -> None: function test_parse_package_str_with_extras (line 294) | def test_parse_package_str_with_extras() -> None: function test_extract_matching_platforms (line 326) | def test_extract_matching_platforms() -> None: function test_split_path_and_extras (line 383) | def test_split_path_and_extras() -> None: FILE: tests/test_version_conflicts.py function test_combining_versions (line 20) | def test_combining_versions() -> None: function test_is_valid_pinning (line 39) | def test_is_valid_pinning(operator: str, version: str) -> None: function test_combine_version_pinnings (line 74) | def test_combine_version_pinnings(pinnings: list[str], expected: str) ->... function test_invalid_pinnings (line 96) | def test_invalid_pinnings(pinnings: list[str]) -> None: function test_contradictory_pinnings (line 105) | def test_contradictory_pinnings(pinnings: list[str]) -> None: function test_exact_pinning_with_contradictory_ranges (line 114) | def test_exact_pinning_with_contradictory_ranges() -> None: function test_multiple_exact_pinnings (line 128) | def test_multiple_exact_pinnings() -> None: function test_general_contradictory_pinnings (line 136) | def test_general_contradictory_pinnings() -> None: function test_is_redundant (line 145) | def test_is_redundant() -> None: function test_invalid_parse_pinning (line 154) | def test_invalid_parse_pinning(pinning: str) -> None: function test_extract_version_operator_all_operators (line 163) | def test_extract_version_operator_all_operators(op: str) -> None: function test_extract_version_operator_no_operator (line 171) | def test_extract_version_operator_no_operator(constraint: str) -> None: function test_extract_version_operator_strips_whitespace (line 175) | def test_extract_version_operator_strips_whitespace() -> None: FILE: unidep/_cli.py class _HelpFormatter (line 67) | class _HelpFormatter(RichHelpFormatter): method _get_help_string (line 68) | def _get_help_string(self, action: argparse.Action) -> str | None: function _flatten_selected_dependency_entries (line 80) | def _flatten_selected_dependency_entries( function _collect_available_optional_dependency_groups (line 90) | def _collect_available_optional_dependency_groups( function _merge_optional_dependency_extras (line 102) | def _merge_optional_dependency_extras( function _collect_selected_conda_like_platforms (line 140) | def _collect_selected_conda_like_platforms( function _add_common_args (line 155) | def _add_common_args( # noqa: PLR0912, C901 function _add_extra_flags (line 345) | def _add_extra_flags( function _parse_args (line 362) | def _parse_args() -> argparse.Namespace: # noqa: PLR0915 function _ensure_files (line 759) | def _ensure_files(files: list[Path]) -> None: function _get_conda_executable (line 774) | def _get_conda_executable(which: CondaExecutable) -> str | None: function _identify_conda_executable (line 787) | def _identify_conda_executable() -> CondaExecutable: # pragma: no cover function _maybe_conda_executable (line 802) | def _maybe_conda_executable() -> CondaExecutable | None: function _format_inline_conda_package (line 809) | def _format_inline_conda_package(package: str) -> str: function _maybe_exe (line 816) | def _maybe_exe(conda_executable: CondaExecutable) -> str: function _capitalize_dir (line 840) | def _capitalize_dir(path: str, *, capitalize: bool = True, index: int = ... function _find_windows_path (line 852) | def _find_windows_path(conda_executable: CondaExecutable) -> str: function _conda_cli_command_json (line 898) | def _conda_cli_command_json( function _conda_env_list (line 920) | def _conda_env_list(conda_executable: CondaExecutable) -> list[str]: function _conda_info (line 926) | def _conda_info(conda_executable: CondaExecutable) -> dict: function _conda_root_prefix (line 930) | def _conda_root_prefix(conda_executable: CondaExecutable) -> Path: # pr... function _conda_env_dirs (line 945) | def _conda_env_dirs( function _conda_env_name_to_prefix (line 958) | def _conda_env_name_to_prefix( function _maybe_create_conda_env_args (line 986) | def _maybe_create_conda_env_args( function _create_conda_environment (line 1010) | def _create_conda_environment( function _python_executable (line 1020) | def _python_executable( function _use_uv (line 1040) | def _use_uv(no_uv: bool) -> bool: # noqa: FBT001 function _build_pip_index_arguments (line 1047) | def _build_pip_index_arguments(pip_indices: Sequence[str]) -> list[str]: function _pip_install_local (line 1069) | def _pip_install_local( function _install_command (line 1122) | def _install_command( # noqa: C901, PLR0912, PLR0915 function _install_all_command (line 1290) | def _install_all_command( function _maybe_conda_run (line 1338) | def _maybe_conda_run( function _create_env_from_lock (line 1359) | def _create_env_from_lock( # noqa: PLR0912 function _verify_conda_lock_installed (line 1422) | def _verify_conda_lock_installed() -> None: function _merge_command (line 1456) | def _merge_command( function _pixi_command (line 1528) | def _pixi_command( function _pip_compile_command (line 1580) | def _pip_compile_command( function _check_conda_prefix (line 1645) | def _check_conda_prefix() -> None: # pragma: no cover function _print_versions (line 1664) | def _print_versions() -> None: # pragma: no cover function _print_with_rich (line 1695) | def _print_with_rich(data: list) -> None: function _pip_subcommand (line 1710) | def _pip_subcommand( function main (line 1738) | def main() -> None: # noqa: PLR0912 FILE: unidep/_conda_env.py class CondaEnvironmentSpec (line 47) | class CondaEnvironmentSpec(NamedTuple): function _conda_sel (line 57) | def _conda_sel(sel: str) -> CondaPlatform: function _as_dependency_entries (line 64) | def _as_dependency_entries( function _normalize_pip_indices (line 77) | def _normalize_pip_indices( function _extract_conda_pip_dependencies (line 87) | def _extract_conda_pip_dependencies( function _ensure_sel_representable (line 110) | def _ensure_sel_representable( function _add_comment (line 140) | def _add_comment(commment_seq: CommentedSeq, platform: Platform) -> None: function create_conda_env_specification (line 149) | def create_conda_env_specification( # noqa: C901, PLR0912, PLR0915 function write_conda_environment_file (line 265) | def write_conda_environment_file( FILE: unidep/_conda_lock.py function _run_conda_lock (line 41) | def _run_conda_lock( function _conda_lock_global (line 92) | def _conda_lock_global( class LockSpec (line 140) | class LockSpec(NamedTuple): function _parse_conda_lock_packages (line 147) | def _parse_conda_lock_packages( function _add_package_to_lock (line 202) | def _add_package_to_lock( function _strip_pip_extras (line 225) | def _strip_pip_extras(name: str) -> str: function _find_lock_key (line 231) | def _find_lock_key( function _add_package_with_dependencies_to_lock (line 252) | def _add_package_with_dependencies_to_lock( function _handle_missing_keys (line 294) | def _handle_missing_keys( function _conda_lock_subpackage (line 352) | def _conda_lock_subpackage( function _download_and_get_package_names (line 435) | def _download_and_get_package_names( function _conda_lock_subpackages (line 483) | def _conda_lock_subpackages( function conda_lock_command (line 515) | def conda_lock_command( class Mismatch (line 568) | class Mismatch(NamedTuple): function _check_consistent_lock_files (line 579) | def _check_consistent_lock_files( function _format_table_row (line 621) | def _format_table_row( function _mismatch_report (line 630) | def _mismatch_report( FILE: unidep/_conflicts.py function extract_version_operator (line 45) | def extract_version_operator(constraint: str) -> str: function _prepare_specs_for_conflict_resolution (line 58) | def _prepare_specs_for_conflict_resolution( function _pop_unused_platforms_and_maybe_expand_none (line 84) | def _pop_unused_platforms_and_maybe_expand_none( function _maybe_new_spec_with_combined_pinnings (line 109) | def _maybe_new_spec_with_combined_pinnings( function _combine_pinning_within_platform (line 130) | def _combine_pinning_within_platform( class VersionConflictError (line 142) | class VersionConflictError(ValueError): function _add_optional_dependencies (line 146) | def _add_optional_dependencies( function resolve_conflicts (line 158) | def resolve_conflicts( function _parse_pinning (line 208) | def _parse_pinning(pinning: str) -> tuple[str, version.Version]: function _is_redundant (line 224) | def _is_redundant(pinning: str, other_pinnings: list[str]) -> bool: function _is_valid_pinning (line 251) | def _is_valid_pinning(pinning: str) -> bool: function _deduplicate (line 265) | def _deduplicate(pinnings: list[str]) -> list[str]: function _split_pinnings (line 270) | def _split_pinnings(pinnings: list[str]) -> list[str]: function combine_version_pinnings (line 275) | def combine_version_pinnings(pinnings: list[str], *, name: str | None = ... FILE: unidep/_dependencies_parsing.py function find_requirements_files (line 47) | def find_requirements_files( function _extract_first_comment (line 79) | def _extract_first_comment( function _identifier (line 96) | def _identifier(identifier: int, selector: str | None) -> str: function _parse_dependency (line 104) | def _parse_dependency( class DependencyOrigin (line 137) | class DependencyOrigin(NamedTuple): class DependencyEntry (line 146) | class DependencyEntry(NamedTuple): class ParsedRequirements (line 156) | class ParsedRequirements(NamedTuple): class Requirements (line 168) | class Requirements(NamedTuple): class _LoadedRequirementData (line 177) | class _LoadedRequirementData(NamedTuple): function _parse_overwrite_pins (line 183) | def _parse_overwrite_pins(overwrite_pins: list[str]) -> dict[str, str | ... function _collect_pip_indices (line 192) | def _collect_pip_indices(data: dict[str, Any]) -> list[str]: function _load (line 215) | def _load(p: Path, yaml: YAML) -> dict[str, Any]: function _add_project_dependencies (line 238) | def _add_project_dependencies( function _parse_local_dependency_item (line 256) | def _parse_local_dependency_item(item: str | dict[str, str]) -> LocalDep... function _normalize_local_dependency_use (line 274) | def _normalize_local_dependency_use(use_value: str | None) -> LocalDepen... function get_local_dependencies (line 286) | def get_local_dependencies(data: dict[str, Any]) -> list[LocalDependency]: function _to_path_with_extras (line 304) | def _to_path_with_extras( function _update_data_structures (line 332) | def _update_data_structures( function _move_optional_dependencies_to_dependencies (line 411) | def _move_optional_dependencies_to_dependencies( function _move_local_optional_dependencies_to_local_dependencies (line 437) | def _move_local_optional_dependencies_to_local_dependencies( function _resolve_local_dependency_path (line 475) | def _resolve_local_dependency_path(base_dir: Path, local: str) -> Path: function _try_parse_local_dependency_requirement_file (line 480) | def _try_parse_local_dependency_requirement_file( function _apply_local_dependency_override (line 495) | def _apply_local_dependency_override( function _effective_local_dependencies (line 522) | def _effective_local_dependencies( function _append_pip_dependency_from_local (line 547) | def _append_pip_dependency_from_local( function _add_local_dependencies (line 558) | def _add_local_dependencies( function parse_requirements (line 604) | def parse_requirements( function _str_is_path_like (line 724) | def _str_is_path_like(s: str) -> bool: function _check_allowed_local_dependency (line 729) | def _check_allowed_local_dependency(name: str, is_optional: bool) -> Non... function _add_dependencies (line 741) | def _add_dependencies( function _extract_local_dependencies (line 841) | def _extract_local_dependencies( # noqa: PLR0912 function parse_local_dependencies (line 949) | def parse_local_dependencies( function yaml_to_toml (line 988) | def yaml_to_toml(yaml_path: Path) -> str: function _is_empty_git_submodule (line 1022) | def _is_empty_git_submodule(path: Path) -> bool: function _is_empty_folder (line 1035) | def _is_empty_folder(path: Path) -> bool: FILE: unidep/_dependency_selection.py class SourceRequirement (line 35) | class SourceRequirement: class MergedSourceCandidate (line 47) | class MergedSourceCandidate: class PlatformCandidates (line 57) | class PlatformCandidates: function _operator_order_key (line 64) | def _operator_order_key(constraint: str) -> tuple[int, str]: function _canonicalize_joined_pinnings (line 80) | def _canonicalize_joined_pinnings(pinnings: list[str]) -> str: function _parse_pip_name (line 88) | def _parse_pip_name(name: str) -> tuple[str, tuple[str, ...]]: function _build_pip_name (line 96) | def _build_pip_name(base_name: str, extras: tuple[str, ...]) -> str: function _spec_is_pinned (line 102) | def _spec_is_pinned(spec: Spec) -> bool: function _candidate_scope_rank (line 106) | def _candidate_scope_rank(candidate: MergedSourceCandidate) -> float: function _candidate_has_universal_origin (line 113) | def _candidate_has_universal_origin(candidate: MergedSourceCandidate) ->... function _candidate_has_pip_extras (line 117) | def _candidate_has_pip_extras(candidate: MergedSourceCandidate) -> bool: function _candidate_display_key (line 121) | def _candidate_display_key( function _origin_to_text (line 131) | def _origin_to_text(origin: DependencyOrigin) -> str: function _candidate_to_text (line 141) | def _candidate_to_text(candidate: MergedSourceCandidate) -> str: function _merge_pin_strings (line 147) | def _merge_pin_strings( function _bump_release_prefix (line 183) | def _bump_release_prefix(release: tuple[int, ...], prefix_len: int) -> str: function _normalize_pinning_token_for_satisfiability (line 190) | def _normalize_pinning_token_for_satisfiability( # noqa: PLR0911 function _parse_supported_pinning (line 226) | def _parse_supported_pinning(pinning: str) -> tuple[str, Version]: function _exact_pinning_version_text (line 233) | def _exact_pinning_version_text(pinning: str) -> str | None: function _stricter_lower_bound (line 240) | def _stricter_lower_bound( function _stricter_upper_bound (line 253) | def _stricter_upper_bound( function _normalized_pinnings_are_satisfiable (line 266) | def _normalized_pinnings_are_satisfiable( # noqa: PLR0911, PLR0912 function _joined_pinnings_are_safely_satisfiable (line 314) | def _joined_pinnings_are_safely_satisfiable(pinnings: list[str]) -> bool: function _merge_source_requirements (line 325) | def _merge_source_requirements( function _entry_family_key (line 358) | def _entry_family_key(entry: DependencyEntry) -> FamilyKey: function _source_requirement_from_spec (line 367) | def _source_requirement_from_spec( function _collect_target_platforms (line 393) | def _collect_target_platforms( function _entry_targets (line 402) | def _entry_targets( function _build_platform_candidates (line 416) | def _build_platform_candidates( function _choose_by_precedence (line 466) | def _choose_by_precedence( function _select_conda_like_candidate (line 488) | def _select_conda_like_candidate( function _select_pip_candidate (line 497) | def _select_pip_candidate( function _final_identity (line 505) | def _final_identity(candidate: MergedSourceCandidate) -> str: function _merge_candidate_group (line 511) | def _merge_candidate_group( function _can_reconcile_cross_source_collision (line 522) | def _can_reconcile_cross_source_collision( function _raise_final_collision (line 540) | def _raise_final_collision( function _resolve_final_collisions (line 562) | def _resolve_final_collisions( function select_conda_like_requirements (line 617) | def select_conda_like_requirements( function select_pip_requirements (line 629) | def select_pip_requirements( function collapse_selected_universals (line 642) | def collapse_selected_universals( FILE: unidep/_hatch_integration.py class UnidepRequirementsMetadataHook (line 21) | class UnidepRequirementsMetadataHook(MetadataHookInterface): method update (line 26) | def update(self, metadata: dict) -> None: function hatch_register_metadata_hook (line 52) | def hatch_register_metadata_hook() -> type[UnidepRequirementsMetadataHook]: FILE: unidep/_pixi.py function _parse_version_build (line 69) | def _parse_version_build(pin: str | None) -> str | dict[str, str]: function _parse_package_extras (line 103) | def _parse_package_extras(pkg_name: str) -> tuple[str, list[str]]: function _make_pip_version_spec (line 120) | def _make_pip_version_spec( function _get_package_name (line 144) | def _get_package_name(project_dir: Path) -> str: function _normalize_feature_name (line 150) | def _normalize_feature_name(name: str) -> str: function _project_dir_from_requirement_file (line 155) | def _project_dir_from_requirement_file(req_file: Path) -> Path: function _derive_feature_names (line 161) | def _derive_feature_names(requirements_files: Sequence[Path]) -> list[str]: function _editable_dependency_path (line 220) | def _editable_dependency_path(req_dir: Path, output_file: str | Path | N... function _with_unique_order_paths (line 240) | def _with_unique_order_paths(items: Sequence[Path]) -> list[Path]: function _add_editable_local_dependencies (line 253) | def _add_editable_local_dependencies( function _unmanaged_installable_local_project_dir (line 288) | def _unmanaged_installable_local_project_dir( class LocalDependencyGraph (line 303) | class LocalDependencyGraph(NamedTuple): function _discover_local_dependency_graph (line 314) | def _discover_local_dependency_graph( # noqa: PLR0912, C901, PLR0915 function _parse_direct_requirements_for_node (line 452) | def _parse_direct_requirements_for_node( function _collect_transitive_nodes (line 509) | def _collect_transitive_nodes( function _with_unique_order (line 529) | def _with_unique_order(items: list[str]) -> list[str]: function _unique_optional_feature_name (line 534) | def _unique_optional_feature_name( function _unique_env_name (line 556) | def _unique_env_name( function _add_single_file_optional_environments (line 579) | def _add_single_file_optional_environments( function _spec_key (line 601) | def _spec_key(spec: Spec) -> tuple[str, str, str | None, str | None]: function _entry_key (line 606) | def _entry_key( function _subtract_entries (line 618) | def _subtract_entries( class _PixiGenerationResult (line 634) | class _PixiGenerationResult(NamedTuple): function _process_single_file_optional_groups (line 643) | def _process_single_file_optional_groups( function _generate_single_file_pixi (line 762) | def _generate_single_file_pixi( function _generate_multi_file_pixi (line 865) | def _generate_multi_file_pixi( # noqa: PLR0912, C901, PLR0915 function _selector_platforms_from_entries (line 1096) | def _selector_platforms_from_entries( function _feature_platforms_for_entries (line 1110) | def _feature_platforms_for_entries( function generate_pixi_toml (line 1126) | def generate_pixi_toml( function _extract_dependencies (line 1221) | def _extract_dependencies( # noqa: PLR0912 function _build_feature_dict (line 1308) | def _build_feature_dict(platform_deps: PlatformDeps) -> dict[str, Any]: function _filter_section_targets (line 1335) | def _filter_section_targets( function _filter_targets_by_platforms (line 1351) | def _filter_targets_by_platforms( function _write_pixi_toml (line 1365) | def _write_pixi_toml( FILE: unidep/_pytest_plugin.py function pytest_addoption (line 27) | def pytest_addoption(parser: pytest.Parser) -> None: # pragma: no cover function pytest_collection_modifyitems (line 50) | def pytest_collection_modifyitems( function _file_in_folder (line 96) | def _file_in_folder(file: Path, folder: Path) -> bool: # pragma: no cover function _affected_packages (line 103) | def _affected_packages( FILE: unidep/_setuptools_integration.py function filter_python_dependencies (line 49) | def filter_python_dependencies( class Dependencies (line 92) | class Dependencies(NamedTuple): function _path_to_file_uri (line 97) | def _path_to_file_uri(path: PurePath) -> str: function get_python_dependencies (line 109) | def get_python_dependencies( # noqa: PLR0912 function _deps (line 200) | def _deps(requirements_file: Path) -> Dependencies: # pragma: no cover function _setuptools_finalizer (line 226) | def _setuptools_finalizer(dist: Distribution) -> None: # pragma: no cover FILE: unidep/platform_definitions.py function validate_selector (line 90) | def validate_selector(selector: Selector) -> None: function platforms_from_selector (line 98) | def platforms_from_selector(selector: str) -> list[Platform]: class Spec (line 114) | class Spec(NamedTuple): method platforms (line 124) | def platforms(self) -> list[Platform] | None: method pprint (line 130) | def pprint(self) -> str: method name_with_pin (line 139) | def name_with_pin(self, *, is_pip: bool = False) -> str: FILE: unidep/utils.py function add_comment_to_file (line 36) | def add_comment_to_file( function remove_top_comments (line 57) | def remove_top_comments(filename: str | Path) -> None: function escape_unicode (line 71) | def escape_unicode(string: str) -> str: function is_pip_installable (line 76) | def is_pip_installable(folder: str | Path) -> bool: # pragma: no cover class UnsupportedPlatformError (line 97) | class UnsupportedPlatformError(Exception): function identify_current_platform (line 101) | def identify_current_platform() -> Platform: function collect_selector_platforms (line 131) | def collect_selector_platforms( function resolve_platforms (line 152) | def resolve_platforms( function build_pep508_environment_marker (line 175) | def build_pep508_environment_marker( class ParsedPackageStr (line 190) | class ParsedPackageStr(NamedTuple): function parse_package_str (line 199) | def parse_package_str(package_str: str) -> ParsedPackageStr: function package_name_from_setup_cfg (line 229) | def package_name_from_setup_cfg(file_path: Path) -> str: function package_name_from_setup_py (line 240) | def package_name_from_setup_py(file_path: Path) -> str: function package_name_from_pyproject_toml (line 272) | def package_name_from_pyproject_toml(file_path: Path) -> str: function package_name_from_path (line 284) | def package_name_from_path(path: Path) -> str: function _simple_warning_format (line 321) | def _simple_warning_format( function warn (line 338) | def warn( function selector_from_comment (line 352) | def selector_from_comment(comment: str) -> str | None: function extract_matching_platforms (line 369) | def extract_matching_platforms(comment: str) -> list[Platform]: function unidep_configured_in_toml (line 377) | def unidep_configured_in_toml(path: Path) -> bool: function split_path_and_extras (line 384) | def split_path_and_extras(input_str: str | Path) -> tuple[Path, list[str]]: class PathWithExtras (line 410) | class PathWithExtras(NamedTuple): method path_with_extras (line 417) | def path_with_extras(self) -> Path: method resolved (line 423) | def resolved(self) -> PathWithExtras: method canonicalized (line 427) | def canonicalized(self) -> PathWithExtras: method __hash__ (line 431) | def __hash__(self) -> int: method __eq__ (line 435) | def __eq__(self, other: object) -> bool: class LocalDependency (line 445) | class LocalDependency(NamedTuple): function parse_folder_or_filename (line 453) | def parse_folder_or_filename(folder_or_file: str | Path) -> PathWithExtras: function defaultdict_to_dict (line 475) | def defaultdict_to_dict(d: defaultdict | Any) -> dict: function get_package_version (line 482) | def get_package_version(package_name: str) -> str | None: