restiny 0.5.0__py3-none-any.whl → 0.6.1__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.
- restiny/__about__.py +1 -1
- restiny/__main__.py +2 -0
- restiny/assets/style.tcss +9 -1
- restiny/data/models.py +36 -15
- restiny/data/repos.py +107 -3
- restiny/entities.py +119 -1
- restiny/ui/__init__.py +2 -0
- restiny/ui/app.py +127 -41
- restiny/ui/collections_area.py +35 -10
- restiny/ui/environments_screen.py +270 -0
- restiny/ui/request_area.py +28 -1
- restiny/ui/response_area.py +4 -1
- restiny/ui/settings_screen.py +6 -13
- restiny/ui/top_bar_area.py +60 -0
- restiny/ui/url_area.py +4 -0
- restiny/widgets/collections_tree.py +5 -1
- {restiny-0.5.0.dist-info → restiny-0.6.1.dist-info}/METADATA +1 -1
- restiny-0.6.1.dist-info/RECORD +38 -0
- restiny-0.5.0.dist-info/RECORD +0 -36
- {restiny-0.5.0.dist-info → restiny-0.6.1.dist-info}/WHEEL +0 -0
- {restiny-0.5.0.dist-info → restiny-0.6.1.dist-info}/entry_points.txt +0 -0
- {restiny-0.5.0.dist-info → restiny-0.6.1.dist-info}/licenses/LICENSE +0 -0
- {restiny-0.5.0.dist-info → restiny-0.6.1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
2
|
+
|
|
3
|
+
from textual import on
|
|
4
|
+
from textual.app import ComposeResult
|
|
5
|
+
from textual.binding import Binding
|
|
6
|
+
from textual.containers import Horizontal, Vertical
|
|
7
|
+
from textual.screen import ModalScreen
|
|
8
|
+
from textual.widgets import Button, Label, ListItem, ListView, Rule
|
|
9
|
+
|
|
10
|
+
from restiny.entities import Environment
|
|
11
|
+
from restiny.widgets import DynamicFields, TextDynamicField
|
|
12
|
+
from restiny.widgets.custom_input import CustomInput
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from restiny.ui.app import RESTinyApp
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class EnvironmentsScreen(ModalScreen):
|
|
19
|
+
app: 'RESTinyApp'
|
|
20
|
+
|
|
21
|
+
DEFAULT_CSS = """
|
|
22
|
+
EnvironmentsScreen {
|
|
23
|
+
align: center middle;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
#modal-content {
|
|
27
|
+
width: 70%;
|
|
28
|
+
height: 80%;
|
|
29
|
+
border: heavy black;
|
|
30
|
+
border-title-color: gray;
|
|
31
|
+
background: $surface;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
Label {
|
|
35
|
+
padding-left: 4;
|
|
36
|
+
}
|
|
37
|
+
"""
|
|
38
|
+
AUTO_FOCUS = '#environments-list'
|
|
39
|
+
|
|
40
|
+
BINDINGS = [
|
|
41
|
+
Binding(
|
|
42
|
+
key='escape',
|
|
43
|
+
action='dismiss',
|
|
44
|
+
description='Quit the screen',
|
|
45
|
+
show=False,
|
|
46
|
+
),
|
|
47
|
+
]
|
|
48
|
+
|
|
49
|
+
def __init__(self) -> None:
|
|
50
|
+
super().__init__()
|
|
51
|
+
|
|
52
|
+
def compose(self) -> ComposeResult:
|
|
53
|
+
with Vertical(id='modal-content'):
|
|
54
|
+
with Horizontal(classes='w-auto p-1'):
|
|
55
|
+
with Vertical(classes='w-1fr h-auto'):
|
|
56
|
+
yield ListView(
|
|
57
|
+
classes='',
|
|
58
|
+
id='environments-list',
|
|
59
|
+
)
|
|
60
|
+
with Horizontal(classes='w-auto h-auto mt-1'):
|
|
61
|
+
yield CustomInput(
|
|
62
|
+
placeholder='Environment name',
|
|
63
|
+
classes='w-4fr',
|
|
64
|
+
id='environment-name',
|
|
65
|
+
)
|
|
66
|
+
yield Button(
|
|
67
|
+
label='➕',
|
|
68
|
+
tooltip='Add environment',
|
|
69
|
+
classes='',
|
|
70
|
+
id='add-environment',
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
yield Rule(orientation='vertical')
|
|
74
|
+
|
|
75
|
+
with Vertical(classes='w-2fr h-auto'):
|
|
76
|
+
with Horizontal(classes='w-auto h-auto'):
|
|
77
|
+
yield CustomInput(
|
|
78
|
+
placeholder='Environment name',
|
|
79
|
+
classes='w-5fr',
|
|
80
|
+
id='environment-rename',
|
|
81
|
+
)
|
|
82
|
+
yield Button(
|
|
83
|
+
'💾',
|
|
84
|
+
tooltip='Save environment',
|
|
85
|
+
classes='w-1fr',
|
|
86
|
+
id='save-environment',
|
|
87
|
+
)
|
|
88
|
+
yield Button(
|
|
89
|
+
'➖',
|
|
90
|
+
tooltip='Delete environment',
|
|
91
|
+
classes='w-1fr',
|
|
92
|
+
id='delete-environment',
|
|
93
|
+
)
|
|
94
|
+
yield DynamicFields(
|
|
95
|
+
fields=[
|
|
96
|
+
TextDynamicField(enabled=False, key='', value='')
|
|
97
|
+
],
|
|
98
|
+
classes='mt-1',
|
|
99
|
+
id='variables',
|
|
100
|
+
)
|
|
101
|
+
yield Label(
|
|
102
|
+
"[i]Tip: You can use [b]'{{var}}'[/] or [b]'${var}'[/] in requests to reference variables.[/]",
|
|
103
|
+
classes='mt-1',
|
|
104
|
+
)
|
|
105
|
+
with Horizontal(classes='w-auto h-auto'):
|
|
106
|
+
yield Button(label='Close', classes='w-1fr', id='close')
|
|
107
|
+
|
|
108
|
+
async def on_mount(self) -> None:
|
|
109
|
+
self.modal_content = self.query_one('#modal-content', Vertical)
|
|
110
|
+
self.environments_list = self.query_one('#environments-list', ListView)
|
|
111
|
+
self.environment_name_input = self.query_one(
|
|
112
|
+
'#environment-name', CustomInput
|
|
113
|
+
)
|
|
114
|
+
self.add_environment_button = self.query_one(
|
|
115
|
+
'#add-environment', Button
|
|
116
|
+
)
|
|
117
|
+
self.environment_rename_input = self.query_one(
|
|
118
|
+
'#environment-rename', CustomInput
|
|
119
|
+
)
|
|
120
|
+
self.save_environment_button = self.query_one(
|
|
121
|
+
'#save-environment', Button
|
|
122
|
+
)
|
|
123
|
+
self.delete_environment_button = self.query_one(
|
|
124
|
+
'#delete-environment', Button
|
|
125
|
+
)
|
|
126
|
+
self.variables_dynamic_fields = self.query_one(
|
|
127
|
+
'#variables', DynamicFields
|
|
128
|
+
)
|
|
129
|
+
self.close_button = self.query_one('#close', Button)
|
|
130
|
+
|
|
131
|
+
self.modal_content.border_title = 'Environments'
|
|
132
|
+
|
|
133
|
+
await self._populate_environments()
|
|
134
|
+
|
|
135
|
+
@property
|
|
136
|
+
def _selected_env_id(self) -> int | None:
|
|
137
|
+
if self.environments_list.index is None:
|
|
138
|
+
return None
|
|
139
|
+
|
|
140
|
+
return int(
|
|
141
|
+
self.environments_list.children[
|
|
142
|
+
self.environments_list.index
|
|
143
|
+
].id.rsplit('-', 1)[1]
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
@property
|
|
147
|
+
def _selected_env_name(self) -> str | None:
|
|
148
|
+
if self.environments_list.index is None:
|
|
149
|
+
return None
|
|
150
|
+
|
|
151
|
+
return (
|
|
152
|
+
self.environments_list.children[self.environments_list.index]
|
|
153
|
+
.children[0]
|
|
154
|
+
.content
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
@on(ListView.Selected, '#environments-list')
|
|
158
|
+
async def _on_select_environment(self) -> None:
|
|
159
|
+
self.environment_rename_input.value = self._selected_env_name
|
|
160
|
+
is_global = self._selected_env_name == 'global'
|
|
161
|
+
self.environment_rename_input.disabled = is_global
|
|
162
|
+
self.delete_environment_button.disabled = is_global
|
|
163
|
+
|
|
164
|
+
for field in self.variables_dynamic_fields.fields:
|
|
165
|
+
self.variables_dynamic_fields.remove_field(field=field)
|
|
166
|
+
|
|
167
|
+
environment = self.app.environments_repo.get_by_id(
|
|
168
|
+
self._selected_env_id
|
|
169
|
+
).data
|
|
170
|
+
for variable in environment.variables:
|
|
171
|
+
await self.variables_dynamic_fields.add_field(
|
|
172
|
+
field=TextDynamicField(
|
|
173
|
+
enabled=variable.enabled,
|
|
174
|
+
key=variable.key,
|
|
175
|
+
value=variable.value,
|
|
176
|
+
),
|
|
177
|
+
before_last=True,
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
@on(Button.Pressed, '#add-environment')
|
|
181
|
+
@on(CustomInput.Submitted, '#environment-name')
|
|
182
|
+
async def _on_add_environment(self) -> None:
|
|
183
|
+
if not self.environment_name_input.value.strip():
|
|
184
|
+
self.notify('Environment name is required', severity='error')
|
|
185
|
+
return
|
|
186
|
+
|
|
187
|
+
create_resp = self.app.environments_repo.create(
|
|
188
|
+
Environment(name=self.environment_name_input.value, variables=[])
|
|
189
|
+
)
|
|
190
|
+
if not create_resp.ok:
|
|
191
|
+
self.notify(
|
|
192
|
+
f'Failed to create environment ({create_resp.status})',
|
|
193
|
+
severity='error',
|
|
194
|
+
)
|
|
195
|
+
return
|
|
196
|
+
|
|
197
|
+
await self._add_environment(
|
|
198
|
+
name=create_resp.data.name, id=create_resp.data.id
|
|
199
|
+
)
|
|
200
|
+
self.environment_name_input.value = ''
|
|
201
|
+
self.environments_list.index = len(self.environments_list.children) - 1
|
|
202
|
+
await self._on_select_environment()
|
|
203
|
+
self.notify('Environment added', severity='information')
|
|
204
|
+
|
|
205
|
+
@on(Button.Pressed, '#save-environment')
|
|
206
|
+
@on(CustomInput.Submitted, '#environment-rename')
|
|
207
|
+
async def _on_save_environment(self) -> None:
|
|
208
|
+
if not self.environment_rename_input.value.strip():
|
|
209
|
+
self.notify('Environment name is required', severity='error')
|
|
210
|
+
return
|
|
211
|
+
|
|
212
|
+
update_resp = self.app.environments_repo.update(
|
|
213
|
+
Environment(
|
|
214
|
+
id=self._selected_env_id,
|
|
215
|
+
name=self.environment_rename_input.value,
|
|
216
|
+
variables=[
|
|
217
|
+
Environment.Variable(
|
|
218
|
+
enabled=variable.enabled,
|
|
219
|
+
key=variable.key,
|
|
220
|
+
value=variable.value,
|
|
221
|
+
)
|
|
222
|
+
for variable in self.variables_dynamic_fields.filled_fields
|
|
223
|
+
],
|
|
224
|
+
)
|
|
225
|
+
)
|
|
226
|
+
if not update_resp.ok:
|
|
227
|
+
self.notify(
|
|
228
|
+
f'Failed to update environment ({update_resp.status})',
|
|
229
|
+
severity='error',
|
|
230
|
+
)
|
|
231
|
+
return
|
|
232
|
+
|
|
233
|
+
self.environments_list.children[self.environments_list.index].children[
|
|
234
|
+
0
|
|
235
|
+
].update(update_resp.data.name)
|
|
236
|
+
self.notify('Environment updated', severity='information')
|
|
237
|
+
|
|
238
|
+
@on(Button.Pressed, '#delete-environment')
|
|
239
|
+
async def _on_remove_environment(self) -> None:
|
|
240
|
+
if self.environments_list.index is None:
|
|
241
|
+
self.notify('No environment selected', severity='error')
|
|
242
|
+
return
|
|
243
|
+
|
|
244
|
+
self.app.environments_repo.delete_by_id(self._selected_env_id)
|
|
245
|
+
focus_target_index = max(0, self.environments_list.index - 1)
|
|
246
|
+
await self.environments_list.children[
|
|
247
|
+
self.environments_list.index
|
|
248
|
+
].remove()
|
|
249
|
+
self.environments_list.index = focus_target_index
|
|
250
|
+
await self._on_select_environment()
|
|
251
|
+
self.notify('Environment removed', severity='information')
|
|
252
|
+
|
|
253
|
+
@on(Button.Pressed, '#close')
|
|
254
|
+
async def _on_close(self, message: Button.Pressed) -> None:
|
|
255
|
+
self.dismiss(result=None)
|
|
256
|
+
|
|
257
|
+
async def _populate_environments(self) -> None:
|
|
258
|
+
environments = self.app.environments_repo.list().data
|
|
259
|
+
for environment in environments:
|
|
260
|
+
await self._add_environment(
|
|
261
|
+
name=environment.name, id=environment.id
|
|
262
|
+
)
|
|
263
|
+
|
|
264
|
+
self.environments_list.index = 0
|
|
265
|
+
await self._on_select_environment()
|
|
266
|
+
|
|
267
|
+
async def _add_environment(self, name: str, id: int) -> None:
|
|
268
|
+
await self.environments_list.mount(
|
|
269
|
+
ListItem(Label(name), id=f'env-{id}')
|
|
270
|
+
)
|
restiny/ui/request_area.py
CHANGED
|
@@ -514,7 +514,7 @@ class RequestArea(Static):
|
|
|
514
514
|
|
|
515
515
|
@option_timeout.setter
|
|
516
516
|
def option_timeout(self, value: float | None) -> None:
|
|
517
|
-
self.options_timeout_input.value = value
|
|
517
|
+
self.options_timeout_input.value = '' if value is None else str(value)
|
|
518
518
|
|
|
519
519
|
@property
|
|
520
520
|
def option_follow_redirects(self) -> bool:
|
|
@@ -532,6 +532,33 @@ class RequestArea(Static):
|
|
|
532
532
|
def option_verify_ssl(self, value: bool) -> None:
|
|
533
533
|
self.options_verify_ssl_switch.value = value
|
|
534
534
|
|
|
535
|
+
def clear(self) -> None:
|
|
536
|
+
self.headers = []
|
|
537
|
+
self.params = []
|
|
538
|
+
|
|
539
|
+
self.auth_enabled = False
|
|
540
|
+
self.auth_mode = AuthMode.BASIC
|
|
541
|
+
self.auth_basic_username = ''
|
|
542
|
+
self.auth_basic_password = ''
|
|
543
|
+
self.auth_bearer_token = ''
|
|
544
|
+
self.auth_api_key_key = ''
|
|
545
|
+
self.auth_api_key_value = ''
|
|
546
|
+
self.auth_api_key_where = 'header'
|
|
547
|
+
self.auth_digest_username = ''
|
|
548
|
+
self.auth_digest_password = ''
|
|
549
|
+
|
|
550
|
+
self.body_enabled = False
|
|
551
|
+
self.body_mode = BodyMode.RAW
|
|
552
|
+
self.body_raw_language = BodyRawLanguage.PLAIN
|
|
553
|
+
self.body_raw = ''
|
|
554
|
+
self.body_file = None
|
|
555
|
+
self.body_form_urlencoded = []
|
|
556
|
+
self.body_form_multipart = []
|
|
557
|
+
|
|
558
|
+
self.option_timeout = None
|
|
559
|
+
self.option_follow_redirects = False
|
|
560
|
+
self.option_verify_ssl = False
|
|
561
|
+
|
|
535
562
|
@on(Select.Changed, '#auth-mode')
|
|
536
563
|
def _on_change_auth_mode(self, message: Select.Changed) -> None:
|
|
537
564
|
if message.value == 'basic':
|
restiny/ui/response_area.py
CHANGED
|
@@ -92,13 +92,16 @@ class ResponseArea(Static):
|
|
|
92
92
|
|
|
93
93
|
self.headers_data_table.add_columns('Key', 'Value')
|
|
94
94
|
|
|
95
|
-
def
|
|
95
|
+
def clear(self) -> None:
|
|
96
96
|
self.border_title = self.BORDER_TITLE
|
|
97
97
|
self.border_subtitle = ''
|
|
98
98
|
self.headers_data_table.clear()
|
|
99
99
|
self.body_raw_language_select.value = BodyRawLanguage.PLAIN
|
|
100
100
|
self.body_raw_editor.clear()
|
|
101
101
|
|
|
102
|
+
def set_data(self, data: ResponseAreaData | None) -> None:
|
|
103
|
+
self.clear()
|
|
104
|
+
|
|
102
105
|
if data is None:
|
|
103
106
|
return
|
|
104
107
|
|
restiny/ui/settings_screen.py
CHANGED
|
@@ -7,13 +7,14 @@ from textual.containers import Horizontal, Vertical
|
|
|
7
7
|
from textual.screen import ModalScreen
|
|
8
8
|
from textual.widgets import Button, Label, Select
|
|
9
9
|
|
|
10
|
+
from restiny.enums import CustomThemes
|
|
11
|
+
|
|
10
12
|
if TYPE_CHECKING:
|
|
11
13
|
from restiny.ui.app import RESTinyApp
|
|
12
14
|
|
|
13
15
|
|
|
14
16
|
class SettingsScreen(ModalScreen):
|
|
15
|
-
|
|
16
|
-
app: RESTinyApp
|
|
17
|
+
app: 'RESTinyApp'
|
|
17
18
|
|
|
18
19
|
DEFAULT_CSS = """
|
|
19
20
|
SettingsScreen {
|
|
@@ -40,22 +41,14 @@ class SettingsScreen(ModalScreen):
|
|
|
40
41
|
),
|
|
41
42
|
]
|
|
42
43
|
|
|
43
|
-
def __init__(
|
|
44
|
-
self,
|
|
45
|
-
themes: list[str],
|
|
46
|
-
theme: str,
|
|
47
|
-
) -> None:
|
|
48
|
-
super().__init__()
|
|
49
|
-
self._themes = themes
|
|
50
|
-
self._theme = theme
|
|
51
|
-
|
|
52
44
|
def compose(self) -> ComposeResult:
|
|
45
|
+
settings = self.app.settings_repo.get().data
|
|
53
46
|
with Vertical(id='modal-content'):
|
|
54
47
|
with Horizontal(classes='w-auto h-auto mt-1 px-1'):
|
|
55
48
|
yield Label('theme', classes='mt-1')
|
|
56
49
|
yield Select(
|
|
57
|
-
(
|
|
58
|
-
value=
|
|
50
|
+
[(theme.value, theme.value) for theme in CustomThemes],
|
|
51
|
+
value=settings.theme,
|
|
59
52
|
allow_blank=False,
|
|
60
53
|
id='theme',
|
|
61
54
|
)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
2
|
+
|
|
3
|
+
from textual.app import ComposeResult
|
|
4
|
+
from textual.containers import Horizontal
|
|
5
|
+
from textual.widget import Widget
|
|
6
|
+
from textual.widgets import Select
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
from restiny.ui.app import RESTinyApp
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class TopBarArea(Widget):
|
|
13
|
+
app: 'RESTinyApp'
|
|
14
|
+
|
|
15
|
+
DEFAULT_CSS = """
|
|
16
|
+
TopBarArea {
|
|
17
|
+
width: 1fr;
|
|
18
|
+
height: auto;
|
|
19
|
+
align: right middle;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
Select {
|
|
23
|
+
width: 24;
|
|
24
|
+
}
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
def compose(self) -> ComposeResult:
|
|
28
|
+
with Horizontal(classes='w-auto h-auto'):
|
|
29
|
+
yield Select(
|
|
30
|
+
[],
|
|
31
|
+
prompt='No environment',
|
|
32
|
+
allow_blank=True,
|
|
33
|
+
compact=True,
|
|
34
|
+
id='environment',
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
def on_mount(self) -> None:
|
|
38
|
+
self.environment_select = self.query_one('#environment', Select)
|
|
39
|
+
|
|
40
|
+
self.populate()
|
|
41
|
+
|
|
42
|
+
@property
|
|
43
|
+
def environment(self) -> str:
|
|
44
|
+
if self.environment_select.value == Select.BLANK:
|
|
45
|
+
return None
|
|
46
|
+
|
|
47
|
+
return self.environment_select.value
|
|
48
|
+
|
|
49
|
+
def populate(self) -> None:
|
|
50
|
+
prev_selected_environment = self.environment_select.value
|
|
51
|
+
environments = [
|
|
52
|
+
environment.name
|
|
53
|
+
for environment in self.app.environments_repo.list().data
|
|
54
|
+
if environment.name != 'global'
|
|
55
|
+
]
|
|
56
|
+
self.environment_select.set_options(
|
|
57
|
+
(environment, environment) for environment in environments
|
|
58
|
+
)
|
|
59
|
+
if prev_selected_environment in environments:
|
|
60
|
+
self.environment_select.value = prev_selected_environment
|
restiny/ui/url_area.py
CHANGED
|
@@ -110,6 +110,10 @@ class URLArea(Static):
|
|
|
110
110
|
def url(self, value: str) -> None:
|
|
111
111
|
self.url_input.value = value
|
|
112
112
|
|
|
113
|
+
def clear(self) -> None:
|
|
114
|
+
self.method = HTTPMethod.GET
|
|
115
|
+
self.url = ''
|
|
116
|
+
|
|
113
117
|
@on(Button.Pressed, '#send-request')
|
|
114
118
|
@on(CustomInput.Submitted, '#url')
|
|
115
119
|
def _on_send_request(
|
|
@@ -60,7 +60,7 @@ class CollectionsTree(Tree):
|
|
|
60
60
|
}
|
|
61
61
|
node = parent_node.add_leaf(
|
|
62
62
|
label=f'[{method_to_color[method]}]{method}[/] {name}'
|
|
63
|
-
)
|
|
63
|
+
)
|
|
64
64
|
node.data = {
|
|
65
65
|
'method': method,
|
|
66
66
|
'name': name,
|
|
@@ -68,3 +68,7 @@ class CollectionsTree(Tree):
|
|
|
68
68
|
}
|
|
69
69
|
self.node_by_id[id] = node
|
|
70
70
|
return node
|
|
71
|
+
|
|
72
|
+
def remove(self, node: TreeNode) -> None:
|
|
73
|
+
del self.node_by_id[node.data['id']]
|
|
74
|
+
node.remove()
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
restiny/__about__.py,sha256=gd3s3RotD0_KL90Tua-YkOr60Jm2C2_wvlEhAT08068,22
|
|
2
|
+
restiny/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
restiny/__main__.py,sha256=XkZbw04fLAFImx-T5me4CcZRsKdr33eUaWUKZ2kZPR8,1165
|
|
4
|
+
restiny/consts.py,sha256=LMwWVmOrOwZAKcnpZkBs-duMDE6QWTWD4un9y6hcVEc,11319
|
|
5
|
+
restiny/entities.py,sha256=ibQLSNxBj_mqTPyrkI_VnOVCpUETK6sZMAXhNKBDo4c,14232
|
|
6
|
+
restiny/enums.py,sha256=57KQPeY1YFNr15Ykr8ZglkEKdez6Djqnfzm0YaBPGfQ,996
|
|
7
|
+
restiny/httpx_auths.py,sha256=FqwO6W2AYNhmG5OEbQBusumH-zVvel4A8Oa7c4cbm-4,1295
|
|
8
|
+
restiny/utils.py,sha256=ktXrnlujBYxrPi-nDYor94r1cmJ07xyezesuZESswOc,4493
|
|
9
|
+
restiny/assets/__init__.py,sha256=JL1KARlToF6ZR7KeUjlDAHgwwVM2qXYaIl4wHeFW2zU,93
|
|
10
|
+
restiny/assets/style.tcss,sha256=bpPEiBcKFE5eREae_f4VbGrhdObqrtiYcDROROGiLCI,978
|
|
11
|
+
restiny/data/db.py,sha256=aRYrjv0ecFWToj5Y0XBJ_o4QPLPY2qzRKvgUgbzG98E,1990
|
|
12
|
+
restiny/data/models.py,sha256=BlwQNS2X6t5Fkt9ioowXpWYKgm3_joYvOWgp69BILJ0,3392
|
|
13
|
+
restiny/data/repos.py,sha256=Bn-zH2UwNG_hbxnPfZzyiCg3O7nMe5O__b37pRtXsoY,15840
|
|
14
|
+
restiny/data/sql/__init__.py,sha256=4Erfs-MC_ctZ53lXqe_FQwJDRd8SrxGrZ3_rG8o7VCU,81
|
|
15
|
+
restiny/ui/__init__.py,sha256=ak-HZ1y5w5E1s2ojBAicdP2GwBwjz9PRDdegusf5ZpE,439
|
|
16
|
+
restiny/ui/app.py,sha256=nhE7kp9_SP2TifVGmFTzJVmk0L3kWYqXt0TTo9h95xw,20931
|
|
17
|
+
restiny/ui/collections_area.py,sha256=Vk8WSP8zP0hRj4K46zPxziDqMK2kpc2pr87_b8uAFwk,19451
|
|
18
|
+
restiny/ui/environments_screen.py,sha256=rcKymFxWYP9vxLIPwwq2cxPnI1idueDVB3fLQMClHeA,9573
|
|
19
|
+
restiny/ui/request_area.py,sha256=xHsyaJ2P5CsMDRspuNjefJCI3KNdZxWs0ir9eLoZXjA,21668
|
|
20
|
+
restiny/ui/response_area.py,sha256=3KHqFADeCWttd5WKbqA4l_6q9AiKTKbQXt2FMAUvsw4,4246
|
|
21
|
+
restiny/ui/settings_screen.py,sha256=L_i2WFqqrCFkucZLXeg-kVXLzP7jZ-CTS65T1bdq3ZU,2249
|
|
22
|
+
restiny/ui/top_bar_area.py,sha256=6vKhlx_eJpgpH3EeConKxky03RRmGizMGwgPrG0DkkU,1583
|
|
23
|
+
restiny/ui/url_area.py,sha256=PIcH9ef0q7gEfLZ149CNtTr2NgAeKESLuIl0e5Pt4hg,3868
|
|
24
|
+
restiny/widgets/__init__.py,sha256=RaU2JkRWAoJULG3rpPtMNUarPU6Yu6gJwzAsSad2hgg,895
|
|
25
|
+
restiny/widgets/collections_tree.py,sha256=UVtG6km49G-DjklpXHoADaTvj0L1-FWOLkz7gijGU2g,2144
|
|
26
|
+
restiny/widgets/confirm_prompt.py,sha256=1xdCaJZUDzV4-fQ1ztbe7uX9hJ6ZZUBghtwgReBHz9w,2147
|
|
27
|
+
restiny/widgets/custom_directory_tree.py,sha256=sNTaI0DBAO56MyOy6qMZPgWXiTUQbBrJdn1GtOdxrDc,1268
|
|
28
|
+
restiny/widgets/custom_input.py,sha256=W6gE9jbTl_R1uLSA5Dz9eBX7aNID2-rYZP3j2oNi4SA,466
|
|
29
|
+
restiny/widgets/custom_text_area.py,sha256=ykmG-6MiMhz6BqNzP8f14jUTWWKjsCOIEhgciP-01Y8,14032
|
|
30
|
+
restiny/widgets/dynamic_fields.py,sha256=S2epm-_QOsHEGhVFwDlOvIqOQkUgpGnh6pK3_JoTQ1g,16104
|
|
31
|
+
restiny/widgets/password_input.py,sha256=xXOfiStcUCbP_cnrS2Rz0-GmsvmOsen4G41zOpmjLD8,4057
|
|
32
|
+
restiny/widgets/path_chooser.py,sha256=FdG9fdgY2qD8o-7aBn8F005f8H91kbYtyF99RRGLRas,9273
|
|
33
|
+
restiny-0.6.1.dist-info/licenses/LICENSE,sha256=Z190MKguypkrjaCldiorEbMmBQp7ylvx09oyE4oDCTs,11361
|
|
34
|
+
restiny-0.6.1.dist-info/METADATA,sha256=OO4PshKvwwwyCx62RfI112o1qnIiP7bE1lLWde0E_H8,16137
|
|
35
|
+
restiny-0.6.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
36
|
+
restiny-0.6.1.dist-info/entry_points.txt,sha256=F9zW8bAPAwIihltqjzYow4ahmH_B6VkAHzQFA-8QOn4,50
|
|
37
|
+
restiny-0.6.1.dist-info/top_level.txt,sha256=1MQ_Q-fV1Dwbu4zU3g1Eg-CfRgC412X-mvMIrEdrlbk,8
|
|
38
|
+
restiny-0.6.1.dist-info/RECORD,,
|
restiny-0.5.0.dist-info/RECORD
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
restiny/__about__.py,sha256=0PaI2eSOCp5kkNcpKpUSbLHf66rL9xQzFpYyLGpEtyM,22
|
|
2
|
-
restiny/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
-
restiny/__main__.py,sha256=uUVIpbnk2nzWV5ZSEDuUUEJPKeAZW8arDl2mbekUKKU,1066
|
|
4
|
-
restiny/consts.py,sha256=LMwWVmOrOwZAKcnpZkBs-duMDE6QWTWD4un9y6hcVEc,11319
|
|
5
|
-
restiny/entities.py,sha256=hCNoy2tNQjAz6czHmTF4Ee10tqTjxNVycL1ENZry_yc,10040
|
|
6
|
-
restiny/enums.py,sha256=57KQPeY1YFNr15Ykr8ZglkEKdez6Djqnfzm0YaBPGfQ,996
|
|
7
|
-
restiny/httpx_auths.py,sha256=FqwO6W2AYNhmG5OEbQBusumH-zVvel4A8Oa7c4cbm-4,1295
|
|
8
|
-
restiny/utils.py,sha256=ktXrnlujBYxrPi-nDYor94r1cmJ07xyezesuZESswOc,4493
|
|
9
|
-
restiny/assets/__init__.py,sha256=JL1KARlToF6ZR7KeUjlDAHgwwVM2qXYaIl4wHeFW2zU,93
|
|
10
|
-
restiny/assets/style.tcss,sha256=LCszWlsdR_4GqwmR9C8aea_RojfCY-JyV-nA3NidF9s,925
|
|
11
|
-
restiny/data/db.py,sha256=aRYrjv0ecFWToj5Y0XBJ_o4QPLPY2qzRKvgUgbzG98E,1990
|
|
12
|
-
restiny/data/models.py,sha256=QInN6uLapn55eeWcPnq13Jkd88RKobiq69XwZjexkhM,2585
|
|
13
|
-
restiny/data/repos.py,sha256=ySeXrFuqmSV_Q_nIZWPBj8TY-RjKzumcId6vE1m6jZM,12105
|
|
14
|
-
restiny/data/sql/__init__.py,sha256=4Erfs-MC_ctZ53lXqe_FQwJDRd8SrxGrZ3_rG8o7VCU,81
|
|
15
|
-
restiny/ui/__init__.py,sha256=AaxD5x6SdlMMxce0hbtAWw5V2hy1zoTfy9EzcaHKMgI,374
|
|
16
|
-
restiny/ui/app.py,sha256=c-cLV15J9SPLcXkbmHWS11L9es5oWOoRkV3HCySqR7g,18060
|
|
17
|
-
restiny/ui/collections_area.py,sha256=UwK255demkwEw5uh0_XuZpjdQaR091STcV22zDZ6ukc,18501
|
|
18
|
-
restiny/ui/request_area.py,sha256=bxtl0g2cBgRDxMFVAu0ocdLi-a4OeQTpxOsJTkdbW_8,20795
|
|
19
|
-
restiny/ui/response_area.py,sha256=Rzq82muK9gXWHIHdLqetFG403n7JdE65Rka0Siw339I,4195
|
|
20
|
-
restiny/ui/settings_screen.py,sha256=wN--I4KY87Pe0UUaBZmDZN091jHac-7YAr8GeDbXjy8,2345
|
|
21
|
-
restiny/ui/url_area.py,sha256=Cc6AF9g_dRgC5TsK9ORE8As1hFq4zfG_rWp77NrrdJg,3779
|
|
22
|
-
restiny/widgets/__init__.py,sha256=RaU2JkRWAoJULG3rpPtMNUarPU6Yu6gJwzAsSad2hgg,895
|
|
23
|
-
restiny/widgets/collections_tree.py,sha256=X-wm_bkUHK9E9XDGjJE-bjeQWEqwfNyZNFTA25nDQe4,2038
|
|
24
|
-
restiny/widgets/confirm_prompt.py,sha256=1xdCaJZUDzV4-fQ1ztbe7uX9hJ6ZZUBghtwgReBHz9w,2147
|
|
25
|
-
restiny/widgets/custom_directory_tree.py,sha256=sNTaI0DBAO56MyOy6qMZPgWXiTUQbBrJdn1GtOdxrDc,1268
|
|
26
|
-
restiny/widgets/custom_input.py,sha256=W6gE9jbTl_R1uLSA5Dz9eBX7aNID2-rYZP3j2oNi4SA,466
|
|
27
|
-
restiny/widgets/custom_text_area.py,sha256=ykmG-6MiMhz6BqNzP8f14jUTWWKjsCOIEhgciP-01Y8,14032
|
|
28
|
-
restiny/widgets/dynamic_fields.py,sha256=S2epm-_QOsHEGhVFwDlOvIqOQkUgpGnh6pK3_JoTQ1g,16104
|
|
29
|
-
restiny/widgets/password_input.py,sha256=xXOfiStcUCbP_cnrS2Rz0-GmsvmOsen4G41zOpmjLD8,4057
|
|
30
|
-
restiny/widgets/path_chooser.py,sha256=FdG9fdgY2qD8o-7aBn8F005f8H91kbYtyF99RRGLRas,9273
|
|
31
|
-
restiny-0.5.0.dist-info/licenses/LICENSE,sha256=Z190MKguypkrjaCldiorEbMmBQp7ylvx09oyE4oDCTs,11361
|
|
32
|
-
restiny-0.5.0.dist-info/METADATA,sha256=_W4JXRugmt8LSFdTuwp46BF5T-xlI9goHEJSVwf0OsU,16137
|
|
33
|
-
restiny-0.5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
34
|
-
restiny-0.5.0.dist-info/entry_points.txt,sha256=F9zW8bAPAwIihltqjzYow4ahmH_B6VkAHzQFA-8QOn4,50
|
|
35
|
-
restiny-0.5.0.dist-info/top_level.txt,sha256=1MQ_Q-fV1Dwbu4zU3g1Eg-CfRgC412X-mvMIrEdrlbk,8
|
|
36
|
-
restiny-0.5.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|