Skip to content

Commit a65ed83

Browse files
committed
Address review feedback: move aliases into type_definitions and improve error handling
1 parent 1bbe71d commit a65ed83

3 files changed

Lines changed: 19 additions & 22 deletions

File tree

lib/ramble/ramble/cmd/edit.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,7 @@ def normalize_type_name(type_name):
4141
if norm_type in extra_type_aliases:
4242
return extra_type_aliases[norm_type]
4343

44-
try:
45-
return ramble.repository.simplify_object_type(type_name).name
46-
except ramble.repository.UnknownObjectTypeError:
47-
return type_name
44+
return ramble.repository.simplify_object_type(type_name).name
4845

4946

5047
def find_all_matches(name, repo_path=None, namespace=None, obj_type=None):
@@ -160,11 +157,6 @@ def edit(parser, args):
160157
# Normalize input type if specified
161158
if args.type:
162159
args.type = normalize_type_name(args.type)
163-
extra_types = ["test", "command", "docs", "module"]
164-
allowed_types = ramble.repository.OBJECT_NAMES + extra_types
165-
if args.type not in allowed_types:
166-
# Trigger KeyError like the original code did
167-
_ = ramble.repository.ObjectTypes[args.type]
168160

169161
if name:
170162
matches = find_all_matches(name, args.repo, args.namespace, args.type)

lib/ramble/ramble/repository.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@
101101
"config_section": "package_manager_repos",
102102
"accepted_configs": ["package_manager_repo.yaml", unified_config],
103103
"singular": "package manager",
104+
"aliases": ["pkg", "package"],
104105
},
105106
ObjectTypes.workflow_managers: {
106107
"file_name": "workflow_manager.py",
@@ -109,6 +110,7 @@
109110
"config_section": "workflow_manager_repos",
110111
"accepted_configs": ["workflow_manager_repo.yaml", unified_config],
111112
"singular": "workflow manager",
113+
"aliases": ["workflow"],
112114
},
113115
ObjectTypes.systems: {
114116
"file_name": "system.py",
@@ -133,6 +135,7 @@
133135
"config_section": "base_class_repos",
134136
"accepted_configs": ["base_class_repo.yaml", unified_config],
135137
"singular": "base class",
138+
"aliases": ["base"],
136139
},
137140
ObjectTypes.base_applications: {
138141
"file_name": "base_application.py",
@@ -157,6 +160,7 @@
157160
"config_section": "base_package_manager_repos",
158161
"accepted_configs": ["base_package_manager_repo.yaml", unified_config],
159162
"singular": "base package manager",
163+
"aliases": ["base_pkg"],
160164
},
161165
ObjectTypes.base_workflow_managers: {
162166
"file_name": "base_workflow_manager.py",
@@ -165,6 +169,7 @@
165169
"config_section": "base_workflow_manager_repos",
166170
"accepted_configs": ["base_workflow_manager_repo.yaml", unified_config],
167171
"singular": "base workflow manager",
172+
"aliases": ["base_workflow"],
168173
},
169174
ObjectTypes.base_systems: {
170175
"file_name": "base_system.py",
@@ -209,19 +214,18 @@ def _normalize_type_key(key):
209214
return str(key).lower().replace("-", "_").replace(" ", "_")
210215

211216

212-
_TYPE_ALIASES = {
213-
"pkg": ObjectTypes.package_managers,
214-
"package": ObjectTypes.package_managers,
215-
"packages": ObjectTypes.package_managers,
216-
"base_pkg": ObjectTypes.base_package_managers,
217-
"workflow": ObjectTypes.workflow_managers,
218-
"workflows": ObjectTypes.workflow_managers,
219-
"base": ObjectTypes.base_classes,
220-
}
217+
_TYPE_ALIASES = {}
221218

222219
for _obj in ObjectTypes:
223220
_tdef = type_definitions.get(_obj, {})
224-
for _val in (_obj.name, _tdef.get("singular"), _tdef.get("abbrev"), _tdef.get("dir_name")):
221+
_candidates = [
222+
_obj.name,
223+
_tdef.get("singular"),
224+
_tdef.get("abbrev"),
225+
_tdef.get("dir_name"),
226+
*_tdef.get("aliases", []),
227+
]
228+
for _val in _candidates:
225229
if isinstance(_val, str):
226230
for _v in (_val, f"{_val}s"):
227231
_norm = _normalize_type_key(_v)

lib/ramble/ramble/test/cmd/edit.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import pytest
1010

11+
import ramble.repository
1112
from ramble.main import RambleCommand
1213

1314
edit = RambleCommand("edit")
@@ -118,7 +119,7 @@ def test_edit_singular_type_with_spaces_hyphens(mock_editor):
118119

119120

120121
def test_edit_unknown_type():
121-
with pytest.raises(KeyError):
122+
with pytest.raises(ramble.repository.UnknownObjectTypeError):
122123
edit("-t", "unknown_type", "spack")
123124

124125

@@ -174,8 +175,8 @@ def test_normalize_type_name():
174175
assert normalize_type_name("TEST") == "test"
175176
assert normalize_type_name("Command") == "command"
176177
assert normalize_type_name("APP") == "applications"
177-
assert normalize_type_name("MODIFIER") == "modifiers"
178-
assert normalize_type_name("unknown_type") == "unknown_type"
178+
with pytest.raises(ramble.repository.UnknownObjectTypeError):
179+
normalize_type_name("unknown_type")
179180

180181

181182
def test_edit_abbreviated_type(mock_modifiers, mock_editor):

0 commit comments

Comments
 (0)