Repository: planetlabs/planet-client-python

Issue:
Inconsistent naming of subscriptions CLI: `describe` vs `get`
**Expected behavior**
All CLI commands use the same verb to get a single item.

**Actual behavior (describe the problem)**
Using the CLI most all the commands that get a single 'thing' (saved search, order, etc) use `get` as the verb. But subscriptions using `planet subscriptions describe` for the same functionality. It'd be a lot nicer if they were all the same so you don't have to remember which one to use.

**Workaround**
Remember that subscriptions is different.


Discussion:

Patch:
diff --git a/planet/cli/subscriptions.py b/planet/cli/subscriptions.py
index 7e0b21d..4e1a1da 100644
--- a/planet/cli/subscriptions.py
+++ b/planet/cli/subscriptions.py
@@ -113,14 +113,14 @@ async def update_subscription_cmd(ctx, subscription_id, request, pretty):
         echo_json(sub, pretty)
 
 
-@subscriptions.command(name='describe')
+@subscriptions.command(name='get')
 @click.argument('subscription_id')
 @pretty
 @click.pass_context
 @translate_exceptions
 @coro
-async def describe_subscription_cmd(ctx, subscription_id, pretty):
-    """Gets the description of a subscription and prints the API response."""
+async def get_subscription_cmd(ctx, subscription_id, pretty):
+    """Get the description of a subscription."""
     async with subscriptions_client(ctx) as client:
         sub = await client.get_subscription(subscription_id)
         echo_json(sub, pretty)


Test patch:
diff --git a/tests/integration/test_subscriptions_api.py b/tests/integration/test_subscriptions_api.py
index 5d08113..e1ea533 100644
--- a/tests/integration/test_subscriptions_api.py
+++ b/tests/integration/test_subscriptions_api.py
@@ -93,8 +93,8 @@ cancel_mock.route(M(url=f'{TEST_URL}/test/cancel'),
                   method='POST').mock(side_effect=modify_response)
 
 # Mock the subscription description API endpoint.
-describe_mock = respx.mock()
-describe_mock.route(
+get_mock = respx.mock()
+get_mock.route(
     M(url=f'{TEST_URL}/test'),
     method='GET').mock(return_value=Response(200,
                                              json={
@@ -247,7 +247,7 @@ async def test_get_subscription_failure():
 
 
 @pytest.mark.anyio
-@describe_mock
+@get_mock
 async def test_get_subscription_success(monkeypatch):
     """Subscription description fetched, has the expected items."""
     async with Session() as session:
diff --git a/tests/integration/test_subscriptions_cli.py b/tests/integration/test_subscriptions_cli.py
index edaa3c2..3f9feef 100644
--- a/tests/integration/test_subscriptions_cli.py
+++ b/tests/integration/test_subscriptions_cli.py
@@ -3,7 +3,7 @@
 There are 6 subscriptions commands:
 
 [x] planet subscriptions list
-[x] planet subscriptions describe
+[x] planet subscriptions get
 [x] planet subscriptions results
 [x] planet subscriptions create
 [x] planet subscriptions update
@@ -24,7 +24,7 @@ from test_subscriptions_api import (api_mock,
                                     create_mock,
                                     update_mock,
                                     cancel_mock,
-                                    describe_mock,
+                                    get_mock,
                                     res_api_mock,
                                     TEST_URL)
 
@@ -192,10 +192,10 @@ def test_subscriptions_update_success(invoke):
 
 
 @failing_api_mock
-def test_subscriptions_describe_failure(invoke):
+def test_subscriptions_get_failure(invoke):
     """Describe command exits gracefully from an API error."""
     result = invoke(
-        ['describe', 'test'],
+        ['get', 'test'],
         # Note: catch_exceptions=True (the default) is required if we want
         # to exercise the "translate_exceptions" decorator and test for
         # failure.
@@ -204,11 +204,11 @@ def test_subscriptions_describe_failure(invoke):
     assert result.exit_code == 1  # failure.
 
 
-@describe_mock
-def test_subscriptions_describe_success(invoke):
+@get_mock
+def test_subscriptions_get_success(invoke):
     """Describe command succeeds."""
     result = invoke(
-        ['describe', 'test'],
+        ['get', 'test'],
         # Note: catch_exceptions=True (the default) is required if we want
         # to exercise the "translate_exceptions" decorator and test for
         # failure.