rasa-pro 3.10.12__py3-none-any.whl → 3.10.13__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.

Potentially problematic release.


This version of rasa-pro might be problematic. Click here for more details.

rasa/cli/studio/studio.py CHANGED
@@ -1,5 +1,5 @@
1
1
  import argparse
2
- from typing import List, Optional
2
+ from typing import List, Optional, Tuple
3
3
  from urllib.parse import ParseResult, urlparse
4
4
 
5
5
  import questionary
@@ -149,7 +149,7 @@ def _configure_studio_url() -> Optional[str]:
149
149
  return studio_url
150
150
 
151
151
 
152
- def _get_advanced_config(studio_url: str) -> tuple:
152
+ def _get_advanced_config(studio_url: str) -> Tuple:
153
153
  """Get the advanced configuration values for Rasa Studio."""
154
154
  keycloak_url = questionary.text(
155
155
  "Please provide your Rasa Studio Keycloak URL",
@@ -167,7 +167,7 @@ def _get_advanced_config(studio_url: str) -> tuple:
167
167
  return keycloak_url, realm_name, client_id
168
168
 
169
169
 
170
- def _get_default_config(studio_url: str) -> tuple:
170
+ def _get_default_config(studio_url: str) -> Tuple:
171
171
  """Get the default configuration values for Rasa Studio."""
172
172
  keycloak_url = studio_url + "auth/"
173
173
  realm_name = DEFAULT_REALM_NAME
@@ -178,6 +178,7 @@ def _get_default_config(studio_url: str) -> tuple:
178
178
  f"Keycloak URL: {keycloak_url}, "
179
179
  f"Realm Name: '{realm_name}', "
180
180
  f"Client ID: '{client_id}'. "
181
+ f"SSL verification is enabled."
181
182
  f"You can use '--advanced' to configure these settings."
182
183
  )
183
184
 
@@ -185,7 +186,11 @@ def _get_default_config(studio_url: str) -> tuple:
185
186
 
186
187
 
187
188
  def _create_studio_config(
188
- studio_url: str, keycloak_url: str, realm_name: str, client_id: str
189
+ studio_url: str,
190
+ keycloak_url: str,
191
+ realm_name: str,
192
+ client_id: str,
193
+ disable_verify: bool = False,
189
194
  ) -> StudioConfig:
190
195
  """Create a StudioConfig object with the provided parameters."""
