Skip to content

Commit 40fcb05

Browse files
committed
feat: dynamic dependencies (no more declaring inside pyproject.toml)
1 parent 7d983e7 commit 40fcb05

11 files changed

+291
-55
lines changed

README.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,31 +52,34 @@
5252
📂 scripts/ # 프로젝트와 직접 관련 X, but 프로젝트 관리를 위해 필요
5353

5454
📂 deps/
55-
# 직접 수정 X
55+
# 직접 수정 X. scripts/compile_requirements.sh 실행시 생성됨.
5656
│ 🛡️ .requirements.in.sha256
5757
│ 🛡️ .requirements_dev.in.sha256
5858
│ 🛡️ .requirements_docs.in.sha256
5959
60-
# 혹시 모를 dependency 오류를 방지하기 위해 현재 사용중인 static version 작성. `pyproject.toml`과 얼추 비슷해야함.
60+
# 프로그램 사용자에게 필요한 dependencies.
6161
│ 🖊️ requirements.in
62-
# 프로그램 사용자가 아닌 개발자에게 필요한 dependencies. `pyproject.toml`과 얼추 비슷해야함.
62+
# 프로그램 사용자가 아닌 개발자에게 필요한 dependencies.
6363
│ 🖊️ requirements_dev.in
6464
# mkdocs로 문서 생성할때 필요한 프로그램들
6565
│ 🖊️ requirements_docs.in
66+
# NOTE: in 파일은 lock 파일이 아닌 패키지 dependency이므로 전부 dynamic version으로 작성해야함.
6667
6768
# 직접 수정 X. in 파일에서 생성됨
6869
│ 🔒 requirements.txt
6970
│ 🔒 requirements_dev.txt
7071
└ 🔒 requirements_docs.txt
7172

