Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions azure-cognitiveservices-anomalyfinder/HISTORY.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.. :changelog:

Release History
===============

0.1.0 (1970-01-01)
++++++++++++++++++

* Initial Release
4 changes: 4 additions & 0 deletions azure-cognitiveservices-anomalyfinder/MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
include *.rst
include azure/__init__.py
include azure/cognitiveservices/__init__.py

30 changes: 30 additions & 0 deletions azure-cognitiveservices-anomalyfinder/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
Microsoft Azure SDK for Python
==============================

This is the Microsoft Azure MyService Management Client Library.

Azure Resource Manager (ARM) is the next generation of management APIs that
replace the old Azure Service Management (ASM).

This package has been tested with Python 2.7, 3.4, 3.5, 3.6 and 3.7.

For the older Azure Service Management (ASM) libraries, see
`azure-servicemanagement-legacy <https://pypi.python.org/pypi/azure-servicemanagement-legacy>`__ library.

For a more complete set of Azure libraries, see the `azure <https://pypi.python.org/pypi/azure>`__ bundle package.


Usage
=====

For code examples, see `MyService Management
<https://docs.microsoft.com/python/api/overview/azure/>`__
on docs.microsoft.com.


Provide Feedback
================

If you encounter any bugs or have suggestions, please file an issue in the
`Issues <https://github.com/Azure/azure-sdk-for-python/issues>`__
section of the project.
1 change: 1 addition & 0 deletions azure-cognitiveservices-anomalyfinder/azure/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
#
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

from .anomaly_finder_client import AnomalyFinderClient
from .version import VERSION

__all__ = ['AnomalyFinderClient']

__version__ = VERSION

Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
#
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

from msrest.service_client import SDKClient
from msrest import Configuration, Serializer, Deserializer
from .version import VERSION
from msrest.pipeline import ClientRawResponse
from . import models


class AnomalyFinderClientConfiguration(Configuration):
"""Configuration for AnomalyFinderClient
Note that all parameters used to create this instance are saved as instance
attributes.

:param endpoint: Supported Cognitive Services endpoints (protocol and
hostname, for example: https://westus2.api.cognitive.microsoft.com).
:type endpoint: str
:param credentials: Subscription credentials which uniquely identify
client subscription.
:type credentials: None
"""

def __init__(
self, endpoint, credentials):

if endpoint is None:
raise ValueError("Parameter 'endpoint' must not be None.")
if credentials is None:
raise ValueError("Parameter 'credentials' must not be None.")
base_url = '{Endpoint}/anomalyfinder/v2.0'

super(AnomalyFinderClientConfiguration, self).__init__(base_url)

self.add_user_agent('azure-cognitiveservices-anomalyfinder/{}'.format(VERSION))

self.endpoint = endpoint
self.credentials = credentials


class AnomalyFinderClient(SDKClient):
"""The Anomaly Finder API detects anomalies automatically in time series data. It supports two functionalities, one is for detecting the whole series with model trained by the timeseries, another is detecting last point with model trained by points before. By using this service, business customers can discover incidents and establish a logic flow for root cause analysis.

:ivar config: Configuration for client.
:vartype config: AnomalyFinderClientConfiguration

:param endpoint: Supported Cognitive Services endpoints (protocol and
hostname, for example: https://westus2.api.cognitive.microsoft.com).
:type endpoint: str
:param credentials: Subscription credentials which uniquely identify
client subscription.
:type credentials: None
"""

def __init__(
self, endpoint, credentials):

self.config = AnomalyFinderClientConfiguration(endpoint, credentials)
super(AnomalyFinderClient, self).__init__(self.config.credentials, self.config)

client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)}
self.api_version = '2.0'
self._serialize = Serializer(client_models)
self._deserialize = Deserializer(client_models)


def entire_detect(
self, body, custom_headers=None, raw=False, **operation_config):
"""Find anomalies for the entire series in batch.

The operation will generate a model using the entire series, each point
will be detected with the same model. In this method, points before and
after a certain point will be used to determine whether it's an
anomaly. The entire detection can give user an overall status of the
time series.

:param body: Time series points and period if needed. Advanced model
parameters can also be set in the request.
:type body: ~azure.cognitiveservices.anomalyfinder.models.Request
:param dict custom_headers: headers that will be added to the request
:param bool raw: returns the direct response alongside the
deserialized response
:param operation_config: :ref:`Operation configuration
overrides<msrest:optionsforoperations>`.
:return: EntireDetectResponse or ClientRawResponse if raw=true
:rtype:
~azure.cognitiveservices.anomalyfinder.models.EntireDetectResponse or
~msrest.pipeline.ClientRawResponse
:raises:
:class:`APIErrorException<azure.cognitiveservices.anomalyfinder.models.APIErrorException>`
"""
# Construct URL
url = self.entire_detect.metadata['url']
path_format_arguments = {
'Endpoint': self._serialize.url("self.config.endpoint", self.config.endpoint, 'str', skip_quote=True)
}
url = self._client.format_url(url, **path_format_arguments)

