Coverage for skema/program_analysis/CAST2FN/model/cast/operator.py: 92%
85 statements
« prev ^ index » next coverage.py v7.5.0, created at 2024-04-30 17:15 +0000
« prev ^ index » next coverage.py v7.5.0, created at 2024-04-30 17:15 +0000
1# coding: utf-8
3"""
4 SKEMA Common Abstract Syntax Tree (CAST)
6 This document outlines the structure of the CAST that will be used as a generic representation of the semantics of a program written in any language. This will be used when creating functions networks from programs using the SKEMA Program Analysis pipeline. __Generating Class Structure__ To automatically generate Python or Java models corresponding to this document, you can use [swagger-codegen](https://swagger.io/tools/swagger-codegen/). We can use this to generate client code based off of this spec that will also generate the class structure. 1. Install via the method described for your operating system [here](https://github.com/swagger-api/swagger-codegen#Prerequisites). Make sure to install a version after 3.0 that will support openapi 3. 2. Run swagger-codegen with the options in the example below. The URL references where the yaml for this documentation is stored on github. Make sure to replace CURRENT_VERSION with the correct version. To generate Java classes rather, change the `-l python` to `-l java`. Change the value to the `-o` option to the desired output location. ``` swagger-codegen generate -l python -o ./client -i https://raw.githubusercontent.com/ml4ai/automates-v2/master/docs/source/cast_v{CURRENT_VERSION}.yaml ``` 3. Once it executes, the client code will be generated at your specified location. For python, the classes will be located in `$OUTPUT_PATH/swagger_client/models/`. For java, they will be located in `$OUTPUT_PATH/src/main/java/io/swagger/client/model/` # noqa: E501
8 OpenAPI spec version: 1.2.6
10 Generated by: https://github.com/swagger-api/swagger-codegen.git
11"""
13import pprint
14import re # noqa: F401
16import six
17from skema.program_analysis.CAST2FN.model.cast.ast_node import AstNode # noqa: F401,E501
19class Operator(AstNode):
20 """NOTE: This class is auto generated by the swagger code generator program.
22 Do not edit the class manually.
23 """
24 """
25 Attributes:
26 swagger_types (dict): The key is attribute name
27 and the value is attribute type.
28 attribute_map (dict): The key is attribute name
29 and the value is json key in definition.
30 """
31 swagger_types = {
32 'source_language': 'str',
33 'interpreter': 'str',
34 'version': 'str',
35 'op': 'str',
36 'operands': 'list[AstNode]'
37 }
38 if hasattr(AstNode, "swagger_types"):
39 swagger_types.update(AstNode.swagger_types)
41 attribute_map = {
42 'source_language': 'source_language',
43 'interpreter': 'interpreter',
44 'version': 'version',
45 'op': 'op',
46 'operands': 'operands'
47 }
48 if hasattr(AstNode, "attribute_map"):
49 attribute_map.update(AstNode.attribute_map)
51 def __init__(self, source_language=None, interpreter=None, version=None, op=None, operands=None, *args, **kwargs): # noqa: E501
52 """Operator - a model defined in Swagger""" # noqa: E501
53 self._source_language = None
54 self._interpreter = None
55 self._version = None
56 self._op = None
57 self._operands = None
58 self.discriminator = None
59 if source_language is not None:
60 self.source_language = source_language
61 if interpreter is not None:
62 self.interpreter = interpreter
63 if version is not None:
64 self.version = version
65 if op is not None:
66 self.op = op
67 if operands is not None:
68 self.operands = operands
69 AstNode.__init__(self, *args, **kwargs)
71 @property
72 def source_language(self):
73 """Gets the source_language of this Operator. # noqa: E501
76 :return: The source_language of this Operator. # noqa: E501
77 :rtype: str
78 """
79 return self._source_language
81 @source_language.setter
82 def source_language(self, source_language):
83 """Sets the source_language of this Operator.
86 :param source_language: The source_language of this Operator. # noqa: E501
87 :type: str
88 """
90 self._source_language = source_language
92 @property
93 def interpreter(self):
94 """Gets the interpreter of this Operator. # noqa: E501
97 :return: The interpreter of this Operator. # noqa: E501
98 :rtype: str
99 """
100 return self._interpreter
102 @interpreter.setter
103 def interpreter(self, interpreter):
104 """Sets the interpreter of this Operator.
107 :param interpreter: The interpreter of this Operator. # noqa: E501
108 :type: str
109 """
111 self._interpreter = interpreter
113 @property
114 def version(self):
115 """Gets the version of this Operator. # noqa: E501
118 :return: The version of this Operator. # noqa: E501
119 :rtype: str
120 """
121 return self._version
123 @version.setter
124 def version(self, version):
125 """Sets the version of this Operator.
128 :param version: The version of this Operator. # noqa: E501
129 :type: str
130 """
132 self._version = version
134 @property
135 def op(self):
136 """Gets the op of this Operator. # noqa: E501
139 :return: The op of this Operator. # noqa: E501
140 :rtype: str
141 """
142 return self._op
144 @op.setter
145 def op(self, op):
146 """Sets the op of this Operator.
149 :param op: The op of this Operator. # noqa: E501
150 :type: str
151 """
153 self._op = op
155 @property
156 def operands(self):
157 """Gets the operands of this Operator. # noqa: E501
160 :return: The operands of this Operator. # noqa: E501
161 :rtype: list[AstNode]
162 """
163 return self._operands
165 @operands.setter
166 def operands(self, operands):
167 """Sets the operands of this Operator.
170 :param operands: The operands of this Operator. # noqa: E501
171 :type: list[AstNode]
172 """
174 self._operands = operands
176 def to_dict(self):
177 """Returns the model properties as a dict"""
178 result = {}
180 for attr, _ in six.iteritems(self.swagger_types):
181 value = getattr(self, attr)
182 if isinstance(value, list):
183 result[attr] = list(map(
184 lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
185 value
186 ))
187 elif hasattr(value, "to_dict"):
188 result[attr] = value.to_dict()
189 elif isinstance(value, dict):
190 result[attr] = dict(map(
191 lambda item: (item[0], item[1].to_dict())
192 if hasattr(item[1], "to_dict") else item,
193 value.items()
194 ))
195 else:
196 result[attr] = value
197 if issubclass(Operator, dict):
198 for key, value in self.items():
199 result[key] = value
201 return result
203 def to_str(self):
204 """Returns the string representation of the model"""
205 return pprint.pformat(self.to_dict())
207 def __repr__(self):
208 """For `print` and `pprint`"""
209 return self.to_str()
211 def __eq__(self, other):
212 """Returns true if both objects are equal"""
213 if not isinstance(other, Operator):
214 return False
216 return self.__dict__ == other.__dict__
218 def __ne__(self, other):
219 """Returns true if both objects are not equal"""
220 return not self == other