cumulusci-plus 5.0.2__py3-none-any.whl → 5.0.3__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 cumulusci-plus might be problematic. Click here for more details.

cumulusci/__about__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "5.0.2"
1
+ __version__ = "5.0.3"
cumulusci/__init__.py CHANGED
@@ -15,6 +15,12 @@ try:
15
15
  except PackageNotFoundError:
16
16
  __version__ = "unknown"
17
17
 
18
+ try:
19
+ version("cumulusci")
20
+ raise Exception("CumulusCI installation found, Remove the CumulusCI package.")
21
+ except PackageNotFoundError:
22
+ pass
23
+
18
24
  if sys.version_info < (3, 11): # pragma: no cover
19
25
  raise Exception("CumulusCI requires Python 3.11+.")
20
26
 
cumulusci/cli/cci.py CHANGED
@@ -14,6 +14,7 @@ from rich.markup import escape
14
14
  import cumulusci
15
15
  from cumulusci.core.debug import set_debug_mode
16
16
  from cumulusci.core.exceptions import CumulusCIUsageError
17
+ from cumulusci.plugins.plugin_loader import load_plugins
17
18
  from cumulusci.utils import get_cci_upgrade_command
18
19
  from cumulusci.utils.http.requests_utils import init_requests_trust
19
20
  from cumulusci.utils.logging import tee_stdout_stderr
@@ -29,6 +30,7 @@ from .runtime import CliRuntime, pass_runtime
29
30
  from .service import service
30
31
  from .task import task