# Construct parameters
query_parameters = {}

# Construct headers
header_parameters = {}
header_parameters['Accept'] = 'application/json'
header_parameters['Content-Type'] = 'application/json; charset=utf-8'
if custom_headers:
header_parameters.update(custom_headers)

# Construct body
body_content = self._serialize.body(body, 'Request')

# Construct and send request
request = self._client.post(url, query_parameters, header_parameters, body_content)
response = self._client.send(request, stream=False, **operation_config)

if response.status_code not in [200]:
raise models.APIErrorException(self._deserialize, response)

deserialized = None

if response.status_code == 200:
deserialized = self._deserialize('EntireDetectResponse', response)

if raw:
client_raw_response = ClientRawResponse(deserialized, response)
return client_raw_response

return deserialized
entire_detect.metadata = {'url': '/timeseries/entire/detect'}

def last_detect(
self, body, custom_headers=None, raw=False, **operation_config):
"""Detect anomaly status of the latest point in time series.

The operation will generate a model using points before the latest one,
In this method, only history points are used for determine whether the
target point is an anomaly. Latest point detecting matches the scenario
of real-time monitoring of business metrics.

:param body: Time series points and period if needed. Advanced model
parameters can also be set in the request.
:type body: ~azure.cognitiveservices.anomalyfinder.models.Request
:param dict custom_headers: headers that will be added to the request
:param bool raw: returns the direct response alongside the
deserialized response
:param operation_config: :ref:`Operation configuration
overrides<msrest:optionsforoperations>`.
:return: LastDetectResponse or ClientRawResponse if raw=true
:rtype:
~azure.cognitiveservices.anomalyfinder.models.LastDetectResponse or
~msrest.pipeline.ClientRawResponse
:raises:
:class:`APIErrorException<azure.cognitiveservices.anomalyfinder.models.APIErrorException>`
"""
# Construct URL
url = self.last_detect.metadata['url']
path_format_arguments = {
'Endpoint': self._serialize.url("self.config.endpoint", self.config.endpoint, 'str', skip_quote=True)
}
url = self._client.format_url(url, **path_format_arguments)

# Construct parameters
query_parameters = {}

# Construct headers
header_parameters = {}
header_parameters['Accept'] = 'application/json'
header_parameters['Content-Type'] = 'application/json; charset=utf-8'
if custom_headers:
header_parameters.update(custom_headers)

# Construct body
body_content = self._serialize.body(body, 'Request')

# Construct and send request
request = self._client.post(url, query_parameters, header_parameters, body_content)
response = self._client.send(request, stream=False, **operation_config)

if response.status_code not in [200]:
raise models.APIErrorException(self._deserialize, response)

deserialized = None

if response.status_code == 200:
deserialized = self._deserialize('LastDetectResponse', response)

if raw:
client_raw_response = ClientRawResponse(deserialized, response)
return client_raw_response

return deserialized
last_detect.metadata = {'url': '/timeseries/last/detect'}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
#
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

try:
from .api_error_py3 import APIError, APIErrorException
from .point_py3 import Point
from .request_py3 import Request
from .entire_detect_response_py3 import EntireDetectResponse
from .last_detect_response_py3 import LastDetectResponse
except (SyntaxError, ImportError):
from .api_error import APIError, APIErrorException
from .point import Point
from .request import Request
from .entire_detect_response import EntireDetectResponse
from .last_detect_response import LastDetectResponse
from .anomaly_finder_client_enums import (
Granularity,
)

__all__ = [
'APIError', 'APIErrorException',
'Point',
'Request',
'EntireDetectResponse',
'LastDetectResponse',
'Granularity',
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
#
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

from enum import Enum


class Granularity(str, Enum):

yearly = "yearly"
monthly = "monthly"
weekly = "weekly"
daily = "daily"
hourly = "hourly"
minutely = "minutely"
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
#
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

from msrest.serialization import Model
from msrest.exceptions import HttpOperationError


class APIError(Model):
"""Error information returned by the API.

:param code: The error code.
:type code: object
:param message: A message explaining the error reported by the service.
:type message: str
"""

_attribute_map = {
'code': {'key': 'code', 'type': 'object'},
'message': {'key': 'message', 'type': 'str'},
}

def __init__(self, **kwargs):
super(APIError, self).__init__(**kwargs)
self.code = kwargs.get('code', None)
self.message = kwargs.get('message', None)


class APIErrorException(HttpOperationError):
"""Server responsed with exception of type: 'APIError'.

:param deserialize: A deserializer
:param response: Server response to be deserialized.
"""

def __init__(self, deserialize, response, *args):

super(APIErrorException, self).__init__(deserialize, response, 'APIError', *args)
Loading