Skip to content
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

Refactor/gitingest structure #66

Merged

Conversation

filipchristiansen
Copy link
Contributor

@filipchristiansen filipchristiansen commented Dec 28, 2024

Refactor and enhance gitingest module for improved clarity, maintainability, and functionality.

gitingest/clone.py

  • Introduced the CloneConfig dataclass to encapsulate cloning parameters, including url, local_path, commit, and branch.
  • Enhanced documentation by adding detailed docstrings to the functions check_repo_exists, run_git_command, and clone_repo.
  • Improved error handling by refining exception management processes.
  • Streamlined repository existence checks for increased reliability.
  • Added the run_git_command function to centralize and simplify the execution of Git commands.
  • Refactored code structure to enhance readability and maintainability.

gitingest/parse_query.py

  • Replaced manual hexadecimal comparison ("0123456789abcdefABCDEF") with the string module by defining HEX_DIGITS = set(string.hexdigits).
  • Refactored the parse_patterns function to store patterns in a list (patterns) instead of repeatedly joining and splitting them.
  • Enhanced documentation by adding docstrings to the override_ignore_patterns and parse_query functions.
  • Removed redundant pattern.strip() call in normalize_pattern, as this is now handled within parse_patterns.
  • Optimized the override_ignore_patterns function by implementing set difference for unordered comparisons.
  • Revised the construction of the parsed dictionary in the parse_url function for clarity.
  • Improved the parse_query function's structure for better readability and maintainability.

process_query.py

  • Refined print_query, print_error, and print_success functions to accept only the url parameter, removing the dependency on the entire query object.
  • Eliminated the unused request argument from the above functions.
  • Integrated the CloneConfig dataclass for improved parameter handling.

gitingest/ingest.py

  • Adopted the CloneConfig dataclass for consistent parameter management.

gitingest/ingest_from_query.py

  • Removed the unused files argument from the create_summary_string function to reduce unnecessary complexity.

gitingest/utils.py

  • Simplified the AsyncTimeoutError class by removing a redundant pass statement.

gitingest/tests/test_clone.py

  • Updated tests to utilize the CloneConfig dataclass and align with the newly introduced run_git_command function for encapsulated Git command execution.

gitingest/tests/test_parse_query.py

  • Aligned comparison with DEFAULT_IGNORE_PATTERNS to use a set difference, ensuring unordered existence comparison.

filipchristiansen and others added 9 commits December 26, 2024 10:02
- Add .pre-commit-config.yaml and pyproject.toml for Black and isort
- Add missing type hints throughout the code (Dict[...] for Python 3.8 compatibility)
- Added badges and convert existing badges to use <a><img></a> format
- Lint Markdown files
- Lint Jinja templates with djlint
…bility, and functionality.

- **Introduced the `CloneConfig` dataclass** to encapsulate cloning parameters, including `url`, `local_path`, `commit`, and `branch`.
- **Enhanced documentation** by adding detailed docstrings to the functions `check_repo_exists`, `run_git_command`, and `clone_repo`.
- **Improved error handling** by refining exception management processes.
- **Streamlined repository existence checks** for increased reliability.
- **Added the `run_git_command` function** to centralize and simplify the execution of Git commands.
- **Refactored code structure** to enhance readability and maintainability.

---

- **Replaced manual hexadecimal comparison (`"0123456789abcdefABCDEF"`)** with the `string` module by defining `HEX_DIGITS = set(string.hexdigits)`.
- **Revised the construction of the `parsed` dictionary** in the `parse_url` function for clarity.
- **Refactored the `parse_patterns` function** to store patterns in a list (`patterns`) instead of repeatedly joining and splitting them.
- **Enhanced documentation** by adding docstrings to the `override_ignore_patterns` and `parse_query` functions.
- **Removed redundant `pattern.strip()` call** in `normalize_pattern`, as this is now handled within `parse_patterns`.
- **Optimized the `override_ignore_patterns` function** by implementing set difference for unordered comparisons.
- **Improved the `parse_query` function's structure** for better readability and maintainability.

---

- **Refined `print_query`, `print_error`, and `print_success` functions** to accept only the `url` parameter, removing the dependency on the entire `query` object.
- **Eliminated the unused `request` argument** from the above functions.
- **Integrated the `CloneConfig` dataclass** for improved parameter handling.

---

- **Adopted the `CloneConfig` dataclass** for consistent parameter management.

---

- **Removed the unused `files` argument** from the `create_summary_string` function to reduce unnecessary complexity.

---

- **Simplified the `AsyncTimeoutError` class** by removing a redundant `pass` statement.

---

- **Updated tests** to utilize the `CloneConfig` dataclass and align with the newly introduced `run_git_command` function for encapsulated Git command execution.

---

- **Aligned comparison with `DEFAULT_IGNORE_PATTERNS`** to use a set difference, ensuring unordered existence comparison.
…bility

- **Revised the construction of the parsed dictionary** in the `parse_url` function for clarity.
- **Improved the `parse_query` function's structure** for better readability and maintainability.
Copy link
Owner

@cyclotruc cyclotruc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Waaay cleaner than the previous code, thank you 🙏

src/gitingest/ingest.py Outdated Show resolved Hide resolved
src/process_query.py Outdated Show resolved Hide resolved
@cyclotruc cyclotruc merged commit 75ee8f7 into cyclotruc:main Dec 29, 2024
2 checks passed
@filipchristiansen filipchristiansen deleted the refactor/gitingest-structure branch December 29, 2024 09:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants