Spaces:
Running
Running
Upload 8589 files
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +7 -0
- myworld/Lib/site-packages/Django-4.2.2.dist-info/AUTHORS +1065 -0
- myworld/Lib/site-packages/Django-4.2.2.dist-info/INSTALLER +1 -0
- myworld/Lib/site-packages/Django-4.2.2.dist-info/LICENSE +27 -0
- myworld/Lib/site-packages/Django-4.2.2.dist-info/LICENSE.python +290 -0
- myworld/Lib/site-packages/Django-4.2.2.dist-info/METADATA +98 -0
- myworld/Lib/site-packages/Django-4.2.2.dist-info/RECORD +0 -0
- myworld/Lib/site-packages/Django-4.2.2.dist-info/REQUESTED +0 -0
- myworld/Lib/site-packages/Django-4.2.2.dist-info/WHEEL +5 -0
- myworld/Lib/site-packages/Django-4.2.2.dist-info/entry_points.txt +2 -0
- myworld/Lib/site-packages/Django-4.2.2.dist-info/top_level.txt +1 -0
- myworld/Lib/site-packages/PyInstaller/__init__.py +67 -0
- myworld/Lib/site-packages/PyInstaller/__main__.py +198 -0
- myworld/Lib/site-packages/PyInstaller/__pycache__/__init__.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/__pycache__/__main__.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/__pycache__/_recursion_too_deep_message.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/__pycache__/_shared_with_waf.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/__pycache__/compat.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/__pycache__/config.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/__pycache__/configure.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/__pycache__/exceptions.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/__pycache__/log.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/_recursion_too_deep_message.py +45 -0
- myworld/Lib/site-packages/PyInstaller/_shared_with_waf.py +86 -0
- myworld/Lib/site-packages/PyInstaller/archive/__init__.py +1 -0
- myworld/Lib/site-packages/PyInstaller/archive/__pycache__/__init__.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/archive/__pycache__/pyz_crypto.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/archive/__pycache__/readers.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/archive/__pycache__/writers.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/archive/pyz_crypto.py +48 -0
- myworld/Lib/site-packages/PyInstaller/archive/readers.py +221 -0
- myworld/Lib/site-packages/PyInstaller/archive/writers.py +402 -0
- myworld/Lib/site-packages/PyInstaller/bootloader/Windows-64bit-intel/run.exe +0 -0
- myworld/Lib/site-packages/PyInstaller/bootloader/Windows-64bit-intel/run_d.exe +0 -0
- myworld/Lib/site-packages/PyInstaller/bootloader/Windows-64bit-intel/runw.exe +0 -0
- myworld/Lib/site-packages/PyInstaller/bootloader/Windows-64bit-intel/runw_d.exe +0 -0
- myworld/Lib/site-packages/PyInstaller/bootloader/images/icon-console.ico +0 -0
- myworld/Lib/site-packages/PyInstaller/bootloader/images/icon-windowed.ico +0 -0
- myworld/Lib/site-packages/PyInstaller/building/__init__.py +1 -0
- myworld/Lib/site-packages/PyInstaller/building/__pycache__/__init__.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/building/__pycache__/api.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/building/__pycache__/build_main.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/building/__pycache__/datastruct.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/building/__pycache__/icon.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/building/__pycache__/makespec.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/building/__pycache__/osx.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/building/__pycache__/splash.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/building/__pycache__/splash_templates.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/building/__pycache__/templates.cpython-311.pyc +0 -0
- myworld/Lib/site-packages/PyInstaller/building/__pycache__/toc_conversion.cpython-311.pyc +0 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,10 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
myworld/Lib/site-packages/lxml/etree.cp311-win_amd64.pyd filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
myworld/Lib/site-packages/lxml/objectify.cp311-win_amd64.pyd filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
myworld/Lib/site-packages/pyarmor/platforms/darwin/x86_64/_pytransform.dylib filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
myworld/Lib/site-packages/pyarmor/platforms/linux/x86_64/_pytransform.so filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
myworld/Lib/site-packages/pyarmor/platforms/linux/x86/_pytransform.so filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
myworld/Lib/site-packages/pyarmor/platforms/windows/x86_64/_pytransform.dll filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
myworld/Lib/site-packages/pyarmor/platforms/windows/x86/_pytransform.dll filter=lfs diff=lfs merge=lfs -text
|
myworld/Lib/site-packages/Django-4.2.2.dist-info/AUTHORS
ADDED
|
@@ -0,0 +1,1065 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Django was originally created in late 2003 at World Online, the web division
|
| 2 |
+
of the Lawrence Journal-World newspaper in Lawrence, Kansas.
|
| 3 |
+
|
| 4 |
+
Here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS --
|
| 5 |
+
people who have submitted patches, reported bugs, added translations, helped
|
| 6 |
+
answer newbie questions, and generally made Django that much better:
|
| 7 |
+
|
| 8 |
+
Aaron Cannon <cannona@fireantproductions.com>
|
| 9 |
+
Aaron Swartz <http://www.aaronsw.com/>
|
| 10 |
+
Aaron T. Myers <atmyers@gmail.com>
|
| 11 |
+
Abeer Upadhyay <ab.esquarer@gmail.com>
|
| 12 |
+
Abhijeet Viswa <abhijeetviswa@gmail.com>
|
| 13 |
+
Abhinav Patil <https://github.com/ubadub/>
|
| 14 |
+
Abhinav Yadav <abhinav.sny.2002+django@gmail.com>
|
| 15 |
+
Abhishek Gautam <abhishekg1128@yahoo.com>
|
| 16 |
+
Abhyudai <https://github.com/abhiabhi94>
|
| 17 |
+
Adam Allred <adam.w.allred@gmail.com>
|
| 18 |
+
Adam Bogdał <adam@bogdal.pl>
|
| 19 |
+
Adam Donaghy
|
| 20 |
+
Adam Johnson <https://github.com/adamchainz>
|
| 21 |
+
Adam Malinowski <https://adammalinowski.co.uk/>
|
| 22 |
+
Adam Vandenberg
|
| 23 |
+
Ade Lee <alee@redhat.com>
|
| 24 |
+
Adiyat Mubarak <adiyatmubarak@gmail.com>
|
| 25 |
+
Adnan Umer <u.adnan@outlook.com>
|
| 26 |
+
Arslan Noor <arslannoorpansota@gmail.com>
|
| 27 |
+
Adrian Holovaty <adrian@holovaty.com>
|
| 28 |
+
Adrian Torres <atorresj@redhat.com>
|
| 29 |
+
Adrien Lemaire <lemaire.adrien@gmail.com>
|
| 30 |
+
Afonso Fernández Nogueira <fonzzo.django@gmail.com>
|
| 31 |
+
AgarFu <heaven@croasanaso.sytes.net>
|
| 32 |
+
Ahmad Alhashemi <trans@ahmadh.com>
|
| 33 |
+
Ahmad Al-Ibrahim
|
| 34 |
+
Ahmed Eltawela <https://github.com/ahmedabt>
|
| 35 |
+
ajs <adi@sieker.info>
|
| 36 |
+
Akash Agrawal <akashrocksha@gmail.com>
|
| 37 |
+
Akis Kesoglou <akiskesoglou@gmail.com>
|
| 38 |
+
Aksel Ethem <aksel.ethem@gmail.com>
|
| 39 |
+
Akshesh Doshi <aksheshdoshi+django@gmail.com>
|
| 40 |
+
alang@bright-green.com
|
| 41 |
+
Alasdair Nicol <https://al.sdair.co.uk/>
|
| 42 |
+
Albert Wang <https://github.com/albertyw/>
|
| 43 |
+
Alcides Fonseca
|
| 44 |
+
Aldian Fazrihady <mobile@aldian.net>
|
| 45 |
+
Aleksandra Sendecka <asendecka@hauru.eu>
|
| 46 |
+
Aleksi Häkli <aleksi.hakli@iki.fi>
|
| 47 |
+
Alex Dutton <django@alexdutton.co.uk>
|
| 48 |
+
Alexander Myodov <alex@myodov.com>
|
| 49 |
+
Alexandr Tatarinov <tatarinov.dev@gmail.com>
|
| 50 |
+
Alex Aktsipetrov <alex.akts@gmail.com>
|
| 51 |
+
Alex Becker <https://alexcbecker.net/>
|
| 52 |
+
Alex Couper <http://alexcouper.com/>
|
| 53 |
+
Alex Dedul
|
| 54 |
+
Alex Gaynor <alex.gaynor@gmail.com>
|
| 55 |
+
Alex Hill <alex@hill.net.au>
|
| 56 |
+
Alex Ogier <alex.ogier@gmail.com>
|
| 57 |
+
Alex Robbins <alexander.j.robbins@gmail.com>
|
| 58 |
+
Alexey Boriskin <alex@boriskin.me>
|
| 59 |
+
Alexey Tsivunin <most-208@yandex.ru>
|
| 60 |
+
Ali Vakilzade <ali@vakilzade.com>
|
| 61 |
+
Aljaž Košir <aljazkosir5@gmail.com>
|
| 62 |
+
Aljosa Mohorovic <aljosa.mohorovic@gmail.com>
|
| 63 |
+
Alokik Vijay <alokik.roe@gmail.com>
|
| 64 |
+
Amit Chakradeo <https://amit.chakradeo.net/>
|
| 65 |
+
Amit Ramon <amit.ramon@gmail.com>
|
| 66 |
+
Amit Upadhyay <http://www.amitu.com/blog/>
|
| 67 |
+
A. Murat Eren <meren@pardus.org.tr>
|
| 68 |
+
Ana Belen Sarabia <belensarabia@gmail.com>
|
| 69 |
+
Ana Krivokapic <https://github.com/infraredgirl>
|
| 70 |
+
Andi Albrecht <albrecht.andi@gmail.com>
|
| 71 |
+
André Ericson <de.ericson@gmail.com>
|
| 72 |
+
Andrei Kulakov <andrei.avk@gmail.com>
|
| 73 |
+
Andreas
|
| 74 |
+
Andreas Mock <andreas.mock@web.de>
|
| 75 |
+
Andreas Pelme <andreas@pelme.se>
|
| 76 |
+
Andrés Torres Marroquín <andres.torres.marroquin@gmail.com>
|
| 77 |
+
Andrew Brehaut <https://brehaut.net/blog>
|
| 78 |
+
Andrew Clark <amclark7@gmail.com>
|
| 79 |
+
Andrew Durdin <adurdin@gmail.com>
|
| 80 |
+
Andrew Godwin <andrew@aeracode.org>
|
| 81 |
+
Andrew Pinkham <http://AndrewsForge.com>
|
| 82 |
+
Andrews Medina <andrewsmedina@gmail.com>
|
| 83 |
+
Andrew Northall <andrew@northall.me.uk>
|
| 84 |
+
Andriy Sokolovskiy <me@asokolovskiy.com>
|
| 85 |
+
Andy Chosak <andy@chosak.org>
|
| 86 |
+
Andy Dustman <farcepest@gmail.com>
|
| 87 |
+
Andy Gayton <andy-django@thecablelounge.com>
|
| 88 |
+
andy@jadedplanet.net
|
| 89 |
+
Anssi Kääriäinen <akaariai@gmail.com>
|
| 90 |
+
ant9000@netwise.it
|
| 91 |
+
Anthony Briggs <anthony.briggs@gmail.com>
|
| 92 |
+
Anthony Wright <ryow.college@gmail.com>
|
| 93 |
+
Anton Samarchyan <desecho@gmail.com>
|
| 94 |
+
Antoni Aloy
|
| 95 |
+
Antonio Cavedoni <http://cavedoni.com/>
|
| 96 |
+
Antonis Christofides <anthony@itia.ntua.gr>
|
| 97 |
+
Antti Haapala <antti@industrialwebandmagic.com>
|
| 98 |
+
Antti Kaihola <http://djangopeople.net/akaihola/>
|
| 99 |
+
Anubhav Joshi <anubhav9042@gmail.com>
|
| 100 |
+
Anvesh Mishra <anveshgreat11@gmail.com>
|
| 101 |
+
Aram Dulyan
|
| 102 |
+
arien <regexbot@gmail.com>
|
| 103 |
+
Armin Ronacher
|
| 104 |
+
Aron Podrigal <aronp@guaranteedplus.com>
|
| 105 |
+
Arsalan Ghassemi <arsalan.ghassemi@gmail.com>
|
| 106 |
+
Artem Gnilov <boobsd@gmail.com>
|
| 107 |
+
Arthur <avandorp@gmail.com>
|
| 108 |
+
Arthur Jovart <arthur@jovart.com>
|
| 109 |
+
Arthur Koziel <http://arthurkoziel.com>
|
| 110 |
+
Arthur Rio <arthur.rio44@gmail.com>
|
| 111 |
+
Arvis Bickovskis <viestards.lists@gmail.com>
|
| 112 |
+
Arya Khaligh <bartararya@gmail.com>
|
| 113 |
+
Aryeh Leib Taurog <http://www.aryehleib.com/>
|
| 114 |
+
A S Alam <aalam@users.sf.net>
|
| 115 |
+
Asif Saif Uddin <auvipy@gmail.com>
|
| 116 |
+
atlithorn <atlithorn@gmail.com>
|
| 117 |
+
Audrey Roy <http://audreymroy.com/>
|
| 118 |
+
av0000@mail.ru
|
| 119 |
+
Axel Haustant <noirbizarre@gmail.com>
|
| 120 |
+
Aymeric Augustin <aymeric.augustin@m4x.org>
|
| 121 |
+
Bahadır Kandemir <bahadir@pardus.org.tr>
|
| 122 |
+
Baishampayan Ghose
|
| 123 |
+
Baptiste Mispelon <bmispelon@gmail.com>
|
| 124 |
+
Barry Pederson <bp@barryp.org>
|
| 125 |
+
Bartolome Sanchez Salado <i42sasab@uco.es>
|
| 126 |
+
Barton Ip <notbartonip@gmail.com>
|
| 127 |
+
Bartosz Grabski <bartosz.grabski@gmail.com>
|
| 128 |
+
Bashar Al-Abdulhadi
|
| 129 |
+
Bastian Kleineidam <calvin@debian.org>
|
| 130 |
+
Batiste Bieler <batiste.bieler@gmail.com>
|
| 131 |
+
Batman
|
| 132 |
+
Batuhan Taskaya <batuhanosmantaskaya@gmail.com>
|
| 133 |
+
Baurzhan Ismagulov <ibr@radix50.net>
|
| 134 |
+
Ben Dean Kawamura <ben.dean.kawamura@gmail.com>
|
| 135 |
+
Ben Firshman <ben@firshman.co.uk>
|
| 136 |
+
Ben Godfrey <http://aftnn.org>
|
| 137 |
+
Benjamin Wohlwend <piquadrat@gmail.com>
|
| 138 |
+
Ben Khoo <khoobks@westnet.com.au>
|
| 139 |
+
Ben Slavin <benjamin.slavin@gmail.com>
|
| 140 |
+
Ben Sturmfels <ben@sturm.com.au>
|
| 141 |
+
Berker Peksag <berker.peksag@gmail.com>
|
| 142 |
+
Bernd Schlapsi
|
| 143 |
+
Bernhard Essl <me@bernhardessl.com>
|
| 144 |
+
berto
|
| 145 |
+
Bhuvnesh Sharma <bhuvnesh875@gmail.com>
|
| 146 |
+
Bill Fenner <fenner@gmail.com>
|
| 147 |
+
Bjørn Stabell <bjorn@exoweb.net>
|
| 148 |
+
Bo Marchman <bo.marchman@gmail.com>
|
| 149 |
+
Bogdan Mateescu
|
| 150 |
+
Bojan Mihelac <bmihelac@mihelac.org>
|
| 151 |
+
Bouke Haarsma <bouke@haarsma.eu>
|
| 152 |
+
Božidar Benko <bbenko@gmail.com>
|
| 153 |
+
Brad Melin <melinbrad@gmail.com>
|
| 154 |
+
Brandon Chinn <https://brandonchinn178.github.io/>
|
| 155 |
+
Brant Harris
|
| 156 |
+
Brendan Hayward <brendanhayward85@gmail.com>
|
| 157 |
+
Brendan Quinn <brendan@cluefulmedia.com>
|
| 158 |
+
Brenton Simpson <http://theillustratedlife.com>
|
| 159 |
+
Brett Cannon <brett@python.org>
|
| 160 |
+
Brett Hoerner <bretthoerner@bretthoerner.com>
|
| 161 |
+
Brian Beck <http://blog.brianbeck.com/>
|
| 162 |
+
Brian Fabian Crain <http://www.bfc.do/>
|
| 163 |
+
Brian Harring <ferringb@gmail.com>
|
| 164 |
+
Brian Helba <brian.helba@kitware.com>
|
| 165 |
+
Brian Ray <http://brianray.chipy.org/>
|
| 166 |
+
Brian Rosner <brosner@gmail.com>
|
| 167 |
+
Bruce Kroeze <https://coderseye.com/>
|
| 168 |
+
Bruno Alla <alla.brunoo@gmail.com>
|
| 169 |
+
Bruno Renié <buburno@gmail.com>
|
| 170 |
+
brut.alll@gmail.com
|
| 171 |
+
Bryan Chow <bryan at verdjn dot com>
|
| 172 |
+
Bryan Veloso <bryan@revyver.com>
|
| 173 |
+
bthomas
|
| 174 |
+
btoll@bestweb.net
|
| 175 |
+
C8E
|
| 176 |
+
Caio Ariede <caio.ariede@gmail.com>
|
| 177 |
+
Calvin Spealman <ironfroggy@gmail.com>
|
| 178 |
+
Cameron Curry
|
| 179 |
+
Cameron Knight (ckknight)
|
| 180 |
+
Can Burak Çilingir <canburak@cs.bilgi.edu.tr>
|
| 181 |
+
Can Sarıgöl <ertugrulsarigol@gmail.com>
|
| 182 |
+
Carl Meyer <carl@oddbird.net>
|
| 183 |
+
Carles Pina i Estany <carles@pina.cat>
|
| 184 |
+
Carlos Eduardo de Paula <carlosedp@gmail.com>
|
| 185 |
+
Carlos Matías de la Torre <cmdelatorre@gmail.com>
|
| 186 |
+
Carlton Gibson <carlton.gibson@noumenal.es>
|
| 187 |
+
cedric@terramater.net
|
| 188 |
+
Chad Whitman <chad.whitman@icloud.com>
|
| 189 |
+
ChaosKCW
|
| 190 |
+
Charlie Leifer <coleifer@gmail.com>
|
| 191 |
+
charly.wilhelm@gmail.com
|
| 192 |
+
Chason Chaffin <chason@gmail.com>
|
| 193 |
+
Cheng Zhang
|
| 194 |
+
Chris Adams
|
| 195 |
+
Chris Beaven <smileychris@gmail.com>
|
| 196 |
+
Chris Bennett <chrisrbennett@yahoo.com>
|
| 197 |
+
Chris Cahoon <chris.cahoon@gmail.com>
|
| 198 |
+
Chris Chamberlin <dja@cdc.msbx.net>
|
| 199 |
+
Chris Jerdonek
|
| 200 |
+
Chris Jones <chris@brack3t.com>
|
| 201 |
+
Chris Lamb <chris@chris-lamb.co.uk>
|
| 202 |
+
Chris Streeter <chris@chrisstreeter.com>
|
| 203 |
+
Christian Barcenas <christian@cbarcenas.com>
|
| 204 |
+
Christian Metts
|
| 205 |
+
Christian Oudard <christian.oudard@gmail.com>
|
| 206 |
+
Christian Tanzer <tanzer@swing.co.at>
|
| 207 |
+
Christoffer Sjöbergsson
|
| 208 |
+
Christophe Pettus <xof@thebuild.com>
|
| 209 |
+
Christopher Adams <http://christopheradams.info>
|
| 210 |
+
Christopher Babiak <chrisbabiak@gmail.com>
|
| 211 |
+
Christopher Lenz <https://www.cmlenz.net/>
|
| 212 |
+
Christoph Mędrela <chris.medrela@gmail.com>
|
| 213 |
+
Chris Wagner <cw264701@ohio.edu>
|
| 214 |
+
Chris Wesseling <Chris.Wesseling@cwi.nl>
|
| 215 |
+
Chris Wilson <chris+github@qwirx.com>
|
| 216 |
+
Ciaran McCormick <ciaran@ciaranmccormick.com>
|
| 217 |
+
Claude Paroz <claude@2xlibre.net>
|
| 218 |
+
Clint Ecker
|
| 219 |
+
colin@owlfish.com
|
| 220 |
+
Colin Wood <cwood06@gmail.com>
|
| 221 |
+
Collin Anderson <cmawebsite@gmail.com>
|
| 222 |
+
Collin Grady <collin@collingrady.com>
|
| 223 |
+
Colton Hicks <coltonbhicks@gmail.com>
|
| 224 |
+
Craig Blaszczyk <masterjakul@gmail.com>
|
| 225 |
+
crankycoder@gmail.com
|
| 226 |
+
Curtis Maloney (FunkyBob) <curtis@tinbrain.net>
|
| 227 |
+
dackze+django@gmail.com
|
| 228 |
+
Dagur Páll Ammendrup <dagurp@gmail.com>
|
| 229 |
+
Dane Springmeyer
|
| 230 |
+
Dan Fairs <dan@fezconsulting.com>
|
| 231 |
+
Daniel Alves Barbosa de Oliveira Vaz <danielvaz@gmail.com>
|
| 232 |
+
Daniel Duan <DaNmarner@gmail.com>
|
| 233 |
+
Daniele Procida <daniele@vurt.org>
|
| 234 |
+
Daniel Fairhead <danthedeckie@gmail.com>
|
| 235 |
+
Daniel Greenfeld
|
| 236 |
+
dAniel hAhler
|
| 237 |
+
Daniel Jilg <daniel@breakthesystem.org>
|
| 238 |
+
Daniel Lindsley <daniel@toastdriven.com>
|
| 239 |
+
Daniel Poelzleithner <https://poelzi.org/>
|
| 240 |
+
Daniel Pyrathon <pirosb3@gmail.com>
|
| 241 |
+
Daniel Roseman <http://roseman.org.uk/>
|
| 242 |
+
Daniel Tao <https://philosopherdeveloper.com/>
|
| 243 |
+
Daniel Wiesmann <daniel.wiesmann@gmail.com>
|
| 244 |
+
Danilo Bargen
|
| 245 |
+
Dan Johnson <danj.py@gmail.com>
|
| 246 |
+
Dan Palmer <dan@danpalmer.me>
|
| 247 |
+
Dan Poirier <poirier@pobox.com>
|
| 248 |
+
Dan Stephenson <http://dan.io/>
|
| 249 |
+
Dan Watson <http://danwatson.net/>
|
| 250 |
+
dave@thebarproject.com
|
| 251 |
+
David Ascher <https://ascher.ca/>
|
| 252 |
+
David Avsajanishvili <avsd05@gmail.com>
|
| 253 |
+
David Blewett <david@dawninglight.net>
|
| 254 |
+
David Brenneman <http://davidbrenneman.com>
|
| 255 |
+
David Cramer <dcramer@gmail.com>
|
| 256 |
+
David Danier <david.danier@team23.de>
|
| 257 |
+
David Eklund
|
| 258 |
+
David Foster <david@dafoster.net>
|
| 259 |
+
David Gouldin <dgouldin@gmail.com>
|
| 260 |
+
david@kazserve.org
|
| 261 |
+
David Krauth
|
| 262 |
+
David Larlet <https://larlet.fr/david/>
|
| 263 |
+
David Reynolds <david@reynoldsfamily.org.uk>
|
| 264 |
+
David Sanders <dsanders11@ucsbalum.com>
|
| 265 |
+
David Schein
|
| 266 |
+
David Tulig <david.tulig@gmail.com>
|
| 267 |
+
David Winterbottom <david.winterbottom@gmail.com>
|
| 268 |
+
David Wobrock <david.wobrock@gmail.com>
|
| 269 |
+
Davide Ceretti <dav.ceretti@gmail.com>
|
| 270 |
+
Deep L. Sukhwani <deepsukhwani@gmail.com>
|
| 271 |
+
Deepak Thukral <deep.thukral@gmail.com>
|
| 272 |
+
Denis Kuzmichyov <kuzmichyov@gmail.com>
|
| 273 |
+
Dennis Schwertel <dennisschwertel@gmail.com>
|
| 274 |
+
Derek Willis <http://blog.thescoop.org/>
|
| 275 |
+
Deric Crago <deric.crago@gmail.com>
|
| 276 |
+
deric@monowerks.com
|
| 277 |
+
Deryck Hodge <http://www.devurandom.org/>
|
| 278 |
+
Dimitris Glezos <dimitris@glezos.com>
|
| 279 |
+
Dirk Datzert <dummy@habmalnefrage.de>
|
| 280 |
+
Dirk Eschler <dirk.eschler@gmx.net>
|
| 281 |
+
Dmitri Fedortchenko <zeraien@gmail.com>
|
| 282 |
+
Dmitry Jemerov <intelliyole@gmail.com>
|
| 283 |
+
dne@mayonnaise.net
|
| 284 |
+
Dolan Antenucci <antenucci.d@gmail.com>
|
| 285 |
+
Donald Harvey <donald@donaldharvey.co.uk>
|
| 286 |
+
Donald Stufft <donald@stufft.io>
|
| 287 |
+
Don Spaulding <donspauldingii@gmail.com>
|
| 288 |
+
Doug Beck <doug@douglasbeck.com>
|
| 289 |
+
Doug Napoleone <doug@dougma.com>
|
| 290 |
+
dready <wil@mojipage.com>
|
| 291 |
+
dusk@woofle.net
|
| 292 |
+
Dustyn Gibson <miigotu@gmail.com>
|
| 293 |
+
Ed Morley <https://github.com/edmorley>
|
| 294 |
+
Egidijus Macijauskas <e.macijauskas@outlook.com>
|
| 295 |
+
eibaan@gmail.com
|
| 296 |
+
elky <http://elky.me/>
|
| 297 |
+
Emmanuelle Delescolle <https://github.com/nanuxbe>
|
| 298 |
+
Emil Stenström <em@kth.se>
|
| 299 |
+
enlight
|
| 300 |
+
Enrico <rico.bl@gmail.com>
|
| 301 |
+
Eric Boersma <eric.boersma@gmail.com>
|
| 302 |
+
Eric Brandwein <brandweineric@gmail.com>
|
| 303 |
+
Eric Floehr <eric@intellovations.com>
|
| 304 |
+
Eric Florenzano <floguy@gmail.com>
|
| 305 |
+
Eric Holscher <http://ericholscher.com>
|
| 306 |
+
Eric Moritz <http://eric.themoritzfamily.com/>
|
| 307 |
+
Eric Palakovich Carr <carreric@gmail.com>
|
| 308 |
+
Erik Karulf <erik@karulf.com>
|
| 309 |
+
Erik Romijn <django@solidlinks.nl>
|
| 310 |
+
eriks@win.tue.nl
|
| 311 |
+
Erwin Junge <erwin@junge.nl>
|
| 312 |
+
Esdras Beleza <linux@esdrasbeleza.com>
|
| 313 |
+
Espen Grindhaug <http://grindhaug.org/>
|
| 314 |
+
Étienne Beaulé <beauleetienne0@gmail.com>
|
| 315 |
+
Eugene Lazutkin <http://lazutkin.com/blog/>
|
| 316 |
+
Evan Grim <https://github.com/egrim>
|
| 317 |
+
Fabian Büchler <fabian.buechler@inoqo.com>
|
| 318 |
+
Fabrice Aneche <akh@nobugware.com>
|
| 319 |
+
Farhaan Bukhsh <farhaan.bukhsh@gmail.com>
|
| 320 |
+
favo@exoweb.net
|
| 321 |
+
fdr <drfarina@gmail.com>
|
| 322 |
+
Federico Capoano <nemesis@ninux.org>
|
| 323 |
+
Felipe Lee <felipe.lee.garcia@gmail.com>
|
| 324 |
+
Filip Noetzel <http://filip.noetzel.co.uk/>
|
| 325 |
+
Filip Wasilewski <filip.wasilewski@gmail.com>
|
| 326 |
+
Finn Gruwier Larsen <finn@gruwier.dk>
|
| 327 |
+
Fiza Ashraf <fizaashraf37@gmail.com>
|
| 328 |
+
Flávio Juvenal da Silva Junior <flavio@vinta.com.br>
|
| 329 |
+
flavio.curella@gmail.com
|
| 330 |
+
Florian Apolloner <florian@apolloner.eu>
|
| 331 |
+
Florian Demmer <fdemmer@gmail.com>
|
| 332 |
+
Florian Moussous <florian.moussous@gmail.com>
|
| 333 |
+
fnaimi66 <https://github.com/fnaimi66>
|
| 334 |
+
Fran Hrženjak <fran.hrzenjak@gmail.com>
|
| 335 |
+
Francesco Panico <panico.francesco@gmail.com>
|
| 336 |
+
Francisco Albarran Cristobal <pahko.xd@gmail.com>
|
| 337 |
+
Francisco Couzo <franciscouzo@gmail.com>
|
| 338 |
+
François Freitag <mail@franek.fr>
|
| 339 |
+
Frank Tegtmeyer <fte@fte.to>
|
| 340 |
+
Frank Wierzbicki
|
| 341 |
+
Frank Wiles <frank@revsys.com>
|
| 342 |
+
František Malina <https://unilexicon.com/fm/>
|
| 343 |
+
Fraser Nevett <mail@nevett.org>
|
| 344 |
+
Gabriel Grant <g@briel.ca>
|
| 345 |
+
Gabriel Hurley <gabriel@strikeawe.com>
|
| 346 |
+
gandalf@owca.info
|
| 347 |
+
Garry Lawrence
|
| 348 |
+
Garry Polley <garrympolley@gmail.com>
|
| 349 |
+
Garth Kidd <http://www.deadlybloodyserious.com/>
|
| 350 |
+
Gary Wilson <gary.wilson@gmail.com>
|
| 351 |
+
Gasper Koren
|
| 352 |
+
Gasper Zejn <zejn@kiberpipa.org>
|
| 353 |
+
Gav O'Connor <https://github.com/Scalamoosh>
|
| 354 |
+
Gavin Wahl <gavinwahl@gmail.com>
|
| 355 |
+
Ge Hanbin <xiaomiba0904@gmail.com>
|
| 356 |
+
geber@datacollect.com
|
| 357 |
+
Geert Vanderkelen
|
| 358 |
+
George Karpenkov <george@metaworld.ru>
|
| 359 |
+
George Song <george@damacy.net>
|
| 360 |
+
George Vilches <gav@thataddress.com>
|
| 361 |
+
Georg "Hugo" Bauer <gb@hugo.westfalen.de>
|
| 362 |
+
Georgi Stanojevski <glisha@gmail.com>
|
| 363 |
+
Gerardo Orozco <gerardo.orozco.mosqueda@gmail.com>
|
| 364 |
+
Gil Gonçalves <lursty@gmail.com>
|
| 365 |
+
Girish Kumar <girishkumarkh@gmail.com>
|
| 366 |
+
Girish Sontakke <girishsontakke7@gmail.com>
|
| 367 |
+
Gisle Aas <gisle@aas.no>
|
| 368 |
+
Glenn Maynard <glenn@zewt.org>
|
| 369 |
+
glin@seznam.cz
|
| 370 |
+
GomoX <gomo@datafull.com>
|
| 371 |
+
Gonzalo Saavedra <gonzalosaavedra@gmail.com>
|
| 372 |
+
Gopal Narayanan <gopastro@gmail.com>
|
| 373 |
+
Graham Carlyle <graham.carlyle@maplecroft.net>
|
| 374 |
+
Grant Jenks <contact@grantjenks.com>
|
| 375 |
+
Greg Chapple <gregchapple1@gmail.com>
|
| 376 |
+
Greg Twohig
|
| 377 |
+
Gregor Allensworth <greg.allensworth@gmail.com>
|
| 378 |
+
Gregor Müllegger <gregor@muellegger.de>
|
| 379 |
+
Grigory Fateyev <greg@dial.com.ru>
|
| 380 |
+
Grzegorz Ślusarek <grzegorz.slusarek@gmail.com>
|
| 381 |
+
Guilherme Mesquita Gondim <semente@taurinus.org>
|
| 382 |
+
Guillaume Pannatier <guillaume.pannatier@gmail.com>
|
| 383 |
+
Gustavo Picon
|
| 384 |
+
hambaloney
|
| 385 |
+
Hang Park <hangpark@kaist.ac.kr>
|
| 386 |
+
Hannes Ljungberg <hannes.ljungberg@gmail.com>
|
| 387 |
+
Hannes Struß <x@hannesstruss.de>
|
| 388 |
+
Harm Geerts <hgeerts@gmail.com>
|
| 389 |
+
Hasan Ramezani <hasan.r67@gmail.com>
|
| 390 |
+
Hawkeye
|
| 391 |
+
Helen Sherwood-Taylor <helen@rrdlabs.co.uk>
|
| 392 |
+
Henrique Romano <onaiort@gmail.com>
|
| 393 |
+
Henry Dang <henrydangprg@gmail.com>
|
| 394 |
+
Hidde Bultsma
|
| 395 |
+
Himanshu Chauhan <hchauhan1404@outlook.com>
|
| 396 |
+
hipertracker@gmail.com
|
| 397 |
+
Hiroki Kiyohara <hirokiky@gmail.com>
|
| 398 |
+
Honza Král <honza.kral@gmail.com>
|
| 399 |
+
Horst Gutmann <zerok@zerokspot.com>
|
| 400 |
+
Hugo Osvaldo Barrera <hugo@barrera.io>
|
| 401 |
+
HyukJin Jang <wkdgurwls00@naver.com>
|
| 402 |
+
Hyun Mi Ae
|
| 403 |
+
Iacopo Spalletti <i.spalletti@nephila.it>
|
| 404 |
+
Ian A Wilson <http://ianawilson.com>
|
| 405 |
+
Ian Clelland <clelland@gmail.com>
|
| 406 |
+
Ian G. Kelly <ian.g.kelly@gmail.com>
|
| 407 |
+
Ian Holsman <http://feh.holsman.net/>
|
| 408 |
+
Ian Lee <IanLee1521@gmail.com>
|
| 409 |
+
Ibon <ibonso@gmail.com>
|
| 410 |
+
Idan Gazit <idan@gazit.me>
|
| 411 |
+
Idan Melamed
|
| 412 |
+
Ifedapo Olarewaju <ifedapoolarewaju@gmail.com>
|
| 413 |
+
Igor Kolar <ike@email.si>
|
| 414 |
+
Illia Volochii <illia.volochii@gmail.com>
|
| 415 |
+
Ilya Bass
|
| 416 |
+
Ilya Semenov <semenov@inetss.com>
|
| 417 |
+
Ingo Klöcker <djangoproject@ingo-kloecker.de>
|
| 418 |
+
I.S. van Oostveen <v.oostveen@idca.nl>
|
| 419 |
+
Iuri de Silvio <https://github.com/iurisilvio>
|
| 420 |
+
ivan.chelubeev@gmail.com
|
| 421 |
+
Ivan Sagalaev (Maniac) <http://www.softwaremaniacs.org/>
|
| 422 |
+
Jaap Roes <jaap.roes@gmail.com>
|
| 423 |
+
Jack Moffitt <https://metajack.im/>
|
| 424 |
+
Jacob Burch <jacobburch@gmail.com>
|
| 425 |
+
Jacob Green
|
| 426 |
+
Jacob Kaplan-Moss <jacob@jacobian.org>
|
| 427 |
+
Jacob Rief <jacob.rief@gmail.com>
|
| 428 |
+
Jacob Walls <http://www.jacobtylerwalls.com/>
|
| 429 |
+
Jakub Paczkowski <jakub@paczkowski.eu>
|
| 430 |
+
Jakub Wilk <jwilk@jwilk.net>
|
| 431 |
+
Jakub Wiśniowski <restless.being@gmail.com>
|
| 432 |
+
james_027@yahoo.com
|
| 433 |
+
James Aylett
|
| 434 |
+
James Bennett <james@b-list.org>
|
| 435 |
+
James Gillard <jamesgillard@live.co.uk>
|
| 436 |
+
James Murty
|
| 437 |
+
James Tauber <jtauber@jtauber.com>
|
| 438 |
+
James Timmins <jameshtimmins@gmail.com>
|
| 439 |
+
James Turk <dev@jamesturk.net>
|
| 440 |
+
James Wheare <django@sparemint.com>
|
| 441 |
+
Jamie Matthews <jamie@mtth.org>
|
| 442 |
+
Jannis Leidel <jannis@leidel.info>
|
| 443 |
+
Janos Guljas
|
| 444 |
+
Jan Pazdziora
|
| 445 |
+
Jan Rademaker
|
| 446 |
+
Jarek Głowacki <jarekwg@gmail.com>
|
| 447 |
+
Jarek Zgoda <jarek.zgoda@gmail.com>
|
| 448 |
+
Jarosław Wygoda <jaroslaw@wygoda.me>
|
| 449 |
+
Jason Davies (Esaj) <https://www.jasondavies.com/>
|
| 450 |
+
Jason Huggins <http://www.jrandolph.com/blog/>
|
| 451 |
+
Jason McBrayer <http://www.carcosa.net/jason/>
|
| 452 |
+
jason.sidabras@gmail.com
|
| 453 |
+
Jason Yan <tailofthesun@gmail.com>
|
| 454 |
+
Javier Mansilla <javimansilla@gmail.com>
|
| 455 |
+
Jay Parlar <parlar@gmail.com>
|
| 456 |
+
Jay Welborn <jesse.welborn@gmail.com>
|
| 457 |
+
Jay Wineinger <jay.wineinger@gmail.com>
|
| 458 |
+
J. Clifford Dyer <jcd@sdf.lonestar.org>
|
| 459 |
+
jcrasta@gmail.com
|
| 460 |
+
jdetaeye
|
| 461 |
+
Jeff Anderson <jefferya@programmerq.net>
|
| 462 |
+
Jeff Balogh <jbalogh@mozilla.com>
|
| 463 |
+
Jeff Hui <jeffkhui@gmail.com>
|
| 464 |
+
Jeffrey Gelens <jeffrey@gelens.org>
|
| 465 |
+
Jeff Triplett <jeff.triplett@gmail.com>
|
| 466 |
+
Jeffrey Yancey <jeffrey.yancey@gmail.com>
|
| 467 |
+
Jens Diemer <django@htfx.de>
|
| 468 |
+
Jens Page
|
| 469 |
+
Jensen Cochran <jensen.cochran@gmail.com>
|
| 470 |
+
Jeong-Min Lee <falsetru@gmail.com>
|
| 471 |
+
Jérémie Blaser <blaserje@gmail.com>
|
| 472 |
+
Jeremy Bowman <https://github.com/jmbowman>
|
| 473 |
+
Jeremy Carbaugh <jcarbaugh@gmail.com>
|
| 474 |
+
Jeremy Dunck <jdunck@gmail.com>
|
| 475 |
+
Jeremy Lainé <jeremy.laine@m4x.org>
|
| 476 |
+
Jerin Peter George <jerinpetergeorge@gmail.com>
|
| 477 |
+
Jesse Young <adunar@gmail.com>
|
| 478 |
+
Jezeniel Zapanta <jezeniel.zapanta@gmail.com>
|
| 479 |
+
jhenry <jhenry@theonion.com>
|
| 480 |
+
Jim Dalton <jim.dalton@gmail.com>
|
| 481 |
+
Jimmy Song <jaejoon@gmail.com>
|
| 482 |
+
Jiri Barton
|
| 483 |
+
Joachim Jablon <ewjoachim@gmail.com>
|
| 484 |
+
Joao Oliveira <joaoxsouls@gmail.com>
|
| 485 |
+
Joao Pedro Silva <j.pedro004@gmail.com>
|
| 486 |
+
Joe Heck <http://www.rhonabwy.com/wp/>
|
| 487 |
+
Joe Jackson <joe@joejackson.me>
|
| 488 |
+
Joel Bohman <mail@jbohman.com>
|
| 489 |
+
Joel Heenan <joelh-django@planetjoel.com>
|
| 490 |
+
Joel Watts <joel@joelwatts.com>
|
| 491 |
+
Joe Topjian <http://joe.terrarum.net/geek/code/python/django/>
|
| 492 |
+
Johan C. Stöver <johan@nilling.nl>
|
| 493 |
+
Johann Queuniet <johann.queuniet@adh.naellia.eu>
|
| 494 |
+
john@calixto.net
|
| 495 |
+
John D'Agostino <john.dagostino@gmail.com>
|
| 496 |
+
John D'Ambrosio <dambrosioj@gmail.com>
|
| 497 |
+
John Huddleston <huddlej@wwu.edu>
|
| 498 |
+
John Moses <moses.john.r@gmail.com>
|
| 499 |
+
John Paulett <john@paulett.org>
|
| 500 |
+
John Shaffer <jshaffer2112@gmail.com>
|
| 501 |
+
Jökull Sólberg Auðunsson <jokullsolberg@gmail.com>
|
| 502 |
+
Jon Dufresne <jon.dufresne@gmail.com>
|
| 503 |
+
Jon Janzen <jon@jonjanzen.com>
|
| 504 |
+
Jonas Haag <jonas@lophus.org>
|
| 505 |
+
Jonas Lundberg <jonas.lundberg@gmail.com>
|
| 506 |
+
Jonathan Davis <jonathandavis47780@gmail.com>
|
| 507 |
+
Jonatas C. D. <jonatas.cd@gmail.com>
|
| 508 |
+
Jonathan Buchanan <jonathan.buchanan@gmail.com>
|
| 509 |
+
Jonathan Daugherty (cygnus) <http://www.cprogrammer.org/>
|
| 510 |
+
Jonathan Feignberg <jdf@pobox.com>
|
| 511 |
+
Jonathan Slenders
|
| 512 |
+
Jonny Park <jonnythebard9@gmail.com>
|
| 513 |
+
Jordan Bae <qoentlr37@gmail.com>
|
| 514 |
+
Jordan Dimov <s3x3y1@gmail.com>
|
| 515 |
+
Jordi J. Tablada <jordi.joan@gmail.com>
|
| 516 |
+
Jorge Bastida <me@jorgebastida.com>
|
| 517 |
+
Jorge Gajon <gajon@gajon.org>
|
| 518 |
+
José Tomás Tocino García <josetomas.tocino@gmail.com>
|
| 519 |
+
Josef Rousek <josef.rousek@gmail.com>
|
| 520 |
+
Joseph Kocherhans <joseph@jkocherhans.com>
|
| 521 |
+
Josh Smeaton <josh.smeaton@gmail.com>
|
| 522 |
+
Joshua Cannon <joshdcannon@gmail.com>
|
| 523 |
+
Joshua Ginsberg <jag@flowtheory.net>
|
| 524 |
+
Jozko Skrablin <jozko.skrablin@gmail.com>
|
| 525 |
+
J. Pablo Fernandez <pupeno@pupeno.com>
|
| 526 |
+
jpellerin@gmail.com
|
| 527 |
+
Juan Catalano <catalanojuan@gmail.com>
|
| 528 |
+
Juan Manuel Caicedo <juan.manuel.caicedo@gmail.com>
|
| 529 |
+
Juan Pedro Fisanotti <fisadev@gmail.com>
|
| 530 |
+
Julia Elman
|
| 531 |
+
Julia Matsieva <julia.matsieva@gmail.com>
|
| 532 |
+
Julian Bez
|
| 533 |
+
Julie Rymer <rymerjulie.pro@gmail.com>
|
| 534 |
+
Julien Phalip <jphalip@gmail.com>
|
| 535 |
+
Junyoung Choi <cupjoo@gmail.com>
|
| 536 |
+
junzhang.jn@gmail.com
|
| 537 |
+
Jure Cuhalev <gandalf@owca.info>
|
| 538 |
+
Justin Bronn <jbronn@gmail.com>
|
| 539 |
+
Justine Tunney <jtunney@gmail.com>
|
| 540 |
+
Justin Lilly <justinlilly@gmail.com>
|
| 541 |
+
Justin Michalicek <jmichalicek@gmail.com>
|
| 542 |
+
Justin Myles Holmes <justin@slashrootcafe.com>
|
| 543 |
+
Jyrki Pulliainen <jyrki.pulliainen@gmail.com>
|
| 544 |
+
Kadesarin Sanjek
|
| 545 |
+
Kapil Bansal <kapilbansal.gbpecdelhi@gmail.com>
|
| 546 |
+
Karderio <karderio@gmail.com>
|
| 547 |
+
Karen Tracey <kmtracey@gmail.com>
|
| 548 |
+
Karol Sikora <elektrrrus@gmail.com>
|
| 549 |
+
Katherine “Kati” Michel <kthrnmichel@gmail.com>
|
| 550 |
+
Kathryn Killebrew <kathryn.killebrew@gmail.com>
|
| 551 |
+
Katie Miller <katie@sub50.com>
|
| 552 |
+
Keith Bussell <kbussell@gmail.com>
|
| 553 |
+
Kenneth Love <kennethlove@gmail.com>
|
| 554 |
+
Kent Hauser <kent@khauser.net>
|
| 555 |
+
Keryn Knight <keryn@kerynknight.com>
|
| 556 |
+
Kevin Grinberg <kevin@kevingrinberg.com>
|
| 557 |
+
Kevin Kubasik <kevin@kubasik.net>
|
| 558 |
+
Kevin McConnell <kevin.mcconnell@gmail.com>
|
| 559 |
+
Kieran Holland <http://www.kieranholland.com>
|
| 560 |
+
kilian <kilian.cavalotti@lip6.fr>
|
| 561 |
+
Kim Joon Hwan 김준환 <xncbf12@gmail.com>
|
| 562 |
+
Kim Soung Ryoul 김성렬 <kimsoungryoul@gmail.com>
|
| 563 |
+
Klaas van Schelven <klaas@vanschelven.com>
|
| 564 |
+
knox <christobzr@gmail.com>
|
| 565 |
+
konrad@gwu.edu
|
| 566 |
+
Kowito Charoenratchatabhan <kowito@felspar.com>
|
| 567 |
+
Krišjānis Vaiders <krisjanisvaiders@gmail.com>
|
| 568 |
+
krzysiek.pawlik@silvermedia.pl
|
| 569 |
+
Krzysztof Jagiello <me@kjagiello.com>
|
| 570 |
+
Krzysztof Jurewicz <krzysztof.jurewicz@gmail.com>
|
| 571 |
+
Krzysztof Kulewski <kulewski@gmail.com>
|
| 572 |
+
kurtiss@meetro.com
|
| 573 |
+
Lakin Wecker <lakin@structuredabstraction.com>
|
| 574 |
+
Lars Yencken <lars.yencken@gmail.com>
|
| 575 |
+
Lau Bech Lauritzen
|
| 576 |
+
Laurent Luce <https://www.laurentluce.com/>
|
| 577 |
+
Laurent Rahuel <laurent.rahuel@gmail.com>
|
| 578 |
+
lcordier@point45.com
|
| 579 |
+
Leah Culver <leah.culver@gmail.com>
|
| 580 |
+
Leandra Finger <leandra.finger@gmail.com>
|
| 581 |
+
Lee Reilly <lee@leereilly.net>
|
| 582 |
+
Lee Sanghyuck <shlee322@elab.kr>
|
| 583 |
+
Leo "hylje" Honkanen <sealage@gmail.com>
|
| 584 |
+
Leo Shklovskii
|
| 585 |
+
Leo Soto <leo.soto@gmail.com>
|
| 586 |
+
lerouxb@gmail.com
|
| 587 |
+
Lex Berezhny <lex@damoti.com>
|
| 588 |
+
Liang Feng <hutuworm@gmail.com>
|
| 589 |
+
limodou
|
| 590 |
+
Lincoln Smith <lincoln.smith@anu.edu.au>
|
| 591 |
+
Liu Yijie <007gzs@gmail.com>
|
| 592 |
+
Loek van Gent <loek@barakken.nl>
|
| 593 |
+
Loïc Bistuer <loic.bistuer@sixmedia.com>
|
| 594 |
+
Lowe Thiderman <lowe.thiderman@gmail.com>
|
| 595 |
+
Luan Pablo <luanpab@gmail.com>
|
| 596 |
+
Lucas Connors <https://www.revolutiontech.ca/>
|
| 597 |
+
Luciano Ramalho
|
| 598 |
+
Lucidiot <lucidiot@brainshit.fr>
|
| 599 |
+
Ludvig Ericson <ludvig.ericson@gmail.com>
|
| 600 |
+
Luis C. Berrocal <luis.berrocal.1942@gmail.com>
|
| 601 |
+
Łukasz Langa <lukasz@langa.pl>
|
| 602 |
+
Łukasz Rekucki <lrekucki@gmail.com>
|
| 603 |
+
Luke Granger-Brown <django@lukegb.com>
|
| 604 |
+
Luke Plant <L.Plant.98@cantab.net>
|
| 605 |
+
Maciej Fijalkowski
|
| 606 |
+
Maciej Wiśniowski <pigletto@gmail.com>
|
| 607 |
+
Mads Jensen <https://github.com/atombrella>
|
| 608 |
+
Makoto Tsuyuki <mtsuyuki@gmail.com>
|
| 609 |
+
Malcolm Tredinnick
|
| 610 |
+
Manav Agarwal <dpsman13016@gmail.com>
|
| 611 |
+
Manuel Saelices <msaelices@yaco.es>
|
| 612 |
+
Manuzhai
|
| 613 |
+
Marc Aymerich Gubern
|
| 614 |
+
Marc Egli <frog32@me.com>
|
| 615 |
+
Marcel Telka <marcel@telka.sk>
|
| 616 |
+
Marcelo Galigniana <marcelogaligniana@gmail.com>
|
| 617 |
+
Marc Fargas <telenieko@telenieko.com>
|
| 618 |
+
Marc Garcia <marc.garcia@accopensys.com>
|
| 619 |
+
Marcin Wróbel
|
| 620 |
+
Marc Remolt <m.remolt@webmasters.de>
|
| 621 |
+
Marc Seguí Coll <metarizard@gmail.com>
|
| 622 |
+
Marc Tamlyn <marc.tamlyn@gmail.com>
|
| 623 |
+
Marc-Aurèle Brothier <ma.brothier@gmail.com>
|
| 624 |
+
Marian Andre <django@andre.sk>
|
| 625 |
+
Marijn Vriens <marijn@metronomo.cl>
|
| 626 |
+
Mario Gonzalez <gonzalemario@gmail.com>
|
| 627 |
+
Mariusz Felisiak <felisiak.mariusz@gmail.com>
|
| 628 |
+
Mark Biggers <biggers@utsl.com>
|
| 629 |
+
Mark Evans <mark@meltdownlabs.com>
|
| 630 |
+
Mark Gensler <mark.gensler@protonmail.com>
|
| 631 |
+
mark@junklight.com
|
| 632 |
+
Mark Lavin <markdlavin@gmail.com>
|
| 633 |
+
Mark Sandstrom <mark@deliciouslynerdy.com>
|
| 634 |
+
Markus Amalthea Magnuson <markus.magnuson@gmail.com>
|
| 635 |
+
Markus Holtermann <https://markusholtermann.eu>
|
| 636 |
+
Marten Kenbeek <marten.knbk+django@gmail.com>
|
| 637 |
+
Marti Raudsepp <marti@juffo.org>
|
| 638 |
+
martin.glueck@gmail.com
|
| 639 |
+
Martin Green
|
| 640 |
+
Martin Kosír <martin@martinkosir.net>
|
| 641 |
+
Martin Mahner <https://www.mahner.org/>
|
| 642 |
+
Martin Maney <http://www.chipy.org/Martin_Maney>
|
| 643 |
+
Martin von Gagern <gagern@google.com>
|
| 644 |
+
Mart Sõmermaa <https://github.com/mrts>
|
| 645 |
+
Marty Alchin <gulopine@gamemusic.org>
|
| 646 |
+
Masashi Shibata <m.shibata1020@gmail.com>
|
| 647 |
+
masonsimon+django@gmail.com
|
| 648 |
+
Massimiliano Ravelli <massimiliano.ravelli@gmail.com>
|
| 649 |
+
Massimo Scamarcia <massimo.scamarcia@gmail.com>
|
| 650 |
+
Mathieu Agopian <mathieu.agopian@gmail.com>
|
| 651 |
+
Matías Bordese
|
| 652 |
+
Matt Boersma <matt@sprout.org>
|
| 653 |
+
Matt Brewer <matt.brewer693@gmail.com>
|
| 654 |
+
Matt Croydon <http://www.postneo.com/>
|
| 655 |
+
Matt Deacalion Stevens <matt@dirtymonkey.co.uk>
|
| 656 |
+
Matt Dennenbaum
|
| 657 |
+
Matthew Flanagan <https://wadofstuff.blogspot.com/>
|
| 658 |
+
Matthew Schinckel <matt@schinckel.net>
|
| 659 |
+
Matthew Somerville <matthew-django@dracos.co.uk>
|
| 660 |
+
Matthew Tretter <m@tthewwithanm.com>
|
| 661 |
+
Matthew Wilkes <matt@matthewwilkes.name>
|
| 662 |
+
Matthias Kestenholz <mk@406.ch>
|
| 663 |
+
Matthias Pronk <django@masida.nl>
|
| 664 |
+
Matt Hoskins <skaffenuk@googlemail.com>
|
| 665 |
+
Matt McClanahan <https://mmcc.cx/>
|
| 666 |
+
Matt Riggott
|
| 667 |
+
Matt Robenolt <m@robenolt.com>
|
| 668 |
+
Mattia Larentis <mattia@laretis.eu>
|
| 669 |
+
Mattia Procopio <promat85@gmail.com>
|
| 670 |
+
Mattias Loverot <mattias@stubin.se>
|
| 671 |
+
mattycakes@gmail.com
|
| 672 |
+
Max Burstein <http://maxburstein.com>
|
| 673 |
+
Max Derkachev <mderk@yandex.ru>
|
| 674 |
+
Max Smolens <msmolens@gmail.com>
|
| 675 |
+
Maxime Lorant <maxime.lorant@gmail.com>
|
| 676 |
+
Maxime Turcotte <maxocub@riseup.net>
|
| 677 |
+
Maximilian Merz <django@mxmerz.de>
|
| 678 |
+
Maximillian Dornseif <md@hudora.de>
|
| 679 |
+
mccutchen@gmail.com
|
| 680 |
+
Meghana Bhange <meghanabhange13@gmail.com>
|
| 681 |
+
Meir Kriheli <http://mksoft.co.il/>
|
| 682 |
+
Michael S. Brown <michael@msbrown.net>
|
| 683 |
+
Michael Hall <mhall1@ualberta.ca>
|
| 684 |
+
Michael Josephson <http://www.sdjournal.com/>
|
| 685 |
+
Michael Lissner <mike@free.law>
|
| 686 |
+
Michael Manfre <mmanfre@gmail.com>
|
| 687 |
+
michael.mcewan@gmail.com
|
| 688 |
+
Michael Placentra II <someone@michaelplacentra2.net>
|
| 689 |
+
Michael Radziej <mir@noris.de>
|
| 690 |
+
Michael Sanders <m.r.sanders@gmail.com>
|
| 691 |
+
Michael Schwarz <michi.schwarz@gmail.com>
|
| 692 |
+
Michael Sinov <sihaelov@gmail.com>
|
| 693 |
+
Michael Thornhill <michael.thornhill@gmail.com>
|
| 694 |
+
Michal Chruszcz <troll@pld-linux.org>
|
| 695 |
+
michal@plovarna.cz
|
| 696 |
+
Michał Modzelewski <michal.modzelewski@gmail.com>
|
| 697 |
+
Mihai Damian <yang_damian@yahoo.com>
|
| 698 |
+
Mihai Preda <mihai_preda@yahoo.com>
|
| 699 |
+
Mikaël Barbero <mikael.barbero nospam at nospam free.fr>
|
| 700 |
+
Mike Axiak <axiak@mit.edu>
|
| 701 |
+
Mike Grouchy <https://mikegrouchy.com/>
|
| 702 |
+
Mike Malone <mjmalone@gmail.com>
|
| 703 |
+
Mike Richardson
|
| 704 |
+
Mike Wiacek <mjwiacek@google.com>
|
| 705 |
+
Mikhail Korobov <kmike84@googlemail.com>
|
| 706 |
+
Mikko Hellsing <mikko@sorl.net>
|
| 707 |
+
Mikołaj Siedlarek <mikolaj.siedlarek@gmail.com>
|
| 708 |
+
milkomeda
|
| 709 |
+
Milton Waddams
|
| 710 |
+
mitakummaa@gmail.com
|
| 711 |
+
mmarshall
|
| 712 |
+
Moayad Mardini <moayad.m@gmail.com>
|
| 713 |
+
Morgan Aubert <morgan.aubert@zoho.com>
|
| 714 |
+
Moritz Sichert <moritz.sichert@googlemail.com>
|
| 715 |
+
Morten Bagai <m@bagai.com>
|
| 716 |
+
msaelices <msaelices@gmail.com>
|
| 717 |
+
msundstr
|
| 718 |
+
Mushtaq Ali <mushtaak@gmail.com>
|
| 719 |
+
Mykola Zamkovoi <nickzam@gmail.com>
|
| 720 |
+
Nadège Michel <michel.nadege@gmail.com>
|
| 721 |
+
Nagy Károly <charlie@rendszergazda.com>
|
| 722 |
+
Nasimul Haque <nasim.haque@gmail.com>
|
| 723 |
+
Nasir Hussain <nasirhjafri@gmail.com>
|
| 724 |
+
Natalia Bidart <nataliabidart@gmail.com>
|
| 725 |
+
Nate Bragg <jonathan.bragg@alum.rpi.edu>
|
| 726 |
+
Nathan Gaberel <nathan@gnab.fr>
|
| 727 |
+
Neal Norwitz <nnorwitz@google.com>
|
| 728 |
+
Nebojša Dorđević
|
| 729 |
+
Ned Batchelder <https://nedbatchelder.com/>
|
| 730 |
+
Nena Kojadin <nena@kiberpipa.org>
|
| 731 |
+
Niall Dalton <niall.dalton12@gmail.com>
|
| 732 |
+
Niall Kelly <duke.sam.vimes@gmail.com>
|
| 733 |
+
Nick Efford <nick@efford.org>
|
| 734 |
+
Nick Lane <nick.lane.au@gmail.com>
|
| 735 |
+
Nick Pope <nick@nickpope.me.uk>
|
| 736 |
+
Nick Presta <nick@nickpresta.ca>
|
| 737 |
+
Nick Sandford <nick.sandford@gmail.com>
|
| 738 |
+
Nick Sarbicki <nick.a.sarbicki@gmail.com>
|
| 739 |
+
Niclas Olofsson <n@niclasolofsson.se>
|
| 740 |
+
Nicola Larosa <nico@teknico.net>
|
| 741 |
+
Nicolas Lara <nicolaslara@gmail.com>
|
| 742 |
+
Nicolas Noé <nicolas@niconoe.eu>
|
| 743 |
+
Nikita Marchant <nikita.marchant@gmail.com>
|
| 744 |
+
Niran Babalola <niran@niran.org>
|
| 745 |
+
Nis Jørgensen <nis@superlativ.dk>
|
| 746 |
+
Nowell Strite <https://nowell.strite.org/>
|
| 747 |
+
Nuno Mariz <nmariz@gmail.com>
|
| 748 |
+
Octavio Peri <octaperi@gmail.com>
|
| 749 |
+
oggie rob <oz.robharvey@gmail.com>
|
| 750 |
+
oggy <ognjen.maric@gmail.com>
|
| 751 |
+
Oliver Beattie <oliver@obeattie.com>
|
| 752 |
+
Oliver Rutherfurd <http://rutherfurd.net/>
|
| 753 |
+
Olivier Sels <olivier.sels@gmail.com>
|
| 754 |
+
Olivier Tabone <olivier.tabone@ripplemotion.fr>
|
| 755 |
+
Orestis Markou <orestis@orestis.gr>
|
| 756 |
+
Orne Brocaar <http://brocaar.com/>
|
| 757 |
+
Oscar Ramirez <tuxskar@gmail.com>
|
| 758 |
+
Ossama M. Khayat <okhayat@yahoo.com>
|
| 759 |
+
Owen Griffiths
|
| 760 |
+
Ömer Faruk Abacı <https://github.com/omerfarukabaci/>
|
| 761 |
+
Pablo Martín <goinnn@gmail.com>
|
| 762 |
+
Panos Laganakos <panos.laganakos@gmail.com>
|
| 763 |
+
Paolo Melchiorre <paolo@melchiorre.org>
|
| 764 |
+
Pascal Hartig <phartig@rdrei.net>
|
| 765 |
+
Pascal Varet
|
| 766 |
+
Patrik Sletmo <patrik.sletmo@gmail.com>
|
| 767 |
+
Paul Bissex <http://e-scribe.com/>
|
| 768 |
+
Paul Collier <paul@paul-collier.com>
|
| 769 |
+
Paul Collins <paul.collins.iii@gmail.com>
|
| 770 |
+
Paul Donohue <django@PaulSD.com>
|
| 771 |
+
Paul Lanier <planier@google.com>
|
| 772 |
+
Paul McLanahan <paul@mclanahan.net>
|
| 773 |
+
Paul McMillan <Paul@McMillan.ws>
|
| 774 |
+
Paulo Poiati <paulogpoiati@gmail.com>
|
| 775 |
+
Paulo Scardine <paulo@scardine.com.br>
|
| 776 |
+
Paul Smith <blinkylights23@gmail.com>
|
| 777 |
+
Pavel Kulikov <kulikovpavel@gmail.com>
|
| 778 |
+
pavithran s <pavithran.s@gmail.com>
|
| 779 |
+
Pavlo Kapyshin <i@93z.org>
|
| 780 |
+
permonik@mesias.brnonet.cz
|
| 781 |
+
Petar Marić <http://www.petarmaric.com/>
|
| 782 |
+
Pete Crosier <pete.crosier@gmail.com>
|
| 783 |
+
peter@mymart.com
|
| 784 |
+
Peter Sheats <sheats@gmail.com>
|
| 785 |
+
Peter van Kampen
|
| 786 |
+
Peter Zsoldos <http://zsoldosp.eu>
|
| 787 |
+
Pete Shinners <pete@shinners.org>
|
| 788 |
+
Petr Marhoun <petr.marhoun@gmail.com>
|
| 789 |
+
Petter Strandmark
|
| 790 |
+
pgross@thoughtworks.com
|
| 791 |
+
phaedo <http://phaedo.cx/>
|
| 792 |
+
phil.h.smith@gmail.com
|
| 793 |
+
Philip Lindborg <philip.lindborg@gmail.com>
|
| 794 |
+
Philippe Raoult <philippe.raoult@n2nsoft.com>
|
| 795 |
+
phil@produxion.net
|
| 796 |
+
Piotr Jakimiak <piotr.jakimiak@gmail.com>
|
| 797 |
+
Piotr Lewandowski <piotr.lewandowski@gmail.com>
|
| 798 |
+
plisk
|
| 799 |
+
polpak@yahoo.com
|
| 800 |
+
pradeep.gowda@gmail.com
|
| 801 |
+
Preston Holmes <preston@ptone.com>
|
| 802 |
+
Preston Timmons <prestontimmons@gmail.com>
|
| 803 |
+
Priyansh Saxena <askpriyansh@gmail.com>
|
| 804 |
+
Przemysław Buczkowski <przemub@przemub.pl>
|
| 805 |
+
Przemysław Suliga <http://suligap.net>
|
| 806 |
+
Qi Zhao <zhaoqi99@outlook.com>
|
| 807 |
+
Rachel Tobin <rmtobin@me.com>
|
| 808 |
+
Rachel Willmer <http://www.willmer.com/kb/>
|
| 809 |
+
Radek Švarz <https://www.svarz.cz/translate/>
|
| 810 |
+
Rafael Giebisch <rafael@giebisch-mail.de>
|
| 811 |
+
Raffaele Salmaso <raffaele@salmaso.org>
|
| 812 |
+
Rahmat Faisal <mad.skidipap@gmail.com>
|
| 813 |
+
Rajesh Dhawan <rajesh.dhawan@gmail.com>
|
| 814 |
+
Ramez Ashraf <ramezashraf@gmail.com>
|
| 815 |
+
Ramil Yanbulatov <rayman1104@gmail.com>
|
| 816 |
+
Ramin Farajpour Cami <ramin.blackhat@gmail.com>
|
| 817 |
+
Ramiro Morales <ramiro@rmorales.net>
|
| 818 |
+
Ramon Saraiva <ramonsaraiva@gmail.com>
|
| 819 |
+
Ram Rachum <ram@rachum.com>
|
| 820 |
+
Randy Barlow <randy@electronsweatshop.com>
|
| 821 |
+
Raphaël Barrois <raphael.barrois@m4x.org>
|
| 822 |
+
Raphael Michel <mail@raphaelmichel.de>
|
| 823 |
+
Raúl Cumplido <raulcumplido@gmail.com>
|
| 824 |
+
Rebecca Smith <rebkwok@gmail.com>
|
| 825 |
+
Remco Wendt <remco.wendt@gmail.com>
|
| 826 |
+
Renaud Parent <renaud.parent@gmail.com>
|
| 827 |
+
Renbi Yu <averybigant@gmail.com>
|
| 828 |
+
Reza Mohammadi <reza@zeerak.ir>
|
| 829 |
+
rhettg@gmail.com
|
| 830 |
+
Ricardo Javier Cárdenes Medina <ricardo.cardenes@gmail.com>
|
| 831 |
+
ricardojbarrios@gmail.com
|
| 832 |
+
Riccardo Di Virgilio
|
| 833 |
+
Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com>
|
| 834 |
+
Richard Davies <richard.davies@elastichosts.com>
|
| 835 |
+
Richard House <Richard.House@i-logue.com>
|
| 836 |
+
Rick Wagner <rwagner@physics.ucsd.edu>
|
| 837 |
+
Rigel Di Scala <rigel.discala@propylon.com>
|
| 838 |
+
Robert Coup
|
| 839 |
+
Robert Myers <myer0052@gmail.com>
|
| 840 |
+
Roberto Aguilar <roberto@baremetal.io>
|
| 841 |
+
Robert Rock Howard <http://djangomojo.com/>
|
| 842 |
+
Robert Wittams
|
| 843 |
+
Rob Golding-Day <rob@golding-day.com>
|
| 844 |
+
Rob Hudson <https://rob.cogit8.org/>
|
| 845 |
+
Rob Nguyen <tienrobertnguyenn@gmail.com>
|
| 846 |
+
Robin Munn <http://www.geekforgod.com/>
|
| 847 |
+
Rodrigo Pinheiro Marques de Araújo <fenrrir@gmail.com>
|
| 848 |
+
Rohith P R <https://rohithpr.com>
|
| 849 |
+
Romain Garrigues <romain.garrigues.cs@gmail.com>
|
| 850 |
+
Ronnie van den Crommenacker
|
| 851 |
+
Ronny Haryanto <https://ronny.haryan.to/>
|
| 852 |
+
Ross Poulton <ross@rossp.org>
|
| 853 |
+
Roxane Bellot <https://github.com/roxanebellot/>
|
| 854 |
+
Rozza <ross.lawley@gmail.com>
|
| 855 |
+
Rudolph Froger <rfroger@estrate.nl>
|
| 856 |
+
Rudy Mutter
|
| 857 |
+
Rune Rønde Laursen <runerl@skjoldhoej.dk>
|
| 858 |
+
Russell Cloran <russell@rucus.net>
|
| 859 |
+
Russell Keith-Magee <russell@keith-magee.com>
|
| 860 |
+
Russ Webber
|
| 861 |
+
Ryan Hall <ryanhall989@gmail.com>
|
| 862 |
+
Ryan Heard <ryanwheard@gmail.com>
|
| 863 |
+
ryankanno
|
| 864 |
+
Ryan Kelly <ryan@rfk.id.au>
|
| 865 |
+
Ryan Niemeyer <https://profiles.google.com/ryan.niemeyer/about>
|
| 866 |
+
Ryan Petrello <ryan@ryanpetrello.com>
|
| 867 |
+
Ryan Rubin <ryanmrubin@gmail.com>
|
| 868 |
+
Ryno Mathee <rmathee@gmail.com>
|
| 869 |
+
Sachin Jat <sanch.jat@gmail.com>
|
| 870 |
+
Sage M. Abdullah <https://github.com/laymonage>
|
| 871 |
+
Sam Newman <http://www.magpiebrain.com/>
|
| 872 |
+
Sander Dijkhuis <sander.dijkhuis@gmail.com>
|
| 873 |
+
Sanket Saurav <sanketsaurav@gmail.com>
|
| 874 |
+
Sanyam Khurana <sanyam.khurana01@gmail.com>
|
| 875 |
+
Sarah Boyce <https://github.com/sarahboyce>
|
| 876 |
+
Sarthak Mehrish <sarthakmeh03@gmail.com>
|
| 877 |
+
schwank@gmail.com
|
| 878 |
+
Scot Hacker <shacker@birdhouse.org>
|
| 879 |
+
Scott Barr <scott@divisionbyzero.com.au>
|
| 880 |
+
Scott Cranfill <scott@scottcranfill.com>
|
| 881 |
+
Scott Fitsimones <scott@airgara.ge>
|
| 882 |
+
Scott Pashley <github@scottpashley.co.uk>
|
| 883 |
+
scott@staplefish.com
|
| 884 |
+
Sean Brant
|
| 885 |
+
Sebastian Hillig <sebastian.hillig@gmail.com>
|
| 886 |
+
Sebastian Spiegel <https://www.tivix.com/>
|
| 887 |
+
Segyo Myung <myungsekyo@gmail.com>
|
| 888 |
+
Selwin Ong <selwin@ui.co.id>
|
| 889 |
+
Sengtha Chay <sengtha@e-khmer.com>
|
| 890 |
+
Senko Rašić <senko.rasic@dobarkod.hr>
|
| 891 |
+
serbaut@gmail.com
|
| 892 |
+
Sergei Maertens <sergeimaertens@gmail.com>
|
| 893 |
+
Sergey Fedoseev <fedoseev.sergey@gmail.com>
|
| 894 |
+
Sergey Kolosov <m17.admin@gmail.com>
|
| 895 |
+
Seth Hill <sethrh@gmail.com>
|
| 896 |
+
Shai Berger <shai@platonix.com>
|
| 897 |
+
Shannon -jj Behrens <https://www.jjinux.com/>
|
| 898 |
+
Shawn Milochik <shawn@milochik.com>
|
| 899 |
+
Shreya Bamne <shreya.bamne@gmail.com>
|
| 900 |
+
Silvan Spross <silvan.spross@gmail.com>
|
| 901 |
+
Simeon Visser <http://simeonvisser.com>
|
| 902 |
+
Simon Blanchard
|
| 903 |
+
Simon Charette <charette.s@gmail.com>
|
| 904 |
+
Simon Greenhill <dev@simon.net.nz>
|
| 905 |
+
Simon Litchfield <simon@quo.com.au>
|
| 906 |
+
Simon Meers <simon@simonmeers.com>
|
| 907 |
+
Simon Williams
|
| 908 |
+
Simon Willison <simon@simonwillison.net>
|
| 909 |
+
Sjoerd Job Postmus
|
| 910 |
+
Slawek Mikula <slawek dot mikula at gmail dot com>
|
| 911 |
+
sloonz <simon.lipp@insa-lyon.fr>
|
| 912 |
+
smurf@smurf.noris.de
|
| 913 |
+
sopel
|
| 914 |
+
Sreehari K V <sreeharivijayan619@gmail.com>
|
| 915 |
+
Sridhar Marella <sridhar562345@gmail.com>
|
| 916 |
+
Srinivas Reddy Thatiparthy <thatiparthysreenivas@gmail.com>
|
| 917 |
+
Stanislas Guerra <stan@slashdev.me>
|
| 918 |
+
Stanislaus Madueke
|
| 919 |
+
Stanislav Karpov <work@stkrp.ru>
|
| 920 |
+
starrynight <cmorgh@gmail.com>
|
| 921 |
+
Stefan R. Filipek
|
| 922 |
+
Stefane Fermgier <sf@fermigier.com>
|
| 923 |
+
Stefano Rivera <stefano@rivera.za.net>
|
| 924 |
+
Stéphane Raimbault <stephane.raimbault@gmail.com>
|
| 925 |
+
Stephan Jaekel <steph@rdev.info>
|
| 926 |
+
Stephen Burrows <stephen.r.burrows@gmail.com>
|
| 927 |
+
Steven L. Smith (fvox13) <steven@stevenlsmith.com>
|
| 928 |
+
Steven Noorbergen (Xaroth) <xaroth+django@xaroth.nl>
|
| 929 |
+
Stuart Langridge <https://www.kryogenix.org/>
|
| 930 |
+
Subhav Gautam <subhavgautam@yahoo.co.uk>
|
| 931 |
+
Sujay S Kumar <sujay.skumar141295@gmail.com>
|
| 932 |
+
Sune Kirkeby <https://ibofobi.dk/>
|
| 933 |
+
Sung-Jin Hong <serialx.net@gmail.com>
|
| 934 |
+
SuperJared
|
| 935 |
+
Susan Tan <susan.tan.fleckerl@gmail.com>
|
| 936 |
+
Sutrisno Efendi <kangfend@gmail.com>
|
| 937 |
+
Swaroop C H <http://www.swaroopch.info>
|
| 938 |
+
Szilveszter Farkas <szilveszter.farkas@gmail.com>
|
| 939 |
+
Taavi Teska <taaviteska@gmail.com>
|
| 940 |
+
Tai Lee <real.human@mrmachine.net>
|
| 941 |
+
Takashi Matsuo <matsuo.takashi@gmail.com>
|
| 942 |
+
Tareque Hossain <http://www.codexn.com>
|
| 943 |
+
Taylor Mitchell <taylor.mitchell@gmail.com>
|
| 944 |
+
Terry Huang <terryh.tp@gmail.com>
|
| 945 |
+
thebjorn <bp@datakortet.no>
|
| 946 |
+
Thejaswi Puthraya <thejaswi.puthraya@gmail.com>
|
| 947 |
+
Thijs van Dien <thijs@vandien.net>
|
| 948 |
+
Thom Wiggers
|
| 949 |
+
Thomas Chaumeny <t.chaumeny@gmail.com>
|
| 950 |
+
Thomas Güttler <hv@tbz-pariv.de>
|
| 951 |
+
Thomas Kerpe <thomas@kerpe.net>
|
| 952 |
+
Thomas Sorrel
|
| 953 |
+
Thomas Steinacher <http://www.eggdrop.ch/>
|
| 954 |
+
Thomas Stromberg <tstromberg@google.com>
|
| 955 |
+
Thomas Tanner <tanner@gmx.net>
|
| 956 |
+
tibimicu@gmx.net
|
| 957 |
+
Ties Jan Hefting <hello@tiesjan.com>
|
| 958 |
+
Tim Allen <tim@pyphilly.org>
|
| 959 |
+
Tim Givois <tim.givois.mendez@gmail.com>
|
| 960 |
+
Tim Graham <timograham@gmail.com>
|
| 961 |
+
Tim Heap <tim@timheap.me>
|
| 962 |
+
Tim McCurrach <tim.mccurrach@gmail.com>
|
| 963 |
+
Tim Saylor <tim.saylor@gmail.com>
|
| 964 |
+
Tobias Kunze <rixx@cutebit.de>
|
| 965 |
+
Tobias McNulty <https://www.caktusgroup.com/blog/>
|
| 966 |
+
tobias@neuyork.de
|
| 967 |
+
Todd O'Bryan <toddobryan@mac.com>
|
| 968 |
+
Tom Carrick <https://www.carrick.eu>
|
| 969 |
+
Tom Christie <tom@tomchristie.com>
|
| 970 |
+
Tom Forbes <tom@tomforb.es>
|
| 971 |
+
Tom Insam
|
| 972 |
+
Tom Tobin
|
| 973 |
+
Tom Wojcik <me@tomwojcik.com>
|
| 974 |
+
Tomáš Ehrlich <tomas.ehrlich@gmail.com>
|
| 975 |
+
Tomáš Kopeček <permonik@m6.cz>
|
| 976 |
+
Tome Cvitan <tome@cvitan.com>
|
| 977 |
+
Tomek Paczkowski <tomek@hauru.eu>
|
| 978 |
+
Tomer Chachamu
|
| 979 |
+
Tommy Beadle <tbeadle@gmail.com>
|
| 980 |
+
Tore Lundqvist <tore.lundqvist@gmail.com>
|
| 981 |
+
torne-django@wolfpuppy.org.uk
|
| 982 |
+
Travis Cline <travis.cline@gmail.com>
|
| 983 |
+
Travis Pinney
|
| 984 |
+
Travis Swicegood <travis@domain51.com>
|
| 985 |
+
Travis Terry <tdterry7@gmail.com>
|
| 986 |
+
Trevor Caira <trevor@caira.com>
|
| 987 |
+
Trey Long <trey@ktrl.com>
|
| 988 |
+
tstromberg@google.com
|
| 989 |
+
tt@gurgle.no
|
| 990 |
+
Tyler Tarabula <tyler.tarabula@gmail.com>
|
| 991 |
+
Tyson Clugg <tyson@clugg.net>
|
| 992 |
+
Tyson Tate <tyson@fallingbullets.com>
|
| 993 |
+
Unai Zalakain <unai@gisa-elkartea.org>
|
| 994 |
+
Valentina Mukhamedzhanova <umirra@gmail.com>
|
| 995 |
+
valtron
|
| 996 |
+
Vasiliy Stavenko <stavenko@gmail.com>
|
| 997 |
+
Vasil Vangelovski
|
| 998 |
+
Vibhu Agarwal <vibhu-agarwal.github.io>
|
| 999 |
+
Victor Andrée
|
| 1000 |
+
viestards.lists@gmail.com
|
| 1001 |
+
Viktor Danyliuk <v.v.danyliuk@gmail.com>
|
| 1002 |
+
Viktor Grabov <viktor@grabov.ru>
|
| 1003 |
+
Ville Säävuori <https://www.unessa.net/>
|
| 1004 |
+
Vinay Karanam <https://github.com/vinayinvicible>
|
| 1005 |
+
Vinay Sajip <vinay_sajip@yahoo.co.uk>
|
| 1006 |
+
Vincent Foley <vfoleybourgon@yahoo.ca>
|
| 1007 |
+
Vinny Do <vdo.code@gmail.com>
|
| 1008 |
+
Vitaly Babiy <vbabiy86@gmail.com>
|
| 1009 |
+
Vitaliy Yelnik <velnik@gmail.com>
|
| 1010 |
+
Vladimir Kuzma <vladimirkuzma.ch@gmail.com>
|
| 1011 |
+
Vlado <vlado@labath.org>
|
| 1012 |
+
Vsevolod Solovyov
|
| 1013 |
+
Vytis Banaitis <vytis.banaitis@gmail.com>
|
| 1014 |
+
wam-djangobug@wamber.net
|
| 1015 |
+
Wang Chun <wangchun@exoweb.net>
|
| 1016 |
+
Warren Smith <warren@wandrsmith.net>
|
| 1017 |
+
Waylan Limberg <waylan@gmail.com>
|
| 1018 |
+
Wiktor Kołodziej <wiktor@pykonik.org>
|
| 1019 |
+
Wiley Kestner <wiley.kestner@gmail.com>
|
| 1020 |
+
Wiliam Alves de Souza <wiliamsouza83@gmail.com>
|
| 1021 |
+
Will Ayd <william.ayd@icloud.com>
|
| 1022 |
+
William Schwartz <wkschwartz@gmail.com>
|
| 1023 |
+
Will Hardy <django@willhardy.com.au>
|
| 1024 |
+
Wilson Miner <wminer@gmail.com>
|
| 1025 |
+
Wim Glenn <hey@wimglenn.com>
|
| 1026 |
+
wojtek
|
| 1027 |
+
Wu Haotian <whtsky@gmail.com>
|
| 1028 |
+
Xavier Francisco <xavier.n.francisco@gmail.com>
|
| 1029 |
+
Xia Kai <https://blog.xiaket.org/>
|
| 1030 |
+
Yann Fouillat <gagaro42@gmail.com>
|
| 1031 |
+
Yann Malet
|
| 1032 |
+
Yash Jhunjhunwala
|
| 1033 |
+
Yasushi Masuda <whosaysni@gmail.com>
|
| 1034 |
+
ye7cakf02@sneakemail.com
|
| 1035 |
+
ymasuda@ethercube.com
|
| 1036 |
+
Yoong Kang Lim <yoongkang.lim@gmail.com>
|
| 1037 |
+
Yusuke Miyazaki <miyazaki.dev@gmail.com>
|
| 1038 |
+
yyyyyyyan <contact@yyyyyyyan.tech>
|
| 1039 |
+
Zac Hatfield-Dodds <zac.hatfield.dodds@gmail.com>
|
| 1040 |
+
Zachary Voase <zacharyvoase@gmail.com>
|
| 1041 |
+
Zach Liu <zachliu@gmail.com>
|
| 1042 |
+
Zach Thompson <zthompson47@gmail.com>
|
| 1043 |
+
Zain Memon
|
| 1044 |
+
Zain Patel <zain.patel06@gmail.com>
|
| 1045 |
+
Zak Johnson <zakj@nox.cx>
|
| 1046 |
+
Žan Anderle <zan.anderle@gmail.com>
|
| 1047 |
+
Zbigniew Siciarz <zbigniew@siciarz.net>
|
| 1048 |
+
zegor
|
| 1049 |
+
Zeynel Özdemir <ozdemir.zynl@gmail.com>
|
| 1050 |
+
Zlatko Mašek <zlatko.masek@gmail.com>
|
| 1051 |
+
zriv <https://github.com/zriv>
|
| 1052 |
+
<Please alphabetize new entries>
|
| 1053 |
+
|
| 1054 |
+
A big THANK YOU goes to:
|
| 1055 |
+
|
| 1056 |
+
Rob Curley and Ralph Gage for letting us open-source Django.
|
| 1057 |
+
|
| 1058 |
+
Frank Wiles for making excellent arguments for open-sourcing, and for
|
| 1059 |
+
his sage sysadmin advice.
|
| 1060 |
+
|
| 1061 |
+
Ian Bicking for convincing Adrian to ditch code generation.
|
| 1062 |
+
|
| 1063 |
+
Mark Pilgrim for "Dive Into Python" (https://www.diveinto.org/python3/).
|
| 1064 |
+
|
| 1065 |
+
Guido van Rossum for creating Python.
|
myworld/Lib/site-packages/Django-4.2.2.dist-info/INSTALLER
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
pip
|
myworld/Lib/site-packages/Django-4.2.2.dist-info/LICENSE
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Copyright (c) Django Software Foundation and individual contributors.
|
| 2 |
+
All rights reserved.
|
| 3 |
+
|
| 4 |
+
Redistribution and use in source and binary forms, with or without modification,
|
| 5 |
+
are permitted provided that the following conditions are met:
|
| 6 |
+
|
| 7 |
+
1. Redistributions of source code must retain the above copyright notice,
|
| 8 |
+
this list of conditions and the following disclaimer.
|
| 9 |
+
|
| 10 |
+
2. Redistributions in binary form must reproduce the above copyright
|
| 11 |
+
notice, this list of conditions and the following disclaimer in the
|
| 12 |
+
documentation and/or other materials provided with the distribution.
|
| 13 |
+
|
| 14 |
+
3. Neither the name of Django nor the names of its contributors may be used
|
| 15 |
+
to endorse or promote products derived from this software without
|
| 16 |
+
specific prior written permission.
|
| 17 |
+
|
| 18 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
| 19 |
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
| 20 |
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
| 21 |
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
| 22 |
+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
| 23 |
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
| 24 |
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
| 25 |
+
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| 26 |
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
| 27 |
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
myworld/Lib/site-packages/Django-4.2.2.dist-info/LICENSE.python
ADDED
|
@@ -0,0 +1,290 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Django is licensed under the three-clause BSD license; see the file
|
| 2 |
+
LICENSE for details.
|
| 3 |
+
|
| 4 |
+
Django includes code from the Python standard library, which is licensed under
|
| 5 |
+
the Python license, a permissive open source license. The copyright and license
|
| 6 |
+
is included below for compliance with Python's terms.
|
| 7 |
+
|
| 8 |
+
----------------------------------------------------------------------
|
| 9 |
+
|
| 10 |
+
Copyright (c) 2001-present Python Software Foundation; All Rights Reserved
|
| 11 |
+
|
| 12 |
+
A. HISTORY OF THE SOFTWARE
|
| 13 |
+
==========================
|
| 14 |
+
|
| 15 |
+
Python was created in the early 1990s by Guido van Rossum at Stichting
|
| 16 |
+
Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands
|
| 17 |
+
as a successor of a language called ABC. Guido remains Python's
|
| 18 |
+
principal author, although it includes many contributions from others.
|
| 19 |
+
|
| 20 |
+
In 1995, Guido continued his work on Python at the Corporation for
|
| 21 |
+
National Research Initiatives (CNRI, see http://www.cnri.reston.va.us)
|
| 22 |
+
in Reston, Virginia where he released several versions of the
|
| 23 |
+
software.
|
| 24 |
+
|
| 25 |
+
In May 2000, Guido and the Python core development team moved to
|
| 26 |
+
BeOpen.com to form the BeOpen PythonLabs team. In October of the same
|
| 27 |
+
year, the PythonLabs team moved to Digital Creations, which became
|
| 28 |
+
Zope Corporation. In 2001, the Python Software Foundation (PSF, see
|
| 29 |
+
https://www.python.org/psf/) was formed, a non-profit organization
|
| 30 |
+
created specifically to own Python-related Intellectual Property.
|
| 31 |
+
Zope Corporation was a sponsoring member of the PSF.
|
| 32 |
+
|
| 33 |
+
All Python releases are Open Source (see http://www.opensource.org for
|
| 34 |
+
the Open Source Definition). Historically, most, but not all, Python
|
| 35 |
+
releases have also been GPL-compatible; the table below summarizes
|
| 36 |
+
the various releases.
|
| 37 |
+
|
| 38 |
+
Release Derived Year Owner GPL-
|
| 39 |
+
from compatible? (1)
|
| 40 |
+
|
| 41 |
+
0.9.0 thru 1.2 1991-1995 CWI yes
|
| 42 |
+
1.3 thru 1.5.2 1.2 1995-1999 CNRI yes
|
| 43 |
+
1.6 1.5.2 2000 CNRI no
|
| 44 |
+
2.0 1.6 2000 BeOpen.com no
|
| 45 |
+
1.6.1 1.6 2001 CNRI yes (2)
|
| 46 |
+
2.1 2.0+1.6.1 2001 PSF no
|
| 47 |
+
2.0.1 2.0+1.6.1 2001 PSF yes
|
| 48 |
+
2.1.1 2.1+2.0.1 2001 PSF yes
|
| 49 |
+
2.1.2 2.1.1 2002 PSF yes
|
| 50 |
+
2.1.3 2.1.2 2002 PSF yes
|
| 51 |
+
2.2 and above 2.1.1 2001-now PSF yes
|
| 52 |
+
|
| 53 |
+
Footnotes:
|
| 54 |
+
|
| 55 |
+
(1) GPL-compatible doesn't mean that we're distributing Python under
|
| 56 |
+
the GPL. All Python licenses, unlike the GPL, let you distribute
|
| 57 |
+
a modified version without making your changes open source. The
|
| 58 |
+
GPL-compatible licenses make it possible to combine Python with
|
| 59 |
+
other software that is released under the GPL; the others don't.
|
| 60 |
+
|
| 61 |
+
(2) According to Richard Stallman, 1.6.1 is not GPL-compatible,
|
| 62 |
+
because its license has a choice of law clause. According to
|
| 63 |
+
CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1
|
| 64 |
+
is "not incompatible" with the GPL.
|
| 65 |
+
|
| 66 |
+
Thanks to the many outside volunteers who have worked under Guido's
|
| 67 |
+
direction to make these releases possible.
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON
|
| 71 |
+
===============================================================
|
| 72 |
+
|
| 73 |
+
Python software and documentation are licensed under the
|
| 74 |
+
Python Software Foundation License Version 2.
|
| 75 |
+
|
| 76 |
+
Starting with Python 3.8.6, examples, recipes, and other code in
|
| 77 |
+
the documentation are dual licensed under the PSF License Version 2
|
| 78 |
+
and the Zero-Clause BSD license.
|
| 79 |
+
|
| 80 |
+
Some software incorporated into Python is under different licenses.
|
| 81 |
+
The licenses are listed with code falling under that license.
|
| 82 |
+
|
| 83 |
+
|
| 84 |
+
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
|
| 85 |
+
--------------------------------------------
|
| 86 |
+
|
| 87 |
+
1. This LICENSE AGREEMENT is between the Python Software Foundation
|
| 88 |
+
("PSF"), and the Individual or Organization ("Licensee") accessing and
|
| 89 |
+
otherwise using this software ("Python") in source or binary form and
|
| 90 |
+
its associated documentation.
|
| 91 |
+
|
| 92 |
+
2. Subject to the terms and conditions of this License Agreement, PSF hereby
|
| 93 |
+
grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
|
| 94 |
+
analyze, test, perform and/or display publicly, prepare derivative works,
|
| 95 |
+
distribute, and otherwise use Python alone or in any derivative version,
|
| 96 |
+
provided, however, that PSF's License Agreement and PSF's notice of copyright,
|
| 97 |
+
i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
| 98 |
+
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Python Software Foundation;
|
| 99 |
+
All Rights Reserved" are retained in Python alone or in any derivative version
|
| 100 |
+
prepared by Licensee.
|
| 101 |
+
|
| 102 |
+
3. In the event Licensee prepares a derivative work that is based on
|
| 103 |
+
or incorporates Python or any part thereof, and wants to make
|
| 104 |
+
the derivative work available to others as provided herein, then
|
| 105 |
+
Licensee hereby agrees to include in any such work a brief summary of
|
| 106 |
+
the changes made to Python.
|
| 107 |
+
|
| 108 |
+
4. PSF is making Python available to Licensee on an "AS IS"
|
| 109 |
+
basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
|
| 110 |
+
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
|
| 111 |
+
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
|
| 112 |
+
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
|
| 113 |
+
INFRINGE ANY THIRD PARTY RIGHTS.
|
| 114 |
+
|
| 115 |
+
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
|
| 116 |
+
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
|
| 117 |
+
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
|
| 118 |
+
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
|
| 119 |
+
|
| 120 |
+
6. This License Agreement will automatically terminate upon a material
|
| 121 |
+
breach of its terms and conditions.
|
| 122 |
+
|
| 123 |
+
7. Nothing in this License Agreement shall be deemed to create any
|
| 124 |
+
relationship of agency, partnership, or joint venture between PSF and
|
| 125 |
+
Licensee. This License Agreement does not grant permission to use PSF
|
| 126 |
+
trademarks or trade name in a trademark sense to endorse or promote
|
| 127 |
+
products or services of Licensee, or any third party.
|
| 128 |
+
|
| 129 |
+
8. By copying, installing or otherwise using Python, Licensee
|
| 130 |
+
agrees to be bound by the terms and conditions of this License
|
| 131 |
+
Agreement.
|
| 132 |
+
|
| 133 |
+
|
| 134 |
+
BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
|
| 135 |
+
-------------------------------------------
|
| 136 |
+
|
| 137 |
+
BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
|
| 138 |
+
|
| 139 |
+
1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
|
| 140 |
+
office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
|
| 141 |
+
Individual or Organization ("Licensee") accessing and otherwise using
|
| 142 |
+
this software in source or binary form and its associated
|
| 143 |
+
documentation ("the Software").
|
| 144 |
+
|
| 145 |
+
2. Subject to the terms and conditions of this BeOpen Python License
|
| 146 |
+
Agreement, BeOpen hereby grants Licensee a non-exclusive,
|
| 147 |
+
royalty-free, world-wide license to reproduce, analyze, test, perform
|
| 148 |
+
and/or display publicly, prepare derivative works, distribute, and
|
| 149 |
+
otherwise use the Software alone or in any derivative version,
|
| 150 |
+
provided, however, that the BeOpen Python License is retained in the
|
| 151 |
+
Software, alone or in any derivative version prepared by Licensee.
|
| 152 |
+
|
| 153 |
+
3. BeOpen is making the Software available to Licensee on an "AS IS"
|
| 154 |
+
basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
|
| 155 |
+
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
|
| 156 |
+
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
|
| 157 |
+
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
|
| 158 |
+
INFRINGE ANY THIRD PARTY RIGHTS.
|
| 159 |
+
|
| 160 |
+
4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
|
| 161 |
+
SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
|
| 162 |
+
AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
|
| 163 |
+
DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
|
| 164 |
+
|
| 165 |
+
5. This License Agreement will automatically terminate upon a material
|
| 166 |
+
breach of its terms and conditions.
|
| 167 |
+
|
| 168 |
+
6. This License Agreement shall be governed by and interpreted in all
|
| 169 |
+
respects by the law of the State of California, excluding conflict of
|
| 170 |
+
law provisions. Nothing in this License Agreement shall be deemed to
|
| 171 |
+
create any relationship of agency, partnership, or joint venture
|
| 172 |
+
between BeOpen and Licensee. This License Agreement does not grant
|
| 173 |
+
permission to use BeOpen trademarks or trade names in a trademark
|
| 174 |
+
sense to endorse or promote products or services of Licensee, or any
|
| 175 |
+
third party. As an exception, the "BeOpen Python" logos available at
|
| 176 |
+
http://www.pythonlabs.com/logos.html may be used according to the
|
| 177 |
+
permissions granted on that web page.
|
| 178 |
+
|
| 179 |
+
7. By copying, installing or otherwise using the software, Licensee
|
| 180 |
+
agrees to be bound by the terms and conditions of this License
|
| 181 |
+
Agreement.
|
| 182 |
+
|
| 183 |
+
|
| 184 |
+
CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
|
| 185 |
+
---------------------------------------
|
| 186 |
+
|
| 187 |
+
1. This LICENSE AGREEMENT is between the Corporation for National
|
| 188 |
+
Research Initiatives, having an office at 1895 Preston White Drive,
|
| 189 |
+
Reston, VA 20191 ("CNRI"), and the Individual or Organization
|
| 190 |
+
("Licensee") accessing and otherwise using Python 1.6.1 software in
|
| 191 |
+
source or binary form and its associated documentation.
|
| 192 |
+
|
| 193 |
+
2. Subject to the terms and conditions of this License Agreement, CNRI
|
| 194 |
+
hereby grants Licensee a nonexclusive, royalty-free, world-wide
|
| 195 |
+
license to reproduce, analyze, test, perform and/or display publicly,
|
| 196 |
+
prepare derivative works, distribute, and otherwise use Python 1.6.1
|
| 197 |
+
alone or in any derivative version, provided, however, that CNRI's
|
| 198 |
+
License Agreement and CNRI's notice of copyright, i.e., "Copyright (c)
|
| 199 |
+
1995-2001 Corporation for National Research Initiatives; All Rights
|
| 200 |
+
Reserved" are retained in Python 1.6.1 alone or in any derivative
|
| 201 |
+
version prepared by Licensee. Alternately, in lieu of CNRI's License
|
| 202 |
+
Agreement, Licensee may substitute the following text (omitting the
|
| 203 |
+
quotes): "Python 1.6.1 is made available subject to the terms and
|
| 204 |
+
conditions in CNRI's License Agreement. This Agreement together with
|
| 205 |
+
Python 1.6.1 may be located on the internet using the following
|
| 206 |
+
unique, persistent identifier (known as a handle): 1895.22/1013. This
|
| 207 |
+
Agreement may also be obtained from a proxy server on the internet
|
| 208 |
+
using the following URL: http://hdl.handle.net/1895.22/1013".
|
| 209 |
+
|
| 210 |
+
3. In the event Licensee prepares a derivative work that is based on
|
| 211 |
+
or incorporates Python 1.6.1 or any part thereof, and wants to make
|
| 212 |
+
the derivative work available to others as provided herein, then
|
| 213 |
+
Licensee hereby agrees to include in any such work a brief summary of
|
| 214 |
+
the changes made to Python 1.6.1.
|
| 215 |
+
|
| 216 |
+
4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS"
|
| 217 |
+
basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
|
| 218 |
+
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
|
| 219 |
+
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
|
| 220 |
+
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT
|
| 221 |
+
INFRINGE ANY THIRD PARTY RIGHTS.
|
| 222 |
+
|
| 223 |
+
5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
|
| 224 |
+
1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
|
| 225 |
+
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1,
|
| 226 |
+
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
|
| 227 |
+
|
| 228 |
+
6. This License Agreement will automatically terminate upon a material
|
| 229 |
+
breach of its terms and conditions.
|
| 230 |
+
|
| 231 |
+
7. This License Agreement shall be governed by the federal
|
| 232 |
+
intellectual property law of the United States, including without
|
| 233 |
+
limitation the federal copyright law, and, to the extent such
|
| 234 |
+
U.S. federal law does not apply, by the law of the Commonwealth of
|
| 235 |
+
Virginia, excluding Virginia's conflict of law provisions.
|
| 236 |
+
Notwithstanding the foregoing, with regard to derivative works based
|
| 237 |
+
on Python 1.6.1 that incorporate non-separable material that was
|
| 238 |
+
previously distributed under the GNU General Public License (GPL), the
|
| 239 |
+
law of the Commonwealth of Virginia shall govern this License
|
| 240 |
+
Agreement only as to issues arising under or with respect to
|
| 241 |
+
Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this
|
| 242 |
+
License Agreement shall be deemed to create any relationship of
|
| 243 |
+
agency, partnership, or joint venture between CNRI and Licensee. This
|
| 244 |
+
License Agreement does not grant permission to use CNRI trademarks or
|
| 245 |
+
trade name in a trademark sense to endorse or promote products or
|
| 246 |
+
services of Licensee, or any third party.
|
| 247 |
+
|
| 248 |
+
8. By clicking on the "ACCEPT" button where indicated, or by copying,
|
| 249 |
+
installing or otherwise using Python 1.6.1, Licensee agrees to be
|
| 250 |
+
bound by the terms and conditions of this License Agreement.
|
| 251 |
+
|
| 252 |
+
ACCEPT
|
| 253 |
+
|
| 254 |
+
|
| 255 |
+
CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
|
| 256 |
+
--------------------------------------------------
|
| 257 |
+
|
| 258 |
+
Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
|
| 259 |
+
The Netherlands. All rights reserved.
|
| 260 |
+
|
| 261 |
+
Permission to use, copy, modify, and distribute this software and its
|
| 262 |
+
documentation for any purpose and without fee is hereby granted,
|
| 263 |
+
provided that the above copyright notice appear in all copies and that
|
| 264 |
+
both that copyright notice and this permission notice appear in
|
| 265 |
+
supporting documentation, and that the name of Stichting Mathematisch
|
| 266 |
+
Centrum or CWI not be used in advertising or publicity pertaining to
|
| 267 |
+
distribution of the software without specific, written prior
|
| 268 |
+
permission.
|
| 269 |
+
|
| 270 |
+
STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
|
| 271 |
+
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
| 272 |
+
FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
|
| 273 |
+
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
| 274 |
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
| 275 |
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
| 276 |
+
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
| 277 |
+
|
| 278 |
+
ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON DOCUMENTATION
|
| 279 |
+
----------------------------------------------------------------------
|
| 280 |
+
|
| 281 |
+
Permission to use, copy, modify, and/or distribute this software for any
|
| 282 |
+
purpose with or without fee is hereby granted.
|
| 283 |
+
|
| 284 |
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
| 285 |
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
| 286 |
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
| 287 |
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
| 288 |
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
| 289 |
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
| 290 |
+
PERFORMANCE OF THIS SOFTWARE.
|
myworld/Lib/site-packages/Django-4.2.2.dist-info/METADATA
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Metadata-Version: 2.1
|
| 2 |
+
Name: Django
|
| 3 |
+
Version: 4.2.2
|
| 4 |
+
Summary: A high-level Python web framework that encourages rapid development and clean, pragmatic design.
|
| 5 |
+
Home-page: https://www.djangoproject.com/
|
| 6 |
+
Author: Django Software Foundation
|
| 7 |
+
Author-email: foundation@djangoproject.com
|
| 8 |
+
License: BSD-3-Clause
|
| 9 |
+
Project-URL: Documentation, https://docs.djangoproject.com/
|
| 10 |
+
Project-URL: Release notes, https://docs.djangoproject.com/en/stable/releases/
|
| 11 |
+
Project-URL: Funding, https://www.djangoproject.com/fundraising/
|
| 12 |
+
Project-URL: Source, https://github.com/django/django
|
| 13 |
+
Project-URL: Tracker, https://code.djangoproject.com/
|
| 14 |
+
Classifier: Development Status :: 5 - Production/Stable
|
| 15 |
+
Classifier: Environment :: Web Environment
|
| 16 |
+
Classifier: Framework :: Django
|
| 17 |
+
Classifier: Intended Audience :: Developers
|
| 18 |
+
Classifier: License :: OSI Approved :: BSD License
|
| 19 |
+
Classifier: Operating System :: OS Independent
|
| 20 |
+
Classifier: Programming Language :: Python
|
| 21 |
+
Classifier: Programming Language :: Python :: 3
|
| 22 |
+
Classifier: Programming Language :: Python :: 3 :: Only
|
| 23 |
+
Classifier: Programming Language :: Python :: 3.8
|
| 24 |
+
Classifier: Programming Language :: Python :: 3.9
|
| 25 |
+
Classifier: Programming Language :: Python :: 3.10
|
| 26 |
+
Classifier: Programming Language :: Python :: 3.11
|
| 27 |
+
Classifier: Topic :: Internet :: WWW/HTTP
|
| 28 |
+
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
| 29 |
+
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
|
| 30 |
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
| 31 |
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
| 32 |
+
Requires-Python: >=3.8
|
| 33 |
+
License-File: LICENSE
|
| 34 |
+
License-File: LICENSE.python
|
| 35 |
+
License-File: AUTHORS
|
| 36 |
+
Requires-Dist: asgiref (<4,>=3.6.0)
|
| 37 |
+
Requires-Dist: sqlparse (>=0.3.1)
|
| 38 |
+
Requires-Dist: backports.zoneinfo ; python_version < "3.9"
|
| 39 |
+
Requires-Dist: tzdata ; sys_platform == "win32"
|
| 40 |
+
Provides-Extra: argon2
|
| 41 |
+
Requires-Dist: argon2-cffi (>=19.1.0) ; extra == 'argon2'
|
| 42 |
+
Provides-Extra: bcrypt
|
| 43 |
+
Requires-Dist: bcrypt ; extra == 'bcrypt'
|
| 44 |
+
|
| 45 |
+
======
|
| 46 |
+
Django
|
| 47 |
+
======
|
| 48 |
+
|
| 49 |
+
Django is a high-level Python web framework that encourages rapid development
|
| 50 |
+
and clean, pragmatic design. Thanks for checking it out.
|
| 51 |
+
|
| 52 |
+
All documentation is in the "``docs``" directory and online at
|
| 53 |
+
https://docs.djangoproject.com/en/stable/. If you're just getting started,
|
| 54 |
+
here's how we recommend you read the docs:
|
| 55 |
+
|
| 56 |
+
* First, read ``docs/intro/install.txt`` for instructions on installing Django.
|
| 57 |
+
|
| 58 |
+
* Next, work through the tutorials in order (``docs/intro/tutorial01.txt``,
|
| 59 |
+
``docs/intro/tutorial02.txt``, etc.).
|
| 60 |
+
|
| 61 |
+
* If you want to set up an actual deployment server, read
|
| 62 |
+
``docs/howto/deployment/index.txt`` for instructions.
|
| 63 |
+
|
| 64 |
+
* You'll probably want to read through the topical guides (in ``docs/topics``)
|
| 65 |
+
next; from there you can jump to the HOWTOs (in ``docs/howto``) for specific
|
| 66 |
+
problems, and check out the reference (``docs/ref``) for gory details.
|
| 67 |
+
|
| 68 |
+
* See ``docs/README`` for instructions on building an HTML version of the docs.
|
| 69 |
+
|
| 70 |
+
Docs are updated rigorously. If you find any problems in the docs, or think
|
| 71 |
+
they should be clarified in any way, please take 30 seconds to fill out a
|
| 72 |
+
ticket here: https://code.djangoproject.com/newticket
|
| 73 |
+
|
| 74 |
+
To get more help:
|
| 75 |
+
|
| 76 |
+
* Join the ``#django`` channel on ``irc.libera.chat``. Lots of helpful people
|
| 77 |
+
hang out there. See https://web.libera.chat if you're new to IRC.
|
| 78 |
+
|
| 79 |
+
* Join the django-users mailing list, or read the archives, at
|
| 80 |
+
https://groups.google.com/group/django-users.
|
| 81 |
+
|
| 82 |
+
To contribute to Django:
|
| 83 |
+
|
| 84 |
+
* Check out https://docs.djangoproject.com/en/dev/internals/contributing/ for
|
| 85 |
+
information about getting involved.
|
| 86 |
+
|
| 87 |
+
To run Django's test suite:
|
| 88 |
+
|
| 89 |
+
* Follow the instructions in the "Unit tests" section of
|
| 90 |
+
``docs/internals/contributing/writing-code/unit-tests.txt``, published online at
|
| 91 |
+
https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/#running-the-unit-tests
|
| 92 |
+
|
| 93 |
+
Supporting the Development of Django
|
| 94 |
+
====================================
|
| 95 |
+
|
| 96 |
+
Django's development depends on your contributions.
|
| 97 |
+
|
| 98 |
+
If you depend on Django, remember to support the Django Software Foundation: https://www.djangoproject.com/fundraising/
|
myworld/Lib/site-packages/Django-4.2.2.dist-info/RECORD
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
myworld/Lib/site-packages/Django-4.2.2.dist-info/REQUESTED
ADDED
|
File without changes
|
myworld/Lib/site-packages/Django-4.2.2.dist-info/WHEEL
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Wheel-Version: 1.0
|
| 2 |
+
Generator: bdist_wheel (0.40.0)
|
| 3 |
+
Root-Is-Purelib: true
|
| 4 |
+
Tag: py3-none-any
|
| 5 |
+
|
myworld/Lib/site-packages/Django-4.2.2.dist-info/entry_points.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[console_scripts]
|
| 2 |
+
django-admin = django.core.management:execute_from_command_line
|
myworld/Lib/site-packages/Django-4.2.2.dist-info/top_level.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
django
|
myworld/Lib/site-packages/PyInstaller/__init__.py
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#-----------------------------------------------------------------------------
|
| 2 |
+
# Copyright (c) 2005-2023, PyInstaller Development Team.
|
| 3 |
+
#
|
| 4 |
+
# Distributed under the terms of the GNU General Public License (version 2
|
| 5 |
+
# or later) with exception for distributing the bootloader.
|
| 6 |
+
#
|
| 7 |
+
# The full license is in the file COPYING.txt, distributed with this software.
|
| 8 |
+
#
|
| 9 |
+
# SPDX-License-Identifier: (GPL-2.0-or-later WITH Bootloader-exception)
|
| 10 |
+
#-----------------------------------------------------------------------------
|
| 11 |
+
|
| 12 |
+
__all__ = ('HOMEPATH', 'PLATFORM', '__version__', 'DEFAULT_DISTPATH', 'DEFAULT_SPECPATH', 'DEFAULT_WORKPATH')
|
| 13 |
+
|
| 14 |
+
import os
|
| 15 |
+
import sys
|
| 16 |
+
|
| 17 |
+
from PyInstaller import compat
|
| 18 |
+
from PyInstaller.utils.git import get_repo_revision
|
| 19 |
+
|
| 20 |
+
# Note: Keep this variable as plain string so it could be updated automatically when doing a release.
|
| 21 |
+
__version__ = '5.13.0'
|
| 22 |
+
|
| 23 |
+
# Absolute path of this package's directory. Save this early so all submodules can use the absolute path. This is
|
| 24 |
+
# required for example if the current directory changes prior to loading the hooks.
|
| 25 |
+
PACKAGEPATH = os.path.abspath(os.path.dirname(__file__))
|
| 26 |
+
|
| 27 |
+
HOMEPATH = os.path.dirname(PACKAGEPATH)
|
| 28 |
+
|
| 29 |
+
# Update __version__ as necessary.
|
| 30 |
+
if os.path.exists(os.path.join(HOMEPATH, 'setup.py')):
|
| 31 |
+
# PyInstaller is run directly from source without installation, or __version__ is called from 'setup.py'...
|
| 32 |
+
if compat.getenv('PYINSTALLER_DO_RELEASE') == '1':
|
| 33 |
+
# Suppress the git revision when doing a release.
|
| 34 |
+
pass
|
| 35 |
+
elif 'sdist' not in sys.argv:
|
| 36 |
+
# and 'setup.py' was not called with 'sdist' argument. For creating source tarball we do not want git revision
|
| 37 |
+
# in the filename.
|
| 38 |
+
try:
|
| 39 |
+
__version__ += get_repo_revision()
|
| 40 |
+
except Exception:
|
| 41 |
+
# Write to stderr because stdout is used for eval() statement in some subprocesses.
|
| 42 |
+
sys.stderr.write('WARN: failed to parse git revision')
|
| 43 |
+
else:
|
| 44 |
+
# PyInstaller was installed by `python setup.py install'.
|
| 45 |
+
if compat.is_py38:
|
| 46 |
+
from importlib.metadata import version
|
| 47 |
+
else:
|
| 48 |
+
from importlib_metadata import version
|
| 49 |
+
__version__ = version('PyInstaller')
|
| 50 |
+
# Default values of paths where to put files created by PyInstaller. If changing these, do not forget to update the
|
| 51 |
+
# help text for corresponding command-line options, defined in build_main.
|
| 52 |
+
|
| 53 |
+
# Where to put created .spec file.
|
| 54 |
+
DEFAULT_SPECPATH = os.getcwd()
|
| 55 |
+
# Where to put the final frozen application.
|
| 56 |
+
DEFAULT_DISTPATH = os.path.join(os.getcwd(), 'dist')
|
| 57 |
+
# Where to put all the temporary files; .log, .pyz, etc.
|
| 58 |
+
DEFAULT_WORKPATH = os.path.join(os.getcwd(), 'build')
|
| 59 |
+
|
| 60 |
+
PLATFORM = compat.system + '-' + compat.architecture
|
| 61 |
+
# Include machine name in path to bootloader for some machines (e.g., 'arm'). Explicitly avoid doing this on macOS,
|
| 62 |
+
# where we keep universal2 bootloaders in Darwin-64bit folder regardless of whether we are on x86_64 or arm64.
|
| 63 |
+
if compat.machine and not compat.is_darwin:
|
| 64 |
+
PLATFORM += '-' + compat.machine
|
| 65 |
+
# Similarly, disambiguate musl Linux from glibc Linux.
|
| 66 |
+
if compat.is_musl:
|
| 67 |
+
PLATFORM += '-musl'
|
myworld/Lib/site-packages/PyInstaller/__main__.py
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#-----------------------------------------------------------------------------
|
| 2 |
+
# Copyright (c) 2013-2023, PyInstaller Development Team.
|
| 3 |
+
#
|
| 4 |
+
# Distributed under the terms of the GNU General Public License (version 2
|
| 5 |
+
# or later) with exception for distributing the bootloader.
|
| 6 |
+
#
|
| 7 |
+
# The full license is in the file COPYING.txt, distributed with this software.
|
| 8 |
+
#
|
| 9 |
+
# SPDX-License-Identifier: (GPL-2.0-or-later WITH Bootloader-exception)
|
| 10 |
+
#-----------------------------------------------------------------------------
|
| 11 |
+
"""
|
| 12 |
+
Main command-line interface to PyInstaller.
|
| 13 |
+
"""
|
| 14 |
+
from __future__ import annotations
|
| 15 |
+
|
| 16 |
+
import argparse
|
| 17 |
+
import os
|
| 18 |
+
import platform
|
| 19 |
+
import sys
|
| 20 |
+
from collections import defaultdict
|
| 21 |
+
|
| 22 |
+
from PyInstaller import __version__
|
| 23 |
+
from PyInstaller import log as logging
|
| 24 |
+
# Note: do not import anything else until compat.check_requirements function is run!
|
| 25 |
+
from PyInstaller import compat
|
| 26 |
+
|
| 27 |
+
logger = logging.getLogger(__name__)
|
| 28 |
+
|
| 29 |
+
# Taken from https://stackoverflow.com/a/22157136 to format args more flexibly: any help text which beings with ``R|``
|
| 30 |
+
# will have all newlines preserved; the help text will be line wrapped. See
|
| 31 |
+
# https://docs.python.org/3/library/argparse.html#formatter-class.
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
# This is used by the ``--debug`` option.
|
| 35 |
+
class _SmartFormatter(argparse.HelpFormatter):
|
| 36 |
+
def _split_lines(self, text, width):
|
| 37 |
+
if text.startswith('R|'):
|
| 38 |
+
# The underlying implementation of ``RawTextHelpFormatter._split_lines`` invokes this; mimic it.
|
| 39 |
+
return text[2:].splitlines()
|
| 40 |
+
else:
|
| 41 |
+
# Invoke the usual formatter.
|
| 42 |
+
return super()._split_lines(text, width)
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
def run_makespec(filenames, **opts):
|
| 46 |
+
# Split pathex by using the path separator
|
| 47 |
+
temppaths = opts['pathex'][:]
|
| 48 |
+
pathex = opts['pathex'] = []
|
| 49 |
+
for p in temppaths:
|
| 50 |
+
pathex.extend(p.split(os.pathsep))
|
| 51 |
+
|
| 52 |
+
import PyInstaller.building.makespec
|
| 53 |
+
|
| 54 |
+
spec_file = PyInstaller.building.makespec.main(filenames, **opts)
|
| 55 |
+
logger.info('wrote %s' % spec_file)
|
| 56 |
+
return spec_file
|
| 57 |
+
|
| 58 |
+
|
| 59 |
+
def run_build(pyi_config, spec_file, **kwargs):
|
| 60 |
+
import PyInstaller.building.build_main
|
| 61 |
+
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
|
| 62 |
+
|
| 63 |
+
|
| 64 |
+
def __add_options(parser):
|
| 65 |
+
parser.add_argument(
|
| 66 |
+
'-v',
|
| 67 |
+
'--version',
|
| 68 |
+
action='version',
|
| 69 |
+
version=__version__,
|
| 70 |
+
help='Show program version info and exit.',
|
| 71 |
+
)
|
| 72 |
+
|
| 73 |
+
|
| 74 |
+
class _PyiArgumentParser(argparse.ArgumentParser):
|
| 75 |
+
def __init__(self, *args, **kwargs):
|
| 76 |
+
self._pyi_action_groups = defaultdict(list)
|
| 77 |
+
super().__init__(*args, **kwargs)
|
| 78 |
+
|
| 79 |
+
def _add_options(self, __add_options: callable, name: str = ""):
|
| 80 |
+
"""
|
| 81 |
+
Mutate self with the given callable, storing any new actions added in a named group
|
| 82 |
+
"""
|
| 83 |
+
n_actions_before = len(getattr(self, "_actions", []))
|
| 84 |
+
__add_options(self) # preserves old behavior
|
| 85 |
+
new_actions = getattr(self, "_actions", [])[n_actions_before:]
|
| 86 |
+
self._pyi_action_groups[name].extend(new_actions)
|
| 87 |
+
|
| 88 |
+
def _option_name(self, action):
|
| 89 |
+
"""
|
| 90 |
+
Get the option name(s) associated with an action
|
| 91 |
+
|
| 92 |
+
For options that define both short and long names, this function will
|
| 93 |
+
return the long names joined by "/"
|
| 94 |
+
"""
|
| 95 |
+
longnames = [name for name in action.option_strings if name.startswith("--")]
|
| 96 |
+
if longnames:
|
| 97 |
+
name = "/".join(longnames)
|
| 98 |
+
else:
|
| 99 |
+
name = action.option_strings[0]
|
| 100 |
+
return name
|
| 101 |
+
|
| 102 |
+
def _forbid_options(self, args: argparse.Namespace, group: str, errmsg: str = ""):
|
| 103 |
+
"""Forbid options from a named action group"""
|
| 104 |
+
options = defaultdict(str)
|
| 105 |
+
for action in self._pyi_action_groups[group]:
|
| 106 |
+
dest = action.dest
|
| 107 |
+
name = self._option_name(action)
|
| 108 |
+
if getattr(args, dest) is not self.get_default(dest):
|
| 109 |
+
if dest in options:
|
| 110 |
+
options[dest] += "/"
|
| 111 |
+
options[dest] += name
|
| 112 |
+
|
| 113 |
+
# if any options from the forbidden group are not the default values,
|
| 114 |
+
# the user must have passed them in, so issue an error report
|
| 115 |
+
if options:
|
| 116 |
+
sep = "\n "
|
| 117 |
+
bad = sep.join(options.values())
|
| 118 |
+
if errmsg:
|
| 119 |
+
errmsg = "\n" + errmsg
|
| 120 |
+
raise SystemExit(f"option(s) not allowed:{sep}{bad}{errmsg}")
|
| 121 |
+
|
| 122 |
+
|
| 123 |
+
def generate_parser() -> _PyiArgumentParser:
|
| 124 |
+
"""
|
| 125 |
+
Build an argparse parser for PyInstaller's main CLI.
|
| 126 |
+
"""
|
| 127 |
+
|
| 128 |
+
import PyInstaller.building.build_main
|
| 129 |
+
import PyInstaller.building.makespec
|
| 130 |
+
import PyInstaller.log
|
| 131 |
+
|
| 132 |
+
parser = _PyiArgumentParser(formatter_class=_SmartFormatter)
|
| 133 |
+
parser.prog = "pyinstaller"
|
| 134 |
+
|
| 135 |
+
parser._add_options(__add_options)
|
| 136 |
+
parser._add_options(PyInstaller.building.makespec.__add_options, name="makespec")
|
| 137 |
+
parser._add_options(PyInstaller.building.build_main.__add_options, name="build_main")
|
| 138 |
+
parser._add_options(PyInstaller.log.__add_options, name="log")
|
| 139 |
+
|
| 140 |
+
parser.add_argument(
|
| 141 |
+
'filenames',
|
| 142 |
+
metavar='scriptname',
|
| 143 |
+
nargs='+',
|
| 144 |
+
help="Name of scriptfiles to be processed or exactly one .spec file. If a .spec file is specified, most "
|
| 145 |
+
"options are unnecessary and are ignored.",
|
| 146 |
+
)
|
| 147 |
+
|
| 148 |
+
return parser
|
| 149 |
+
|
| 150 |
+
|
| 151 |
+
def run(pyi_args: list | None = None, pyi_config: dict | None = None):
|
| 152 |
+
"""
|
| 153 |
+
pyi_args allows running PyInstaller programmatically without a subprocess
|
| 154 |
+
pyi_config allows checking configuration once when running multiple tests
|
| 155 |
+
"""
|
| 156 |
+
compat.check_requirements()
|
| 157 |
+
|
| 158 |
+
import PyInstaller.log
|
| 159 |
+
|
| 160 |
+
try:
|
| 161 |
+
parser = generate_parser()
|
| 162 |
+
args = parser.parse_args(pyi_args)
|
| 163 |
+
PyInstaller.log.__process_options(parser, args)
|
| 164 |
+
|
| 165 |
+
# Print PyInstaller version, Python version, and platform as the first line to stdout. This helps us identify
|
| 166 |
+
# PyInstaller, Python, and platform version when users report issues.
|
| 167 |
+
logger.info('PyInstaller: %s' % __version__)
|
| 168 |
+
logger.info('Python: %s%s', platform.python_version(), " (conda)" if compat.is_conda else "")
|
| 169 |
+
logger.info('Platform: %s' % platform.platform())
|
| 170 |
+
|
| 171 |
+
# Skip creating .spec when .spec file is supplied.
|
| 172 |
+
if args.filenames[0].endswith('.spec'):
|
| 173 |
+
parser._forbid_options(
|
| 174 |
+
args, group="makespec", errmsg="makespec options not valid when a .spec file is given"
|
| 175 |
+
)
|
| 176 |
+
spec_file = args.filenames[0]
|
| 177 |
+
else:
|
| 178 |
+
spec_file = run_makespec(**vars(args))
|
| 179 |
+
|
| 180 |
+
run_build(pyi_config, spec_file, **vars(args))
|
| 181 |
+
|
| 182 |
+
except KeyboardInterrupt:
|
| 183 |
+
raise SystemExit("Aborted by user request.")
|
| 184 |
+
except RecursionError:
|
| 185 |
+
from PyInstaller import _recursion_too_deep_message
|
| 186 |
+
_recursion_too_deep_message.raise_with_msg()
|
| 187 |
+
|
| 188 |
+
|
| 189 |
+
def _console_script_run():
|
| 190 |
+
# Python prepends the main script's parent directory to sys.path. When PyInstaller is ran via the usual
|
| 191 |
+
# `pyinstaller` CLI entry point, this directory is $pythonprefix/bin which should not be in sys.path.
|
| 192 |
+
if os.path.basename(sys.path[0]) in ("bin", "Scripts"):
|
| 193 |
+
sys.path.pop(0)
|
| 194 |
+
run()
|
| 195 |
+
|
| 196 |
+
|
| 197 |
+
if __name__ == '__main__':
|
| 198 |
+
run()
|
myworld/Lib/site-packages/PyInstaller/__pycache__/__init__.cpython-311.pyc
ADDED
|
Binary file (2.1 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/__pycache__/__main__.cpython-311.pyc
ADDED
|
Binary file (9.9 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/__pycache__/_recursion_too_deep_message.cpython-311.pyc
ADDED
|
Binary file (1.63 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/__pycache__/_shared_with_waf.cpython-311.pyc
ADDED
|
Binary file (2.67 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/__pycache__/compat.cpython-311.pyc
ADDED
|
Binary file (27.8 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/__pycache__/config.cpython-311.pyc
ADDED
|
Binary file (1.4 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/__pycache__/configure.cpython-311.pyc
ADDED
|
Binary file (4.62 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/__pycache__/exceptions.cpython-311.pyc
ADDED
|
Binary file (1.5 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/__pycache__/log.cpython-311.pyc
ADDED
|
Binary file (2.7 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/_recursion_too_deep_message.py
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#-----------------------------------------------------------------------------
|
| 2 |
+
# Copyright (c) 2013-2023, PyInstaller Development Team.
|
| 3 |
+
#
|
| 4 |
+
# Distributed under the terms of the GNU General Public License (version 2
|
| 5 |
+
# or later) with exception for distributing the bootloader.
|
| 6 |
+
#
|
| 7 |
+
# The full license is in the file COPYING.txt, distributed with this software.
|
| 8 |
+
#
|
| 9 |
+
# SPDX-License-Identifier: (GPL-2.0-or-later WITH Bootloader-exception)
|
| 10 |
+
#-----------------------------------------------------------------------------
|
| 11 |
+
|
| 12 |
+
msg = """
|
| 13 |
+
=============================================================
|
| 14 |
+
A RecursionError (maximum recursion depth exceeded) occurred.
|
| 15 |
+
For working around please follow these instructions
|
| 16 |
+
=============================================================
|
| 17 |
+
|
| 18 |
+
1. In your program's .spec file add this line near the top::
|
| 19 |
+
|
| 20 |
+
import sys ; sys.setrecursionlimit(sys.getrecursionlimit() * 5)
|
| 21 |
+
|
| 22 |
+
2. Build your program by running PyInstaller with the .spec file as
|
| 23 |
+
argument::
|
| 24 |
+
|
| 25 |
+
pyinstaller myprog.spec
|
| 26 |
+
|
| 27 |
+
3. If this fails, you most probably hit an endless recursion in
|
| 28 |
+
PyInstaller. Please try to track this down has far as possible,
|
| 29 |
+
create a minimal example so we can reproduce and open an issue at
|
| 30 |
+
https://github.com/pyinstaller/pyinstaller/issues following the
|
| 31 |
+
instructions in the issue template. Many thanks.
|
| 32 |
+
|
| 33 |
+
Explanation: Python's stack-limit is a safety-belt against endless recursion,
|
| 34 |
+
eating up memory. PyInstaller imports modules recursively. If the structure
|
| 35 |
+
how modules are imported within your program is awkward, this leads to the
|
| 36 |
+
nesting being too deep and hitting Python's stack-limit.
|
| 37 |
+
|
| 38 |
+
With the default recursion limit (1000), the recursion error occurs at about
|
| 39 |
+
115 nested imported, with limit 2000 at about 240, with limit 5000 at about
|
| 40 |
+
660.
|
| 41 |
+
"""
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
def raise_with_msg():
|
| 45 |
+
raise SystemExit(msg)
|
myworld/Lib/site-packages/PyInstaller/_shared_with_waf.py
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#-----------------------------------------------------------------------------
|
| 2 |
+
# Copyright (c) 2005-2023, PyInstaller Development Team.
|
| 3 |
+
#
|
| 4 |
+
# Distributed under the terms of the GNU General Public License (version 2
|
| 5 |
+
# or later) with exception for distributing the bootloader.
|
| 6 |
+
#
|
| 7 |
+
# The full license is in the file COPYING.txt, distributed with this software.
|
| 8 |
+
#
|
| 9 |
+
# SPDX-License-Identifier: (GPL-2.0-or-later WITH Bootloader-exception)
|
| 10 |
+
#-----------------------------------------------------------------------------
|
| 11 |
+
"""
|
| 12 |
+
Code to be shared by PyInstaller and the bootloader/wscript file.
|
| 13 |
+
|
| 14 |
+
This code must not assume that either PyInstaller or any of its dependencies installed. I.e., the only imports allowed
|
| 15 |
+
in here are standard library ones. Within reason, it is preferable that this file should still run under Python 2.7 as
|
| 16 |
+
many compiler docker images still have only Python 2 installed.
|
| 17 |
+
"""
|
| 18 |
+
|
| 19 |
+
import platform
|
| 20 |
+
import re
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
def _pyi_machine(machine, system):
|
| 24 |
+
# type: (str, str) -> str
|
| 25 |
+
"""
|
| 26 |
+
Choose an intentionally simplified architecture identifier to be used in the bootloader's directory name.
|
| 27 |
+
|
| 28 |
+
Args:
|
| 29 |
+
machine:
|
| 30 |
+
The output of ``platform.machine()`` or any known architecture alias or shorthand that may be used by a
|
| 31 |
+
C compiler.
|
| 32 |
+
system:
|
| 33 |
+
The output of ``platform.system()`` on the target machine.
|
| 34 |
+
Returns:
|
| 35 |
+
Either a string tag or, on platforms that don't need an architecture tag, ``None``.
|
| 36 |
+
|
| 37 |
+
Ideally, we would just use ``platform.machine()`` directly, but that makes cross-compiling the bootloader almost
|
| 38 |
+
impossible, because you need to know at compile time exactly what ``platform.machine()`` will be at run time, based
|
| 39 |
+
only on the machine name alias or shorthand reported by the C compiler at the build time. Rather, use a loose
|
| 40 |
+
differentiation, and trust that anyone mixing armv6l with armv6h knows what they are doing.
|
| 41 |
+
"""
|
| 42 |
+
# See the corresponding tests in tests/unit/test_compat.py for examples.
|
| 43 |
+
|
| 44 |
+
if platform.machine() == "sw_64" or platform.machine() == "loongarch64":
|
| 45 |
+
# This explicitly inhibits cross compiling the bootloader for or on SunWay and LoongArch machine.
|
| 46 |
+
return platform.machine()
|
| 47 |
+
|
| 48 |
+
if system == "Windows":
|
| 49 |
+
if machine.lower().startswith("arm"):
|
| 50 |
+
return "arm"
|
| 51 |
+
else:
|
| 52 |
+
return "intel"
|
| 53 |
+
|
| 54 |
+
if system != "Linux":
|
| 55 |
+
# No architecture specifier for anything par Linux.
|
| 56 |
+
# - macOS is on two 64 bit architectures, but they are merged into one "universal2" bootloader.
|
| 57 |
+
# - BSD supports a wide range of architectures, but according to PyPI's download statistics, every one of our
|
| 58 |
+
# BSD users are on x86_64. This may change in the distant future.
|
| 59 |
+
return
|
| 60 |
+
|
| 61 |
+
if machine.startswith(("arm", "aarch")):
|
| 62 |
+
# ARM has a huge number of similar and aliased sub-versions, such as armv5, armv6l armv8h, aarch64.
|
| 63 |
+
return "arm"
|
| 64 |
+
if machine in ("thumb"):
|
| 65 |
+
# Reported by waf/gcc when Thumb instruction set is enabled on 32-bit ARM. The platform.machine() returns "arm"
|
| 66 |
+
# regardless of the instruction set.
|
| 67 |
+
return "arm"
|
| 68 |
+
if machine in ("x86_64", "x64", "x86"):
|
| 69 |
+
return "intel"
|
| 70 |
+
if re.fullmatch("i[1-6]86", machine):
|
| 71 |
+
return "intel"
|
| 72 |
+
if machine.startswith(("ppc", "powerpc")):
|
| 73 |
+
# PowerPC comes in 64 vs 32 bit and little vs big endian variants.
|
| 74 |
+
return "ppc"
|
| 75 |
+
if machine in ("mips64", "mips"):
|
| 76 |
+
return "mips"
|
| 77 |
+
if machine.startswith("riscv"):
|
| 78 |
+
return "riscv"
|
| 79 |
+
# Machines with no known aliases :)
|
| 80 |
+
if machine in ("s390x",):
|
| 81 |
+
return machine
|
| 82 |
+
|
| 83 |
+
# Unknown architectures are allowed by default, but will all be placed under one directory. In theory, trying to
|
| 84 |
+
# have multiple unknown architectures in one copy of PyInstaller will not work, but that should be sufficiently
|
| 85 |
+
# unlikely to ever happen.
|
| 86 |
+
return "unknown"
|
myworld/Lib/site-packages/PyInstaller/archive/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
__author__ = 'martin'
|
myworld/Lib/site-packages/PyInstaller/archive/__pycache__/__init__.cpython-311.pyc
ADDED
|
Binary file (189 Bytes). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/archive/__pycache__/pyz_crypto.cpython-311.pyc
ADDED
|
Binary file (2.39 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/archive/__pycache__/readers.cpython-311.pyc
ADDED
|
Binary file (8.19 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/archive/__pycache__/writers.cpython-311.pyc
ADDED
|
Binary file (16.8 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/archive/pyz_crypto.py
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#-----------------------------------------------------------------------------
|
| 2 |
+
# Copyright (c) 2005-2023, PyInstaller Development Team.
|
| 3 |
+
#
|
| 4 |
+
# Distributed under the terms of the GNU General Public License (version 2
|
| 5 |
+
# or later) with exception for distributing the bootloader.
|
| 6 |
+
#
|
| 7 |
+
# The full license is in the file COPYING.txt, distributed with this software.
|
| 8 |
+
#
|
| 9 |
+
# SPDX-License-Identifier: (GPL-2.0-or-later WITH Bootloader-exception)
|
| 10 |
+
#-----------------------------------------------------------------------------
|
| 11 |
+
|
| 12 |
+
import os
|
| 13 |
+
|
| 14 |
+
from PyInstaller import log as logging
|
| 15 |
+
|
| 16 |
+
BLOCK_SIZE = 16
|
| 17 |
+
logger = logging.getLogger(__name__)
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
class PyiBlockCipher:
|
| 21 |
+
"""
|
| 22 |
+
This class is used only to encrypt Python modules.
|
| 23 |
+
"""
|
| 24 |
+
def __init__(self, key=None):
|
| 25 |
+
logger.log(
|
| 26 |
+
logging.DEPRECATION,
|
| 27 |
+
"Bytecode encryption will be removed in PyInstaller v6. Please remove cipher and block_cipher parameters "
|
| 28 |
+
"from your spec file to avoid breakages on upgrade. For the rationale/alternatives see "
|
| 29 |
+
"https://github.com/pyinstaller/pyinstaller/pull/6999"
|
| 30 |
+
)
|
| 31 |
+
assert type(key) is str
|
| 32 |
+
if len(key) > BLOCK_SIZE:
|
| 33 |
+
self.key = key[0:BLOCK_SIZE]
|
| 34 |
+
else:
|
| 35 |
+
self.key = key.zfill(BLOCK_SIZE)
|
| 36 |
+
assert len(self.key) == BLOCK_SIZE
|
| 37 |
+
|
| 38 |
+
import tinyaes
|
| 39 |
+
self._aesmod = tinyaes
|
| 40 |
+
|
| 41 |
+
def encrypt(self, data):
|
| 42 |
+
iv = os.urandom(BLOCK_SIZE)
|
| 43 |
+
return iv + self.__create_cipher(iv).CTR_xcrypt_buffer(data)
|
| 44 |
+
|
| 45 |
+
def __create_cipher(self, iv):
|
| 46 |
+
# The 'AES' class is stateful, and this factory method is used to re-initialize the block cipher class with
|
| 47 |
+
# each call to xcrypt().
|
| 48 |
+
return self._aesmod.AES(self.key.encode(), iv)
|
myworld/Lib/site-packages/PyInstaller/archive/readers.py
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#-----------------------------------------------------------------------------
|
| 2 |
+
# Copyright (c) 2013-2023, PyInstaller Development Team.
|
| 3 |
+
#
|
| 4 |
+
# Distributed under the terms of the GNU General Public License (version 2
|
| 5 |
+
# or later) with exception for distributing the bootloader.
|
| 6 |
+
#
|
| 7 |
+
# The full license is in the file COPYING.txt, distributed with this software.
|
| 8 |
+
#
|
| 9 |
+
# SPDX-License-Identifier: (GPL-2.0-or-later WITH Bootloader-exception)
|
| 10 |
+
#-----------------------------------------------------------------------------
|
| 11 |
+
"""
|
| 12 |
+
Python-based CArchive (PKG) reader implementation. Used only in the archive_viewer utility.
|
| 13 |
+
"""
|
| 14 |
+
|
| 15 |
+
import os
|
| 16 |
+
import struct
|
| 17 |
+
|
| 18 |
+
from PyInstaller.loader.pyimod01_archive import ZlibArchiveReader, ArchiveReadError
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
class NotAnArchiveError(TypeError):
|
| 22 |
+
pass
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
# Type codes for CArchive TOC entries
|
| 26 |
+
PKG_ITEM_BINARY = 'b' # binary
|
| 27 |
+
PKG_ITEM_DEPENDENCY = 'd' # runtime option
|
| 28 |
+
PKG_ITEM_PYZ = 'z' # zlib (pyz) - frozen Python code
|
| 29 |
+
PKG_ITEM_ZIPFILE = 'Z' # zlib (pyz) - frozen Python code
|
| 30 |
+
PKG_ITEM_PYPACKAGE = 'M' # Python package (__init__.py)
|
| 31 |
+
PKG_ITEM_PYMODULE = 'm' # Python module
|
| 32 |
+
PKG_ITEM_PYSOURCE = 's' # Python script (v3)
|
| 33 |
+
PKG_ITEM_DATA = 'x' # data
|
| 34 |
+
PKG_ITEM_RUNTIME_OPTION = 'o' # runtime option
|
| 35 |
+
PKG_ITEM_SPLASH = 'l' # splash resources
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
class CArchiveReader:
|
| 39 |
+
"""
|
| 40 |
+
Reader for PyInstaller's CArchive (PKG) archive.
|
| 41 |
+
"""
|
| 42 |
+
|
| 43 |
+
# Cookie - holds some information for the bootloader. C struct format definition. '!' at the beginning means network
|
| 44 |
+
# byte order. C struct looks like:
|
| 45 |
+
#
|
| 46 |
+
# typedef struct _cookie {
|
| 47 |
+
# char magic[8]; /* 'MEI\014\013\012\013\016' */
|
| 48 |
+
# uint32_t len; /* len of entire package */
|
| 49 |
+
# uint32_t TOC; /* pos (rel to start) of TableOfContents */
|
| 50 |
+
# int TOClen; /* length of TableOfContents */
|
| 51 |
+
# int pyvers; /* new in v4 */
|
| 52 |
+
# char pylibname[64]; /* Filename of Python dynamic library. */
|
| 53 |
+
# } COOKIE;
|
| 54 |
+
#
|
| 55 |
+
_COOKIE_MAGIC_PATTERN = b'MEI\014\013\012\013\016'
|
| 56 |
+
|
| 57 |
+
_COOKIE_FORMAT = '!8sIIii64s'
|
| 58 |
+
_COOKIE_LENGTH = struct.calcsize(_COOKIE_FORMAT)
|
| 59 |
+
|
| 60 |
+
# TOC entry:
|
| 61 |
+
#
|
| 62 |
+
# typedef struct _toc {
|
| 63 |
+
# int structlen; /* len of this one - including full len of name */
|
| 64 |
+
# uint32_t pos; /* pos rel to start of concatenation */
|
| 65 |
+
# uint32_t len; /* len of the data (compressed) */
|
| 66 |
+
# uint32_t ulen; /* len of data (uncompressed) */
|
| 67 |
+
# char cflag; /* is it compressed (really a byte) */
|
| 68 |
+
# char typcd; /* type code -'b' binary, 'z' zlib, 'm' module,
|
| 69 |
+
# * 's' script (v3),'x' data, 'o' runtime option */
|
| 70 |
+
# char name[1]; /* the name to save it as */
|
| 71 |
+
# /* starting in v5, we stretch this out to a mult of 16 */
|
| 72 |
+
# } TOC;
|
| 73 |
+
#
|
| 74 |
+
_TOC_ENTRY_FORMAT = '!iIIIBB'
|
| 75 |
+
_TOC_ENTRY_LENGTH = struct.calcsize(_TOC_ENTRY_FORMAT)
|
| 76 |
+
|
| 77 |
+
def __init__(self, filename):
|
| 78 |
+
self._filename = filename
|
| 79 |
+
self._start_offset = 0
|
| 80 |
+
self._toc_offset = 0
|
| 81 |
+
self._toc_length = 0
|
| 82 |
+
|
| 83 |
+
self.toc = {}
|
| 84 |
+
|
| 85 |
+
# Load TOC
|
| 86 |
+
with open(self._filename, "rb") as fp:
|
| 87 |
+
# Find cookie MAGIC pattern
|
| 88 |
+
cookie_start_offset = self._find_magic_pattern(fp, self._COOKIE_MAGIC_PATTERN)
|
| 89 |
+
if cookie_start_offset == -1:
|
| 90 |
+
raise ArchiveReadError("Could not find COOKIE magic pattern!")
|
| 91 |
+
|
| 92 |
+
# Read the whole cookie
|
| 93 |
+
fp.seek(cookie_start_offset, os.SEEK_SET)
|
| 94 |
+
cookie_data = fp.read(self._COOKIE_LENGTH)
|
| 95 |
+
|
| 96 |
+
magic, archive_length, toc_offset, toc_length, pyvers, pylib_name = \
|
| 97 |
+
struct.unpack(self._COOKIE_FORMAT, cookie_data)
|
| 98 |
+
|
| 99 |
+
# Compute start of the the archive
|
| 100 |
+
self._start_offset = (cookie_start_offset + self._COOKIE_LENGTH) - archive_length
|
| 101 |
+
|
| 102 |
+
# Verify that Python shared library name is set
|
| 103 |
+
if not pylib_name:
|
| 104 |
+
raise ArchiveReadError("Python shared library name not set in the archive!")
|
| 105 |
+
|
| 106 |
+
# Read whole toc
|
| 107 |
+
fp.seek(self._start_offset + toc_offset)
|
| 108 |
+
toc_data = fp.read(toc_length)
|
| 109 |
+
|
| 110 |
+
self.toc = self._parse_toc(toc_data)
|
| 111 |
+
|
| 112 |
+
@staticmethod
|
| 113 |
+
def _find_magic_pattern(fp, magic_pattern):
|
| 114 |
+
# Start at the end of file, and scan back-to-start
|
| 115 |
+
fp.seek(0, os.SEEK_END)
|
| 116 |
+
end_pos = fp.tell()
|
| 117 |
+
|
| 118 |
+
# Scan from back
|
| 119 |
+
SEARCH_CHUNK_SIZE = 8192
|
| 120 |
+
magic_offset = -1
|
| 121 |
+
while end_pos >= len(magic_pattern):
|
| 122 |
+
start_pos = max(end_pos - SEARCH_CHUNK_SIZE, 0)
|
| 123 |
+
chunk_size = end_pos - start_pos
|
| 124 |
+
# Is the remaining chunk large enough to hold the pattern?
|
| 125 |
+
if chunk_size < len(magic_pattern):
|
| 126 |
+
break
|
| 127 |
+
# Read and scan the chunk
|
| 128 |
+
fp.seek(start_pos, os.SEEK_SET)
|
| 129 |
+
buf = fp.read(chunk_size)
|
| 130 |
+
pos = buf.rfind(magic_pattern)
|
| 131 |
+
if pos != -1:
|
| 132 |
+
magic_offset = start_pos + pos
|
| 133 |
+
break
|
| 134 |
+
# Adjust search location for next chunk; ensure proper overlap
|
| 135 |
+
end_pos = start_pos + len(magic_pattern) - 1
|
| 136 |
+
|
| 137 |
+
return magic_offset
|
| 138 |
+
|
| 139 |
+
@classmethod
|
| 140 |
+
def _parse_toc(cls, data):
|
| 141 |
+
toc = {}
|
| 142 |
+
cur_pos = 0
|
| 143 |
+
while cur_pos < len(data):
|
| 144 |
+
# Read and parse the fixed-size TOC entry header
|
| 145 |
+
entry_length, entry_offset, data_length, uncompressed_length, compression_flag, typecode = \
|
| 146 |
+
struct.unpack(cls._TOC_ENTRY_FORMAT, data[cur_pos:(cur_pos + cls._TOC_ENTRY_LENGTH)])
|
| 147 |
+
cur_pos += cls._TOC_ENTRY_LENGTH
|
| 148 |
+
# Read variable-length name
|
| 149 |
+
name_length = entry_length - cls._TOC_ENTRY_LENGTH
|
| 150 |
+
name, *_ = struct.unpack(f'{name_length}s', data[cur_pos:(cur_pos + name_length)])
|
| 151 |
+
cur_pos += name_length
|
| 152 |
+
# Name string may contain up to 15 bytes of padding
|
| 153 |
+
name = name.rstrip(b'\0').decode('utf-8')
|
| 154 |
+
|
| 155 |
+
typecode = chr(typecode)
|
| 156 |
+
|
| 157 |
+
# TODO: handle duplicates
|
| 158 |
+
toc[name] = (entry_offset, data_length, uncompressed_length, compression_flag, typecode)
|
| 159 |
+
|
| 160 |
+
return toc
|
| 161 |
+
|
| 162 |
+
def extract(self, name):
|
| 163 |
+
"""
|
| 164 |
+
Extract data for the given entry name.
|
| 165 |
+
"""
|
| 166 |
+
|
| 167 |
+
entry = self.toc.get(name)
|
| 168 |
+
if entry is None:
|
| 169 |
+
raise KeyError(f"No entry named {name} found in the archive!")
|
| 170 |
+
|
| 171 |
+
entry_offset, data_length, uncompressed_length, compression_flag, typecode = entry
|
| 172 |
+
with open(self._filename, "rb") as fp:
|
| 173 |
+
fp.seek(self._start_offset + entry_offset, os.SEEK_SET)
|
| 174 |
+
data = fp.read(data_length)
|
| 175 |
+
|
| 176 |
+
if compression_flag:
|
| 177 |
+
import zlib
|
| 178 |
+
data = zlib.decompress(data)
|
| 179 |
+
|
| 180 |
+
return data
|
| 181 |
+
|
| 182 |
+
def open_embedded_archive(self, name):
|
| 183 |
+
"""
|
| 184 |
+
Open new archive reader for the embedded archive.
|
| 185 |
+
"""
|
| 186 |
+
|
| 187 |
+
entry = self.toc.get(name)
|
| 188 |
+
if entry is None:
|
| 189 |
+
raise KeyError(f"No entry named {name} found in the archive!")
|
| 190 |
+
|
| 191 |
+
entry_offset, data_length, uncompressed_length, compression_flag, typecode = entry
|
| 192 |
+
|
| 193 |
+
if typecode == PKG_ITEM_PYZ:
|
| 194 |
+
# Open as embedded archive, without extraction.
|
| 195 |
+
return ZlibArchiveReader(self._filename, self._start_offset + entry_offset)
|
| 196 |
+
elif typecode == PKG_ITEM_ZIPFILE:
|
| 197 |
+
raise NotAnArchiveError("Zipfile archives not supported yet!")
|
| 198 |
+
else:
|
| 199 |
+
raise NotAnArchiveError(f"Entry {name} is not a supported embedded archive!")
|
| 200 |
+
|
| 201 |
+
|
| 202 |
+
def pkg_archive_contents(filename, recursive=True):
|
| 203 |
+
"""
|
| 204 |
+
List the contents of the PKG / CArchive. If `recursive` flag is set (the default), the contents of the embedded PYZ
|
| 205 |
+
archive is included as well.
|
| 206 |
+
|
| 207 |
+
Used by the tests.
|
| 208 |
+
"""
|
| 209 |
+
|
| 210 |
+
contents = []
|
| 211 |
+
|
| 212 |
+
pkg_archive = CArchiveReader(filename)
|
| 213 |
+
for name, toc_entry in pkg_archive.toc.items():
|
| 214 |
+
*_, typecode = toc_entry
|
| 215 |
+
contents.append(name)
|
| 216 |
+
if typecode == PKG_ITEM_PYZ and recursive:
|
| 217 |
+
pyz_archive = pkg_archive.open_embedded_archive(name)
|
| 218 |
+
for name in pyz_archive.toc.keys():
|
| 219 |
+
contents.append(name)
|
| 220 |
+
|
| 221 |
+
return contents
|
myworld/Lib/site-packages/PyInstaller/archive/writers.py
ADDED
|
@@ -0,0 +1,402 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#-----------------------------------------------------------------------------
|
| 2 |
+
# Copyright (c) 2005-2023, PyInstaller Development Team.
|
| 3 |
+
#
|
| 4 |
+
# Distributed under the terms of the GNU General Public License (version 2
|
| 5 |
+
# or later) with exception for distributing the bootloader.
|
| 6 |
+
#
|
| 7 |
+
# The full license is in the file COPYING.txt, distributed with this software.
|
| 8 |
+
#
|
| 9 |
+
# SPDX-License-Identifier: (GPL-2.0-or-later WITH Bootloader-exception)
|
| 10 |
+
#-----------------------------------------------------------------------------
|
| 11 |
+
"""
|
| 12 |
+
Utilities to create data structures for embedding Python modules and additional files into the executable.
|
| 13 |
+
"""
|
| 14 |
+
|
| 15 |
+
import marshal
|
| 16 |
+
import os
|
| 17 |
+
import shutil
|
| 18 |
+
import struct
|
| 19 |
+
import sys
|
| 20 |
+
import zlib
|
| 21 |
+
|
| 22 |
+
from PyInstaller.building.utils import get_code_object, strip_paths_in_code
|
| 23 |
+
from PyInstaller.compat import BYTECODE_MAGIC, is_win, strict_collect_mode
|
| 24 |
+
from PyInstaller.loader.pyimod01_archive import PYZ_ITEM_DATA, PYZ_ITEM_MODULE, PYZ_ITEM_NSPKG, PYZ_ITEM_PKG
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
class ZlibArchiveWriter:
|
| 28 |
+
"""
|
| 29 |
+
Writer for PyInstaller's PYZ (ZlibArchive) archive. The archive is used to store collected byte-compiled Python
|
| 30 |
+
modules, as individually-compressed entries.
|
| 31 |
+
"""
|
| 32 |
+
_PYZ_MAGIC_PATTERN = b'PYZ\0'
|
| 33 |
+
_HEADER_LENGTH = 12 + 5
|
| 34 |
+
_COMPRESSION_LEVEL = 6 # zlib compression level
|
| 35 |
+
|
| 36 |
+
def __init__(self, filename, entries, code_dict=None, cipher=None):
|
| 37 |
+
"""
|
| 38 |
+
filename
|
| 39 |
+
Target filename of the archive.
|
| 40 |
+
entries
|
| 41 |
+
An iterable containing entries in the form of tuples: (name, src_path, typecode), where `name` is the name
|
| 42 |
+
under which the resource is stored (e.g., python module name, without suffix), `src_path` is name of the
|
| 43 |
+
file from which the resource is read, and `typecode` is the Analysis-level TOC typecode (`PYMODULE` or
|
| 44 |
+
`DATA`).
|
| 45 |
+
code_dict
|
| 46 |
+
Optional code dictionary containing code objects for analyzed/collected python modules.
|
| 47 |
+
cipher
|
| 48 |
+
Optional `Cipher` object for bytecode encryption.
|
| 49 |
+
"""
|
| 50 |
+
code_dict = code_dict or {}
|
| 51 |
+
|
| 52 |
+
with open(filename, "wb") as fp:
|
| 53 |
+
# Reserve space for the header.
|
| 54 |
+
fp.write(b'\0' * self._HEADER_LENGTH)
|
| 55 |
+
|
| 56 |
+
# Write entries' data and collect TOC entries
|
| 57 |
+
toc = []
|
| 58 |
+
for entry in entries:
|
| 59 |
+
toc_entry = self._write_entry(fp, entry, code_dict, cipher)
|
| 60 |
+
toc.append(toc_entry)
|
| 61 |
+
|
| 62 |
+
# Write TOC
|
| 63 |
+
toc_offset = fp.tell()
|
| 64 |
+
toc_data = marshal.dumps(toc)
|
| 65 |
+
fp.write(toc_data)
|
| 66 |
+
|
| 67 |
+
# Write header:
|
| 68 |
+
# - PYZ magic pattern (4 bytes)
|
| 69 |
+
# - python bytecode magic pattern (4 bytes)
|
| 70 |
+
# - TOC offset (32-bit int, 4 bytes)
|
| 71 |
+
# - encryption flag (1 byte)
|
| 72 |
+
# - 4 unused bytes
|
| 73 |
+
fp.seek(0, os.SEEK_SET)
|
| 74 |
+
|
| 75 |
+
fp.write(self._PYZ_MAGIC_PATTERN)
|
| 76 |
+
fp.write(BYTECODE_MAGIC)
|
| 77 |
+
fp.write(struct.pack('!i', toc_offset))
|
| 78 |
+
fp.write(struct.pack('!B', cipher is not None))
|
| 79 |
+
|
| 80 |
+
@classmethod
|
| 81 |
+
def _write_entry(cls, fp, entry, code_dict, cipher):
|
| 82 |
+
name, src_path, typecode = entry
|
| 83 |
+
|
| 84 |
+
if typecode == 'PYMODULE':
|
| 85 |
+
typecode = PYZ_ITEM_MODULE
|
| 86 |
+
if src_path in ('-', None):
|
| 87 |
+
# This is a NamespacePackage, modulegraph marks them by using the filename '-'. (But wants to use None,
|
| 88 |
+
# so check for None, too, to be forward-compatible.)
|
| 89 |
+
typecode = PYZ_ITEM_NSPKG
|
| 90 |
+
else:
|
| 91 |
+
src_basename, _ = os.path.splitext(os.path.basename(src_path))
|
| 92 |
+
if src_basename == '__init__':
|
| 93 |
+
typecode = PYZ_ITEM_PKG
|
| 94 |
+
data = marshal.dumps(code_dict[name])
|
| 95 |
+
else:
|
| 96 |
+
# Any data files, that might be required by pkg_resources.
|
| 97 |
+
typecode = PYZ_ITEM_DATA
|
| 98 |
+
with open(src_path, 'rb') as fh:
|
| 99 |
+
data = fh.read()
|
| 100 |
+
# No need to use forward slash as path-separator here since pkg_resources on Windows uses back slash as
|
| 101 |
+
# path-separator.
|
| 102 |
+
|
| 103 |
+
# First compress, then encrypt.
|
| 104 |
+
obj = zlib.compress(data, cls._COMPRESSION_LEVEL)
|
| 105 |
+
if cipher:
|
| 106 |
+
obj = cipher.encrypt(obj)
|
| 107 |
+
|
| 108 |
+
# Create TOC entry
|
| 109 |
+
toc_entry = (name, (typecode, fp.tell(), len(obj)))
|
| 110 |
+
|
| 111 |
+
# Write data blob
|
| 112 |
+
fp.write(obj)
|
| 113 |
+
|
| 114 |
+
return toc_entry
|
| 115 |
+
|
| 116 |
+
|
| 117 |
+
class CArchiveWriter:
|
| 118 |
+
"""
|
| 119 |
+
Writer for PyInstaller's CArchive (PKG) archive.
|
| 120 |
+
|
| 121 |
+
This archive contains all files that are bundled within an executable; a PYZ (ZlibArchive), DLLs, Python C
|
| 122 |
+
extensions, and other data files that are bundled in onefile mode.
|
| 123 |
+
|
| 124 |
+
The archive can be read from either C (bootloader code at application's run-time) or Python (for debug purposes).
|
| 125 |
+
"""
|
| 126 |
+
_COOKIE_MAGIC_PATTERN = b'MEI\014\013\012\013\016'
|
| 127 |
+
|
| 128 |
+
# For cookie and TOC entry structure, see `PyInstaller.archive.readers.CArchiveReader`.
|
| 129 |
+
_COOKIE_FORMAT = '!8sIIii64s'
|
| 130 |
+
_COOKIE_LENGTH = struct.calcsize(_COOKIE_FORMAT)
|
| 131 |
+
|
| 132 |
+
_TOC_ENTRY_FORMAT = '!iIIIBB'
|
| 133 |
+
_TOC_ENTRY_LENGTH = struct.calcsize(_TOC_ENTRY_FORMAT)
|
| 134 |
+
|
| 135 |
+
_COMPRESSION_LEVEL = 9 # zlib compression level
|
| 136 |
+
|
| 137 |
+
def __init__(self, filename, entries, pylib_name):
|
| 138 |
+
"""
|
| 139 |
+
filename
|
| 140 |
+
Target filename of the archive.
|
| 141 |
+
entries
|
| 142 |
+
An iterable containing entries in the form of tuples: (dest_name, src_name, compress, typecode), where
|
| 143 |
+
`dest_name` is the name under which the resource is stored in the archive (and name under which it is
|
| 144 |
+
extracted at runtime), `src_name` is name of the file from which the resouce is read, `compress` is a
|
| 145 |
+
boolean compression flag, and `typecode` is the Analysis-level TOC typecode.
|
| 146 |
+
pylib_name
|
| 147 |
+
Name of the python shared library.
|
| 148 |
+
"""
|
| 149 |
+
self._collected_names = set() # Track collected names for strict package mode.
|
| 150 |
+
|
| 151 |
+
with open(filename, "wb") as fp:
|
| 152 |
+
# Write entries' data and collect TOC entries
|
| 153 |
+
toc = []
|
| 154 |
+
for entry in entries:
|
| 155 |
+
toc_entry = self._write_entry(fp, entry)
|
| 156 |
+
toc.append(toc_entry)
|
| 157 |
+
|
| 158 |
+
# Write TOC
|
| 159 |
+
toc_offset = fp.tell()
|
| 160 |
+
toc_data = self._serialize_toc(toc)
|
| 161 |
+
toc_length = len(toc_data)
|
| 162 |
+
|
| 163 |
+
fp.write(toc_data)
|
| 164 |
+
|
| 165 |
+
# Write cookie
|
| 166 |
+
archive_length = toc_offset + toc_length + self._COOKIE_LENGTH
|
| 167 |
+
pyvers = sys.version_info[0] * 100 + sys.version_info[1]
|
| 168 |
+
cookie_data = struct.pack(
|
| 169 |
+
self._COOKIE_FORMAT,
|
| 170 |
+
self._COOKIE_MAGIC_PATTERN,
|
| 171 |
+
archive_length,
|
| 172 |
+
toc_offset,
|
| 173 |
+
toc_length,
|
| 174 |
+
pyvers,
|
| 175 |
+
pylib_name.encode('ascii'),
|
| 176 |
+
)
|
| 177 |
+
|
| 178 |
+
fp.write(cookie_data)
|
| 179 |
+
|
| 180 |
+
def _write_entry(self, fp, entry):
|
| 181 |
+
dest_name, src_name, compress, typecode = entry
|
| 182 |
+
|
| 183 |
+
# Ensure forward slashes in paths are on Windows converted to back slashes '\\', as on Windows the bootloader
|
| 184 |
+
# works only with back slashes.
|
| 185 |
+
dest_name = os.path.normpath(dest_name)
|
| 186 |
+
if is_win and os.path.sep == '/':
|
| 187 |
+
# When building under MSYS, the above path normalization uses Unix-style separators, so replace them
|
| 188 |
+
# manually.
|
| 189 |
+
dest_name = dest_name.replace(os.path.sep, '\\')
|
| 190 |
+
|
| 191 |
+
# Strict pack/collect mode: keep track of the destination names, and raise an error if we try to add a duplicate
|
| 192 |
+
# (a file with same destination name, subject to OS case normalization rules).
|
| 193 |
+
if strict_collect_mode:
|
| 194 |
+
normalized_dest = None
|
| 195 |
+
if type in ('o', 's', 'm', 'M'):
|
| 196 |
+
# Exempt options, python source script, and modules from the check
|
| 197 |
+
pass
|
| 198 |
+
else:
|
| 199 |
+
# Everything else; normalize the case
|
| 200 |
+
normalized_dest = os.path.normcase(dest_name)
|
| 201 |
+
# Check for existing entry, if applicable
|
| 202 |
+
if normalized_dest:
|
| 203 |
+
if normalized_dest in self._collected_names:
|
| 204 |
+
raise ValueError(
|
| 205 |
+
f"Attempting to collect a duplicated file into CArchive: {normalized_dest} (type: {typecode})"
|
| 206 |
+
)
|
| 207 |
+
self._collected_names.add(normalized_dest)
|
| 208 |
+
|
| 209 |
+
if typecode == 'o':
|
| 210 |
+
return self._write_blob(fp, b"", dest_name, typecode)
|
| 211 |
+
elif typecode == 'd':
|
| 212 |
+
# Dependency; merge src_name (= reference path prefix) and dest_name (= name) into single-string format that
|
| 213 |
+
# is parsed by bootloader.
|
| 214 |
+
return self._write_blob(fp, b"", f"{src_name}:{dest_name}", typecode)
|
| 215 |
+
elif typecode == 's':
|
| 216 |
+
# If it is a source code file, compile it to a code object and marshal the object, so it can be unmarshalled
|
| 217 |
+
# by the bootloader.
|
| 218 |
+
code = get_code_object(dest_name, src_name)
|
| 219 |
+
code = strip_paths_in_code(code)
|
| 220 |
+
return self._write_blob(fp, marshal.dumps(code), dest_name, typecode, compress=compress)
|
| 221 |
+
elif typecode in ('m', 'M'):
|
| 222 |
+
# Read the PYC file
|
| 223 |
+
with open(src_name, "rb") as in_fp:
|
| 224 |
+
data = in_fp.read()
|
| 225 |
+
assert data[:4] == BYTECODE_MAGIC
|
| 226 |
+
# Skip the PYC header, load the code object.
|
| 227 |
+
code = marshal.loads(data[16:])
|
| 228 |
+
code = strip_paths_in_code(code)
|
| 229 |
+
# These module entries are loaded and executed within the bootloader, which requires only the code
|
| 230 |
+
# object, without the PYC header.
|
| 231 |
+
return self._write_blob(fp, marshal.dumps(code), dest_name, typecode, compress=compress)
|
| 232 |
+
else:
|
| 233 |
+
return self._write_file(fp, src_name, dest_name, typecode, compress=compress)
|
| 234 |
+
|
| 235 |
+
def _write_blob(self, out_fp, blob: bytes, dest_name, typecode, compress=False):
|
| 236 |
+
"""
|
| 237 |
+
Write the binary contents (**blob**) of a small file to the archive and return the corresponding CArchive TOC
|
| 238 |
+
entry.
|
| 239 |
+
"""
|
| 240 |
+
data_offset = out_fp.tell()
|
| 241 |
+
data_length = len(blob)
|
| 242 |
+
if compress:
|
| 243 |
+
blob = zlib.compress(blob, level=self._COMPRESSION_LEVEL)
|
| 244 |
+
out_fp.write(blob)
|
| 245 |
+
|
| 246 |
+
return (data_offset, len(blob), data_length, int(compress), typecode, dest_name)
|
| 247 |
+
|
| 248 |
+
def _write_file(self, out_fp, src_name, dest_name, typecode, compress=False):
|
| 249 |
+
"""
|
| 250 |
+
Stream copy a large file into the archive and return the corresponding CArchive TOC entry.
|
| 251 |
+
"""
|
| 252 |
+
data_offset = out_fp.tell()
|
| 253 |
+
data_length = os.stat(src_name).st_size
|
| 254 |
+
with open(src_name, 'rb') as in_fp:
|
| 255 |
+
if compress:
|
| 256 |
+
tmp_buffer = bytearray(16 * 1024)
|
| 257 |
+
compressor = zlib.compressobj(self._COMPRESSION_LEVEL)
|
| 258 |
+
while True:
|
| 259 |
+
num_read = in_fp.readinto(tmp_buffer)
|
| 260 |
+
if not num_read:
|
| 261 |
+
break
|
| 262 |
+
out_fp.write(compressor.compress(tmp_buffer[:num_read]))
|
| 263 |
+
out_fp.write(compressor.flush())
|
| 264 |
+
else:
|
| 265 |
+
shutil.copyfileobj(in_fp, out_fp)
|
| 266 |
+
|
| 267 |
+
return (data_offset, out_fp.tell() - data_offset, data_length, int(compress), typecode, dest_name)
|
| 268 |
+
|
| 269 |
+
@classmethod
|
| 270 |
+
def _serialize_toc(cls, toc):
|
| 271 |
+
serialized_toc = []
|
| 272 |
+
for toc_entry in toc:
|
| 273 |
+
data_offset, compressed_length, data_length, compress, typecode, name = toc_entry
|
| 274 |
+
|
| 275 |
+
# Encode names as UTF-8. This should be safe as standard python modules only contain ASCII-characters (and
|
| 276 |
+
# standard shared libraries should have the same), and thus the C-code still can handle this correctly.
|
| 277 |
+
name = name.encode('utf-8')
|
| 278 |
+
name_length = len(name) + 1 # Add 1 for string-terminating zero byte.
|
| 279 |
+
|
| 280 |
+
# Ensure TOC entries are aligned on 16-byte boundary, so they can be read by bootloader (C code) on
|
| 281 |
+
# platforms with strict data alignment requirements (for example linux on `armhf`/`armv7`, such as 32-bit
|
| 282 |
+
# Debian Buster on Raspberry Pi).
|
| 283 |
+
entry_length = cls._TOC_ENTRY_LENGTH + name_length
|
| 284 |
+
if entry_length % 16 != 0:
|
| 285 |
+
padding_length = 16 - (entry_length % 16)
|
| 286 |
+
name_length += padding_length
|
| 287 |
+
|
| 288 |
+
# Serialize
|
| 289 |
+
serialized_entry = struct.pack(
|
| 290 |
+
cls._TOC_ENTRY_FORMAT + f"{name_length}s", # "Ns" format automatically pads the string with zero bytes.
|
| 291 |
+
cls._TOC_ENTRY_LENGTH + name_length,
|
| 292 |
+
data_offset,
|
| 293 |
+
compressed_length,
|
| 294 |
+
data_length,
|
| 295 |
+
compress,
|
| 296 |
+
ord(typecode),
|
| 297 |
+
name,
|
| 298 |
+
)
|
| 299 |
+
serialized_toc.append(serialized_entry)
|
| 300 |
+
|
| 301 |
+
return b''.join(serialized_toc)
|
| 302 |
+
|
| 303 |
+
|
| 304 |
+
class SplashWriter:
|
| 305 |
+
"""
|
| 306 |
+
Writer for the splash screen resources archive.
|
| 307 |
+
|
| 308 |
+
The resulting archive is added as an entry into the CArchive with the typecode PKG_ITEM_SPLASH.
|
| 309 |
+
"""
|
| 310 |
+
# This struct describes the splash resources as it will be in an buffer inside the bootloader. All necessary parts
|
| 311 |
+
# are bundled, the *_len and *_offset fields describe the data beyond this header definition.
|
| 312 |
+
# Whereas script and image fields are binary data, the requirements fields describe an array of strings. Each string
|
| 313 |
+
# is null-terminated in order to easily iterate over this list from within C.
|
| 314 |
+
#
|
| 315 |
+
# typedef struct _splash_data_header {
|
| 316 |
+
# char tcl_libname[16]; /* Name of tcl library, e.g. tcl86t.dll */
|
| 317 |
+
# char tk_libname[16]; /* Name of tk library, e.g. tk86t.dll */
|
| 318 |
+
# char tk_lib[16]; /* Tk Library generic, e.g. "tk/" */
|
| 319 |
+
# char rundir[16]; /* temp folder inside extraction path in
|
| 320 |
+
# * which the dependencies are extracted */
|
| 321 |
+
#
|
| 322 |
+
# int script_len; /* Length of the script */
|
| 323 |
+
# int script_offset; /* Offset (rel to start) of the script */
|
| 324 |
+
#
|
| 325 |
+
# int image_len; /* Length of the image data */
|
| 326 |
+
# int image_offset; /* Offset (rel to start) of the image */
|
| 327 |
+
#
|
| 328 |
+
# int requirements_len;
|
| 329 |
+
# int requirements_offset;
|
| 330 |
+
#
|
| 331 |
+
# } SPLASH_DATA_HEADER;
|
| 332 |
+
#
|
| 333 |
+
_HEADER_FORMAT = '!16s 16s 16s 16s ii ii ii'
|
| 334 |
+
_HEADER_LENGTH = struct.calcsize(_HEADER_FORMAT)
|
| 335 |
+
|
| 336 |
+
# The created archive is compressed by the CArchive, so no need to compress the data here.
|
| 337 |
+
|
| 338 |
+
def __init__(self, filename, name_list, tcl_libname, tk_libname, tklib, rundir, image, script):
|
| 339 |
+
"""
|
| 340 |
+
Writer for splash screen resources that are bundled into the CArchive as a single archive/entry.
|
| 341 |
+
|
| 342 |
+
:param filename: The filename of the archive to create
|
| 343 |
+
:param name_list: List of filenames for the requirements array
|
| 344 |
+
:param str tcl_libname: Name of the tcl shared library file
|
| 345 |
+
:param str tk_libname: Name of the tk shared library file
|
| 346 |
+
:param str tklib: Root of tk library (e.g. tk/)
|
| 347 |
+
:param str rundir: Unique path to extract requirements to
|
| 348 |
+
:param Union[str, bytes] image: Image like object
|
| 349 |
+
:param str script: The tcl/tk script to execute to create the screen.
|
| 350 |
+
"""
|
| 351 |
+
|
| 352 |
+
with open(filename, "wb") as fp:
|
| 353 |
+
# Reserve space for the header.
|
| 354 |
+
fp.write(b'\0' * self._HEADER_LENGTH)
|
| 355 |
+
|
| 356 |
+
# Serialize the requirements list. This list (more an array) contains the names of all files the bootloader
|
| 357 |
+
# needs to extract before the splash screen can be started. The implementation terminates every name with a
|
| 358 |
+
# null-byte, that keeps the list short memory wise and makes it iterable from C.
|
| 359 |
+
requirements_len = 0
|
| 360 |
+
requirements_offset = fp.tell()
|
| 361 |
+
for name in name_list:
|
| 362 |
+
name = name.encode('utf-8') + b'\0'
|
| 363 |
+
fp.write(name)
|
| 364 |
+
requirements_len += len(name)
|
| 365 |
+
|
| 366 |
+
# Write splash script
|
| 367 |
+
script_offset = fp.tell()
|
| 368 |
+
script_len = len(script)
|
| 369 |
+
fp.write(script.encode("utf-8"))
|
| 370 |
+
|
| 371 |
+
# Write splash image. If image is a bytes buffer, it is written directly into the archive. Otherwise, it
|
| 372 |
+
# is assumed to be a path and the file is copied into the archive.
|
| 373 |
+
image_offset = fp.tell()
|
| 374 |
+
if isinstance(image, bytes):
|
| 375 |
+
# Image was converted by PIL/Pillow and is already in buffer
|
| 376 |
+
image_len = len(image)
|
| 377 |
+
fp.write(image)
|
| 378 |
+
else:
|
| 379 |
+
# Read image into buffer
|
| 380 |
+
with open(image, 'rb') as image_fp:
|
| 381 |
+
image_data = image_fp.read()
|
| 382 |
+
image_len = len(image_data)
|
| 383 |
+
fp.write(image_data)
|
| 384 |
+
del image_data
|
| 385 |
+
|
| 386 |
+
# Write header
|
| 387 |
+
header_data = struct.pack(
|
| 388 |
+
self._HEADER_FORMAT,
|
| 389 |
+
tcl_libname.encode("utf-8"),
|
| 390 |
+
tk_libname.encode("utf-8"),
|
| 391 |
+
tklib.encode("utf-8"),
|
| 392 |
+
rundir.encode("utf-8"),
|
| 393 |
+
script_len,
|
| 394 |
+
script_offset,
|
| 395 |
+
image_len,
|
| 396 |
+
image_offset,
|
| 397 |
+
requirements_len,
|
| 398 |
+
requirements_offset,
|
| 399 |
+
)
|
| 400 |
+
|
| 401 |
+
fp.seek(0, os.SEEK_SET)
|
| 402 |
+
fp.write(header_data)
|
myworld/Lib/site-packages/PyInstaller/bootloader/Windows-64bit-intel/run.exe
ADDED
|
Binary file (258 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/bootloader/Windows-64bit-intel/run_d.exe
ADDED
|
Binary file (263 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/bootloader/Windows-64bit-intel/runw.exe
ADDED
|
Binary file (259 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/bootloader/Windows-64bit-intel/runw_d.exe
ADDED
|
Binary file (264 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/bootloader/images/icon-console.ico
ADDED
|
|
myworld/Lib/site-packages/PyInstaller/bootloader/images/icon-windowed.ico
ADDED
|
|
myworld/Lib/site-packages/PyInstaller/building/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
#
|
myworld/Lib/site-packages/PyInstaller/building/__pycache__/__init__.cpython-311.pyc
ADDED
|
Binary file (170 Bytes). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/building/__pycache__/api.cpython-311.pyc
ADDED
|
Binary file (51.5 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/building/__pycache__/build_main.cpython-311.pyc
ADDED
|
Binary file (45.5 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/building/__pycache__/datastruct.cpython-311.pyc
ADDED
|
Binary file (18 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/building/__pycache__/icon.cpython-311.pyc
ADDED
|
Binary file (4.43 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/building/__pycache__/makespec.cpython-311.pyc
ADDED
|
Binary file (31.2 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/building/__pycache__/osx.cpython-311.pyc
ADDED
|
Binary file (13.8 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/building/__pycache__/splash.cpython-311.pyc
ADDED
|
Binary file (23.8 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/building/__pycache__/splash_templates.cpython-311.pyc
ADDED
|
Binary file (6.72 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/building/__pycache__/templates.cpython-311.pyc
ADDED
|
Binary file (3.35 kB). View file
|
|
|
myworld/Lib/site-packages/PyInstaller/building/__pycache__/toc_conversion.cpython-311.pyc
ADDED
|
Binary file (7.47 kB). View file
|
|
|