191
196
  return StudioConfig(
@@ -193,6 +198,7 @@ def _create_studio_config(
193
198
  studio_url=studio_url + "api/graphql/",
194
199
  client_id=client_id,
195
200
  realm_name=realm_name,
201
+ disable_verify=disable_verify,
196
202
  )
197
203
 
198
204
 
@@ -227,19 +233,23 @@ def _configure_studio_config(args: argparse.Namespace) -> StudioConfig:
227
233
 
228
234
  # create a configuration and auth object to try to reach the studio
229
235
  studio_config = _create_studio_config(
230
- studio_url, keycloak_url, realm_name, client_id
236
+ studio_url,
237
+ keycloak_url,
238
+ realm_name,
239
+ client_id,
240
+ disable_verify=args.disable_verify,
231
241
  )
232
242
 
233
- if args.disable_verify:
243
+ if studio_config.disable_verify:
234
244
  rasa.shared.utils.cli.print_info(
235
245
  "Disabling SSL verification for the Rasa Studio authentication server."
236
246
  )
237
- studio_auth = StudioAuth(studio_config, verify=False)
238
247
  else:
239
248
  rasa.shared.utils.cli.print_info(
240
249
  "Enabling SSL verification for the Rasa Studio authentication server."
241
250
  )
242
- studio_auth = StudioAuth(studio_config, verify=True)
251
+
252
+ studio_auth = StudioAuth(studio_config)
243
253
 
244
254
  if _check_studio_auth(studio_auth):
245
255
  return studio_config
rasa/shared/utils/yaml.py CHANGED
@@ -416,47 +416,6 @@ def validate_raw_yaml_using_schema_file_with_responses(
416
416
  )
417
417
 
418
418
 
419
- def process_content(content: str) -> str:
420
- """
421
- Process the content to handle both Windows paths and emojis.
422
- Windows paths are processed by escaping backslashes but emojis are left untouched.
423
-
424
- Args:
425
- content: yaml content to be processed
426
- """
427
- # Detect common Windows path patterns: e.g., C:\ or \\
428
- UNESCAPED_WINDOWS_PATH_PATTERN = re.compile(
429
- r"(?<!\w)[a-zA-Z]:(\\[a-zA-Z0-9_ -]+)*(\\)?(?!\\n)"
430
- )
431
- ESCAPED_WINDOWS_PATH_PATTERN = re.compile(
432
- r"(?<!\w)[a-zA-Z]:(\\\\[a-zA-Z0-9_ -]+)+\\\\?(?!\\n)"
433
- )
434
-
435
- # Function to escape backslashes in Windows paths but leave other content as is
436
- def escape_windows_paths(match: re.Match) -> str:
437
- path = str(match.group(0))
438
- return path.replace("\\", "\\\\") # Escape backslashes only in Windows paths
439
-
440
- def unescape_windows_paths(match: re.Match) -> str:
441
- path = str(match.group(0))
442
- return path.replace("\\\\", "\\")
443
-
444
- # First, process Windows paths by escaping backslashes
445
- content = re.sub(UNESCAPED_WINDOWS_PATH_PATTERN, escape_windows_paths, content)
446
-
447
- # Ensure proper handling of emojis by decoding Unicode sequences
448
- content = (
449
- content.encode("utf-8")
450
- .decode("raw_unicode_escape")
451
- .encode("utf-16", "surrogatepass")
452
- .decode("utf-16")
453
- )
454
-
455
- content = re.sub(ESCAPED_WINDOWS_PATH_PATTERN, unescape_windows_paths, content)
456
-
457
- return content
458
-
459
-
460
419
  def read_yaml(
461
420
  content: str,
462
421
  reader_type: Union[str, List[str]] = "safe",
@@ -472,9 +431,6 @@ def read_yaml(
472
431
  Raises:
473
432
  ruamel.yaml.parser.ParserError: If there was an error when parsing the YAML.
474
433
  """
475
- if _is_ascii(content):
476
- content = process_content(content)
477
-
478
434
  custom_constructor = kwargs.get("custom_constructor", None)
479
435
 
480
436
  # Create YAML parser with custom constructor
rasa/studio/auth.py CHANGED
@@ -23,12 +23,10 @@ from rasa.studio.results_logger import with_studio_error_handler, StudioResult
23
23
  class StudioAuth:
24
24
  """Handles the authentication with the Rasa Studio authentication server."""
25
25
 
26
- def __init__(
27
- self,
28
- studio_config: StudioConfig,
29
- verify: bool = True,
30
- ) -> None:
26
+ def __init__(self, studio_config: StudioConfig) -> None:
31
27
  self.config = studio_config
28
+ verify = not studio_config.disable_verify
29
+
32
30
  self.keycloak_openid = KeycloakOpenID(
33
31
  server_url=studio_config.authentication_server_url,
34
32
  client_id=studio_config.client_id,
rasa/studio/config.py CHANGED
@@ -2,13 +2,14 @@ from __future__ import annotations
2
2
 
3
3
  import os
4
4
  from dataclasses import dataclass
5
- from typing import Dict, Optional, Text
5
+ from typing import Any, Dict, Optional, Text
6
6
 
7
7
  from rasa.utils.common import read_global_config_value, write_global_config_value
8
8
 
9
9
  from rasa.studio.constants import (
10
10
  RASA_STUDIO_AUTH_SERVER_URL_ENV,
11
11
  RASA_STUDIO_CLI_CLIENT_ID_KEY_ENV,
12
+ RASA_STUDIO_CLI_DISABLE_VERIFY_KEY_ENV,
12
13
  RASA_STUDIO_CLI_REALM_NAME_KEY_ENV,
13
14
  RASA_STUDIO_CLI_STUDIO_URL_ENV,
14
15
  STUDIO_CONFIG_KEY,
@@ -19,6 +20,7 @@ STUDIO_URL_KEY = "studio_url"
19
20
  CLIENT_ID_KEY = "client_id"
20
21
  REALM_NAME_KEY = "realm_name"
21
22
  CLIENT_SECRET_KEY = "client_secret"
23
+ DISABLE_VERIFY = "disable_verify"
22
24
 
23
25
 
24
26
  @dataclass
@@ -27,13 +29,15 @@ class StudioConfig:
27
29
  studio_url: Optional[Text]
28
30
  client_id: Optional[Text]
29
31
  realm_name: Optional[Text]
32
+ disable_verify: bool = False
30
33
 
31
- def to_dict(self) -> Dict[Text, Optional[Text]]:
34
+ def to_dict(self) -> Dict[Text, Optional[Any]]:
32
35
  return {
33
36
  AUTH_SERVER_URL_KEY: self.authentication_server_url,
34
37
  STUDIO_URL_KEY: self.studio_url,
35
38
  CLIENT_ID_KEY: self.client_id,
36
39
  REALM_NAME_KEY: self.realm_name,
40
+ DISABLE_VERIFY: self.disable_verify,
37
41
  }
38
42
 
39
43
  @classmethod
@@ -43,6 +47,7 @@ class StudioConfig:
43
47
  studio_url=data[STUDIO_URL_KEY],
44
48
  client_id=data[CLIENT_ID_KEY],
45
49
  realm_name=data[REALM_NAME_KEY],
50
+ disable_verify=data.get(DISABLE_VERIFY, False),
46
51
  )
47
52
 
48
53
  def write_config(self) -> None:
@@ -73,7 +78,7 @@ class StudioConfig:
73
78
  config = read_global_config_value(STUDIO_CONFIG_KEY, unavailable_ok=True)
74
79
 
75
80
  if config is None:
76
- return StudioConfig(None, None, None, None)
81
+ return StudioConfig(None, None, None, None, False)
77
82
 
78
83
  if not isinstance(config, dict):
79
84
  raise ValueError(
@@ -83,7 +88,7 @@ class StudioConfig:
83
88
  )
84
89
 
85
90
  for key in config:
86
- if not isinstance(config[key], str):
91
+ if not isinstance(config[key], str) and key != DISABLE_VERIFY:
87
92
  raise ValueError(
88
93
  "Invalid config file format. "
89
94
  f"Key '{key}' is not a text value."
@@ -102,6 +107,9 @@ class StudioConfig:
102
107
  studio_url=StudioConfig._read_env_value(RASA_STUDIO_CLI_STUDIO_URL_ENV),
103
108
  client_id=StudioConfig._read_env_value(RASA_STUDIO_CLI_CLIENT_ID_KEY_ENV),
104
109
  realm_name=StudioConfig._read_env_value(RASA_STUDIO_CLI_REALM_NAME_KEY_ENV),
110
+ disable_verify=bool(
111
+ os.getenv(RASA_STUDIO_CLI_DISABLE_VERIFY_KEY_ENV, False)
112
+ ),
105
113
  )
106
114
 
107
115
  @staticmethod
@@ -124,4 +132,5 @@ class StudioConfig:
124
132
  studio_url=self.studio_url or other.studio_url,
125
133
  client_id=self.client_id or other.client_id,
126
134
  realm_name=self.realm_name or other.realm_name,
135
+ disable_verify=self.disable_verify or other.disable_verify,
127
136
  )
rasa/studio/constants.py CHANGED
@@ -10,6 +10,7 @@ RASA_STUDIO_AUTH_SERVER_URL_ENV = "RASA_STUDIO_AUTH_SERVER_URL"
10
10
  RASA_STUDIO_CLI_STUDIO_URL_ENV = "RASA_STUDIO_CLI_STUDIO_URL"
11
11
  RASA_STUDIO_CLI_REALM_NAME_KEY_ENV = "RASA_STUDIO_CLI_REALM_NAME_KEY"
12
12
  RASA_STUDIO_CLI_CLIENT_ID_KEY_ENV = "RASA_STUDIO_CLI_CLIENT_ID_KEY"
13
+ RASA_STUDIO_CLI_DISABLE_VERIFY_KEY_ENV = "RASA_STUDIO_CLI_DISABLE_VERIFY_KEY"
13
14
 
14
15
  STUDIO_NLU_FILENAME = "studio_nlu.yml"
15
16
  STUDIO_DOMAIN_FILENAME = "studio_domain.yml"
@@ -76,7 +76,9 @@ class StudioDataHandler:
76
76
 
77
77
  return request
78
78
 
79
- def _make_request(self, GQL_req: Dict[Any, Any]) -> Dict[Any, Any]:
79
+ def _make_request(
80
+ self, GQL_req: Dict[Any, Any], verify: bool = True
81
+ ) -> Dict[Any, Any]:
80
82
  token = KeycloakTokenReader().get_token()
81
83
  if token.is_expired():
82
84
  token = self.refresh_token(token)
@@ -93,6 +95,7 @@ class StudioDataHandler:
93
95
  "Authorization": f"{token.token_type} {token.access_token}",
94
96
  "Content-Type": "application/json",
95
97
  },
98
+ verify=verify,
96
99
  )
97
100
 
98
101
  if res.status_code != 200:
@@ -128,7 +131,9 @@ class StudioDataHandler:
128
131
  The data from Rasa Studio.
129
132
  """
130
133
  GQL_req = self._build_request()
131
- response = self._make_request(GQL_req)
134
+ verify = not self.studio_config.disable_verify
135
+
136
+ response = self._make_request(GQL_req, verify=verify)
132
137
  self._extract_data(response)
133
138
 
134
139
  def request_data(
@@ -145,7 +150,9 @@ class StudioDataHandler:
145
150
  The data from Rasa Studio.
146
151
  """
147
152
  GQL_req = self._build_request(intent_names, entity_names)
148
- response = self._make_request(GQL_req)
153
+ verify = not self.studio_config.disable_verify
154
+
155
+ response = self._make_request(GQL_req, verify=verify)
149
156
  self._extract_data(response)
150
157
 
151
158
  def get_config(self) -> Optional[str]:
rasa/studio/upload.py CHANGED
@@ -56,7 +56,10 @@ def _get_selected_entities_and_intents(
56
56
 
57
57
  def handle_upload(args: argparse.Namespace) -> None:
58
58
  """Uploads primitives to rasa studio."""
59
- endpoint = StudioConfig.read_config().studio_url
59
+ studio_config = StudioConfig.read_config()
60
+ endpoint = studio_config.studio_url
61
+ verify = not studio_config.disable_verify
62
+
60
63
  if not endpoint:
61
64
  rasa.shared.utils.cli.print_error_and_exit(
62
65
  "No GraphQL endpoint found in config. Please run `rasa studio config`."
@@ -76,9 +79,9 @@ def handle_upload(args: argparse.Namespace) -> None:
76
79
 
77
80
  # check safely if args.calm is set and not fail if not
78
81
  if hasattr(args, "calm") and args.calm:
79
- upload_calm_assistant(args, endpoint)
82
+ upload_calm_assistant(args, endpoint, verify=verify)
80
83
  else:
81
- upload_nlu_assistant(args, endpoint)
84
+ upload_nlu_assistant(args, endpoint, verify=verify)
82
85
 
83
86
 
84
87
  config_keys = [
@@ -126,7 +129,9 @@ def _get_assistant_name(config: Dict[Text, Any]) -> str:
126
129
 
127
130
 
128
131
  @with_studio_error_handler
129
- def upload_calm_assistant(args: argparse.Namespace, endpoint: str) -> StudioResult:
132
+ def upload_calm_assistant(
133
+ args: argparse.Namespace, endpoint: str, verify: bool = True
134
+ ) -> StudioResult:
130
135
  """Uploads the CALM assistant data to Rasa Studio.
131
136
 
132
137
  Args:
@@ -216,11 +221,13 @@ def upload_calm_assistant(args: argparse.Namespace, endpoint: str) -> StudioResu
216
221
  )
217
222
 
218
223
  structlogger.info("Uploading to Rasa Studio...")
219
- return make_request(endpoint, graphql_req)
224
+ return make_request(endpoint, graphql_req, verify)
220
225
 
221
226
 
222
227
  @with_studio_error_handler
223
- def upload_nlu_assistant(args: argparse.Namespace, endpoint: str) -> StudioResult:
228
+ def upload_nlu_assistant(
229
+ args: argparse.Namespace, endpoint: str, verify: bool = True
230
+ ) -> StudioResult:
224
231
  """Uploads the classic (dm1) assistant data to Rasa Studio.
225
232
 
226
233
  Args:
@@ -268,15 +275,16 @@ def upload_nlu_assistant(args: argparse.Namespace, endpoint: str) -> StudioResul
268
275
  graphql_req = build_request(assistant_name, nlu_examples_yaml, domain_yaml)
269
276
 
270
277
  structlogger.info("Uploading to Rasa Studio...")
271
- return make_request(endpoint, graphql_req)
278
+ return make_request(endpoint, graphql_req, verify)
272
279
 
273
280
 
274
- def make_request(endpoint: str, graphql_req: Dict) -> StudioResult:
281
+ def make_request(endpoint: str, graphql_req: Dict, verify: bool = True) -> StudioResult:
275
282
  """Makes a request to the studio endpoint to upload data.
276
283
 
277
284
  Args:
278
285
  endpoint: The studio endpoint
279
286
  graphql_req: The graphql request
287
+ verify: Whether to verify SSL
280
288
  """
281
289
  token = KeycloakTokenReader().get_token()
282
290
  res = requests.post(
@@ -286,6 +294,7 @@ def make_request(endpoint: str, graphql_req: Dict) -> StudioResult:
286
294
  "Authorization": f"{token.token_type} {token.access_token}",
287
295
  "Content-Type": "application/json",
288
296
  },
297
+ verify=verify,
289
298
  )
290
299
 
291
300
  if results_logger.response_has_errors(res.json()):
rasa/version.py CHANGED
@@ -1,3 +1,3 @@
1
1
  # this file will automatically be changed,
2
2
  # do not add anything but the version number here!
3
- __version__ = "3.10.12"
3
+ __version__ = "3.10.13"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rasa-pro
3
- Version: 3.10.12
3
+ Version: 3.10.13
4
4
  Summary: State-of-the-art open-core Conversational AI framework for Enterprises that natively leverages generative AI for effortless assistant development.
5
5
  Home-page: https://rasa.com
6
6
  Keywords: nlp,machine-learning,machine-learning-library,bot,bots,botkit,rasa conversational-agents,conversational-ai,chatbot,chatbot-framework,bot-framework
@@ -80,7 +80,7 @@ rasa/cli/scaffold.py,sha256=Eqv44T7b5cOd2FKLU1tSrAVPKwMfoiUIjc43PtaxJGg,7988
80
80
  rasa/cli/shell.py,sha256=wymYOj6jdUON0y7pe-rpRqarWDGaDquU7PRp8knxqHk,4264
81
81
  rasa/cli/studio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
82
  rasa/cli/studio/download.py,sha256=r3UCbpD6-8GGKK47FqXTPI1hvYElADjgcdegG6B9XYg,1832
83
- rasa/cli/studio/studio.py,sha256=fADCRFRyarZ4eU_frmNfgCoutdH7lLPRQBq4612Q_pA,8871
83
+ rasa/cli/studio/studio.py,sha256=HJpxm2GmzD5nqbKenWUgE-luEOtJ5p2xv_bjzDzRS1c,9004
84
84
  rasa/cli/studio/train.py,sha256=ruXA5UkaRbO3femk8w3I2cXKs06-34FYtB_9MKdP6hw,1572
85
85
  rasa/cli/studio/upload.py,sha256=kdHqrVGsEbbqH5fz_HusWwJEycB31SHaPlXer8lXAE0,2069
86
86
  rasa/cli/telemetry.py,sha256=ZywhlOpp0l2Yz9oEcOGA2ej3SEkSTisKPpBhn_fS7tc,3538
@@ -665,16 +665,16 @@ rasa/shared/utils/schemas/domain.yml,sha256=b2k4ZYSV-QL3hGjDaRg8rfoqaTh4hbhDc_hB
665
665
  rasa/shared/utils/schemas/events.py,sha256=nm7WotE1UCZpkMMLNW2vs-vKslwngfG7VvjFp0T8ADM,6819
666
666
  rasa/shared/utils/schemas/model_config.yml,sha256=GU1lL_apXjJ3Xbd9Fj5jKm2h1HeB6V6TNqrhK5hOrGY,998
667
667
  rasa/shared/utils/schemas/stories.yml,sha256=DV3wAFnv1leD7kV-FH-GQihF1QX5oKHc8Eb24mxjizc,4737
668
- rasa/shared/utils/yaml.py,sha256=XJoKLe_vOmCcTI_Vg5o-iJzu2uumen7j1rrO6T95QXM,32592
668
+ rasa/shared/utils/yaml.py,sha256=poDOFJ4jU-hQG7XS7ozeFA8ec5L4NSUBiFvH-N5BuQc,31089
669
669
  rasa/studio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
670
- rasa/studio/auth.py,sha256=6Hk6aHpNNrFXpGygWVIF2V5FFyVpqEOyMX5fVU8bqxU,9673
671
- rasa/studio/config.py,sha256=wqjvg_hARKG-6cV3JrhnP_ptZIq0VSFbdv-aWrH0u_Q,4091
672
- rasa/studio/constants.py,sha256=7ixKE1kPw2OM0dWhnEHGSVtSwZ5h9cNL1TB6eExg0EA,732
673
- rasa/studio/data_handler.py,sha256=oG2pLb7sJa2QO3h63PUIZU8DbiJO9B7FGx3pYrAsMjA,12212
670
+ rasa/studio/auth.py,sha256=Lw0zkNhQx3pW8yANWAg9x1M4hXT4Jjpxcnjfw8LYFsA,9672
671
+ rasa/studio/config.py,sha256=IGxMCpdE31PFms0hqYbT6GlAOS1w2L1wutnc8wQSO4s,4541
672
+ rasa/studio/constants.py,sha256=SIpfW70P3OwoLU359BSXQ9fNEVLF6YTCnX6CVvsG0uo,810
673
+ rasa/studio/data_handler.py,sha256=o6jDLE15SBtkBDv4n9RCG9spF0f9BCm0PmXU8jSOfik,12416
674
674
  rasa/studio/download.py,sha256=9uE4KKaHnID_3-Tt_E5_D00XTwhLlj4oxORY8CZRrZc,17188
675
675
  rasa/studio/results_logger.py,sha256=0gCkEaZ1CeFmxRHArK5my_DsLYjApZrxfiRMT5asE6A,4963
676
676
  rasa/studio/train.py,sha256=gfPtirITzBDo9gV4hqDNSwPYtVp_22cq8OWI6YIBgyk,4243
677
- rasa/studio/upload.py,sha256=3XqYyIZE1L3ohJtRcpf039IRc73A_rZ4KVWC32_dBo4,14027
677
+ rasa/studio/upload.py,sha256=5hvj_DUzxq5JkZswro-KaLE4QAKwbMLGb8TakzS1etk,14290
678
678
  rasa/telemetry.py,sha256=Q6MQnDhOY6cKRVs3PayiM6WYWb8QJ_Hb3_eOm12n0tI,61093
679
679
  rasa/tracing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
680
680
  rasa/tracing/config.py,sha256=O4iHkE4kF6r4uVAt3JUb--TniK7pWD4j3d08Vf_GuYY,12736
@@ -720,9 +720,9 @@ rasa/utils/train_utils.py,sha256=f1NWpp5y6al0dzoQyyio4hc4Nf73DRoRSHDzEK6-C4E,212
720
720
  rasa/utils/url_tools.py,sha256=JQcHL2aLqLHu82k7_d9imUoETCm2bmlHaDpOJ-dKqBc,1218
721
721
  rasa/utils/yaml.py,sha256=KjbZq5C94ZP7Jdsw8bYYF7HASI6K4-C_kdHfrnPLpSI,2000
722
722
  rasa/validator.py,sha256=ToRaa4dS859CJO3H2VGqS943O5qWOg45ypbDfFMKECU,62699
723
- rasa/version.py,sha256=_k0Lu-3EqFE4i100DMYBgRi3c_KmZxqc9lFcIfHO9UA,118
724
- rasa_pro-3.10.12.dist-info/METADATA,sha256=Ct7ic4Md_uIsiULOtZ2MGSrpeJ4ZlsoatHmyp2OUOCc,10919
725
- rasa_pro-3.10.12.dist-info/NOTICE,sha256=7HlBoMHJY9CL2GlYSfTQ-PZsVmLmVkYmMiPlTjhuCqA,218
726
- rasa_pro-3.10.12.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
727
- rasa_pro-3.10.12.dist-info/entry_points.txt,sha256=ckJ2SfEyTPgBqj_I6vm_tqY9dZF_LAPJZA335Xp0Q9U,43
728
- rasa_pro-3.10.12.dist-info/RECORD,,
723
+ rasa/version.py,sha256=aji2ixgfN5o0Qbky9Ay-XdGG4bS_vwvrv5hZY9MWQR0,118
724
+ rasa_pro-3.10.13.dist-info/METADATA,sha256=jRz-VIUgsUpiuvknI7kTqZZoRTQfJNlaMwIquWXNyzw,10919
725
+ rasa_pro-3.10.13.dist-info/NOTICE,sha256=7HlBoMHJY9CL2GlYSfTQ-PZsVmLmVkYmMiPlTjhuCqA,218
726
+ rasa_pro-3.10.13.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
727
+ rasa_pro-3.10.13.dist-info/entry_points.txt,sha256=ckJ2SfEyTPgBqj_I6vm_tqY9dZF_LAPJZA335Xp0Q9U,43
728
+ rasa_pro-3.10.13.dist-info/RECORD,,