<commit_before># Copyright 2015 - StackStorm, Inc.
#
#    Licensed under the Apache License, Version 2.0 (the "License");
#    you may not use this file except in compliance with the License.
#    You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.

import json

from mistralclient.api import base


class Environment(base.Resource):
    resource_name = 'Environment'

    def _set_attributes(self):
        """Override loading of the "variables" attribute from text to dict."""
        for k, v in self._data.iteritems():
            if k == 'variables' and isinstance(v, basestring):
                v = json.loads(v)

            try:
                setattr(self, k, v)
            except AttributeError:
                # In this case we already defined the attribute on the class
                pass


class EnvironmentManager(base.ResourceManager):
    resource_class = Environment

    def create(self, **kwargs):
        self._ensure_not_empty(name=kwargs.get('name', None),
                               variables=kwargs.get('variables', None))

        # Convert dict to text for the variables attribute.
        if isinstance(kwargs['variables'], dict):
            kwargs['variables'] = json.dumps(kwargs['variables'])

        return self._create('/environments', kwargs)

    def update(self, **kwargs):
        name = kwargs.get('name', None)
        self._ensure_not_empty(name=name)

        attrs = kwargs.keys()
        attrs.remove('name')
        allowed = ['description', 'variables', 'scope']
        disallowed = list(set(attrs) - set(allowed))

        if disallowed:
            raise ValueError('The attributes %s cannot be updated.' %
                             disallowed)

        # Convert dict to text for the variables attribute.
        if kwargs.get('variables') and isinstance(kwargs['variables'], dict):
            kwargs['variables'] = json.dumps(kwargs['variables'])

        return self._update('/environments', kwargs)

    def list(self):
        return self._list('/environments', response_key='environments')

    def get(self, name):
        self._ensure_not_empty(name=name)

        return self._get('/environments/%s' % name)

    def delete(self, name):
        self._ensure_not_empty(name=name)<commit_msg>Remove unnecessary validation in update environment form the client<commit_after># Copyright 2015 - StackStorm, Inc.
#
#    Licensed under the Apache License, Version 2.0 (the "License");
#    you may not use this file except in compliance with the License.
#    You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.

import json

from mistralclient.api import base


class Environment(base.Resource):
    resource_name = 'Environment'

    def _set_attributes(self):
        """Override loading of the "variables" attribute from text to dict."""
        for k, v in self._data.iteritems():
            if k == 'variables' and isinstance(v, basestring):
                v = json.loads(v)

            try:
                setattr(self, k, v)
            except AttributeError:
                # In this case we already defined the attribute on the class
                pass


class EnvironmentManager(base.ResourceManager):
    resource_class = Environment

    def create(self, **kwargs):
        self._ensure_not_empty(name=kwargs.get('name', None),
                               variables=kwargs.get('variables', None))

        # Convert dict to text for the variables attribute.
        if isinstance(kwargs['variables'], dict):
            kwargs['variables'] = json.dumps(kwargs['variables'])

        return self._create('/environments', kwargs)

    def update(self, **kwargs):
        name = kwargs.get('name', None)
        self._ensure_not_empty(name=name)

        # Convert dict to text for the variables attribute.
        if kwargs.get('variables') and isinstance(kwargs['variables'], dict):
            kwargs['variables'] = json.dumps(kwargs['variables'])

        return self._update('/environments', kwargs)

    def list(self):
        return self._list('/environments', response_key='environments')

    def get(self, name):
        self._ensure_not_empty(name=name)

        return self._get('/environments/%s' % name)

    def delete(self, name):
        self._ensure_not_empty(name=name)
{'fraction_non_alphanumeric': 0.10071656050955415, 'fraction_numerical': 0.0031847133757961785, 'mean_word_length': 2.665207877461707, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4315469', 'n_tokens_mistral': 1298, 'n_tokens_neox': 1266, 'n_words': 436}