Skip to content

Commit 209e8d1

Browse files
authored
Merge branch 'main' into update-sfdc-api-v64.0
2 parents b87b449 + f179b0c commit 209e8d1

21 files changed

Lines changed: 1554 additions & 1001 deletions

.github/workflows/feature_test.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
- name: Set up uv
3131
uses: SFDO-Tooling/setup-uv@main
3232
with:
33-
version: "0.5.0"
33+
version: "0.8.4"
3434
enable-cache: true
3535
- name: Install dependencies
3636
run: uv sync --group docs
@@ -56,7 +56,7 @@ jobs:
5656
- name: Set up uv
5757
uses: SFDO-Tooling/setup-uv@main
5858
with:
59-
version: "0.5.0"
59+
version: "0.8.4"
6060
enable-cache: true
6161
- name: Install dependencies
6262
run: uv sync -p ${{ matrix.python-version }}
@@ -80,7 +80,7 @@ jobs:
8080
- name: Set up uv
8181
uses: SFDO-Tooling/setup-uv@main
8282
with:
83-
version: "0.5.0"
83+
version: "0.8.4"
8484
enable-cache: true
8585
- name: Install dependencies
8686
run: uv sync --all-extras -p ${{ matrix.python-version }}
@@ -99,7 +99,7 @@ jobs:
9999
- name: Set up uv
100100
uses: SFDO-Tooling/setup-uv@main
101101
with:
102-
version: "0.5.0"
102+
version: "0.8.4"
103103
enable-cache: true
104104
- name: Install dependencies
105105
run: uv sync -p 3.11

.github/workflows/release_test_sfdx.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
- name: Set up uv
4949
uses: SFDO-Tooling/setup-uv@main
5050
with:
51-
version: "0.5.0"
51+
version: "0.8.4"
5252
enable-cache: true
5353
- name: Install Python dependencies
5454
run: uv sync

.github/workflows/slow_integration_tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
- name: Set up uv
3535
uses: SFDO-Tooling/setup-uv@main
3636
with:
37-
version: "0.5.0"
37+
version: "0.8.4"
3838
enable-cache: true
3939
- name: Install dependencies
4040
run: uv sync -p 3.11

AUTHORS.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,4 @@ For example:
3939
* Chandler Anderson (zenibako)
4040
* Ben French (BenjaminFrench)
4141
* Rupert Barrow (rupertbarrow)
42+
* Rupesh J (rupeshjSFDC)

cumulusci/__about__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "4.4.0"
1+
__version__ = "4.5.0"

cumulusci/__init__.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import os
22
import sys
3+
from importlib.metadata import PackageNotFoundError, version
34

45
from simple_salesforce import api, bulk
56

6-
from cumulusci.__about__ import __version__
7-
8-
__import__("pkg_resources").declare_namespace("cumulusci")
9-
107
__location__ = os.path.dirname(os.path.realpath(__file__))
118

12-
__version__ = __version__
9+
try:
10+
__version__ = version("cumulusci")
11+
except PackageNotFoundError:
12+
__version__ = "unknown"
1313

1414
if sys.version_info < (3, 8): # pragma: no cover
1515
raise Exception("CumulusCI requires Python 3.8+.")

cumulusci/cli/robot.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
import importlib.metadata
12
import sys
23

34
import click
4-
import pkg_resources
55
import sarge
66

77
from .runtime import pass_runtime
@@ -109,5 +109,8 @@ def _require_npm():
109109

110110
def _is_package_installed(package_name):
111111
"""Return True if the given package is installed"""
112-
# technique shamelessly stolen from https://stackoverflow.com/a/44210735/7432
113-
return package_name in {pkg.key for pkg in pkg_resources.working_set}
112+
try:
113+
importlib.metadata.distribution(package_name)
114+
return True
115+
except importlib.metadata.PackageNotFoundError:
116+
return False

cumulusci/cli/runtime.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import click
88
import keyring
9-
import pkg_resources
9+
from packaging import version
1010

1111
from cumulusci.cli.utils import get_installed_version
1212
from cumulusci.core.exceptions import ConfigError, KeychainKeyNotFound, OrgNotFound
@@ -143,7 +143,7 @@ def check_cumulusci_version(self):
143143
if self.project_config:
144144
min_cci_version = self.project_config.minimum_cumulusci_version
145145
if min_cci_version:
146-
parsed_version = pkg_resources.parse_version(min_cci_version)
146+
parsed_version = version.parse(min_cci_version)
147147
if get_installed_version() < parsed_version:
148148
raise click.UsageError(
149149
f"This project requires CumulusCI version {min_cci_version} or later. "

cumulusci/cli/service.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,25 @@ def list_commands(self, ctx):
8383
services = self._get_services_config(runtime)
8484
return sorted(services.keys())
8585

86+
def invoke(self, ctx):
87+
"""Override to show available services instead of 'Missing command' error"""
88+
try:
89+
return super().invoke(ctx)
90+
except click.UsageError as e:
91+
if "Missing command" in str(e):
92+
# No subcommand provided - list available services
93+
services = self.list_commands(ctx)
94+
if services:
95+
click.echo("Available services:")
96+
for service in services:
97+
click.echo(f" {service}")
98+
else:
99+
click.echo("No services available to configure.")
100+
return
101+
else:
102+
# Re-raise other usage errors
103+
raise
104+
86105
def _build_param(self, attribute: str, details: dict) -> click.Option:
87106
required = details.get("required", False)
88107
default_factory: Optional[Callable] = self._get_callable_default(
@@ -267,6 +286,7 @@ def callback(*args, **kwargs):
267286
cls=ConnectServiceCommand,
268287
name="connect",
269288
help="Connect an external service to CumulusCI",
289+
no_args_is_help=False,
270290
)
271291
def service_connect():
272292
pass

cumulusci/cli/tests/test_cci.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
from unittest import mock
99

1010
import click
11-
import pkg_resources
1211
import pytest
12+
from packaging import version
1313
from requests.exceptions import ConnectionError
1414
from rich.console import Console
1515

@@ -402,7 +402,7 @@ def test_cli():
402402

403403
@mock.patch(
404404
"cumulusci.cli.cci.get_latest_final_version",
405-
mock.Mock(return_value=pkg_resources.parse_version("100")),
405+
mock.Mock(return_value=version.parse("100")),
406406
)
407407
def test_version(capsys):
408408
run_click_command(cci.version)
@@ -413,7 +413,7 @@ def test_version(capsys):
413413

414414
@mock.patch(
415415
"cumulusci.cli.cci.get_latest_final_version",
416-
mock.Mock(return_value=pkg_resources.parse_version("1")),
416+
mock.Mock(return_value=version.parse("1")),
417417
)
418418
def test_version__latest(capsys):
419419
run_click_command(cci.version)

0 commit comments

Comments
 (0)