You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mitogen/docs
Alex Willmer 3a31a7d886 mitogen: Workaround CPython importlib PermissionError when cwd is unreadable
On macOS when using a become plugin as an unprivileged user, to another
unprivileged user it is likely that the current working directory can't be
read. In this case os.cwd() raises PermissionError.

On versions of Python currently in the wild (March 2024, CPython <= 3.13) if
any non-builtin or non-frozen module (e.g. zlib, base64) is imported then
`importlib._bootstrap_external.PathFinder._path_importer_cache()` attempts to
call os.cwd() without catching PermissionError.

The previous comment about needing an extra .encode() appears to be wrong,
atleast for Python 3.x >= 3.6.

Command size increased by 54 bytes, bootstrap by 804 bytes. Changed from
codecs module to binascii & zlib because they're extensions, and importing
them triggers fewer supporting imports (e.g. encodings module).

Before

```
✗ ./preamble_size.py
SSH command size: 705
Bootstrap (mitogen.core) size: 17078 (16.68KiB)

                              Original          Minimized           Compressed
mitogen.parent            97884 95.6KiB  50515 49.3KiB 51.6%  12727 12.4KiB
13.0%
mitogen.fork               8436  8.2KiB   4130  4.0KiB 49.0%   1648  1.6KiB
19.5%
mitogen.ssh               10892 10.6KiB   6952  6.8KiB 63.8%   2113  2.1KiB
19.4%
mitogen.sudo              12089 11.8KiB   5924  5.8KiB 49.0%   2249  2.2KiB
18.6%
mitogen.select            12325 12.0KiB   2929  2.9KiB 23.8%    964  0.9KiB
7.8%
mitogen.service           41699 40.7KiB  22477 22.0KiB 53.9%   5885  5.7KiB
14.1%
mitogen.fakessh           15577 15.2KiB   7989  7.8KiB 51.3%   2623  2.6KiB
16.8%
mitogen.master            51398 50.2KiB  25715 25.1KiB 50.0%   6886  6.7KiB
13.4%
```

After

```
✗ ./preamble_size.py
SSH command size: 759
Bootstrap (mitogen.core) size: 17882 (17.46KiB)

                              Original          Minimized           Compressed
mitogen.parent            98173 95.9KiB  50571 49.4KiB 51.5%  12747 12.4KiB
13.0%
mitogen.fork               8436  8.2KiB   4130  4.0KiB 49.0%   1648  1.6KiB
19.5%
mitogen.ssh               10892 10.6KiB   6952  6.8KiB 63.8%   2113  2.1KiB
19.4%
mitogen.sudo              12089 11.8KiB   5924  5.8KiB 49.0%   2249  2.2KiB
18.6%
mitogen.select            12325 12.0KiB   2929  2.9KiB 23.8%    964  0.9KiB
7.8%
mitogen.service           41699 40.7KiB  22477 22.0KiB 53.9%   5885  5.7KiB
14.1%
mitogen.fakessh           15577 15.2KiB   7989  7.8KiB 51.3%   2623  2.6KiB
16.8%
mitogen.master            56116 54.8KiB  29427 28.7KiB 52.4%   7627  7.4KiB
13.6%
```

Fixes #885
Refs https://github.com/python/cpython/issues/115911
3 months ago
..
_static docs: remove a little more top margin wastage 5 years ago
_templates docs: Update external URLs (e.g. dw/mitogen -> mitogen-hq/mitogen) 10 months ago
images issue #505: docs: add new detail graph for one scenario. 5 years ago
.gitignore docs: fix intensely annoying _prefix, 2 years later. 6 years ago
Makefile docs: get rid of autobuild remnant 6 years ago
ansible_detailed.rst docs: Update external URLs (e.g. dw/mitogen -> mitogen-hq/mitogen) 10 months ago
api.rst Add podman connection support 3 years ago
changelog.rst mitogen: Workaround CPython importlib PermissionError when cwd is unreadable 3 months ago
conf.py docs: Decouple website download version from package version 7 months ago
contributors.rst docs: add new contributor entry 5 years ago
domainrefs.py docs: add domainrefs plugin to make link aliases everywhere \o/ 5 years ago
examples.rst Replace os.system() with subprocess.check_call() 2 years ago
getting_started.rst Fix for sample in doc 5 years ago
howitworks.rst Fix miscellaneous spelling/formatting 3 years ago
index.rst docs: Update external URLs (e.g. dw/mitogen -> mitogen-hq/mitogen) 10 months ago
internals.rst Merge devel/290 @ 79b979ec8544ef5d8620c64068d4a42fabf50415 5 years ago
pickle-substitutes.ods docs: First round of Pickle-likes survey 6 years ago
requirements.txt docs: Fix generation of static website 10 months ago
services.rst issue #589: ensure real FileService/PushFileService are in the docs 5 years ago
toc.rst docs: reorder chapters 5 years ago