stoobly-agent 1.1.3__py3-none-any.whl → 1.1.4__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.
stoobly_agent/__init__.py CHANGED
@@ -1,2 +1,2 @@
1
1
  COMMAND = 'stoobly-agent'
2
- VERSION = '1.1.3'
2
+ VERSION = '1.1.4'
@@ -1,6 +1,7 @@
1
1
  from stoobly_agent.app.cli.scaffold.service_config import ServiceConfig
2
2
 
3
3
  from ...constants import WORKFLOW_MOCK_TYPE, WORKFLOW_RECORD_TYPE
4
+ from .development_decorator import DevelopmentDecorator
4
5
  from .mock_decorator import MockDecorator
5
6
  from .reverse_proxy_decorator import ReverseProxyDecorator
6
7
 
@@ -10,6 +11,11 @@ def get_workflow_decorators(workflow: str, service_config: ServiceConfig):
10
11
  if workflow == WORKFLOW_RECORD_TYPE:
11
12
  if service_config.hostname:
12
13
  workflow_decorators.append(ReverseProxyDecorator)
14
+ workflow_decorators.append(DevelopmentDecorator)
15
+ elif workflow == WORKFLOW_MOCK_TYPE:
16
+ if service_config.hostname:
17
+ workflow_decorators.append(ReverseProxyDecorator if service_config.detached else MockDecorator)
18
+ workflow_decorators.append(DevelopmentDecorator)
13
19
  else:
14
20
  if service_config.hostname:
15
21
  workflow_decorators.append(ReverseProxyDecorator if service_config.detached else MockDecorator)
@@ -0,0 +1,30 @@
1
+ from ...constants import SERVICE_DNS
2
+
3
+ from .builder import WorkflowBuilder
4
+
5
+ class DevelopmentDecorator():
6
+
7
+ def __init__(self, workflow_builder: WorkflowBuilder):
8
+ self.__workflow_builder = workflow_builder
9
+
10
+ @property
11
+ def workflow_builder(self):
12
+ return self.__workflow_builder
13
+
14
+ @property
15
+ def service_builder(self):
16
+ return self.workflow_builder.service_builder
17
+
18
+ def decorate(self):
19
+ config = self.service_builder.config
20
+ proxy_name = self.workflow_builder.proxy
21
+ services = self.workflow_builder.services
22
+
23
+ # If we are reverse proxying to potentially an external host,
24
+ # Docker's embedded DNS will use the host's /etc/host file as part of the resolution process
25
+ # This can lead the hostname to resolve to localhost instead of the service's actual IP address
26
+ if not config.detached:
27
+ if not proxy_name in services:
28
+ services[proxy_name] = {}
29
+
30
+ services[proxy_name]['dns'] = SERVICE_DNS
@@ -2,9 +2,7 @@ import pdb
2
2
 
3
3
  from urllib.parse import urlparse
4
4
 
5
- from stoobly_agent.config.data_dir import DataDir
6
-
7
- from ...constants import SERVICE_DNS, SERVICE_DNS_ENV, SERVICE_HOSTNAME, SERVICE_PORT
5
+ from ...constants import SERVICE_HOSTNAME, SERVICE_PORT
8
6
  from .builder import WorkflowBuilder
9
7
 
10
8
  class ReverseProxyDecorator():
@@ -56,11 +54,5 @@ class ReverseProxyDecorator():
56
54
  **additional_properties,
57
55
  }
58
56
 
59
- # If we are reverse proxying to potentially an external host,
60
- # Docker's embedded DNS will use the host's /etc/host file as part of the resolution process
61
- # This can lead the hostname to resolve to localhost instead of the service's actual IP address
62
- if not config.detached:
63
- service['dns'] = SERVICE_DNS
64
-
65
57
  services[proxy_name] = service
66
58
 
@@ -28,9 +28,11 @@ docker_compose_command=docker compose
28
28
  source_env=set -a; [ -f .env ] && source .env; set +a
29
29
 
30
30
  docker_compose_file_path=$(app_data_dir)/docker/stoobly-ui/exec/.docker-compose.exec.yml
