11import asyncio
22import dataclasses
3+ import pathlib
34
45from finecode_extension_api import code_action
56from finecode_extension_api .actions import prepare_envs as prepare_envs_action , install_deps_in_env as install_deps_in_env_action
@@ -55,7 +56,8 @@ async def run(
5556 dependencies = []
5657
5758 process_raw_deps (
58- env_raw_deps , env_deps_config , dependencies , deps_groups
59+ env_raw_deps , env_deps_config , dependencies , deps_groups ,
60+ project_def_path = env .project_def_path
5961 )
6062
6163 install_deps_payload = install_deps_in_env_action .InstallDepsInEnvRunPayload (
@@ -86,13 +88,26 @@ async def run(
8688
8789
8890def process_raw_deps (
89- raw_deps : list , env_deps_config , dependencies , deps_groups
91+ raw_deps : list , env_deps_config , dependencies , deps_groups ,
92+ project_def_path : pathlib .Path , _seen : set [str ] | None = None
9093) -> None :
94+ if _seen is None :
95+ _seen = set ()
9196 for raw_dep in raw_deps :
9297 if isinstance (raw_dep , str ):
9398 name = dependency_config_utils .get_dependency_name (raw_dep )
94- version_or_source = raw_dep [len (name ) :]
95- editable = env_deps_config .get (name , {}).get ("editable" , False )
99+ if name in _seen :
100+ continue
101+ _seen .add (name )
102+ dep_config = env_deps_config .get (name , {})
103+ editable = dep_config .get ("editable" , False )
104+ if editable and (raw_path := dep_config .get ("path" )):
105+ resolved = pathlib .Path (raw_path )
106+ if not resolved .is_absolute ():
107+ resolved = (project_def_path .parent / resolved ).resolve ()
108+ version_or_source = f" @ file://{ resolved .as_posix ()} "
109+ else :
110+ version_or_source = raw_dep [len (name ):]
96111 dependencies .append (
97112 {
98113 "name" : name ,
@@ -103,5 +118,6 @@ def process_raw_deps(
103118 elif isinstance (raw_dep , dict ) and "include-group" in raw_dep :
104119 included_group_deps = deps_groups .get (raw_dep ["include-group" ], [])
105120 process_raw_deps (
106- included_group_deps , env_deps_config , dependencies , deps_groups
121+ included_group_deps , env_deps_config , dependencies , deps_groups ,
122+ project_def_path , _seen
107123 )
0 commit comments