-
Notifications
You must be signed in to change notification settings - Fork 2
Add comprehensive msgraphfs enhancements #6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add comprehensive msgraphfs enhancements #6
Conversation
6a527a6 to
b9bc2d1
Compare
This commit introduces major enhancements to make msgraphfs more intuitive to use. - Support URL-based filesystem paths (msgd://site/drive/path) - Enable single filesystem instance to access multiple SharePoint sites - Add automatic site and drive discovery from URLs - Support msgd://, sharepoint://, and onedrive:// protocols - Add AZURE_* environment variable fallback support - Implement robust OAuth2 token management with automatic refresh - Support both client credentials and delegated authentication flows - Implement lazy HTTP client initialization to prevent fork issues - Add process ID tracking to detect forks and reinitialize clients - Make filesystem safe for multi-process environments like Airflow - Resolve threading and subprocess compatibility problems - Add comprehensive file permissions API (get_permissions method) - Extended metadata with SharePoint-specific fields (weburl, fields) - Include permission analysis with user, group, and link breakdown - Support expand parameters for additional metadata retrieval - Replace content.py with proper pytest fixtures in conftest.py - Add comprehensive live credential testing capabilities - Implement environment variable configuration for test credentials - Add OAuth2 integration tests and URL parsing validation - Extensive documentation updates with usage examples - Multiple protocol registration for fsspec integration - Improved error messages and debugging information - Add support for Python 3.10+ The changes maintain full backward compatibility while adding: - Session-scoped pytest fixtures for better test performance - Lazy initialization patterns for resource management - Comprehensive URL parsing for flexible path specifications - Multi-tenancy support with filesystem instance caching
b9bc2d1 to
8a4f9af
Compare
|
ping @lmignon PTAL |
|
thank you @bolkedebruin I will carefully review your proposal. |
|
@lmignon if you'd like I can disable codecov or you can add a token so you can track test coverage. https://docs.codecov.com/docs/codecov-tokens |
The token is added. Nevertheless code coverage will only works once this branch will be merged into the main branch. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This file should be removed. IMO tests must be executed with the latest versions of the dependencies according to the rules declared on the dependencies into the pyproject.yml file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I understand the concern about the lockfile. However, I'd gently suggest keeping uv.lock is actually considered best practice in the Python community, similar to how package-lock.json works in npm or Cargo.lock in Rust.
The lockfile doesn't prevent anyone from working with the project - it just ensures consistency. uv's documentation recommends committing the lockfile for applications and libraries with development dependencies.
That said, it's your project so I you would like to see it removed I will do so.
|
@lmignon drive_id issues should be fixed now. |
|
ping @lmignon |
|
@bolkedebruin Thank you for the last change. This resolves the compatibility issue. Regarding the presence of the UV lock file, I would prefer to delete it. In the context of specific client projects, I share this best practice of working with fixed versions of the various modules in order to ensure the traceability and reproducibility of the system. In the context of a particular library, I prefer that CI be based solely on any version restrictions imposed on dependencies, rather than on explicitly locking those dependencies to a given version. This makes it possible to detect any incompatibilities introduced in a dependency between two CI runs. Then I will merge the PR. |
|
@bolkedebruin Thank you for all your work. The work continue in #7. Everything will be merged once all tests (offline and online) are running on GitHub... |
This commit introduces major enhancements to make msgraphfs more intuitive to use.
Support URL-based filesystem paths (msgd://site/drive/path)
Enable single filesystem instance to access multiple SharePoint sites
Add automatic site and drive discovery from URLs
Support msgd://, sharepoint://, and onedrive:// protocols
Add AZURE_* environment variable fallback support
Implement robust OAuth2 token management with automatic refresh
Support both client credentials and delegated authentication flows
Implement lazy HTTP client initialization to prevent fork issues
Add process ID tracking to detect forks and reinitialize clients
Make filesystem safe for multi-process environments like Airflow
Resolve threading and subprocess compatibility problems
Add comprehensive file permissions API (get_permissions method)
Extended metadata with SharePoint-specific fields (weburl, fields)
Include permission analysis with user, group, and link breakdown
Support expand parameters for additional metadata retrieval
Replace content.py with proper pytest fixtures in conftest.py
Add comprehensive live credential testing capabilities
Implement environment variable configuration for test credentials
Add OAuth2 integration tests and URL parsing validation
Extensive documentation updates with usage examples
Multiple protocol registration for fsspec integration
Improved error messages and debugging information
Add support for Python 3.10+
The changes maintain full backward compatibility while adding: