Skip to content

Make dependency resolution more selective

Choose a tag to compare

@alelom alelom released this 21 Nov 16:03
· 166 commits to main since this release

Fixed two issues:

1. Exclusion of irrelevant dependencies (e.g., _SS directories)

  • Added default exclusion patterns: _SS, __SS, _sandbox, __sandbox, _skip, __skip, _test, __test__
  • Added _should_exclude_path() in ExternalDependencyFinder to filter excluded paths
  • Added _copytree_excluding() in BuildManager to exclude patterns when copying directories
  • Added --exclude-pattern CLI option to specify additional exclusion patterns

2. More selective dependency resolution

Prevents copying large directory trees unnecessarily.
Only copy parent directories if:
1. It's a package (has init.py), OR
2. Files from it are actually imported (which is the case here since source_path is a file)

Changes made:

  • finder.py:
    • Added exclude_patterns parameter to init
    • Added _should_exclude_path() method
    • Added exclusion check before processing dependencies
    • Made parent directory copying conditional on package status or size
  • manager.py:
    • Added exclude_patterns parameter to init
    • Added _copytree_excluding() method that filters excluded patterns during directory copying
    • Updated _copy_dependency() to use the new exclusion-aware copy function
  • python_package_folder.py:
    • Added --exclude-pattern CLI argument (can be specified multiple times)
    • Passes exclusion patterns to BuildManager

Usage:

# Use default exclusions (includes _SS, __SS, etc.)
python-package-folder --publish azure --version 1.0.0

# Add custom exclusion  
patternspython-package-folder --publish azure --version 1.0.0 --exclude-pattern "_experimental" --exclude-pattern "__old"