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

Extract all "import gc" to module level #1765

Merged
merged 1 commit into from
Dec 12, 2023

Commits on Dec 12, 2023

  1. Extract all "import gc" to module level

    The gc module was already imported at module scope in
    git/repo/base.py, since f1a82e4 (gitpython-developers#555). Importing the top-level
    git module or any submodule of it runs that import statement.
    Because the gc module is already imported, reimporting it is fast.
    
    Imports that there is no specific reason to do locally should be at
    module scope. Having them local decreased readability, in part
    because of how black inserts a black line between them and
    gc.collect() calls they are imported to allow.
    
    An alternative to this change would be to remove the preexisting
    top-level "import gc" (there is also another one in the test suite)
    and replace it with a local import as well. I am unsure if that
    would affect performance and, if so, whether the effect would be
    good or bad, since the small delay of the import might potentially
    be less desirable to an applicaion if it occurs while the work of
    the application is already in progress.
    
    If a gc.collect() call runs as a consequence of a finally block or
    __del__ method being called during interpreter shutdown, then in
    (very) rare cases the variable may have been set to None. But this
    does not appear to have been the intent behind making the imports
    local. More importantly, a local import should not be expected to
    succeed, or the imported module usable, in such a situation.
    EliahKagan committed Dec 12, 2023
    Configuration menu
    Copy the full SHA
    d70ba69 View commit details
    Browse the repository at this point in the history