Repository navigation
Make dependency resolution more selective
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()inExternalDependencyFinderto filter excluded paths - Added
_copytree_excluding()in BuildManager to exclude patterns when copying directories - Added
--exclude-patternCLI 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"