@@ -67,7 +67,13 @@ def assemble(cls, package_data, resource, codebase, package_adder):
6767 package_data .extra_data [attribute ] = 'workspace'
6868 workspace_package_data [attribute ] = getattr (package_data , attribute )
6969
70- workspace_root_path = resource .parent (codebase ).path
70+ workspace_root = resource .parent (codebase )
71+ if not workspace_root :
72+ # If there's no parent (e.g., scanning a single file), use the directory part of the resource path
73+ workspace_root_path = os .path .dirname (resource .path )
74+ else :
75+ workspace_root_path = workspace_root .path
76+
7177 if workspace_package_data and workspace_members :
7278
7379 # TODO: support glob patterns found in cargo workspaces
@@ -103,12 +109,14 @@ def assemble(cls, package_data, resource, codebase, package_adder):
103109 package_adder = package_adder ,
104110 )
105111 else :
106- yield from cls .assemble_from_many_datafiles (
107- datafile_name_patterns = ('Cargo.toml' , 'cargo.toml' , 'Cargo.lock' , 'cargo.lock' ),
108- directory = resource .parent (codebase ),
109- codebase = codebase ,
110- package_adder = package_adder ,
111- )
112+ parent_resource = resource .parent (codebase )
113+ if parent_resource :
114+ yield from cls .assemble_from_many_datafiles (
115+ datafile_name_patterns = ('Cargo.toml' , 'cargo.toml' , 'Cargo.lock' , 'cargo.lock' ),
116+ directory = parent_resource ,
117+ codebase = codebase ,
118+ package_adder = package_adder ,
119+ )
112120
113121 @classmethod
114122 def update_resource_package_data (cls , workspace , workspace_package_data , resource_package_data , mapping = None ):
0 commit comments