-
-
Notifications
You must be signed in to change notification settings - Fork 326
/
Copy pathenv.py
32 lines (23 loc) · 1.03 KB
/
env.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from __future__ import annotations
import os
from hatchling.version.source.plugin.interface import VersionSourceInterface
class EnvSource(VersionSourceInterface):
PLUGIN_NAME = 'env'
def get_version_data(self) -> dict:
variable = self.config.get('variable', '')
if not variable:
message = 'option `variable` must be specified'
raise ValueError(message)
if not isinstance(variable, str):
message = 'option `variable` must be a string'
raise TypeError(message)
if variable not in os.environ:
default = self.config.get('default', '')
if default:
return {'version': default}
message = f'environment variable `{variable}` is not set'
raise RuntimeError(message)
return {'version': os.environ[variable]}
def set_version(self, version: str, version_data: dict) -> None: # noqa: ARG002, PLR6301
message = 'Cannot set environment variables'
raise NotImplementedError(message)