madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://"]
  insteadOf = madduck:

Add hidden import to PyInstaller build (GH-2466)
authorJameel Al-Aziz <>
Wed, 1 Sep 2021 22:05:11 +0000 (15:05 -0700)
committerGitHub <>
Wed, 1 Sep 2021 22:05:11 +0000 (18:05 -0400)
Add new platformdirs dependencies as hidden imports when creating
PyInstaller-based binaries.

platformdirs imports the module for each platform dynamically, which
PyInstaller is unable to correctly detect for packing. By adding the
modules as hidden imports, we are telling PyInstaller to include the
modules in the packaged binary.

This issue seems to have been introduce when switching to platformdirs
in #2375. fixes #2464

Commit history before merge:

* Add hidden import to PyInstaller build

Add new platformdirs dependency as a hidden import when creating
PyInstaller based binaries.

* Only include the platformdirs for the relevant os


index 766f37cc321bf3846abda4ac1e9f887f1da171d1..8f44d4ec27b5eaa90102102c9fbda1333a66d4c4 100644 (file)
@@ -16,14 +16,17 @@ jobs:
             pathsep: ";"
             asset_name: black_windows.exe
             executable_mime: "application/"
+            platform: windows
           - os: ubuntu-20.04
             pathsep: ":"
             asset_name: black_linux
             executable_mime: "application/x-executable"
+            platform: unix
           - os: macos-latest
             pathsep: ":"
             asset_name: black_macos
             executable_mime: "application/x-mach-binary"
+            platform: macos
       - uses: actions/checkout@v2
@@ -40,8 +43,10 @@ jobs:
           python -m pip install pyinstaller
       - name: Build binary
-        run: |
-          python -m PyInstaller -F --name ${{ matrix.asset_name }} --add-data 'src/blib2to3${{ matrix.pathsep }}blib2to3' src/black/
+        run: >
+          python -m PyInstaller -F --name ${{ matrix.asset_name }} --add-data
+          'src/blib2to3${{ matrix.pathsep }}blib2to3' --hidden-import platformdirs.${{
+          matrix.platform }} src/black/
       - name: Upload binary as release asset
         uses: actions/upload-release-asset@v1
index 576e3c84882d77881093ceb219fee280834d3887..ef0a57d61421fd6030a5948deb4c2ef09d20e226 100644 (file)
@@ -1,5 +1,11 @@
 # Change Log
+## Unreleased
+### Packaging
+- Fix missing modules in self-contained binaries (#2466)
 ## 21.8b0
 ### _Black_