Marco Ricci commited on 2025-06-10 19:31:24
              Zeige 2 geänderte Dateien mit 9 Einfügungen und 11 Löschungen.
            
The first slipup deals with two different wrappers around `os.getenv`, depending on whether the system support bytes-based environment variables. We care about whether the wrapper function (whichever implementation) is called correctly, not which wrapper function is selected. So, rewrite the branch to put the system-specific definitions under coverage exclusion, and the rest not. The second slipup concerns the concurrency limit. The detection is system- and runtime-dependent, but the error paths were previously not excluded from coverage. Additionally, we claimed to manually support the `PYTHON_CPU_COUNT` environment variable on Python 3.12, but contained no matching code. So, rewrite the code to add that missing support, in a coverage-friendly way.
| ... | ... | 
                      @@ -63,16 +63,16 @@ def get_vault_key() -> bytes:  | 
                  
| 63 | 63 | 
                        Please set `VAULT_KEY` manually to the desired value.  | 
                    
| 64 | 64 | 
                         | 
                    
| 65 | 65 | 
                        """  | 
                    
| 66 | 
                        - if os.supports_bytes_environ:  | 
                    |
| 67 | 66 | 
                         | 
                    
| 68 | 
                        - def getenv(env_var: str) -> bytes:  | 
                    |
| 67 | 
                        + def getenv_environ(env_var: str) -> bytes: # pragma: no cover  | 
                    |
| 69 | 68 | 
                                 return os.environb.get(env_var.encode('UTF-8'), b'')  # type: ignore[attr-defined]
                       | 
                    
| 70 | 69 | 
                         | 
                    
| 71 | 
                        - else:  | 
                    |
| 72 | 
                        -  | 
                    |
| 73 | 
                        - def getenv(env_var: str) -> bytes:  | 
                    |
| 70 | 
                        + def getenv_environb(env_var: str) -> bytes: # pragma: no cover  | 
                    |
| 74 | 71 | 
                                 return os.environ.get(env_var, '').encode('UTF-8')
                       | 
                    
| 75 | 72 | 
                         | 
                    
| 73 | 
                        + getenv: Callable[[str], bytes] = (  | 
                    |
| 74 | 
                        + getenv_environb if os.supports_bytes_environ else getenv_environ  | 
                    |
| 75 | 
                        + )  | 
                    |
| 76 | 76 | 
                        username = (  | 
                    
| 77 | 77 | 
                                 getenv('VAULT_KEY')
                       | 
                    
| 78 | 78 | 
                                 or getenv('LOGNAME')
                       | 
                    
| ... | ... | 
                      @@ -1651,12 +1651,10 @@ def get_concurrency_limit() -> int:  | 
                  
| 1651 | 1651 | 
                        if sys.version_info >= (3, 13):  | 
                    
| 1652 | 1652 | 
                        result = os.process_cpu_count()  | 
                    
| 1653 | 1653 | 
                        else:  | 
                    
| 1654 | 
                        - try:  | 
                    |
| 1655 | 
                        - cpus = os.sched_getaffinity(os.getpid())  | 
                    |
| 1656 | 
                        - except AttributeError:  | 
                    |
| 1657 | 
                        - pass  | 
                    |
| 1658 | 
                        - else:  | 
                    |
| 1659 | 
                        - result = len(cpus)  | 
                    |
| 1654 | 
                        + with contextlib.suppress(ValueError):  | 
                    |
| 1655 | 
                        + result = result or int(os.environ['PYTHON_CPU_COUNT'], 10)  | 
                    |
| 1656 | 
                        + with contextlib.suppress(AttributeError):  | 
                    |
| 1657 | 
                        + result = result or len(os.sched_getaffinity(os.getpid()))  | 
                    |
| 1660 | 1658 | 
                        return max(result if result is not None else 0, MIN_CONCURRENCY)  | 
                    
| 1661 | 1659 | 
                         | 
                    
| 1662 | 1660 | 
                         | 
                    
| 1663 | 1661 |