Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
else:
try:
extra_parameters = decode_extra_parameters(site)
except ValueError:
logger.warning(f'Cannot create observations for site {site.name}'
'missing required extra parameters')
return
site_name = site_name_no_network(site)
observation_name = f'{site_name} {variable}'
# Some site names are too long and exceed the API's limits,
# in those cases. Use the abbreviated version.
if len(observation_name) > 64:
site_abbreviation = extra_parameters["network_api_abbreviation"]
observation_name = f'{site_abbreviation} {variable}'
observation = Observation.from_dict({
'name': kwargs.get('name', observation_name),
'interval_label': kwargs.get('interval_label', 'ending'),
'interval_length': extra_parameters['observation_interval_length'],
'interval_value_type': kwargs.get('interval_value_type',
'interval_mean'),
'site': site,
'uncertainty': kwargs.get('uncertainty', 0),
'variable': variable,
'extra_parameters': json.dumps(extra_parameters)
})
return check_and_post_observation(api, observation)
in an Observation object.
Parameters
----------
observation_id : string
UUID of the observation to retrieve
Returns
-------
datamodel.Observation
"""
req = self.get(f'/observations/{observation_id}/metadata')
obs_dict = req.json()
site = self.get_site(obs_dict['site_id'])
obs_dict['site'] = site
return datamodel.Observation.from_dict(obs_dict)
"""
try:
extra_params = common.decode_extra_parameters(site)
except ValueError:
logger.warning('Cannot create reference observations at PVDAQ site '
f'{site.name}, missing required parameters.')
return
site_api_id = int(extra_params['network_api_id'])
with open(DEFAULT_SITEFILE) as fp:
obs_metadata = json.load(fp)['observations']
for obs in obs_metadata:
obs_extra_params = json.loads(obs['extra_parameters'])
if obs_extra_params['network_api_id'] == site_api_id:
obs['site'] = site
observation = Observation.from_dict(obs)
common.check_and_post_observation(api, observation)
Returns
-------
list of datamodel.Observation
"""
req = self.get('/observations/')
obs_dicts = req.json()
if isinstance(obs_dicts, dict):
obs_dicts = [obs_dicts]
if len(obs_dicts) == 0:
return []
sites = {site.site_id: site for site in self.list_sites()}
out = []
for obs_dict in obs_dicts:
obs_dict['site'] = sites.get(obs_dict['site_id'])
out.append(datamodel.Observation.from_dict(obs_dict))
return out
api, site, srml_variable_map[variable],
name=f'{site_name} {match}',
interval_label='beginning',
extra_params=observation_extra_parameters)
except HTTPError as e:
logger.error(
f'Failed to create {variable} observation at Site '
f'{site.name}. Error: {e.response.text}')
with open(DEFAULT_SITEFILE) as fp:
obs_metadata = json.load(fp)['observations']
for obs in obs_metadata:
obs_site_extra_params = json.loads(obs['site']['extra_parameters'])
if obs_site_extra_params['network_api_id'] == extra_params[
'network_api_id']:
obs['site'] = site
observation = Observation.from_dict(obs)
common.check_and_post_observation(api, observation)