* feat: Add pre-commit hook to enforce pathlib usage (issue #640)
- Created check-pathlib-usage.py pre-commit hook using AST parsing
- Detects os.path usage and suggests pathlib alternatives
- Fixed os.path.normpath usage in auth/routes.py to use PurePosixPath
- Added hook configuration to .pre-commit-config.yaml
The hook provides helpful suggestions for replacing os.path calls with
their pathlib equivalents for better cross-platform compatibility.
Co-Authored-By: djpetti <djpetti@users.noreply.github.com>
* feat: Add missing pathlib pre-commit hook script
Co-Authored-By: djpetti <djpetti@users.noreply.github.com>
* refactor: Migrate core src modules from os.path to pathlib
- Fixed web/app_factory.py, config/llm_config.py, metrics/token_counter.py
- Fixed utilities/es_utils.py, web/routes/benchmark_routes.py
- Fixed web/routes/settings_routes.py, web_search_engines/engines/search_engine_local.py
- Replaced os.path.join() with Path() / syntax
- Replaced os.path.exists() with Path().exists()
- Replaced os.path.basename() with Path().name
- Replaced os.path.dirname() with Path().parent
Part of the migration to modern pathlib API for better cross-platform
compatibility and cleaner code.
Co-Authored-By: djpetti <djpetti@users.noreply.github.com>
* refactor: Migrate from os.path to pathlib in src and tests (issue #640)
Replaced os.path usage with pathlib.Path throughout:
- src/local_deep_research/benchmarks: All os.path.join, exists, dirname, basename, abspath replaced
- tests directory: Complete migration of all test files
- Improved cross-platform compatibility and code readability
- Kept os.path.expandvars in env_settings.py (no pathlib equivalent)
Part of pre-commit hook enforcement for pathlib usage.
Remaining work: examples/ and scripts/ directories.
Co-Authored-By: djpetti
* fix: Complete migration from os.path to pathlib.Path (issue #640)
Completed manual migration of all os.path usage to pathlib.Path across:
- scripts/ directory (3 files)
- examples/ directory (25 files total)
- examples/benchmarks/ (8 files)
- examples/optimization/ (16 files)
- examples/show_env_vars.py
- src/local_deep_research/settings/env_settings.py
Changes made:
- Replaced os.path.join() with Path() / syntax
- Replaced os.path.exists() with Path().exists()
- Replaced os.path.dirname() with Path().parent
- Replaced os.path.basename() with Path().name or Path().stem
- Replaced os.path.abspath() with Path().resolve()
- Replaced os.makedirs() with Path().mkdir(parents=True, exist_ok=True)
- Added pathlib import where needed
Note: Kept os.path.expandvars in env_settings.py as there is no pathlib
equivalent. Added comment explaining this limitation.
This completes the pathlib migration for issue #640.
Co-Authored-By: djpetti
* fix: Allow os.path.expandvars in pathlib pre-commit hook
Updated the check-pathlib-usage.py pre-commit hook to skip checking
os.path.expandvars since it has no pathlib equivalent.
Changes:
- Added exception for expandvars in both visit_Attribute and visit_Call methods
- Added comment in equivalents dictionary noting expandvars is allowed
- This allows env_settings.py to use os.path.expandvars without failing checks
This resolves the pre-commit CI failure while maintaining the pathlib
enforcement for all other os.path methods.
Co-Authored-By: djpetti
---------
Co-authored-by: djpetti
- Remove {e} from all logger.exception calls as it automatically includes exception details
- Replace datetime.now() with datetime.now(UTC) for timezone awareness
- Fix all pre-commit check violations
- Replace standard logging with loguru across codebase (50+ files)
- Fix logger.exception usage in exception handlers (100+ fixes)
- Update environment variable access to use SettingsManager
- Improve pre-commit hooks to handle legitimate use cases
- Fix formatting and linting issues
Reduced custom code check violations from 268 to 38 (86% reduction)
Reduced env var check violations from 73 to 57 (22% reduction)
* Install Ruff and fix all the Ruff errors.
* Fix pre-commit failures.
* Potential fix for code scanning alert no. 104: Information exposure through an exception
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* Fix pre-commit failures.
---------
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
- Fix relative imports in benchmarks/cli.py to use siblings (.optimization) not parents (..benchmarks)
- Update all optimization and benchmark scripts to use structured output directories
- Ensure all examples create output in examples/{benchmarks,optimization}/results/
- Update API module to use os.path.join for path construction
- Add missing plotly and kaleido dependencies for visualization
- Update .gitignore to exclude results directories
- Add benchmark CLI module with parameter optimization, comparison and profiling functionality
- Add efficiency module for speed and resource monitoring
- Add comparison module for evaluating different configurations
- Add example scripts for benchmarks and optimization
- Updated import references from 'benchmarking' to 'benchmarks' module