31
32
  from .utils import (
33
+ check_latest_plugins,
32
34
  check_latest_version,
33
35
  get_installed_version,
34
36
  get_latest_final_version,
@@ -63,6 +65,7 @@ def main(args=None):
63
65
  is_version_command = len(args) > 1 and args[1] == "version"
64
66
  if "--json" not in args and not is_version_command:
65
67
  check_latest_version()
68
+ check_latest_plugins()
66
69
 
67
70
  # Only create logfiles for commands that are not `cci error`
68
71
  is_error_command = len(args) > 2 and args[1] == "error"
@@ -152,8 +155,13 @@ def show_debug_info():
152
155
 
153
156
  def show_version_info():
154
157
  console = rich.get_console()
155
- console.print(f"CumulusCI version: {cumulusci.__version__} ({sys.argv[0]})")
158
+ console.print(
159
+ f"[bold]CumulusCI Plus[/bold] version: {cumulusci.__version__} ({sys.argv[0]})"
160
+ )
161
+ show_plugin_version_infos(console)
162
+
156
163
  console.print(f"Python version: {sys.version.split()[0]} ({sys.executable})")
164
+
157
165
  console.print()
158
166
  warn_if_no_long_paths(console=console)
159
167
 
@@ -161,21 +169,36 @@ def show_version_info():
161
169
  latest_version = get_latest_final_version()
162
170
 
163
171
  if not latest_version > current_version:
164
- console.print("You have the latest version of CumulusCI :sun_behind_cloud:\n")
172
+ console.print(
173
+ "You have the latest version of CumulusCI Plus :sun_behind_cloud:\n"
174
+ )
165
175
  display_release_notes_link(str(latest_version))
166
176
  return
167
177
 
168
178
  console.print(
169
- f"[yellow]There is a newer version of CumulusCI available: {str(latest_version)}"
179
+ f"[yellow]There is a newer version of CumulusCI Plus available: {str(latest_version)}"
170
180
  )
171
181
  console.print(f"To upgrade, run `{get_cci_upgrade_command()}`")
172
182
  display_release_notes_link(str(latest_version))
173
183
 
174
184
 
185
+ def show_plugin_version_infos(console: Console):
186
+ """Display version information for all loaded plugins."""
187
+ console.print("Loaded plugins:")
188
+ plugins = load_plugins()
189
+ for plugin in plugins:
190
+ try:
191
+ console.print(f" [bold]{plugin.name}[/bold]: {plugin.version}")
192
+ except Exception as e:
193
+ console.print(
194
+ f" [bold]{plugin.name}[/bold]: [red]Error retrieving version: {e}[/red]"
195
+ )
196
+
197
+
175
198
  def display_release_notes_link(latest_version: str) -> None:
176
199
  """Provide a link to the latest CumulusCI Release Notes"""
177
200
  release_notes_link = (
178
- f"https://github.com/SFDO-Tooling/CumulusCI/releases/tag/v{latest_version}"
201
+ f"https://github.com/jorgesolebur/CumulusCI/releases/tag/v{latest_version}"
179
202
  )
180
203
  console = rich.get_console()
181
204
  console.print(
cumulusci/cli/runtime.py CHANGED
@@ -146,7 +146,7 @@ class CliRuntime(BaseCumulusCI):
146
146
  parsed_version = version.parse(min_cci_version)
147
147
  if get_installed_version() < parsed_version:
148
148
  raise click.UsageError(
149
- f"This project requires CumulusCI version {min_cci_version} or later. "
149
+ f"This project requires CumulusCI Plus version {min_cci_version} or later. "
150
150
  f"To upgrade, please run this command: {get_cci_upgrade_command()}"
151
151
  )
152
152
 
@@ -407,8 +407,8 @@ def test_cli():
407
407
  def test_version(capsys):
408
408
  run_click_command(cci.version)
409
409
  console_output = capsys.readouterr().out
410
- assert f"CumulusCI version: {cumulusci.__version__}" in console_output
411
- assert "There is a newer version of CumulusCI available" in console_output
410
+ assert f"CumulusCI Plus version: {cumulusci.__version__}" in console_output
411
+ assert "There is a newer version of CumulusCI Plus available" in console_output
412
412
 
413
413
 
414
414
  @mock.patch(
cumulusci/cli/utils.py CHANGED
@@ -13,6 +13,7 @@ from rich.console import Console
13
13
 
14
14
  from cumulusci import __version__
15
15
  from cumulusci.core.config import UniversalConfig
16
+ from cumulusci.plugins.plugin_loader import load_plugins
16
17
  from cumulusci.utils import get_cci_upgrade_command
17
18
  from cumulusci.utils.http.requests_utils import safe_json_from_response
18
19
 
@@ -67,13 +68,15 @@ def is_final_release(version: str) -> bool:
67
68
  return bool(FINAL_VERSION_RE.match(version))
68
69
 
69
70
 
70
- def get_latest_final_version():
71
+ def get_latest_final_version(
72
+ pkg="cumulusci-plus", tstamp_file="cumulus_timestamp"
73
+ ) -> packaging_version.Version:
71
74
  """return the latest version of cumulusci in pypi, be defensive"""
72
75
  # use the pypi json api https://wiki.python.org/moin/PyPIJSON
73
76
  res = safe_json_from_response(
74
- requests.get("https://pypi.org/pypi/cumulusci-plus/json", timeout=5)
77
+ requests.get(f"https://pypi.org/pypi/{pkg}/json", timeout=5)
75
78
  )
76
- with timestamp_file() as f:
79
+ with timestamp_file(timestamp_file=tstamp_file) as f:
77
80
  f.write(str(time.time()))
78
81
  versions = []
79
82
  for versionstring in res["releases"].keys():
@@ -84,27 +87,32 @@ def get_latest_final_version():
84
87
  return versions[0]
85
88
 
86
89
 
87
- def check_latest_version():
90
+ def check_latest_version(
91
+ pkg="cumulusci-plus",
92
+ installed_version=None,
93
+ tstamp_file="cumulus_timestamp",
94
+ message=f"""An update to CumulusCI is available. To install the update, run this command: {get_cci_upgrade_command()}""",
95
+ ):
88
96
  """checks for the latest version of cumulusci from pypi, max once per hour"""
89
97
  check = True
90
98
 
91
- with timestamp_file() as f:
99
+ with timestamp_file(timestamp_file=tstamp_file) as f:
92
100
  timestamp = float(f.read() or 0)
93
101
  delta = time.time() - timestamp
94
102
  check = delta > 3600
95
103
 
96
104
  if check:
97
105
  try:
98
- latest_version = get_latest_final_version()
106
+ latest_version = get_latest_final_version(pkg, tstamp_file)
99
107
  except requests.exceptions.RequestException as e:
100
108
  click.echo("Error checking cci version:", err=True)
101
109
  click.echo(str(e), err=True)
102
110
  return
103
111
 
104
- result = latest_version > get_installed_version()
112
+ result = latest_version > (installed_version or get_installed_version())
105
113
  if result:
106
114
  click.echo(
107
- f"""An update to CumulusCI is available. To install the update, run this command: {get_cci_upgrade_command()}""",
115
+ message,
108
116
  err=True,
109
117
  )
110
118
 
@@ -148,3 +156,14 @@ def warn_if_no_long_paths(console: Console = Console()) -> None:
148
156
  """Print a warning to the user if long paths are not enabled."""
149
157
  if sys.platform.startswith("win") and not win32_long_paths_enabled():
150
158
  console.print(WIN_LONG_PATH_WARNING)
159
+
160
+
161
+ def check_latest_plugins():
162
+ plugins = load_plugins()
163
+ for plugin in plugins:
164
+ try:
165
+ plugin.check_latest_version()
166
+ except Exception as e:
167
+ click.echo(
168
+ f"Error checking latest version for plugin {plugin.name}: {e}", err=True
169
+ )
@@ -185,7 +185,7 @@ class BaseProjectConfig(BaseTaskFlowConfig, ProjectConfigPropertiesMixin):
185
185
  self.config_additional_yaml.update(additional_yaml_config)
186
186
 
187
187
  # Loading plugins as classes are loaded and available.
188
- plugins = load_plugins(self.logger)
188
+ plugins = load_plugins()
189
189
 
190
190
  # Load the plugin yaml config file if it exists
191
191
  for plugin in plugins:
@@ -15,7 +15,7 @@ class PluginBase(ABC):
15
15
  plugin_project_config: Optional[dict] = None
16
16
 
17
17
  def __init__(self, **kwargs) -> None:
18
- self.logger = kwargs.get("logger", logging.getLogger(self.__class__.__name__))
18
+ self.logger = kwargs.get("logger", logging.getLogger(__name__))
19
19
  self.path = inspect.getfile(self.__class__)
20
20
  self._load_config()
21
21
 
@@ -91,3 +91,8 @@ class PluginBase(ABC):
91
91
  def _initialize(self) -> None:
92
92
  """Override this method to add custom initialization logic."""
93
93
  pass
94
+
95
+ def check_latest_version(self):
96
+ """Override this method to check for the latest version of the plugin."""
97
+ # Implement logic to check for the latest version if needed
98
+ pass
@@ -5,20 +5,22 @@ from typing import Dict, List, Optional, Type
5
5
 
6
6
  from cumulusci.plugins.plugin_base import PluginBase
7
7
 
8
+ logger: logging.Logger = logging.getLogger(__name__)
8
9
 
9
- def get_plugin_manager(logger: logging.Logger) -> "PluginManager":
10
+
11
+ def get_plugin_manager() -> "PluginManager":
10
12
  """Get the plugin manager instance."""
11
- return PluginManager(logger=logger)
13
+ return PluginManager()
12
14
 
13
15
 
14
16
  @lru_cache(maxsize=50)
15
- def load_plugins(logger: logging.Logger) -> List[PluginBase]:
17
+ def load_plugins() -> List[PluginBase]:
16
18
  """Load all available plugins and return them as a list."""
17
- manager = get_plugin_manager(logger)
19
+ manager = get_plugin_manager()
18
20
  plugins = []
19
21
  for name, plugin_class in manager._plugins.items():
20
22
  try:
21
- plugin = plugin_class(logger=logger)
23
+ plugin = plugin_class()
22
24
  plugin.initialize()
23
25
  plugins.append(plugin)
24
26
  except Exception as e:
@@ -29,9 +31,9 @@ def load_plugins(logger: logging.Logger) -> List[PluginBase]:
29
31
  class PluginManager:
30
32
  """Manages the loading and access of CumulusCI plugins."""
31
33
 
32
- def __init__(self, logger: logging.Logger) -> None:
34
+ def __init__(self) -> None:
33
35
  self._plugins: Dict[str, Type[PluginBase]] = {}
34
- self.logger = logger
36
+ self.logger = logging.getLogger(__name__)
35
37
  self._load_plugins()
36
38
 
37
39
  def _load_plugins(self) -> None:
@@ -183,13 +183,8 @@ class Plugin(CCIDictModel):
183
183
 
184
184
  @root_validator()
185
185
  def _check_name_version(cls, values):
186
- has_name = values.get("name") is not None
187
- has_version = values.get("version") is not None
188
-
189
- # If one is defined, both should be defined
190
- if (has_name and not has_version) or (has_version and not has_name):
191
- raise ValueError("Plugin Name and Version must be defined.")
192
-
186
+ if values.get("name") is None:
187
+ raise ValueError("Plugin Name must be defined.")
193
188
  return values
194
189
 
195
190
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cumulusci-plus
3
- Version: 5.0.2
3
+ Version: 5.0.3
4
4
  Summary: Build and release tools for Salesforce developers
5
5
  Project-URL: Homepage, https://github.com/SFDO-Tooling/CumulusCI
6
6
  Project-URL: Changelog, https://cumulusci.readthedocs.io/en/stable/history.html
@@ -1,10 +1,10 @@
1
- cumulusci/__about__.py,sha256=xFH0agSAen6eEDzd6JDo0wynm0lQWngI4rS0ugCXpkc,22
2
- cumulusci/__init__.py,sha256=AEAc2_Eam61cUQ29qqRPsrxr9s8pG1Mqb2_XF56IwAg,612
1
+ cumulusci/__about__.py,sha256=3KRBJRMqAeS9He9z8EmZFP-1e-8HB3WRBuTW16TGxtw,22
2
+ cumulusci/__init__.py,sha256=jdanFQ_i8vbdO7Eltsf4pOfvV4mwa_Osyc4gxWKJ8ng,764
3
3
  cumulusci/__main__.py,sha256=kgRH-n5AJrH_daCK_EJwH7azAUxdXEmpi-r-dPGMR6Y,43
4
4
  cumulusci/conftest.py,sha256=AIL98BDwNAQtdo8YFmLKwav0tmrQ5dpbw1cX2FyGouQ,5108
5
5
  cumulusci/cumulusci.yml,sha256=FE1Dm7EhcMXY-XtLljbcbRyo_E0tvspaxqh8Nsiup3w,72365
6
6
  cumulusci/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- cumulusci/cli/cci.py,sha256=Qn_JvyylhBFafimNLZmTTBpyTuGyt-Wk8Qv5RVEzGXI,7804
7
+ cumulusci/cli/cci.py,sha256=Afjv85NJ6mnx4pzsQQFaH9kbbIgyErsPyA5tq52umWQ,8485
8
8
  cumulusci/cli/error.py,sha256=znj0YN8D2Grozm1u7mZAsJlmmdGebbuy0c1ofQluL4Q,4410
9
9
  cumulusci/cli/flow.py,sha256=rN_9WL2Z6dcx-oRngChIgei3E5Qmg3XVzk5ND1o0i3s,6171
10
10
  cumulusci/cli/logger.py,sha256=bpzSD0Bm0BAwdNbVR6yZXMREh2vm7jOytZevEaNoVR4,2267
@@ -12,13 +12,13 @@ cumulusci/cli/org.py,sha256=7WTZKkIRomVBIRxnvd-JRDAr9TANiW1SU4lYz6ZETU4,23383
12
12
  cumulusci/cli/plan.py,sha256=hfVCgF2et86N_RNrrFt6cPiTUl-tYUahwZch3tXZDkY,5285
13
13
  cumulusci/cli/project.py,sha256=GKFTNgvB_xj5yIk2Wwj3gwAN3-eXCZTk6PhwLYOH6cI,13312
14
14
  cumulusci/cli/robot.py,sha256=hGfa3UQkwxAyuY0MlV6KzUqhwwJCvm-BPo742cTOKIQ,3847
15
- cumulusci/cli/runtime.py,sha256=5-bXtjsq9lGZ0mAyik8ROfYgBrJkWG-e5mtkC2cNRYk,6986
15
+ cumulusci/cli/runtime.py,sha256=PFBy-idQy6WsUijiU61hd4-jL12UH_PRGHATJxsNacU,6991
16
16
  cumulusci/cli/service.py,sha256=Pv2wnCFUHBhNeXY3-m_ct8KGul21UyFt3bScxWUofME,19803
17
17
  cumulusci/cli/task.py,sha256=xm8lo0_LMMpcsUDv1Gj_HpW1phllyEW9IRm2lQSh5wg,10077
18
18
  cumulusci/cli/ui.py,sha256=Ld-2S6Kr204SBput-1pNAVlYglzcvbV5nVA_rGXlAo8,7346
19
- cumulusci/cli/utils.py,sha256=hFjhDzC0s5YQkC0qazPRVZiTV8fwJwRQoxDcQWjZKvk,4877
19
+ cumulusci/cli/utils.py,sha256=RZH46cGm47VVao10E7v-MPLEEs8_6GaH5zlDMP3Avlg,5517
20
20
  cumulusci/cli/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- cumulusci/cli/tests/test_cci.py,sha256=m7jz4aUjkYh6TxaFEVXAkrxEB_9fAorB1OeR_iXFgrY,18132
21
+ cumulusci/cli/tests/test_cci.py,sha256=wtzuXggLGrbMWjMQMVkdqXnYT_rqAr68xWCjTjbhH4w,18142
22
22
  cumulusci/cli/tests/test_error.py,sha256=zU2ccfGOivcVMpCManam18uyhlzT-HFb9xuMljU4few,6629
23
23
  cumulusci/cli/tests/test_flow.py,sha256=CIkZWvai5H4EOs35epMKWmxzDfauIEqL6BUwC8q3LPU,8535
24
24
  cumulusci/cli/tests/test_logger.py,sha256=-XBwSmtuelpx5sax0_E2xi4F9m_UsRkt2gn1o9ub6h8,834
@@ -55,7 +55,7 @@ cumulusci/core/config/base_task_flow_config.py,sha256=MKcvTT6fxqV-84l1ToxtXRlwbs
55
55
  cumulusci/core/config/marketing_cloud_service_config.py,sha256=wFiOx8WlOFotXHX9S20mC24hlZ0xe8OwsQZadtMkkQQ,3017
56
56
  cumulusci/core/config/oauth2_service_config.py,sha256=3gLoR38l-0zYgxtsQ5w7qUwWdrFkTF3R5EnbDmLJer8,653
57
57
  cumulusci/core/config/org_config.py,sha256=PpQwQ0NJCxaV8wq36_cH1BeqxisY_QOfxfQViRelCBk,26053
58
- cumulusci/core/config/project_config.py,sha256=MtIR24fbrRvLBbStaGF-nr5umN4HRdkU90_ZwbWetTI,27397
58
+ cumulusci/core/config/project_config.py,sha256=MLABmyfq65LkYtWVH7jLqMsK0pcs01WxLQruoTQB2iI,27386
59
59
  cumulusci/core/config/scratch_org_config.py,sha256=qM_DCep064l9rFlxfU84l-64vtpZ4KmFn4seVXBY5XQ,8762
60
60
  cumulusci/core/config/sfdx_org_config.py,sha256=EsuiNVjv1v9EbwexIIfvvsNtxbU43QpsArS-xSlOGfI,8069
61
61
  cumulusci/core/config/universal_config.py,sha256=9WmsgryTmzIfGNkOx-ky7iGHO4VdoFIWTJM8Z10OJFE,2649
@@ -137,8 +137,8 @@ cumulusci/oauth/tests/test_salesforce.py,sha256=2st3l56r0y3NzOTimKh72cS8CBc4e17w
137
137
  cumulusci/oauth/tests/cassettes/test_get_device_code.yaml,sha256=MceEgWYihI_H8jOPIQ5JS1diQwFQyb4A5ThNO6wCZt4,797
138
138
  cumulusci/oauth/tests/cassettes/test_get_device_oauth_token.yaml,sha256=_hPXaXb4eGSCNVywPaFEkM5ccU-LL1gCt736ul80Jko,2955
139
139
  cumulusci/plugins/__init__.py,sha256=YLUpB_4AnW3dpyR53uaRbuLhpcV8wGYbfJGzBucFMPg,80
140
- cumulusci/plugins/plugin_base.py,sha256=tXeqXkgn8rRQq--7B-zYFBPfIUKZWlJ6Wq9emws1hlo,3236
141
- cumulusci/plugins/plugin_loader.py,sha256=Wbv7XUnsaieQZRBshtniHO5zczGcMKZ3FtGheIIUSNI,2021
140
+ cumulusci/plugins/plugin_base.py,sha256=C12ssTQQJ9wH5T8tOAWZ2CV3P3lDZaDhL5Z9GAxU2cw,3421
141
+ cumulusci/plugins/plugin_loader.py,sha256=G82Wa8s3HabOzmmb-m7lm9h2f3PkGvEHzMuOd-yXWyk,1996
142
142
  cumulusci/robotframework/CumulusCI.py,sha256=u76Dx2I3jBgBFqeL1QrwL9v1zwVOSephru6pe8b-TP0,13717
143
143
  cumulusci/robotframework/CumulusCI.robot,sha256=e15VUY7CwzjBgCuIep5a-bPmsqtDeraS54sr3U-3haI,122
144
144
  cumulusci/robotframework/Performance.py,sha256=dlZixAJMvCrsBtXPaYrIql_MWwBzBZi0KgH4D9qEGy0,6341
@@ -711,7 +711,7 @@ cumulusci/utils/xml/robot_xml.py,sha256=V9daywDdxBMDUYvMchWaPx-rj9kCXYskua1hvG_t
711
711
  cumulusci/utils/xml/salesforce_encoding.py,sha256=ahPJWYfq3NMW8oSjsrzzQnAqghL-nQBWn-lSXuGjhIc,3071
712
712
  cumulusci/utils/xml/test/test_metadata_tree.py,sha256=4jzKqYUEVzK6H8iCWMTD2v2hRssz2OeLspQO9osqm2E,8517
713
713
  cumulusci/utils/xml/test/test_salesforce_encoding.py,sha256=DN0z5sM6Lk1U2hD7nYt7eYK1BjJy3-d5OdHk4HsPo6Y,6309
714
- cumulusci/utils/yaml/cumulusci_yml.py,sha256=TwyoW08qP41Q5xORhVpa06CdbIk92x7Nfk7DL3VQqIo,11489
714
+ cumulusci/utils/yaml/cumulusci_yml.py,sha256=cWk2o7UzyX4JsDQIAEprglKqNl-iC78_QEQA4yjjJgY,11279
715
715
  cumulusci/utils/yaml/model_parser.py,sha256=aTnlWwfMpDOGnlVKLvPAl5oLH0FReVeqDM-EUA4s7k8,5057
716
716
  cumulusci/utils/yaml/safer_loader.py,sha256=O7hhI2DqVA0GV4oY4rlB084QCc_eXFg2HTNHlfGVOcQ,2388
717
717
  cumulusci/utils/yaml/tests/bad_cci.yml,sha256=Idj6subt7pNZk8A1Vt3bs_lM99Ash5ZVgOho1drMTXQ,17
@@ -736,9 +736,9 @@ cumulusci/vcs/tests/dummy_service.py,sha256=RltOUpMIhSDNrfxk0LhLqlH4ppC0sK6NC2cO
736
736
  cumulusci/vcs/tests/test_vcs_base.py,sha256=9mp6uZ3lTxY4onjUNCucp9N9aB3UylKS7_2Zu_hdAZw,24331
737
737
  cumulusci/vcs/tests/test_vcs_bootstrap.py,sha256=N0NA48-rGNIIjY3Z7PtVnNwHObSlEGDk2K55TQGI8g4,27954
738
738
  cumulusci/vcs/utils/__init__.py,sha256=py4fEcHM7Vd0M0XWznOlywxaeCtG3nEVGmELmEKVGU8,869
739
- cumulusci_plus-5.0.2.dist-info/METADATA,sha256=0wEQqHDsIj9iGuWEJi2L98vP28LQjlNRcY0iQSn3_Rs,6134
740
- cumulusci_plus-5.0.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
741
- cumulusci_plus-5.0.2.dist-info/entry_points.txt,sha256=nTtu04b9iLXhzADcTrb5PwmdXE6e2MTUAMh9OK6Z2pg,80
742
- cumulusci_plus-5.0.2.dist-info/licenses/AUTHORS.rst,sha256=PvewjKImdKPhhJ6xR2EEZ4T7GbpY2ZeAeyWm2aLtiMQ,676
743
- cumulusci_plus-5.0.2.dist-info/licenses/LICENSE,sha256=NFsF_s7RVXk2dU6tmRAN8wF45pnD98VZ5IwqOsyBcaU,1499
744
- cumulusci_plus-5.0.2.dist-info/RECORD,,
739
+ cumulusci_plus-5.0.3.dist-info/METADATA,sha256=eU5l0urzUbV5t1cdCjCtJjspJXAKYmYOHBWiq9CYyzc,6134
740
+ cumulusci_plus-5.0.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
741
+ cumulusci_plus-5.0.3.dist-info/entry_points.txt,sha256=nTtu04b9iLXhzADcTrb5PwmdXE6e2MTUAMh9OK6Z2pg,80
742
+ cumulusci_plus-5.0.3.dist-info/licenses/AUTHORS.rst,sha256=PvewjKImdKPhhJ6xR2EEZ4T7GbpY2ZeAeyWm2aLtiMQ,676
743
+ cumulusci_plus-5.0.3.dist-info/licenses/LICENSE,sha256=NFsF_s7RVXk2dU6tmRAN8wF45pnD98VZ5IwqOsyBcaU,1499
744
+ cumulusci_plus-5.0.3.dist-info/RECORD,,