zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
U
X±dÏã@s.ddlZddlmZejdd„ƒZdd„ZdS)éN)ÚisolatedcsVddl}ddl}ddl}ddlm}|jj |¡|g}|j|7_|j     |¡d}|j
  d|¡}||j
d<ddl }|  ¡ddlm}    t|    jƒ}
t|    dƒrª|
t|    jƒ7}
t|    dƒrÂ|
t|    jƒ7}
|
|    jg7}
d    d
„‰t|    d ƒrþ|    jD]} ˆ| ƒ} |
 | ¡qæt|    d ƒrˆ|    jƒ} |
 | ¡t|    d ƒrJ|    jD]} ˆ| ƒ} |
 | ¡q0t|    dƒrv|    jD]} ˆ| ƒ} |
 | ¡q\t|    dƒræ|    jD]\} ˆ| dƒ} |
| 7}
t| dƒrˆt| ddƒrˆ| dd}‡fdd„|Dƒ}|
|7}
qˆ|    j ¡D]}|
 |d¡qð|    jD]8}|d}|d}|
 |¡|
| |¡7}
|
 |¡q tt|
ƒƒ}
|
S)zù
    An isolated helper that returns list of all Django dependencies, parsed from the `mysite.settings` module.
 
    NOTE: With newer version of Django this is most likely the part of PyInstaller that will be broken.
 
    Tested with Django 2.2
    rN)Úhooksz    .settingsZDJANGO_SETTINGS_MODULE)ÚsettingsÚTEMPLATE_CONTEXT_PROCESSORSÚTEMPLATE_LOADERScSsd | d¡dd…¡S)NÚ.réÿÿÿÿ)ÚjoinÚsplit)Ú
class_name©r úUd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\PyInstaller/utils/hooks/django.pyÚ _remove_classCsz2django_dottedstring_imports.<locals>._remove_classÚAUTHENTICATION_BACKENDSÚDEFAULT_FILE_STORAGEÚFILE_UPLOAD_HANDLERSÚMIDDLEWARE_CLASSESÚ    TEMPLATESZBACKENDÚOPTIONSZcontext_processorscsg|] }ˆ|ƒ‘qSr r )Ú.0Úx©rr r Ú
<listcomp>bsz/django_dottedstring_imports.<locals>.<listcomp>ZENGINEz .templatetagsz.context_processors) ÚsysÚosZPyInstaller.utils.miscZPyInstaller.utilsrÚutilsÚmiscZget_path_to_toplevel_modulesÚpathÚbasenameÚenvironÚgetÚdjangoÚsetupZ django.confrÚlistZINSTALLED_APPSÚhasattrrrZ ROOT_URLCONFrÚappendrrrrZ    DATABASESÚvaluesZcollect_submodulesÚset)Zdjango_root_dirrrÚ PyInstallerZ    hookutilsZ search_pathsZdefault_settings_moduleZsettings_moduler!rZ hiddenimportsZclZtemplÚbackendZmodsÚvZappZapp_templatetag_moduleZapp_ctx_proc_moduler rr Údjango_dottedstring_importssn
  þ
 
 
 
 
 
 
 
 
 
 
 
 
 r+cCsºddlm}|d}tj tj |¡¡}d}tt |¡ƒ}d|ksJd|krXd|krX|}n^|D]X}tj tj     ||¡¡r\t tj     ||¡¡}d|ksšd|kr\d|kr\tj     ||¡}q¶q\|S)aŠ
    Return path to directory (top-level Python package) that contains main django files. Return None if no directory
    was detected.
 
    Main Django project directory contain files like '__init__.py', 'settings.py' and 'url.py'.
 
    In Django 1.4+ the script 'manage.py' is not in the directory with 'settings.py' but usually one level up. We
    need to detect this special case too.
    r)ÚCONFZ main_scriptNz settings.pyrzurls.py)
ZPyInstaller.configr,rrÚdirnameÚabspathr'ÚlistdirÚisdirr    )r,Z    manage_pyZ
manage_dirZ settings_dirÚfilesÚfZsubfilesr r r Údjango_find_root_dirws r3)rr(rZdecorater+r3r r r r Ú<module> s 
f