Skip to content

Commit 5562d7c

Browse files
committed
new intermediate version
1 parent e7f6806 commit 5562d7c

5 files changed

Lines changed: 28 additions & 3 deletions

File tree

src/cpp_dev/dependency/conan/command_wrapper.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def conan_list(remote: str, name: str) -> Mapping[ConanPackageReferenceWithSeman
7575
### Conan Graph Build-Order ###
7676
###############################
7777
class ConanPackageInfo(BaseModel):
78-
settings: Mapping[str, str] | None = None
78+
settings: ConanSettings | None = None
7979

8080
class ConanPackageAttributes(BaseModel):
8181
info: ConanPackageInfo

src/cpp_dev/dependency/conan/provider.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def collect_dependency_hull(self, deps: list[DependencySpecifier]) -> list[Depen
4545
conanfile_path = create_conanfile(tmp_dir, deps)
4646
conan_settings = self._settings if self._settings else {}
4747
build_order = conan_graph_buildorder(conanfile_path, self._profile, conan_settings)
48-
48+
_construct_depenencies(build_order.order)
4949
print(build_order)
5050

5151

@@ -65,3 +65,6 @@ def _retrieve_conan_package_references(repository: str, name: str) -> list[Conan
6565
if ref.user == repository
6666
]
6767
return package_references
68+
69+
def _construct_depenencies(build_order: list[list[ConanRecipeAttributes]]) -> list[Dependency]:
70+
...

src/cpp_dev/dependency/conan/types.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ class ConanPackageReferenceWithSemanticVersion(RootModel):
2828

2929
root: str
3030

31+
@staticmethod
32+
def from_raw_string_with_revision(raw_string: str) -> ConanPackageReferenceWithSemanticVersion:
33+
REVISION_MARKER = "#"
34+
raw_string, revision = raw_string.rsplit(REVISION_MARKER, 1)
35+
return ConanPackageReferenceWithSemanticVersion(raw_string)
36+
3137
@model_validator(mode="after")
3238
def validate_reference(self) -> ConanPackageReferenceWithSemanticVersion:
3339
CONAN_REFERENCE_PATTERN = r"(?P<name>[a-zA-Z0-9_]+)/(?P<version>\d+\.\d+\.\d+)@(?P<user>[a-zA-Z0-9_]+)/(?P<channel>[a-zA-Z0-9_]+)"

src/tests/cpp_dev/dependency/conan/test_provider.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,17 @@
2626
def conan_test_environment(tmp_path: Path, unused_http_port: int) -> Generator[ConanTestEnv]:
2727
TEST_PACKAGES = [
2828
ConanTestPackage(
29-
ref=ConanPackageReferenceWithSemanticVersion("dep/1.0.0@official/cppdev"),
29+
ref=ConanPackageReferenceWithSemanticVersion("subdep/1.0.0@official/cppdev"),
3030
dependencies=[],
3131
cpp_standard="c++20",
3232
),
33+
ConanTestPackage(
34+
ref=ConanPackageReferenceWithSemanticVersion("dep/1.0.0@official/cppdev"),
35+
dependencies=[
36+
ConanPackageReferenceWithSemanticVersion("subdep/1.0.0@official/cppdev")
37+
],
38+
cpp_standard="c++20",
39+
),
3340
ConanTestPackage(
3441
ref=ConanPackageReferenceWithSemanticVersion("cpd/1.0.0@official/cppdev"),
3542
dependencies=[],

src/tests/cpp_dev/dependency/conan/test_types.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,12 @@ def test_conan_package_reference_valid() -> None:
2121
assert package_ref.version == SemanticVersion("1.2.3")
2222
assert package_ref.user == "user"
2323
assert package_ref.channel == "channel"
24+
25+
26+
def test_conan_package_reference_from_raw_string_with_revision() -> None:
27+
package_ref = ConanPackageReferenceWithSemanticVersion.from_raw_string_with_revision("name/1.2.3@user/channel#revision")
28+
29+
assert package_ref.name == "name"
30+
assert package_ref.version == SemanticVersion("1.2.3")
31+
assert package_ref.user == "user"
32+
assert package_ref.channel == "channel"

0 commit comments

Comments
 (0)