72-
⚙️ pyproject.toml # 파이썬 프로젝트 일반 정보. `pip install -e .`으로 설치할 때 설치되는 dependencies는 물론, ruff등 외부 툴의 설정도 포함.
73+
⚙️ pyproject.toml # 파이썬 프로젝트 통합 정보. ruff등 외부 툴의 설정도 포함.
7374
```
7475

7576
## 템플릿 사용하기
7677

7778
1. `src/mlproject` 폴더 이름 원하는 걸로 바꾸기 (`import mlproject` 할 때 이름)
7879
2. `pyproject.toml`에 바꿔야하는 부분 주석 되어있음. 바꿔 쓰기
79-
3. `requirements.txt`에는 fixed version을 적고, `pyproject.toml`의 패키지들은 dynamic version으로 하기
80+
3. `requirements*.txt`에는 fixed version을 적고, `requirements*.in`의 패키지들은 dynamic version으로 하기
81+
- `pyproject.toml`에는 `requirements*.in` 파일을 참조하도록 설정되어 있음.
82+
- 패키지의 dependency는 dynamic하지만 연구팀 내에서는 fixed version (`requirements*.txt`)를 사용하는 것이 좋음.
8083
4. `README.md`에 있는 badge들 URL (python-project-template-2024 -> 새 주소) 바꾸어 주어야 제대로 테스트 결과가 뜸.
8184
5. `.github` 폴더 복사한 뒤,
8285
- GitLab에 document 호스팅용 새 repo를 만듦 (예: mlproject-docs)

deps/.requirements.in.sha256

Lines changed: 0 additions & 1 deletion
This file was deleted.

deps/.requirements_dev.in.sha256

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
148dea70d02d47970fdcde796de144da7b2c57dfa28598eb8732f613f7e3a3c1 requirements_dev.in
1+
b60225662f46bea871b4eda78e074a85e9b20c40fb6b6eb5688eb98552c7b3cf requirements_dev.in

deps/.requirements_docs.in.sha256

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2498fc535b1cab961140005b83cf43affe9b4ec815db4fee94698948f744f4c9 requirements_docs.in
1+
b60225662f46bea871b4eda78e074a85e9b20c40fb6b6eb5688eb98552c7b3cf requirements_dev.in

deps/requirements.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
rich==13.7.0
2-
tqdm==4.66.2
1+
rich>=13.0.0
2+
tqdm>=4.0.0
33
pillow
44
matplotlib
55
numpy

deps/requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# This file was autogenerated by uv v0.1.5 via the following command:
1+
# This file was autogenerated by uv via the following command:
22
# uv pip compile requirements.in -o requirements.txt
33
ansi2html==1.9.1
44
attrs==23.2.0
@@ -36,7 +36,7 @@ jsonschema-specifications==2023.12.1
3636
# via jsonschema
3737
kiwisolver==1.4.5
3838
# via matplotlib
39-
markdown-it-py==3.0.0
39+
markdown-it-py==2.2.0
4040
# via rich
4141
matplotlib==3.8.3
4242
mdurl==0.1.2

deps/requirements_dev.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
-r requirements.in
2+
-r requirements_docs.in
23
ruff==0.2.2
34
pytest==8.0.1
45
pytest-cov==4.1.0

deps/requirements_dev.txt

Lines changed: 100 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,32 @@
1-
# This file was autogenerated by uv v0.1.5 via the following command:
1+
# This file was autogenerated by uv via the following command:
22
# uv pip compile requirements_dev.in -o requirements_dev.txt
33
ansi2html==1.9.1
44
attrs==23.2.0
55
# via
66
# clearml
77
# jsonschema
88
# referencing
9+
babel==2.14.0
10+
# via mkdocs-material
911
cairocffi==1.6.1
1012
# via cairosvg
1113
cairosvg==2.7.1
14+
# via mkdocs-material
1215
certifi==2024.2.2
1316
# via requests
1417
cffi==1.16.0
1518
# via cairocffi
1619
charset-normalizer==3.3.2
1720
# via requests
1821
clearml==1.14.4
22+
click==8.1.7
23+
# via
24+
# mkdocs
25+
# mkdocstrings
26+
colorama==0.4.6
27+
# via
28+
# griffe
29+
# mkdocs-material
1930
contourpy==1.2.0
2031
# via matplotlib
2132
coverage==7.4.3
@@ -30,22 +41,71 @@ fonttools==4.49.0
3041
# via matplotlib
3142
furl==2.1.3
3243
# via clearml
44+
ghp-import==2.1.0
45+
# via mkdocs
46+
griffe==0.41.0
47+
# via mkdocstrings-python
3348
idna==3.6
3449
# via requests
50+
importlib-metadata==7.0.1
51+
# via mike
52+
importlib-resources==6.1.2
53+
# via mike
3554
iniconfig==2.0.0
3655
# via pytest
56+
jinja2==3.1.3
57+
# via
58+
# mike
59+
# mkdocs
60+
# mkdocs-material
61+
# mkdocstrings
3762
jsonschema==4.21.1
3863
# via clearml
3964
jsonschema-specifications==2023.12.1
4065
# via jsonschema
4166
kiwisolver==1.4.5
4267
# via matplotlib
68+
markdown==3.5.2
69+
# via
70+
# mkdocs
71+
# mkdocs-autorefs
72+
# mkdocs-material
73+
# mkdocstrings
74+
# pymdown-extensions
4375
markdown-it-py==3.0.0
4476
# via rich
77+
markupsafe==2.1.5
78+
# via
79+
# jinja2
80+
# mkdocs
81+
# mkdocstrings
4582
matplotlib==3.8.3
4683
# via types-seaborn
4784
mdurl==0.1.2
4885
# via markdown-it-py
86+
mergedeep==1.3.4
87+
# via mkdocs
88+
mike==2.0.0
89+
mkdocs==1.5.3
90+
# via
91+
# mike
92+
# mkdocs-autorefs
93+
# mkdocs-coverage
94+
# mkdocs-gen-files
95+
# mkdocs-literate-nav
96+
# mkdocs-material
97+
# mkdocstrings
98+
mkdocs-autorefs==0.5.0
99+
# via mkdocstrings
100+
mkdocs-coverage==1.0.0
101+
mkdocs-gen-files==0.5.0
102+
mkdocs-literate-nav==0.6.1
103+
mkdocs-material==9.5.3
104+
mkdocs-material-extensions==1.3.1
105+
# via mkdocs-material
106+
mkdocstrings==0.24.0
107+
# via mkdocstrings-python
108+
mkdocstrings-python==1.8.0
49109
numpy==1.26.4
50110
# via
51111
# clearml
@@ -58,47 +118,76 @@ orderedmultidict==1.0.1
58118
packaging==23.2
59119
# via
60120
# matplotlib
121+
# mkdocs
61122
# pytest
123+
paginate==0.5.6
124+
# via mkdocs-material
62125
pandas-stubs==2.2.0.240218
63126
# via types-seaborn
64127
pathlib2==2.3.7.post1
65128
# via clearml
66-
pillow==10.2.0
129+
pathspec==0.12.1
130+
# via mkdocs
131+
pillow==9.5.0
67132
# via
68133
# cairosvg
69134
# clearml
70135
# matplotlib
136+
# mkdocs-material
137+
platformdirs==4.2.0
138+
# via
139+
# mkdocs
140+
# mkdocstrings
71141
pluggy==1.4.0
72142
# via pytest
73143
psutil==5.9.8
74144
# via clearml
75145
pycparser==2.21
76146
# via cffi
77147
pygments==2.17.2
78-
# via rich
148+
# via
149+
# mkdocs-material
150+
# rich
79151
pyjwt==2.8.0
80152
# via clearml
153+
pymdown-extensions==10.7
154+
# via
155+
# mkdocs-material
156+
# mkdocstrings
81157
pyparsing==3.1.1
82158
# via
83159
# clearml
84160
# matplotlib
161+
# mike
85162
pytest==8.0.1
86163
# via pytest-cov
87164
pytest-cov==4.1.0
88165
python-dateutil==2.8.2
89166
# via
90167
# clearml
168+
# ghp-import
91169
# matplotlib
92170
python-dotenv==1.0.1
93171
pyyaml==6.0.1
94-
# via clearml
172+
# via
173+
# clearml
174+
# mike
175+
# mkdocs
176+
# pymdown-extensions
177+
# pyyaml-env-tag
178+
pyyaml-env-tag==0.1
179+
# via mkdocs
95180
referencing==0.33.0
96181
# via
97182
# clearml
98183
# jsonschema
99184
# jsonschema-specifications
185+
regex==2023.12.25
186+
# via mkdocs-material
100187
requests==2.31.0
101-
# via clearml
188+
# via
189+
# clearml
190+
# mkdocs-material
102191
rich==13.7.0
103192
rpds-py==0.18.0
104193
# via
@@ -128,7 +217,13 @@ urllib3==2.2.1
128217
# via
129218
# clearml
130219
# requests
220+
verspec==0.1.0
221+
# via mike
222+
watchdog==4.0.0
223+
# via mkdocs
131224
webencodings==0.5.1
132225
# via
133226
# cssselect2
134227
# tinycss2
228+
zipp==3.17.0
229+
# via importlib-metadata

0 commit comments

Comments
 (0)