import os
import sys

# FIXME: Search and replace these from the tests if pyarrow wheel is available
PY39 = sys.version_info >= (3, 9, 0)
PYARROW_NOT_AVAILABLE = "pyarrow not available yet for Python3.9"


# Increasing fd ulimit for tests
if os.name == "nt":
    import subprocess

    import win32file  # pylint: disable=import-error

    win32file._setmaxstdio(2048)

    # Workaround for two bugs:
    #
    # 1) gitpython-developers/GitPython#546
    # GitPython leaves git cat-file --batch/--batch-check processes that are
    # not cleaned up correctly, so Popen._active list has their defunct
    # process handles, that it is not able to cleanup because of bug 2)
    #
    # 2) https://bugs.python.org/issue37380
    # subprocess.Popen._internal_poll on windows is getting
    #
    # 	OSError: [WinError 6] The handle is invalid
    #
    # exception, which it doesn't ignore and so Popen is not able to cleanup
    # old processes and that prevents it from creating any new processes at
    # all, which results in our tests failing whenever they try to use Popen.

    def noop():
        pass

    subprocess._cleanup = noop
else:
    import resource

    resource.setrlimit(resource.RLIMIT_NOFILE, (2048, 2048))

    nproc_soft, nproc_hard = resource.getrlimit(resource.RLIMIT_NPROC)
    resource.setrlimit(resource.RLIMIT_NPROC, (nproc_hard, nproc_hard))

import os
import sys

# FIXME: Search and replace these from the tests if pyarrow wheel is available
PY39 = sys.version_info >= (3, 9, 0)
PYARROW_NOT_AVAILABLE = "pyarrow not available yet for Python3.9"


# Increasing fd ulimit for tests
if os.name == "nt":
    import subprocess

    import win32file  # pylint: disable=import-error

    win32file._setmaxstdio(2048)

    # Workaround for two bugs:
    #
    # 1) gitpython-developers/GitPython#546
    # GitPython leaves git cat-file --batch/--batch-check processes that are
    # not cleaned up correctly, so Popen._active list has their defunct
    # process handles, that it is not able to cleanup because of bug 2)
    #
    # 2) https://bugs.python.org/issue37380
    # subprocess.Popen._internal_poll on windows is getting
    #
    # 	OSError: [WinError 6] The handle is invalid
    #
    # exception, which it doesn't ignore and so Popen is not able to cleanup
    # old processes and that prevents it from creating any new processes at
    # all, which results in our tests failing whenever they try to use Popen.
    # This patch was released in 3.9.0 and backported to some earlier
    # versions.
    if sys.version_info < (3, 9, 0):

        def noop():
            pass

        subprocess._cleanup = noop
        subprocess._active = None
else:
    import resource

    resource.setrlimit(resource.RLIMIT_NOFILE, (2048, 2048))

    nproc_soft, nproc_hard = resource.getrlimit(resource.RLIMIT_NPROC)
    resource.setrlimit(resource.RLIMIT_NPROC, (nproc_hard, nproc_hard))

set subprocess._active to None (#4818)