94 lines
3.7 KiB
Python
94 lines
3.7 KiB
Python
import json
|
|
import os
|
|
|
|
|
|
def get_conditional_configuration_variable(key, default):
|
|
"""Retrieves the configuration variable conditionally.
|
|
##1. check if variable is in environment
|
|
##2. check if variable is in config file
|
|
##3. return default value
|
|
Args:
|
|
key (string): The name of the configuration variable.
|
|
default (string): The default value of the configuration variable.
|
|
Returns:
|
|
string: The value of the conditional configuration variable.
|
|
""" # noqa: E501 // docs
|
|
|
|
os_name = os.name
|
|
|
|
if os_name == "nt":
|
|
default_path = os.path.join(os.getenv("USERPROFILE"), "roboflow/config.json")
|
|
else:
|
|
default_path = os.path.join(os.getenv("HOME"), ".config/roboflow/config.json")
|
|
|
|
# default configuration location
|
|
conf_location = os.getenv(
|
|
"ROBOFLOW_CONFIG_DIR",
|
|
default=default_path,
|
|
)
|
|
|
|
# read config file for roboflow if logged in from python or CLI
|
|
if os.path.exists(conf_location):
|
|
with open(conf_location) as f:
|
|
config = json.load(f)
|
|
else:
|
|
config = {}
|
|
|
|
if os.getenv(key) is not None:
|
|
return os.getenv(key)
|
|
elif key in config.keys():
|
|
return config[key]
|
|
else:
|
|
return default
|
|
|
|
|
|
CLASSIFICATION_MODEL = os.getenv("CLASSIFICATION_MODEL", "ClassificationModel")
|
|
INSTANCE_SEGMENTATION_MODEL = "InstanceSegmentationModel"
|
|
OBJECT_DETECTION_MODEL = os.getenv("OBJECT_DETECTION_MODEL", "ObjectDetectionModel")
|
|
SEMANTIC_SEGMENTATION_MODEL = "SemanticSegmentationModel"
|
|
PREDICTION_OBJECT = os.getenv("PREDICTION_OBJECT", "Prediction")
|
|
|
|
API_URL = get_conditional_configuration_variable("API_URL", "https://api.roboflow.com")
|
|
APP_URL = get_conditional_configuration_variable("APP_URL", "https://app.roboflow.com")
|
|
UNIVERSE_URL = get_conditional_configuration_variable("UNIVERSE_URL", "https://universe.roboflow.com")
|
|
|
|
INSTANCE_SEGMENTATION_URL = get_conditional_configuration_variable(
|
|
"INSTANCE_SEGMENTATION_URL", "https://outline.roboflow.com"
|
|
)
|
|
SEMANTIC_SEGMENTATION_URL = get_conditional_configuration_variable(
|
|
"SEMANTIC_SEGMENTATION_URL", "https://segment.roboflow.com"
|
|
)
|
|
OBJECT_DETECTION_URL = get_conditional_configuration_variable("OBJECT_DETECTION_URL", "https://detect.roboflow.com")
|
|
|
|
CLIP_FEATURIZE_URL = get_conditional_configuration_variable("CLIP_FEATURIZE_URL", "CLIP FEATURIZE URL NOT IN ENV")
|
|
OCR_URL = get_conditional_configuration_variable("OCR_URL", "OCR URL NOT IN ENV")
|
|
|
|
DEDICATED_DEPLOYMENT_URL = get_conditional_configuration_variable("DEDICATED_DEPLOYMENT_URL", "https://roboflow.cloud")
|
|
|
|
DEMO_KEYS = ["coco-128-sample", "chess-sample-only-api-key"]
|
|
|
|
TYPE_CLASSICATION = "classification"
|
|
TYPE_OBJECT_DETECTION = "object-detection"
|
|
TYPE_INSTANCE_SEGMENTATION = "instance-segmentation"
|
|
TYPE_SEMANTIC_SEGMENTATION = "semantic-segmentation"
|
|
TYPE_KEYPOINT_DETECTION = "keypoint-detection"
|
|
|
|
DEFAULT_BATCH_NAME = "Pip Package Upload"
|
|
DEFAULT_JOB_NAME = "Annotated via API"
|
|
|
|
RF_WORKSPACES = get_conditional_configuration_variable("workspaces", default={})
|
|
TQDM_DISABLE = os.getenv("TQDM_DISABLE", None)
|
|
|
|
|
|
def load_roboflow_api_key(workspace_url=None):
|
|
if os.getenv("ROBOFLOW_API_KEY") is not None:
|
|
return os.getenv("ROBOFLOW_API_KEY")
|
|
RF_WORKSPACES = get_conditional_configuration_variable("workspaces", default={})
|
|
workspaces_by_url = {w["url"]: w for w in RF_WORKSPACES.values()}
|
|
default_workspace_url = get_conditional_configuration_variable("RF_WORKSPACE", default=None)
|
|
default_workspace = workspaces_by_url.get(default_workspace_url, None)
|
|
workspace = workspaces_by_url.get(workspace_url, default_workspace)
|
|
workspace = workspace or get_conditional_configuration_variable("RF_WORKSPACE", default=None)
|
|
if workspace:
|
|
return workspace.get("apiKey", None)
|