@@ -59,7 +59,13 @@ def assemble(cls, package_data, resource, codebase, package_adder):
5959 package_data .extra_data [attribute ] = 'workspace'
6060 workspace_package_data [attribute ] = getattr (package_data , attribute )
6161
62- workspace_root_path = resource .parent (codebase ).path
62+ workspace_root = resource .parent (codebase )
63+ if not workspace_root :
64+ # If there's no parent (e.g., scanning a single file), use the directory part of the resource path
65+ workspace_root_path = os .path .dirname (resource .path )
66+ else :
67+ workspace_root_path = workspace_root .path
68+
6369 if workspace_package_data and workspace_members :
6470
6571 # TODO: support glob patterns found in cargo workspaces
@@ -95,12 +101,14 @@ def assemble(cls, package_data, resource, codebase, package_adder):
95101 package_adder = package_adder ,
96102 )
97103 else :
98- yield from cls .assemble_from_many_datafiles (
99- datafile_name_patterns = ('Cargo.toml' , 'cargo.toml' , 'Cargo.lock' , 'cargo.lock' ),
100- directory = resource .parent (codebase ),
101- codebase = codebase ,
102- package_adder = package_adder ,
103- )
104+ parent_resource = resource .parent (codebase )
105+ if parent_resource :
106+ yield from cls .assemble_from_many_datafiles (
107+ datafile_name_patterns = ('Cargo.toml' , 'cargo.toml' , 'Cargo.lock' , 'cargo.lock' ),
108+ directory = parent_resource ,
109+ codebase = codebase ,
110+ package_adder = package_adder ,
111+ )
104112
105113 @classmethod
106114 def update_resource_package_data (cls , workspace , workspace_package_data , resource_package_data , mapping = None ):
0 commit comments