plain 0.66.0__py3-none-any.whl → 0.68.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- plain/CHANGELOG.md +29 -0
- plain/chores/registry.py +1 -18
- plain/cli/agent/request.py +111 -120
- plain/cli/core.py +2 -2
- plain/cli/preflight.py +219 -98
- plain/cli/registry.py +1 -18
- plain/internal/middleware/hosts.py +0 -5
- plain/packages/registry.py +14 -0
- plain/preflight/README.md +5 -5
- plain/preflight/__init__.py +4 -24
- plain/preflight/checks.py +10 -0
- plain/preflight/files.py +17 -13
- plain/preflight/registry.py +64 -57
- plain/preflight/results.py +29 -0
- plain/preflight/security.py +58 -66
- plain/preflight/urls.py +7 -48
- plain/runtime/global_settings.py +9 -8
- plain/templates/jinja/__init__.py +2 -23
- plain/urls/patterns.py +21 -21
- plain/urls/resolvers.py +4 -4
- {plain-0.66.0.dist-info → plain-0.68.0.dist-info}/METADATA +1 -1
- {plain-0.66.0.dist-info → plain-0.68.0.dist-info}/RECORD +25 -24
- {plain-0.66.0.dist-info → plain-0.68.0.dist-info}/entry_points.txt +1 -0
- plain/preflight/messages.py +0 -81
- {plain-0.66.0.dist-info → plain-0.68.0.dist-info}/WHEEL +0 -0
- {plain-0.66.0.dist-info → plain-0.68.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,5 +1,5 @@
|
|
1
1
|
plain/AGENTS.md,sha256=5XMGBpJgbCNIpp60DPXB7bpAtFk8FAzqiZke95T965o,1038
|
2
|
-
plain/CHANGELOG.md,sha256=
|
2
|
+
plain/CHANGELOG.md,sha256=w-r_nifYj7nhHF3pbn3fJC0r3j9PhqYVBoTKeFTnDiU,18152
|
3
3
|
plain/README.md,sha256=5BJyKhf0TDanWVbOQyZ3zsi5Lov9xk-LlJYCDWofM6Y,4078
|
4
4
|
plain/__main__.py,sha256=GK39854Lc_LO_JP8DzY9Y2MIQ4cQEl7SXFJy244-lC8,110
|
5
5
|
plain/debug.py,sha256=XdjnXcbPGsi0J2SpHGaLthhYU5AjhBlkHdemaP4sbYY,758
|
@@ -18,20 +18,20 @@ plain/assets/urls.py,sha256=zQUA8bAlh9qVqskPJJrqWd9DjvetOi5jPSqy4vUX0J4,1161
|
|
18
18
|
plain/assets/views.py,sha256=T_0Qh6v9qBerEBYbhToigwOzsij-x1z_R-1zETQcIh0,9447
|
19
19
|
plain/chores/README.md,sha256=xTYKOBnfcLBpVeZgJQ6c35vdxHYaKkfJB8B-6sB3lcs,2054
|
20
20
|
plain/chores/__init__.py,sha256=r9TXtQCH-VbvfnIJ5F8FxgQC35GRWFOfmMZN3q9niLg,67
|
21
|
-
plain/chores/registry.py,sha256=
|
21
|
+
plain/chores/registry.py,sha256=2777muLuIF3ybqHKIsi7X_ulRvb8D7hNh3NotchBufA,1358
|
22
22
|
plain/cli/README.md,sha256=5C7vsH0ISxu7q5H6buC25MBOILkI_rzdySitswpQgJw,1032
|
23
23
|
plain/cli/__init__.py,sha256=6w9T7K2WrPwh6DcaMb2oNt_CWU6Bc57nUTO2Bt1p38Y,63
|
24
24
|
plain/cli/build.py,sha256=Lo6AYghJz0DM9fIVUSiBSOKa5vR0XCOxZWEjza6sc8Q,3172
|
25
25
|
plain/cli/changelog.py,sha256=j-k1yZk9mpm-fLZgeWastiyIisxNSuAJfXTQ2B6WQmk,3457
|
26
26
|
plain/cli/chores.py,sha256=xXSSFvr8T5jWfLWqe6E8YVMw1BkQxyOHHVuY0x9RH0A,2412
|
27
|
-
plain/cli/core.py,sha256=
|
27
|
+
plain/cli/core.py,sha256=Nq7fsKfV2Oz9DJUwEGCMO52P8HnbxIng1pnQnFiqm0g,3100
|
28
28
|
plain/cli/docs.py,sha256=YEEE-Th1CSxiL-wj5fF-ZagqkqAZYkEPRMO1OYUsQrU,1066
|
29
29
|
plain/cli/formatting.py,sha256=JaOiIOxIQpCRgMNGw9xpnU_fMf6hROl7o8lA5aX114w,2580
|
30
30
|
plain/cli/install.py,sha256=mffSYBmSJSj44OPBfu53nBQoyoz4jk69DvppubIB0mU,2791
|
31
31
|
plain/cli/output.py,sha256=Fe3xS6Va4Bi1ZNrqi0nh09THTsdCyMW2b9SPY5I4n-o,1318
|
32
|
-
plain/cli/preflight.py,sha256=
|
32
|
+
plain/cli/preflight.py,sha256=FU4EVFXDpkvgOFKpXcp0sUYOHc0WmcRGwo8G2oqv9Gs,8500
|
33
33
|
plain/cli/print.py,sha256=XraUYrgODOJquIiEv78wSCYGRBplHXtXSS9QtFG5hqY,217
|
34
|
-
plain/cli/registry.py,sha256=
|
34
|
+
plain/cli/registry.py,sha256=CPS05AZAWtnHOUxqeaYqlJ2BaFeHYTxpeMAGX09oYs4,962
|
35
35
|
plain/cli/scaffold.py,sha256=mcywA9DzfwoBSqWl5-Zpgcy1mTNUGEgdvoxXUrGcEVk,1351
|
36
36
|
plain/cli/settings.py,sha256=9cx4bue664I2P7kUedlf4YhCPB0tSKSE4Q8mGyzEv2o,1995
|
37
37
|
plain/cli/shell.py,sha256=PMHdwcRv48qXDToeq82aZaNth-cKc3V2pQ1yISrNMvY,1802
|
@@ -44,7 +44,7 @@ plain/cli/agent/docs.py,sha256=ubX3ZeRHxVaetLk9fjiN9mJ07GZExC-CHUvQoX2DD7c,2464
|
|
44
44
|
plain/cli/agent/llmdocs.py,sha256=AUpNDb1xSOsSpzGOiFvpzUe4f7PUGMiR9cI13aVZouo,5038
|
45
45
|
plain/cli/agent/md.py,sha256=7r1II8ckubBFOZNGPASWaPmJdgByWFPINLqIOzRetLQ,2581
|
46
46
|
plain/cli/agent/prompt.py,sha256=rugYyQHV7JDNqGrx3_PPShwwqYlnEVbxw8RsczOo8tg,1253
|
47
|
-
plain/cli/agent/request.py,sha256=
|
47
|
+
plain/cli/agent/request.py,sha256=uUbZoAhSSjOLtzgAAzacvqCS_27H-AvoeqIxpzjUjAA,5800
|
48
48
|
plain/csrf/README.md,sha256=ApWpB-qlEf0LkOKm9Yr-6f_lB9XJEvGFDo_fraw8ghI,2391
|
49
49
|
plain/csrf/middleware.py,sha256=KF8ngFadWdS0MHXC1dTLx-K3VtD6Xs-3RDjFqpiiEjQ,5053
|
50
50
|
plain/csrf/views.py,sha256=HwQqfI6KPelHP9gSXhjfZaTLQic71PKsoZ6DPhr1rKI,572
|
@@ -75,7 +75,7 @@ plain/internal/handlers/exception.py,sha256=TbPYtgZ7ITJahUKhQWkptHK28Lb4zh_nOviN
|
|
75
75
|
plain/internal/handlers/wsgi.py,sha256=dgPT29t_F9llB-c5RYU3SHxGuZNaZ83xRjOfuOmtOl8,8209
|
76
76
|
plain/internal/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
77
77
|
plain/internal/middleware/headers.py,sha256=ENIW1Gwat54hv-ejgp2R8QTZm-PlaI7k44WU01YQrNk,964
|
78
|
-
plain/internal/middleware/hosts.py,sha256=
|
78
|
+
plain/internal/middleware/hosts.py,sha256=vKdjElDk1-Ju6FUXtm5t0AfPPN-DPhjS31PkRrhM6vc,5799
|
79
79
|
plain/internal/middleware/https.py,sha256=bjysNX6_2l4Rp4DpzF2XYjH-m6gfHNq2x-MN2hHGW78,804
|
80
80
|
plain/internal/middleware/slash.py,sha256=qBTJ-yvOM0d8gUISUC7Fx22LG6aj76uhOiNHjvTkAAs,2840
|
81
81
|
plain/logs/README.md,sha256=rzOHfngjizLgXL21g0svC1Cdya2s_gBA_E-IljtHpy8,4069
|
@@ -88,17 +88,18 @@ plain/logs/utils.py,sha256=9UzdCCQXJinGDs71Ngw297mlWkhgZStSd67ya4NOW98,1257
|
|
88
88
|
plain/packages/README.md,sha256=iNqMtwFDVNf2TqKUzLKQW5Y4_GsssmdB4cVerzu27Ro,2674
|
89
89
|
plain/packages/__init__.py,sha256=OpQny0xLplPdPpozVUUkrW2gB-IIYyDT1b4zMzOcCC4,160
|
90
90
|
plain/packages/config.py,sha256=2U7b1cp_kqIuLdSeHGCLrSUV77TdfGRsww3PcXOazaA,2910
|
91
|
-
plain/packages/registry.py,sha256=
|
92
|
-
plain/preflight/README.md,sha256=
|
93
|
-
plain/preflight/__init__.py,sha256
|
94
|
-
plain/preflight/
|
95
|
-
plain/preflight/
|
96
|
-
plain/preflight/registry.py,sha256=
|
97
|
-
plain/preflight/
|
98
|
-
plain/preflight/
|
91
|
+
plain/packages/registry.py,sha256=fKijA6s1Y9W-9FnR9AyVFuBth-9v3XlHWJdhI8i7JtI,8472
|
92
|
+
plain/preflight/README.md,sha256=vR43F_ls81hRSo7J2NNZ4VOMoRaJ1bS5JwA6l4ez36g,1782
|
93
|
+
plain/preflight/__init__.py,sha256=-uBIVLD1DlJUVypQsEcrOtaNAhECbOpKhyoz0c_WMhA,416
|
94
|
+
plain/preflight/checks.py,sha256=hEJbP5KHQmdmfcr7cHt45tmdwmjomd8nvnCmQYxxCTo,245
|
95
|
+
plain/preflight/files.py,sha256=k1Gsy8QJGbatMe_1ylSaDs7azDnh6qv4CftFpOnbDr8,779
|
96
|
+
plain/preflight/registry.py,sha256=65yiz9Wm8dOTMs9h15txNu7SRace6mbLI-sfn6GxMBQ,2427
|
97
|
+
plain/preflight/results.py,sha256=wgZgISGt9KGZzgmM_HdFUl6ZmRHQlKhvQClP7KbGgcc,949
|
98
|
+
plain/preflight/security.py,sha256=eqvJTe691WihtLN8hi2tj5wxH8ZgcsY5QFbYkorkNS0,2910
|
99
|
+
plain/preflight/urls.py,sha256=QVBcZCv891ZeLNVXTZS0w6bb54w5UOpZXP21Li7gt3o,339
|
99
100
|
plain/runtime/README.md,sha256=sTqXXJkckwqkk9O06XMMSNRokAYjrZBnB50JD36BsYI,4873
|
100
101
|
plain/runtime/__init__.py,sha256=byFYnHrpUCwkpkHtdNhxr9iUdLDCWJjy92HPj30Ilck,2478
|
101
|
-
plain/runtime/global_settings.py,sha256=
|
102
|
+
plain/runtime/global_settings.py,sha256=44pNJmndS_vkUmX7t83thRcrfrQ9qXdkT8SAlLOXyG4,5695
|
102
103
|
plain/runtime/user_settings.py,sha256=OzMiEkE6ZQ50nxd1WIqirXPiNuMAQULklYHEzgzLWgA,11027
|
103
104
|
plain/runtime/utils.py,sha256=p5IuNTzc7Kq-9Ym7etYnt_xqHw5TioxfSkFeq1bKdgk,832
|
104
105
|
plain/signals/README.md,sha256=XefXqROlDhzw7Z5l_nx6Mhq6n9jjQ-ECGbH0vvhKWYg,272
|
@@ -110,7 +111,7 @@ plain/templates/AGENTS.md,sha256=o6H_qEZ2eY5IrNmSZG7o7ZYfqdD0SkJm_2VPBaaOo5w,59
|
|
110
111
|
plain/templates/README.md,sha256=QAQxoygpc0CE13fh4eH4ZILwl2xc-oMdGKtiZLLrNCk,2565
|
111
112
|
plain/templates/__init__.py,sha256=bX76FakE9T7mfK3N0deN85HlwHNQpeigytSC9Z8LcOs,451
|
112
113
|
plain/templates/core.py,sha256=mbcH0yTeFOI3XOg9dYSroXRIcdv9sETEy4HzY-ugwco,1258
|
113
|
-
plain/templates/jinja/__init__.py,sha256=
|
114
|
+
plain/templates/jinja/__init__.py,sha256=o49OQ36-DKEKY2jxPpwMj8_CSqBYMPWVqpBfRjP_4wU,1910
|
114
115
|
plain/templates/jinja/environments.py,sha256=9plifzvQj--aTN1cCpJ2WdzQxZJpzB8S_4hghgQRQT0,2064
|
115
116
|
plain/templates/jinja/extensions.py,sha256=AEmmmHDbdRW8fhjYDzq9eSSNbp9WHsXenD8tPthjc0s,1351
|
116
117
|
plain/templates/jinja/filters.py,sha256=ft5XUr4OLeQayn-MSxrycpFLyyN_yEo7j5WhWMwpTOs,1445
|
@@ -124,8 +125,8 @@ plain/urls/README.md,sha256=026RkCK6I0GdqK3RE2QBLcCLIsiwtyKxgI2F0KBX95E,3882
|
|
124
125
|
plain/urls/__init__.py,sha256=DFO2OL1IllHW5USPIb5uYvvzf_G-Bl0Qu1zrRLHmWyM,542
|
125
126
|
plain/urls/converters.py,sha256=s2JZVOdzZC16lgobsI93hygcdH5L0Kj4742WEkXsVcs,1193
|
126
127
|
plain/urls/exceptions.py,sha256=q4iPh3Aa-zHbA-tw8v6WyX1J1n5WdAady2xvxFuyXB0,114
|
127
|
-
plain/urls/patterns.py,sha256=
|
128
|
-
plain/urls/resolvers.py,sha256=
|
128
|
+
plain/urls/patterns.py,sha256=3dCLwUaink5j0z5NOqcvzSX7o-eSRTzmYLsnMVmc-7o,8303
|
129
|
+
plain/urls/resolvers.py,sha256=rk-K4ztP0DxC3h85ANWnzyVAWKhksmdotqP0bWKd9zg,12608
|
129
130
|
plain/urls/routers.py,sha256=B1fX-FQTxmr-b_YeHQUMPuilLVqOi6-RqgPgu6MtFDY,2831
|
130
131
|
plain/urls/utils.py,sha256=lKxTX_A3XJpIH7FjlNYju108stY6-8Sw2uVdiSsxOKQ,1249
|
131
132
|
plain/utils/README.md,sha256=3RTH9t4SBLkYLMlnhpWwp72IjgQhOjYYxpT1gHwRUdE,232
|
@@ -161,8 +162,8 @@ plain/views/forms.py,sha256=ESZOXuo6IeYixp1RZvPb94KplkowRiwO2eGJCM6zJI0,2400
|
|
161
162
|
plain/views/objects.py,sha256=v3Vgvdoc1s0QW6JNWWrO5XXy9zF7vgwndgxX1eOSQoE,4999
|
162
163
|
plain/views/redirect.py,sha256=Xpb3cB7nZYvKgkNqcAxf9Jwm2SWcQ0u2xz4oO5M3vP8,1909
|
163
164
|
plain/views/templates.py,sha256=oAlebEyfES0rzBhfyEJzFmgLkpkbleA6Eip-8zDp-yk,1863
|
164
|
-
plain-0.
|
165
|
-
plain-0.
|
166
|
-
plain-0.
|
167
|
-
plain-0.
|
168
|
-
plain-0.
|
165
|
+
plain-0.68.0.dist-info/METADATA,sha256=mE7UvxxqukxfFjudAuB0gaGa7gagrESPTRmByQOVb9M,4488
|
166
|
+
plain-0.68.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
167
|
+
plain-0.68.0.dist-info/entry_points.txt,sha256=wvMzY-iREvfqRgyLm77htPp4j_8CQslLoZA15_AnNo8,171
|
168
|
+
plain-0.68.0.dist-info/licenses/LICENSE,sha256=m0D5O7QoH9l5Vz_rrX_9r-C8d9UNr_ciK6Qwac7o6yo,3175
|
169
|
+
plain-0.68.0.dist-info/RECORD,,
|
plain/preflight/messages.py
DELETED
@@ -1,81 +0,0 @@
|
|
1
|
-
# Levels
|
2
|
-
DEBUG = 10
|
3
|
-
INFO = 20
|
4
|
-
WARNING = 30
|
5
|
-
ERROR = 40
|
6
|
-
CRITICAL = 50
|
7
|
-
|
8
|
-
|
9
|
-
class CheckMessage:
|
10
|
-
def __init__(self, level, msg, hint=None, obj=None, id=None):
|
11
|
-
if not isinstance(level, int):
|
12
|
-
raise TypeError("The first argument should be level.")
|
13
|
-
self.level = level
|
14
|
-
self.msg = msg
|
15
|
-
self.hint = hint
|
16
|
-
self.obj = obj
|
17
|
-
self.id = id
|
18
|
-
|
19
|
-
def __eq__(self, other):
|
20
|
-
return isinstance(other, self.__class__) and all(
|
21
|
-
getattr(self, attr) == getattr(other, attr)
|
22
|
-
for attr in ["level", "msg", "hint", "obj", "id"]
|
23
|
-
)
|
24
|
-
|
25
|
-
def __str__(self):
|
26
|
-
try:
|
27
|
-
from plain import models
|
28
|
-
|
29
|
-
ModelBase = models.base.ModelBase
|
30
|
-
using_db = True
|
31
|
-
except ImportError:
|
32
|
-
using_db = False
|
33
|
-
ModelBase = object
|
34
|
-
|
35
|
-
if self.obj is None:
|
36
|
-
obj = "?"
|
37
|
-
elif using_db and isinstance(self.obj, ModelBase):
|
38
|
-
# We need to hardcode ModelBase and Field cases because its __str__
|
39
|
-
# method doesn't return "applabel.modellabel" and cannot be changed.
|
40
|
-
obj = self.obj._meta.label
|
41
|
-
else:
|
42
|
-
obj = str(self.obj)
|
43
|
-
id = f"({self.id}) " if self.id else ""
|
44
|
-
hint = f"\n\tHINT: {self.hint}" if self.hint else ""
|
45
|
-
return f"{obj}: {id}{self.msg}{hint}"
|
46
|
-
|
47
|
-
def __repr__(self):
|
48
|
-
return f"<{self.__class__.__name__}: level={self.level!r}, msg={self.msg!r}, hint={self.hint!r}, obj={self.obj!r}, id={self.id!r}>"
|
49
|
-
|
50
|
-
def is_serious(self, level=ERROR):
|
51
|
-
return self.level >= level
|
52
|
-
|
53
|
-
def is_silenced(self):
|
54
|
-
from plain.runtime import settings
|
55
|
-
|
56
|
-
return self.id in settings.PREFLIGHT_SILENCED_CHECKS
|
57
|
-
|
58
|
-
|
59
|
-
class Debug(CheckMessage):
|
60
|
-
def __init__(self, *args, **kwargs):
|
61
|
-
super().__init__(DEBUG, *args, **kwargs)
|
62
|
-
|
63
|
-
|
64
|
-
class Info(CheckMessage):
|
65
|
-
def __init__(self, *args, **kwargs):
|
66
|
-
super().__init__(INFO, *args, **kwargs)
|
67
|
-
|
68
|
-
|
69
|
-
class Warning(CheckMessage):
|
70
|
-
def __init__(self, *args, **kwargs):
|
71
|
-
super().__init__(WARNING, *args, **kwargs)
|
72
|
-
|
73
|
-
|
74
|
-
class Error(CheckMessage):
|
75
|
-
def __init__(self, *args, **kwargs):
|
76
|
-
super().__init__(ERROR, *args, **kwargs)
|
77
|
-
|
78
|
-
|
79
|
-
class Critical(CheckMessage):
|
80
|
-
def __init__(self, *args, **kwargs):
|
81
|
-
super().__init__(CRITICAL, *args, **kwargs)
|
File without changes
|
File without changes
|