31
- stoobly_exec_args=--profile $(EXEC_WORKFLOW_NAME) -p $(EXEC_WORKFLOW_NAME) up --build --remove-orphans --pull always
31
+ stoobly_exec_args=--profile $(EXEC_WORKFLOW_NAME) -p $(EXEC_WORKFLOW_NAME) up --remove-orphans
32
32
  stoobly_exec_env=export CONTEXT_DIR=$(context_dir) && export USER_ID=$$UID && export CA_CERTS_DIR="$(ca_certs_dir)"
33
- stoobly_exec=$(stoobly_exec_env) && $(source_env) && $(docker_compose_command) -f "$(docker_compose_file_path)" $(stoobly_exec_args)
33
+ stoobly_exec_build_args=--profile $(EXEC_WORKFLOW_NAME) -p $(EXEC_WORKFLOW_NAME) build --pull --quiet
34
+ stoobly_exec_build=$(docker_compose_command) "$(docker_compose_file_path)" $(stoobly_exec_build_args)
35
+ stoobly_exec=$(stoobly_exec_env) && $(source_env) && $(stoobly_exec_build) && $(docker_compose_command) -f "$(docker_compose_file_path)" $(stoobly_exec_args)
34
36
 
35
37
  # Because scaffold is stored in the APP_DIR, when running a scaffold command from within a container,
36
38
  # it needs access to APP_DIR rather than CONTEXT_DIR
@@ -1,7 +1,7 @@
1
1
  #!/bin/bash
2
2
 
3
3
  echo "Configuring intercept mode"
4
- stoobly-agent intercept configure --mode mock --policy found
4
+ stoobly-agent intercept configure --mode mock --policy all
5
5
 
6
6
  echo "Enabling intercept"
7
7
  stoobly-agent intercept enable
@@ -1,7 +1,7 @@
1
1
  #!/bin/bash
2
2
 
3
3
  echo "Configuring intercept mode"
4
- stoobly-agent intercept configure --mode mock --policy found
4
+ stoobly-agent intercept configure --mode mock --policy all
5
5
 
6
6
  echo "Enabling intercept"
7
7
  stoobly-agent intercept enable
@@ -22,6 +22,8 @@ LOG_ID = 'WorkflowRunCommand'
22
22
  class UpOptions(TypedDict):
23
23
  attached: bool
24
24
  namespace: str
25
+ no_cache: bool
26
+ verbose: bool
25
27
 
26
28
  class WorkflowRunCommand(WorkflowCommand):
27
29
  def __init__(self, app: App, **kwargs):
@@ -93,10 +95,12 @@ class WorkflowRunCommand(WorkflowCommand):
93
95
  if not os.path.exists(self.compose_path):
94
96
  return ''
95
97
 
98
+ build_command = ['docker', 'compose']
96
99
  command = ['COMPOSE_IGNORE_ORPHANS=true', 'docker', 'compose']
100
+ command_options = []
97
101
 
98
102
  # Add docker compose file
99
- command.append(f"-f {os.path.relpath(self.compose_path, self.__current_working_dir)}")
103
+ command_options.append(f"-f {os.path.relpath(self.compose_path, self.__current_working_dir)}")
100
104
 
101
105
  # Add custom docker compose file
102
106
  custom_services = self.custom_services
@@ -114,16 +118,27 @@ class WorkflowRunCommand(WorkflowCommand):
114
118
  # TODO: looking into why warning does not print in docker
115
119
  Logger.instance(LOG_ID).error(f"Missing {self.workflow_name} profile in custom compose file")
116
120
 
117
- command.append(f"-f {os.path.relpath(self.custom_compose_path, self.__current_working_dir)}")
121
+ command_options.append(f"-f {os.path.relpath(self.custom_compose_path, self.__current_working_dir)}")
118
122
 
119
123
  if self.extra_compose_path:
120
- command.append(f"-f {os.path.relpath(self.extra_compose_path, self.__current_working_dir)}")
124
+ command_options.append(f"-f {os.path.relpath(self.extra_compose_path, self.__current_working_dir)}")
121
125
 
122
- command.append(f"--profile {self.workflow_name}")
126
+ command_options.append(f"--profile {self.workflow_name}")
123
127
 
124
128
  if options.get('namespace'):
