setuptools
Module diagram
classDiagram
class setuptools {
}
class cythonize_setup {
}
class import_parser {
}
cythonize_setup --> import_parser
setuptools
cythonize_setup
make_extension
cythonize_setup
cythonize and setup target python files
Parameters:
-
target(str) –base setup target file, which is input to parsing function
-
name(str) –library name
-
setup_args(Dict[str, Any], default:{}) –other library setup keywords
Example
Source code in SaigeToolkit/setuptools/cythonize_setup.py
import_parser
parse_compile_list
returns python files to be built by recursively parsing import phrases.
Reference
https://github.com/andrewp-as-is/list-imports.py/blob/master/list_imports/init.py
Example
Note
file/dir의 존재 유무를 isfile/isdir 함수에서 glob의 string comapre로 변경한 이유.
이슈 window에서는 filename의 대소문자를 구분하지 않음, "A.py", "a.Py", "a.PY"가 모두 같은 file. os.path.isfile/isdir 함수 또한 대소문자를 구분하지 않음, "A"가 존재할 때 isfile("a")을 호출시 True return. 따라서 폴더 내부가 다음과 같이 되어있고, import A를 했다면 ├── A │ └── init.py └── a.py linux의 경우는 A.py가 없기 때문에, A directory를 잘 찾지만, window의 경우에는 isfile(A.py)가 True이기 때문에 logic에 문제가 발생.
해결 방법 glob로 모든 file name, directory name을 가져온 뒤, string compare 진행.
unresolved issue glob가 모든 파일 리스트를 읽어오기 때문에, 폴더 내에 파일이 많은 경우 속도가 느려지는 이슈.
Source code in SaigeToolkit/setuptools/import_parser.py
get_import_module_list
Get importing module list from single python file