33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132 | class TaskGroupV2(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
task_list: list[TaskV2] = Relationship(
sa_relationship_kwargs=dict(
lazy="selectin", cascade="all, delete-orphan"
),
)
user_id: int = Field(foreign_key="user_oauth.id")
user_group_id: int | None = Field(
foreign_key="usergroup.id", default=None, ondelete="SET NULL"
)
origin: str
pkg_name: str
version: str | None = None
python_version: str | None = None
pixi_version: str | None = None
path: str | None = None
archive_path: str | None = None
pip_extras: str | None = None
pinned_package_versions_pre: dict[str, str] = Field(
sa_column=Column(
JSONB,
server_default="{}",
default={},
nullable=True,
),
)
pinned_package_versions_post: dict[str, str] = Field(
sa_column=Column(
JSONB,
server_default="{}",
default={},
nullable=True,
),
)
env_info: str | None = None
venv_path: str | None = None
venv_size_in_kB: int | None = None
venv_file_number: int | None = None
active: bool = True
timestamp_created: datetime = Field(
default_factory=get_timestamp,
sa_column=Column(DateTime(timezone=True), nullable=False),
)
timestamp_last_used: datetime = Field(
default_factory=get_timestamp,
sa_column=Column(
DateTime(timezone=True),
nullable=False,
server_default=(
datetime(2024, 11, 20, tzinfo=timezone.utc).isoformat()
),
),
)
@property
def pip_install_string(self) -> str:
"""
Prepare string to be used in `python -m pip install`.
"""
_check_origin_not_pixi(self.origin)
extras = f"[{self.pip_extras}]" if self.pip_extras is not None else ""
if self.archive_path is not None:
return f"{self.archive_path}{extras}"
else:
if self.version is None:
raise ValueError(
"Cannot run `pip_install_string` with "
f"{self.pkg_name=}, {self.archive_path=}, {self.version=}."
)
return f"{self.pkg_name}{extras}=={self.version}"
@property
def pinned_package_versions_pre_string(self) -> str:
"""
Prepare string to be used in `python -m pip install`.
"""
_check_origin_not_pixi(self.origin)
if self.pinned_package_versions_pre is None:
return ""
output = _create_dependency_string(self.pinned_package_versions_pre)
return output
@property
def pinned_package_versions_post_string(self) -> str:
"""
Prepare string to be used in `python -m pip install`.
"""
_check_origin_not_pixi(self.origin)
if self.pinned_package_versions_post is None:
return ""
output = _create_dependency_string(self.pinned_package_versions_post)
return output
|