125
- command.append(f"-p {options['namespace']}")
129
+ command_options.append(f"-p {options['namespace']}")
130
+
131
+ build_command += command_options
132
+ build_command.append('build')
133
+ build_command.append('--pull')
134
+
135
+ if not options.get('verbose'):
136
+ build_command.append('--quiet')
137
+
138
+ if options.get('no_cache'):
139
+ build_command.append('--no-cache')
126
140
 
141
+ command += command_options
127
142
  command.append('up')
128
143
 
129
144
  if not options.get('attached'):
@@ -141,13 +156,11 @@ class WorkflowRunCommand(WorkflowCommand):
141
156
  # Otherwise, even if a service exits with a non-zero exit code, exit code 0 is returned
142
157
  command.append(option)
143
158
 
144
- command.append('--build')
145
-
146
159
  self.write_env()
147
160
 
148
- return ' '.join(command)
161
+ return ' && '.join([' '.join(build_command), ' '.join(command)])
149
162
 
150
- def down(self):
163
+ def down(self, **options):
151
164
  if not os.path.exists(self.compose_path):
152
165
  return ''
153
166
 
@@ -164,8 +177,15 @@ class WorkflowRunCommand(WorkflowCommand):
164
177
  command.append(f"-f {os.path.relpath(self.extra_compose_path, self.__current_working_dir)}")
165
178
 
166
179
  command.append(f"--profile {self.workflow_name}")
180
+
181
+ if options.get('namespace'):
182
+ command.append(f"-p {options['namespace']}")
183
+
167
184
  command.append('down')
168
185
 
186
+ if options.get('rmi'):
187
+ command.append(f"--rmi local")
188
+
169
189
  return ' '.join(command)
170
190
 
171
191
  def write_nameservers(self):
@@ -248,6 +248,8 @@ def copy(**kwargs):
248
248
  @click.option('--log-level', default=INFO, type=click.Choice([DEBUG, INFO, WARNING, ERROR]), help='''
249
249
  Log levels can be "debug", "info", "warning", or "error"
250
250
  ''')
251
+ @click.option('--namespace', help='Workflow namespace.')
252
+ @click.option('--rmi', is_flag=True, help='Remove images used by containers.')
251
253
  @click.option('--service', multiple=True, help='Select which services to log. Defaults to all.')
252
254
  @click.argument('workflow_name')
253
255
  def stop(**kwargs):
@@ -281,7 +283,7 @@ def stop(**kwargs):
281
283
  for command in commands:
282
284
  __print_header(f"SERVICE {command.service_name}")
283
285
 
284
- exec_command = command.down()
286
+ exec_command = command.down(namespace=kwargs['namespace'], rmi=kwargs['rmi'])
285
287
  if not exec_command:
286
288
  continue
287
289
 
@@ -358,7 +360,9 @@ def logs(**kwargs):
358
360
  ''')
359
361
  @click.option('--namespace', help='Workflow namespace.')
360
362
  @click.option('--network', help='Workflow network namespace.')
363
+ @click.option('--no-cache', is_flag=True, help='Do not use cache when building images.')
361
364
  @click.option('--service', multiple=True, help='Select which services to run. Defaults to all.')
365
+ @click.option('--verbose', is_flag=True)
362
366
  @click.argument('workflow_name')
363
367
  def run(**kwargs):
364
368
  cwd = os.getcwd()
@@ -417,7 +421,9 @@ def run(**kwargs):
417
421
  # By default, the entrypoint service should be last
418
422
  # However, this can change if the user has configured a service's priority to be higher
419
423
  attached = not kwargs['detached'] and index == len(commands) - 1
420
- exec_command = command.up(attached=attached, namespace=kwargs['namespace'])
424
+ exec_command = command.up(
425
+ attached=attached, namespace=kwargs['namespace'], no_cache=kwargs['no_cache'], verbose=kwargs['verbose']
426
+ )
421
427
  if not exec_command:
422
428
  continue
423
429
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: stoobly-agent
3
- Version: 1.1.3
3
+ Version: 1.1.4
4
4
  Summary: Record, mock, and test HTTP(s) requests. CLI agent for Stoobly
5
5
  License: Apache-2.0
6
6
  Author: Matt Le
@@ -1,4 +1,4 @@
1
- stoobly_agent/__init__.py,sha256=RDVATMzONZZkAKiL7eEYtrHytxhxShWZgElMHXzqw3w,44
1
+ stoobly_agent/__init__.py,sha256=Yo6V8wUKHZVrGSNKqSTOAnMe9-EQ8shkE9omphzkopM,44
2
2
  stoobly_agent/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  stoobly_agent/app/api/__init__.py,sha256=ctkB8KR-eXO0SFhj602huHiyvQ3PslFWd8fkcufgrAI,1000
4
4
  stoobly_agent/app/api/application_http_request_handler.py,sha256=jf4fkqjOiCeI2IM5Ro7ie0v_C6y0-7-5TIE_IKMPOfg,5513
@@ -86,9 +86,10 @@ stoobly_agent/app/cli/scaffold/docker/service/types.py,sha256=qB-yYHlu-PZDc0HYgT
86
86
  stoobly_agent/app/cli/scaffold/docker/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
87
  stoobly_agent/app/cli/scaffold/docker/workflow/build_decorator.py,sha256=vbmME0cbN2EnNRlzQ2umj7Y3L7aZT-EHqEpkBFMfe8U,758
88
88
  stoobly_agent/app/cli/scaffold/docker/workflow/builder.py,sha256=bnKOqqoKEYzmJkIJwDoNz60doE-nf1GlDC9BqciUtkg,7107
89
- stoobly_agent/app/cli/scaffold/docker/workflow/decorators_factory.py,sha256=Mi6SEFpG2MG9pymPLbPTWBMfosi1ThRAs5DXfjBz4Iw,643
89
+ stoobly_agent/app/cli/scaffold/docker/workflow/decorators_factory.py,sha256=oi0Hkii2W9338IeG7BG2medQxqZUbBp71Cvj-qDunII,987
90
+ stoobly_agent/app/cli/scaffold/docker/workflow/development_decorator.py,sha256=cs00Cc2DuOYrGD8W9849PjHz6k2xyx0fSizqJlM7yR8,946
90
91
  stoobly_agent/app/cli/scaffold/docker/workflow/mock_decorator.py,sha256=D8PgYULERvWLaW1Vn3qspRTuNBoicuP2M1EZnQyvD_M,1080
91
- stoobly_agent/app/cli/scaffold/docker/workflow/reverse_proxy_decorator.py,sha256=d2E0ba0ga2IjIE3v1VnLmZLgKiyBB15BerCtL0FyndI,2095
92
+ stoobly_agent/app/cli/scaffold/docker/workflow/reverse_proxy_decorator.py,sha256=C7cHNmnqgvDCZh2gor1LvNicOL02_3L2bVx_DWIH2aA,1687
92
93
  stoobly_agent/app/cli/scaffold/env.py,sha256=e-Ve4p3RUgzFx22B3SIYttvJ_yLuDtA27oDACZ8n-6E,1140
93
94
  stoobly_agent/app/cli/scaffold/hosts_file_reader.py,sha256=gYkkrOlY7QG2JNsET6DKq4djrQAH0UGJtTkF7UwYT5o,1748
94
95
  stoobly_agent/app/cli/scaffold/managed_services_docker_compose.py,sha256=-wLBXUi7DCWsfm5KzZzd_kdJKOTl1NT924XR7dyjbSY,574
@@ -103,7 +104,7 @@ stoobly_agent/app/cli/scaffold/service_workflow_validate_command.py,sha256=z7Z_v
103
104
  stoobly_agent/app/cli/scaffold/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
105
  stoobly_agent/app/cli/scaffold/templates/app/.Dockerfile.context,sha256=qvZFhJxfGAYMKr2VfYye5LX264phfl4cIfkS-TJs2-w,193
105
106
  stoobly_agent/app/cli/scaffold/templates/app/.Dockerfile.proxy,sha256=HN2tv7dfJL9riJUrrtQRHZTC2QeSTf06tQ8aBhdHAaw,1027
106
- stoobly_agent/app/cli/scaffold/templates/app/.Makefile,sha256=PcprOXanBlsMCswcip0QDBLvaUiHD-1gSxhgUOoDfVA,5372
107
+ stoobly_agent/app/cli/scaffold/templates/app/.Makefile,sha256=bgTrBzD5S5ulLtwJe2qS4YmFz8ev_uAM4KbPfaEDSBg,5578
107
108
  stoobly_agent/app/cli/scaffold/templates/app/.docker-compose.base.yml,sha256=LNNuygX6hMtmElxaO6jTIYq3psYmxNv7xax7ra6JzO4,407
108
109
  stoobly_agent/app/cli/scaffold/templates/app/Makefile,sha256=t7xRaCc9q3k7W34S0h9KX02GljSVwGpPnFmiLUvWxsw,80
109
110
  stoobly_agent/app/cli/scaffold/templates/app/build/.config.yml,sha256=8Wt8ZZ5irvBYYS44xGrR_EWlZDuXH9kyWmquzsh7s8g,19
@@ -126,7 +127,7 @@ stoobly_agent/app/cli/scaffold/templates/app/build/test/bin/init,sha256=O7czui9G
126
127
  stoobly_agent/app/cli/scaffold/templates/app/entrypoint/.config.yml,sha256=T9VQz6OwAQpKdIoFrnfKAxuX_to0c6EhuWRLKM34Sr4,22
127
128
  stoobly_agent/app/cli/scaffold/templates/app/entrypoint/.docker-compose.base.yml,sha256=ZekJ2lHjnPPI7hV44x3_2JzJFbn2iao9ZLWCgENfTOo,341
128
129
  stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/.docker-compose.mock.yml,sha256=cxAJ7CrI3AeuzQs9qw3fDSHTfYTQ1Bw_0egfy_FYRJ8,684
129
- stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/bin/.configure,sha256=I4MhiSVbBaQWy056opYfPqnWPZmS5rKBW_Y26nDGMeY,256
130
+ stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/bin/.configure,sha256=XuPxv-MprVjmv3S6WbJy9WsC3wizlx8TkFvNNhGyEJ8,254
130
131
  stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/bin/.init,sha256=5xJbfpwGOmRj5lwK5e0JNlVpNd3WFUkZ0GaCUK40aDk,97
131
132
  stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/bin/configure,sha256=Nme7aSLA-IH1NXgmqRMPzOlKcUSRXqZd-kcuZa47IEk,11
132
133
  stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/bin/init,sha256=O7czui9GFHbcoEC5I9MwkRyZvDGY42IwlyQwIWcgylY,12
@@ -138,7 +139,7 @@ stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/bin/configure,sha
138
139
  stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/bin/init,sha256=O7czui9GFHbcoEC5I9MwkRyZvDGY42IwlyQwIWcgylY,12
139
140
  stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/docker-compose.yml,sha256=5n4bZBHI9MtwBF55ugu1RTdwMy7T6SsYGQ_3sulFUj8,595
140
141
  stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/.docker-compose.test.yml,sha256=ifPMJHPbAf6hI4vS1BWuzPOOt5SCaxHFnWA5BVnM9RY,685
141
- stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/bin/.configure,sha256=I4MhiSVbBaQWy056opYfPqnWPZmS5rKBW_Y26nDGMeY,256
142
+ stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/bin/.configure,sha256=XuPxv-MprVjmv3S6WbJy9WsC3wizlx8TkFvNNhGyEJ8,254
142
143
  stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/bin/.init,sha256=5xJbfpwGOmRj5lwK5e0JNlVpNd3WFUkZ0GaCUK40aDk,97
143
144
  stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/bin/configure,sha256=Nme7aSLA-IH1NXgmqRMPzOlKcUSRXqZd-kcuZa47IEk,11
144
145
  stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/bin/init,sha256=O7czui9GFHbcoEC5I9MwkRyZvDGY42IwlyQwIWcgylY,12
@@ -192,9 +193,9 @@ stoobly_agent/app/cli/scaffold/workflow_copy_command.py,sha256=R9hh5dWVz7vGld7pE
192
193
  stoobly_agent/app/cli/scaffold/workflow_create_command.py,sha256=5xnRYrVb2KlSDARZFjLGGWeURXRu63OHoRLEhO-EAvw,3401
193
194
  stoobly_agent/app/cli/scaffold/workflow_env.py,sha256=x8V5pJmIiklD3f2q2-qq-CORf4YaXYq_r2JpR2MmSwk,416
194
195
  stoobly_agent/app/cli/scaffold/workflow_log_command.py,sha256=Bke4lMOMxuDUFuAx9nlXHbKgYMO4KAg9ASHvjz4aVWc,1372
195
- stoobly_agent/app/cli/scaffold/workflow_run_command.py,sha256=ounJeIp1_baB5baWPyAvudI9PJZ4tuJ_BPnVdjvzkqo,7685
196
+ stoobly_agent/app/cli/scaffold/workflow_run_command.py,sha256=ICJZXBa93GwDmMqk_dWU6ACnpPUUa4YJcpFxozRCtDc,8283
196
197
  stoobly_agent/app/cli/scaffold/workflow_validate_command.py,sha256=fhHciJXg_u32Wmh8us8LhgQj8D1SxkBADtuBBF4K0FM,4377
197
- stoobly_agent/app/cli/scaffold_cli.py,sha256=RaJD3EwCKYLFHWd1tSTcf_0hK4tGvTGB078LdPreDPM,19437
198
+ stoobly_agent/app/cli/scaffold_cli.py,sha256=3u5sj_bHW8AjokFNCeoX52hbLWB8gstXJjL26FiXZIM,19819
198
199
  stoobly_agent/app/cli/scenario_cli.py,sha256=3J1EiJOvunkfWrEkOsanw-XrKkOk78ij_GjBlE9p7CE,8229
199
200
  stoobly_agent/app/cli/snapshot_cli.py,sha256=XNxpTm5z3bnBGNGI3_XZIif0ypN62WqYfDmShL5fXg4,9965
200
201
  stoobly_agent/app/cli/trace_cli.py,sha256=K7E-vx3JUcqEDSWOdIOi_AieKNQz7dBfmRrVvKDkzFI,4605
@@ -728,8 +729,8 @@ stoobly_agent/test/mock_data/scaffold/docker-compose-local-service.yml,sha256=x7
728
729
  stoobly_agent/test/mock_data/scaffold/index.html,sha256=qJwuYajKZ4ihWZrJQ3BNObV5kf1VGnnm_vqlPJzdqLE,258
729
730
  stoobly_agent/test/mock_data/uspto.yaml,sha256=6U5se7C3o-86J4m9xpOk9Npias399f5CbfWzR87WKwE,7835
730
731
  stoobly_agent/test/test_helper.py,sha256=m_oAI7tmRYCNZdKfNqISWhMv3e44tjeYViQ3nTUfnos,1007
731
- stoobly_agent-1.1.3.dist-info/LICENSE,sha256=8QKGyy45eN76Zk52h8gu1DKX2B_gbWgZ3nzDLofEbaE,548
732
- stoobly_agent-1.1.3.dist-info/METADATA,sha256=y124kMIiYQVNrhZKo3lOwJ3wbiprV1vBqF_4wYhPEgc,3384
733
- stoobly_agent-1.1.3.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
734
- stoobly_agent-1.1.3.dist-info/entry_points.txt,sha256=aq5wix5oC8MDQtmyPGU0xaFrsjJg7WH28NmXh2sc3Z8,56
735
- stoobly_agent-1.1.3.dist-info/RECORD,,
732
+ stoobly_agent-1.1.4.dist-info/LICENSE,sha256=8QKGyy45eN76Zk52h8gu1DKX2B_gbWgZ3nzDLofEbaE,548
733
+ stoobly_agent-1.1.4.dist-info/METADATA,sha256=9i8olIJjI1kvmd2QFzku6bBYHov7OrXzfSrnpoerF2c,3384
734
+ stoobly_agent-1.1.4.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
735
+ stoobly_agent-1.1.4.dist-info/entry_points.txt,sha256=aq5wix5oC8MDQtmyPGU0xaFrsjJg7WH28NmXh2sc3Z8,56
736
+ stoobly_agent-1.1.4.dist-info/RECORD,,