gamsapi 52.5.0__cp312-cp312-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. gams/__init__.py +27 -0
  2. gams/_version.py +1 -0
  3. gams/connect/__init__.py +28 -0
  4. gams/connect/agents/__init__.py +24 -0
  5. gams/connect/agents/_excel/__init__.py +32 -0
  6. gams/connect/agents/_excel/excelagent.py +312 -0
  7. gams/connect/agents/_excel/workbook.py +155 -0
  8. gams/connect/agents/_sqlconnectors/__init__.py +42 -0
  9. gams/connect/agents/_sqlconnectors/_accesshandler.py +211 -0
  10. gams/connect/agents/_sqlconnectors/_databasehandler.py +250 -0
  11. gams/connect/agents/_sqlconnectors/_mysqlhandler.py +168 -0
  12. gams/connect/agents/_sqlconnectors/_postgreshandler.py +131 -0
  13. gams/connect/agents/_sqlconnectors/_pyodbchandler.py +112 -0
  14. gams/connect/agents/_sqlconnectors/_sqlalchemyhandler.py +74 -0
  15. gams/connect/agents/_sqlconnectors/_sqlitehandler.py +262 -0
  16. gams/connect/agents/_sqlconnectors/_sqlserverhandler.py +179 -0
  17. gams/connect/agents/concatenate.py +440 -0
  18. gams/connect/agents/connectagent.py +743 -0
  19. gams/connect/agents/csvreader.py +675 -0
  20. gams/connect/agents/csvwriter.py +151 -0
  21. gams/connect/agents/domainwriter.py +143 -0
  22. gams/connect/agents/excelreader.py +756 -0
  23. gams/connect/agents/excelwriter.py +467 -0
  24. gams/connect/agents/filter.py +223 -0
  25. gams/connect/agents/gamsreader.py +112 -0
  26. gams/connect/agents/gamswriter.py +239 -0
  27. gams/connect/agents/gdxreader.py +109 -0
  28. gams/connect/agents/gdxwriter.py +146 -0
  29. gams/connect/agents/labelmanipulator.py +303 -0
  30. gams/connect/agents/projection.py +539 -0
  31. gams/connect/agents/pythoncode.py +71 -0
  32. gams/connect/agents/rawcsvreader.py +248 -0
  33. gams/connect/agents/rawexcelreader.py +312 -0
  34. gams/connect/agents/schema/CSVReader.yaml +92 -0
  35. gams/connect/agents/schema/CSVWriter.yaml +44 -0
  36. gams/connect/agents/schema/Concatenate.yaml +52 -0
  37. gams/connect/agents/schema/DomainWriter.yaml +25 -0
  38. gams/connect/agents/schema/ExcelReader.yaml +121 -0
  39. gams/connect/agents/schema/ExcelWriter.yaml +78 -0
  40. gams/connect/agents/schema/Filter.yaml +74 -0
  41. gams/connect/agents/schema/GAMSReader.yaml +20 -0
  42. gams/connect/agents/schema/GAMSWriter.yaml +47 -0
  43. gams/connect/agents/schema/GDXReader.yaml +23 -0
  44. gams/connect/agents/schema/GDXWriter.yaml +32 -0
  45. gams/connect/agents/schema/LabelManipulator.yaml +99 -0
  46. gams/connect/agents/schema/Projection.yaml +24 -0
  47. gams/connect/agents/schema/PythonCode.yaml +6 -0
  48. gams/connect/agents/schema/RawCSVReader.yaml +34 -0
  49. gams/connect/agents/schema/RawExcelReader.yaml +42 -0
  50. gams/connect/agents/schema/SQLReader.yaml +75 -0
  51. gams/connect/agents/schema/SQLWriter.yaml +103 -0
  52. gams/connect/agents/sqlreader.py +301 -0
  53. gams/connect/agents/sqlwriter.py +276 -0
  54. gams/connect/connectdatabase.py +275 -0
  55. gams/connect/connectvalidator.py +93 -0
  56. gams/connect/errors.py +34 -0
  57. gams/control/__init__.py +136 -0
  58. gams/control/database.py +2231 -0
  59. gams/control/execution.py +1900 -0
  60. gams/control/options.py +2792 -0
  61. gams/control/workspace.py +1198 -0
  62. gams/core/__init__.py +24 -0
  63. gams/core/cfg/__init__.py +26 -0
  64. gams/core/cfg/_cfgmcc.cp312-win_amd64.pyd +0 -0
  65. gams/core/cfg/cfgmcc.py +519 -0
  66. gams/core/dct/__init__.py +26 -0
  67. gams/core/dct/_dctmcc.cp312-win_amd64.pyd +0 -0
  68. gams/core/dct/dctmcc.py +574 -0
  69. gams/core/embedded/__init__.py +26 -0
  70. gams/core/embedded/gamsemb.py +1024 -0
  71. gams/core/emp/__init__.py +24 -0
  72. gams/core/emp/emplexer.py +89 -0
  73. gams/core/emp/empyacc.py +281 -0
  74. gams/core/gdx/__init__.py +26 -0
  75. gams/core/gdx/_gdxcc.cp312-win_amd64.pyd +0 -0
  76. gams/core/gdx/gdxcc.py +866 -0
  77. gams/core/gev/__init__.py +26 -0
  78. gams/core/gev/_gevmcc.cp312-win_amd64.pyd +0 -0
  79. gams/core/gev/gevmcc.py +855 -0
  80. gams/core/gmd/__init__.py +26 -0
  81. gams/core/gmd/_gmdcc.cp312-win_amd64.pyd +0 -0
  82. gams/core/gmd/gmdcc.py +917 -0
  83. gams/core/gmo/__init__.py +26 -0
  84. gams/core/gmo/_gmomcc.cp312-win_amd64.pyd +0 -0
  85. gams/core/gmo/gmomcc.py +2046 -0
  86. gams/core/idx/__init__.py +26 -0
  87. gams/core/idx/_idxcc.cp312-win_amd64.pyd +0 -0
  88. gams/core/idx/idxcc.py +510 -0
  89. gams/core/numpy/__init__.py +29 -0
  90. gams/core/numpy/_gams2numpy.cp312-win_amd64.pyd +0 -0
  91. gams/core/numpy/gams2numpy.py +1048 -0
  92. gams/core/opt/__init__.py +26 -0
  93. gams/core/opt/_optcc.cp312-win_amd64.pyd +0 -0
  94. gams/core/opt/optcc.py +840 -0
  95. gams/engine/__init__.py +204 -0
  96. gams/engine/api/__init__.py +13 -0
  97. gams/engine/api/auth_api.py +7653 -0
  98. gams/engine/api/cleanup_api.py +751 -0
  99. gams/engine/api/default_api.py +887 -0
  100. gams/engine/api/hypercube_api.py +2629 -0
  101. gams/engine/api/jobs_api.py +5229 -0
  102. gams/engine/api/licenses_api.py +2220 -0
  103. gams/engine/api/namespaces_api.py +7783 -0
  104. gams/engine/api/usage_api.py +5627 -0
  105. gams/engine/api/users_api.py +5931 -0
  106. gams/engine/api_client.py +804 -0
  107. gams/engine/api_response.py +21 -0
  108. gams/engine/configuration.py +601 -0
  109. gams/engine/exceptions.py +216 -0
  110. gams/engine/models/__init__.py +86 -0
  111. gams/engine/models/bad_input.py +89 -0
  112. gams/engine/models/cleanable_job_result.py +104 -0
  113. gams/engine/models/cleanable_job_result_page.py +113 -0
  114. gams/engine/models/engine_license.py +107 -0
  115. gams/engine/models/files_not_found.py +93 -0
  116. gams/engine/models/forwarded_token_response.py +112 -0
  117. gams/engine/models/generic_key_value_pair.py +89 -0
  118. gams/engine/models/hypercube.py +160 -0
  119. gams/engine/models/hypercube_page.py +111 -0
  120. gams/engine/models/hypercube_summary.py +91 -0
  121. gams/engine/models/hypercube_token.py +97 -0
  122. gams/engine/models/identity_provider.py +107 -0
  123. gams/engine/models/identity_provider_ldap.py +121 -0
  124. gams/engine/models/identity_provider_oauth2.py +146 -0
  125. gams/engine/models/identity_provider_oauth2_scope.py +89 -0
  126. gams/engine/models/identity_provider_oauth2_with_secret.py +152 -0
  127. gams/engine/models/identity_provider_oidc.py +133 -0
  128. gams/engine/models/identity_provider_oidc_with_secret.py +143 -0
  129. gams/engine/models/inex.py +91 -0
  130. gams/engine/models/invitation.py +136 -0
  131. gams/engine/models/invitation_quota.py +106 -0
  132. gams/engine/models/invitation_token.py +87 -0
  133. gams/engine/models/job.py +165 -0
  134. gams/engine/models/job_no_text_entry.py +138 -0
  135. gams/engine/models/job_no_text_entry_page.py +111 -0
  136. gams/engine/models/license.py +91 -0
  137. gams/engine/models/log_piece.py +96 -0
  138. gams/engine/models/message.py +87 -0
  139. gams/engine/models/message_and_token.py +99 -0
  140. gams/engine/models/message_with_webhook_id.py +89 -0
  141. gams/engine/models/model_auth_token.py +87 -0
  142. gams/engine/models/model_configuration.py +125 -0
  143. gams/engine/models/model_default_instance.py +99 -0
  144. gams/engine/models/model_default_user_instance.py +98 -0
  145. gams/engine/models/model_hypercube_job.py +106 -0
  146. gams/engine/models/model_hypercube_usage.py +130 -0
  147. gams/engine/models/model_instance_info.py +116 -0
  148. gams/engine/models/model_instance_info_full.py +123 -0
  149. gams/engine/models/model_instance_pool_info.py +112 -0
  150. gams/engine/models/model_job_labels.py +179 -0
  151. gams/engine/models/model_job_usage.py +133 -0
  152. gams/engine/models/model_pool_usage.py +124 -0
  153. gams/engine/models/model_usage.py +115 -0
  154. gams/engine/models/model_user.py +96 -0
  155. gams/engine/models/model_userinstance_info.py +119 -0
  156. gams/engine/models/model_userinstancepool_info.py +95 -0
  157. gams/engine/models/model_version.py +91 -0
  158. gams/engine/models/models.py +120 -0
  159. gams/engine/models/namespace.py +104 -0
  160. gams/engine/models/namespace_quota.py +96 -0
  161. gams/engine/models/namespace_with_permission.py +96 -0
  162. gams/engine/models/not_found.py +91 -0
  163. gams/engine/models/password_policy.py +97 -0
  164. gams/engine/models/perm_and_username.py +89 -0
  165. gams/engine/models/quota.py +117 -0
  166. gams/engine/models/quota_exceeded.py +97 -0
  167. gams/engine/models/status_code_meaning.py +89 -0
  168. gams/engine/models/stream_entry.py +89 -0
  169. gams/engine/models/system_wide_license.py +92 -0
  170. gams/engine/models/text_entries.py +87 -0
  171. gams/engine/models/text_entry.py +101 -0
  172. gams/engine/models/time_span.py +95 -0
  173. gams/engine/models/time_span_pool_worker.py +99 -0
  174. gams/engine/models/token_forward_error.py +87 -0
  175. gams/engine/models/user.py +127 -0
  176. gams/engine/models/user_group_member.py +96 -0
  177. gams/engine/models/user_groups.py +108 -0
  178. gams/engine/models/vapid_info.py +87 -0
  179. gams/engine/models/webhook.py +138 -0
  180. gams/engine/models/webhook_parameterized_event.py +99 -0
  181. gams/engine/py.typed +0 -0
  182. gams/engine/rest.py +258 -0
  183. gams/magic/__init__.py +32 -0
  184. gams/magic/gams_magic.py +142 -0
  185. gams/magic/interactive.py +402 -0
  186. gams/tools/__init__.py +30 -0
  187. gams/tools/errors.py +34 -0
  188. gams/tools/toolcollection/__init__.py +24 -0
  189. gams/tools/toolcollection/alg/__init__.py +24 -0
  190. gams/tools/toolcollection/alg/rank.py +51 -0
  191. gams/tools/toolcollection/data/__init__.py +24 -0
  192. gams/tools/toolcollection/data/csvread.py +444 -0
  193. gams/tools/toolcollection/data/csvwrite.py +311 -0
  194. gams/tools/toolcollection/data/exceldump.py +47 -0
  195. gams/tools/toolcollection/data/sqlitewrite.py +276 -0
  196. gams/tools/toolcollection/gdxservice/__init__.py +24 -0
  197. gams/tools/toolcollection/gdxservice/gdxencoding.py +104 -0
  198. gams/tools/toolcollection/gdxservice/gdxrename.py +94 -0
  199. gams/tools/toolcollection/linalg/__init__.py +24 -0
  200. gams/tools/toolcollection/linalg/cholesky.py +57 -0
  201. gams/tools/toolcollection/linalg/eigenvalue.py +56 -0
  202. gams/tools/toolcollection/linalg/eigenvector.py +58 -0
  203. gams/tools/toolcollection/linalg/invert.py +55 -0
  204. gams/tools/toolcollection/linalg/ols.py +138 -0
  205. gams/tools/toolcollection/tooltemplate.py +321 -0
  206. gams/tools/toolcollection/win32/__init__.py +24 -0
  207. gams/tools/toolcollection/win32/excelmerge.py +93 -0
  208. gams/tools/toolcollection/win32/exceltalk.py +76 -0
  209. gams/tools/toolcollection/win32/msappavail.py +49 -0
  210. gams/tools/toolcollection/win32/shellexecute.py +54 -0
  211. gams/tools/tools.py +116 -0
  212. gams/transfer/__init__.py +35 -0
  213. gams/transfer/_abcs/__init__.py +37 -0
  214. gams/transfer/_abcs/container_abcs.py +433 -0
  215. gams/transfer/_internals/__init__.py +63 -0
  216. gams/transfer/_internals/algorithms.py +436 -0
  217. gams/transfer/_internals/casepreservingdict.py +124 -0
  218. gams/transfer/_internals/constants.py +270 -0
  219. gams/transfer/_internals/domainviolation.py +103 -0
  220. gams/transfer/_internals/specialvalues.py +172 -0
  221. gams/transfer/containers/__init__.py +26 -0
  222. gams/transfer/containers/_container.py +1794 -0
  223. gams/transfer/containers/_io/__init__.py +28 -0
  224. gams/transfer/containers/_io/containers.py +164 -0
  225. gams/transfer/containers/_io/gdx.py +1029 -0
  226. gams/transfer/containers/_io/gmd.py +872 -0
  227. gams/transfer/containers/_mixins/__init__.py +26 -0
  228. gams/transfer/containers/_mixins/ccc.py +1274 -0
  229. gams/transfer/syms/__init__.py +33 -0
  230. gams/transfer/syms/_methods/__init__.py +24 -0
  231. gams/transfer/syms/_methods/tables.py +120 -0
  232. gams/transfer/syms/_methods/toDict.py +115 -0
  233. gams/transfer/syms/_methods/toList.py +83 -0
  234. gams/transfer/syms/_methods/toValue.py +60 -0
  235. gams/transfer/syms/_mixins/__init__.py +32 -0
  236. gams/transfer/syms/_mixins/equals.py +626 -0
  237. gams/transfer/syms/_mixins/generateRecords.py +499 -0
  238. gams/transfer/syms/_mixins/pivot.py +313 -0
  239. gams/transfer/syms/_mixins/pve.py +627 -0
  240. gams/transfer/syms/_mixins/sa.py +27 -0
  241. gams/transfer/syms/_mixins/sapve.py +27 -0
  242. gams/transfer/syms/_mixins/saua.py +27 -0
  243. gams/transfer/syms/_mixins/sauapve.py +199 -0
  244. gams/transfer/syms/_mixins/spve.py +1528 -0
  245. gams/transfer/syms/_mixins/ve.py +936 -0
  246. gams/transfer/syms/container_syms/__init__.py +31 -0
  247. gams/transfer/syms/container_syms/_alias.py +984 -0
  248. gams/transfer/syms/container_syms/_equation.py +333 -0
  249. gams/transfer/syms/container_syms/_parameter.py +973 -0
  250. gams/transfer/syms/container_syms/_set.py +604 -0
  251. gams/transfer/syms/container_syms/_universe_alias.py +461 -0
  252. gams/transfer/syms/container_syms/_variable.py +321 -0
  253. gamsapi-52.5.0.dist-info/METADATA +150 -0
  254. gamsapi-52.5.0.dist-info/RECORD +257 -0
  255. gamsapi-52.5.0.dist-info/WHEEL +5 -0
  256. gamsapi-52.5.0.dist-info/licenses/LICENSE +22 -0
  257. gamsapi-52.5.0.dist-info/top_level.txt +1 -0
gams/tools/tools.py ADDED
@@ -0,0 +1,116 @@
1
+ #
2
+ # GAMS - General Algebraic Modeling System Python API
3
+ #
4
+ # Copyright (c) 2017-2026 GAMS Development Corp. <support@gams.com>
5
+ # Copyright (c) 2017-2026 GAMS Software GmbH <support@gams.com>
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the "Software"), to deal
9
+ # in the Software without restriction, including without limitation the rights
10
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ # copies of the Software, and to permit persons to whom the Software is
12
+ # furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included in all
15
+ # copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ # SOFTWARE.
24
+ #
25
+
26
+ import os
27
+ import sys
28
+ import importlib
29
+ from gams.tools.errors import GamsToolsException
30
+
31
+ class Tools(object):
32
+ def __init__(self, system_directory, ecdb=None, argv=[]):
33
+ self._system_directory = system_directory
34
+ self._ecdb = ecdb
35
+ self._argv = argv
36
+
37
+
38
+ def print_log(self, msg):
39
+ if self._ecdb:
40
+ self._ecdb.printLog(msg)
41
+ else:
42
+ print(msg)
43
+ sys.stdout.flush()
44
+
45
+ def all_tools(self):
46
+ from pkgutil import iter_modules
47
+ import importlib
48
+ import gams.tools.toolcollection as gtc
49
+ d = {}
50
+ for mod in iter_modules(gtc.__path__):
51
+ if mod.name != 'tooltemplate':
52
+ d[mod.name] = [m.name for m in iter_modules(importlib.import_module(gtc.__package__ + "." + mod.name).__path__)]
53
+ return d
54
+
55
+ def help(self, tc, category='', long=True):
56
+ if len(category):
57
+ self.print_log(f'List of tools in {category}:')
58
+ cats = [category]
59
+ else:
60
+ self.print_log('List of tools:')
61
+ cats = list(tc.keys())
62
+ for cat in cats:
63
+ if not len(category):
64
+ self.print_log(f' {cat}:')
65
+ for tool in tc[cat]:
66
+ try:
67
+ mod = importlib.import_module(f"gams.tools.toolcollection.{cat}.{tool}")
68
+ except ModuleNotFoundError as e:
69
+ if e.name != "gams.tools.toolcollection.{cat}.{tool}": # the tool module itself was found but an import in the source itself did fail
70
+ raise e
71
+ mod = importlib.import_module(tool)
72
+ task_class = vars(mod)[tool.capitalize()]
73
+ task_instance = task_class(self._system_directory, self)
74
+ task_instance.help(prefix=' ', long=long)
75
+
76
+ def exec_tool(self):
77
+ tc = self.all_tools()
78
+ if len(self._argv) == 0 or self._argv[0] == '-h':
79
+ self.help(tc, long=False)
80
+ return
81
+ if len(self._argv) == 0 or self._argv[0] == '--help':
82
+ self.help(tc)
83
+ return
84
+ ct = self._argv[0]
85
+ if '.' in ct:
86
+ cat, tool = [ s.lower() for s in ct.split('.') ]
87
+ else:
88
+ tool = ct.lower()
89
+ cat = []
90
+ for c,tl in tc.items():
91
+ if tool in tl:
92
+ cat.append(c)
93
+ if len(cat) == 0: # could be cat -h
94
+ if tool in tc and (len(self._argv) == 1 or self._argv[1] == '-h'):
95
+ self.help(tc, category=tool, long=False)
96
+ return
97
+ if tool in tc and (len(self._argv) == 1 or self._argv[1] == '--help'):
98
+ self.help(tc, category=tool)
99
+ return
100
+ raise GamsToolsException(f'No tool {tool} found.', error_code=2, traceback=False)
101
+ if len(cat) > 1:
102
+ raise GamsToolsException(f'Tool {tool} found in following categories: {cat}. Use e.g. {cat[0]}.{tool} to select specific tool.', error_code=2, traceback=False)
103
+ cat = cat[0]
104
+ try:
105
+ mod = importlib.import_module(f"gams.tools.toolcollection.{cat}.{tool}")
106
+ except ModuleNotFoundError as e:
107
+ if e.name != "gams.tools.toolcollection.{cat}.{tool}": # the tool module itself was found but an import in the source itself did fail
108
+ raise GamsToolsException(str(e), error_code=2, traceback=False)
109
+ mod = importlib.import_module(tool)
110
+ task_class = vars(mod)[tool.capitalize()]
111
+ task_instance = task_class(self._system_directory, self)
112
+ task_instance.execute()
113
+
114
+ def _get_ecdb(self):
115
+ return self._ecdb
116
+ ecdb = property(_get_ecdb)
@@ -0,0 +1,35 @@
1
+ #
2
+ # GAMS - General Algebraic Modeling System Python API
3
+ #
4
+ # Copyright (c) 2017-2026 GAMS Development Corp. <support@gams.com>
5
+ # Copyright (c) 2017-2026 GAMS Software GmbH <support@gams.com>
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the "Software"), to deal
9
+ # in the Software without restriction, including without limitation the rights
10
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ # copies of the Software, and to permit persons to whom the Software is
12
+ # furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included in all
15
+ # copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ # SOFTWARE.
24
+ #
25
+
26
+ from gams.transfer._internals import CasePreservingDict, SpecialValues, DomainViolation
27
+ from gams.transfer.containers import Container
28
+ from gams.transfer.syms import (
29
+ Set,
30
+ Parameter,
31
+ Variable,
32
+ Equation,
33
+ Alias,
34
+ UniverseAlias,
35
+ )
@@ -0,0 +1,37 @@
1
+ #
2
+ # GAMS - General Algebraic Modeling System Python API
3
+ #
4
+ # Copyright (c) 2017-2026 GAMS Development Corp. <support@gams.com>
5
+ # Copyright (c) 2017-2026 GAMS Software GmbH <support@gams.com>
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the "Software"), to deal
9
+ # in the Software without restriction, including without limitation the rights
10
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ # copies of the Software, and to permit persons to whom the Software is
12
+ # furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included in all
15
+ # copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ # SOFTWARE.
24
+ #
25
+
26
+ from gams.transfer._abcs.container_abcs import (
27
+ ABCContainer,
28
+ ABCSet,
29
+ ABCParameter,
30
+ ABCVariable,
31
+ ABCEquation,
32
+ ABCAlias,
33
+ ABCUniverseAlias,
34
+ AnyContainerSymbol,
35
+ AnyContainerDomainSymbol,
36
+ AnyContainerAlias,
37
+ )
@@ -0,0 +1,433 @@
1
+ #
2
+ # GAMS - General Algebraic Modeling System Python API
3
+ #
4
+ # Copyright (c) 2017-2026 GAMS Development Corp. <support@gams.com>
5
+ # Copyright (c) 2017-2026 GAMS Software GmbH <support@gams.com>
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the "Software"), to deal
9
+ # in the Software without restriction, including without limitation the rights
10
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ # copies of the Software, and to permit persons to whom the Software is
12
+ # furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included in all
15
+ # copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ # SOFTWARE.
24
+ #
25
+
26
+ from abc import ABC, abstractmethod
27
+
28
+
29
+ class AnyContainerSymbol: ...
30
+
31
+
32
+ class AnyContainerDomainSymbol: ...
33
+
34
+
35
+ class AnyContainerAlias: ...
36
+
37
+
38
+ class ABC_SAPVE_Container(ABC):
39
+ @abstractmethod
40
+ def __init__(self): ...
41
+
42
+ @abstractmethod
43
+ def __repr__(self): ...
44
+
45
+ @abstractmethod
46
+ def _assert_is_valid(self): ...
47
+
48
+ @abstractmethod
49
+ def countDomainViolations(self): ...
50
+
51
+ @abstractmethod
52
+ def countDuplicateRecords(self): ...
53
+
54
+ @abstractmethod
55
+ def dropDomainViolations(self): ...
56
+
57
+ @abstractmethod
58
+ def dropDuplicateRecords(self): ...
59
+
60
+ @abstractmethod
61
+ def getDomainViolations(self): ...
62
+
63
+ @abstractmethod
64
+ def getUELs(self): ...
65
+
66
+ @abstractmethod
67
+ def lowerUELs(self): ...
68
+
69
+ @abstractmethod
70
+ def upperUELs(self): ...
71
+
72
+ @abstractmethod
73
+ def lstripUELs(self): ...
74
+
75
+ @abstractmethod
76
+ def rstripUELs(self): ...
77
+
78
+ @abstractmethod
79
+ def stripUELs(self): ...
80
+
81
+ @abstractmethod
82
+ def capitalizeUELs(self): ...
83
+
84
+ @abstractmethod
85
+ def casefoldUELs(self): ...
86
+
87
+ @abstractmethod
88
+ def titleUELs(self): ...
89
+
90
+ @abstractmethod
91
+ def ljustUELs(self): ...
92
+
93
+ @abstractmethod
94
+ def rjustUELs(self): ...
95
+
96
+ @abstractmethod
97
+ def hasDomainViolations(self): ...
98
+
99
+ @abstractmethod
100
+ def hasDuplicateRecords(self): ...
101
+
102
+ @abstractmethod
103
+ def isValid(self): ...
104
+
105
+ @abstractmethod
106
+ def modified(self): ...
107
+
108
+ @abstractmethod
109
+ def removeUELs(self): ...
110
+
111
+ @abstractmethod
112
+ def renameUELs(self): ...
113
+
114
+
115
+ class ABC_SAPVE_UA(ABC):
116
+ @abstractmethod
117
+ def __init__(self): ...
118
+
119
+ @abstractmethod
120
+ def __repr__(self): ...
121
+
122
+ @abstractmethod
123
+ def _assert_is_valid(self): ...
124
+
125
+ @abstractmethod
126
+ def description(self): ...
127
+
128
+ @abstractmethod
129
+ def dimension(self): ...
130
+
131
+ @abstractmethod
132
+ def domain(self): ...
133
+
134
+ @abstractmethod
135
+ def domain_labels(self): ...
136
+
137
+ @abstractmethod
138
+ def domain_names(self): ...
139
+
140
+ @abstractmethod
141
+ def domain_type(self): ...
142
+
143
+ @abstractmethod
144
+ def equals(self): ...
145
+
146
+ @abstractmethod
147
+ def getSparsity(self): ...
148
+
149
+ @abstractmethod
150
+ def getUELs(self): ...
151
+
152
+ @abstractmethod
153
+ def isValid(self): ...
154
+
155
+ @abstractmethod
156
+ def modified(self): ...
157
+
158
+ @abstractmethod
159
+ def name(self): ...
160
+
161
+ @abstractmethod
162
+ def number_records(self): ...
163
+
164
+ @abstractmethod
165
+ def pivot(self): ...
166
+
167
+ @abstractmethod
168
+ def records(self): ...
169
+
170
+ @abstractmethod
171
+ def container(self): ...
172
+
173
+ @abstractmethod
174
+ def summary(self): ...
175
+
176
+ @abstractmethod
177
+ def toList(self): ...
178
+
179
+
180
+ class ABC_SAPVE(ABC):
181
+ @abstractmethod
182
+ def _getUELCodes(self): ...
183
+
184
+ @abstractmethod
185
+ def addUELs(self): ...
186
+
187
+ @abstractmethod
188
+ def countDomainViolations(self): ...
189
+
190
+ @abstractmethod
191
+ def countDuplicateRecords(self): ...
192
+
193
+ @abstractmethod
194
+ def dropDomainViolations(self): ...
195
+
196
+ @abstractmethod
197
+ def dropDuplicateRecords(self): ...
198
+
199
+ @abstractmethod
200
+ def findDomainViolations(self): ...
201
+
202
+ @abstractmethod
203
+ def findDuplicateRecords(self): ...
204
+
205
+ @abstractmethod
206
+ def getDomainViolations(self): ...
207
+
208
+ @abstractmethod
209
+ def hasDomainViolations(self): ...
210
+
211
+ @abstractmethod
212
+ def hasDuplicateRecords(self): ...
213
+
214
+ @abstractmethod
215
+ def removeUELs(self): ...
216
+
217
+ @abstractmethod
218
+ def renameUELs(self): ...
219
+
220
+ @abstractmethod
221
+ def reorderUELs(self): ...
222
+
223
+ @abstractmethod
224
+ def setRecords(self): ...
225
+
226
+ @abstractmethod
227
+ def setUELs(self): ...
228
+
229
+
230
+ class ABC_SPVE(ABC):
231
+ @abstractmethod
232
+ def _assert_scalar_values(self): ...
233
+
234
+ @abstractmethod
235
+ def _assert_symbol_attributes(self): ...
236
+
237
+ @abstractmethod
238
+ def _assert_symbol_domains(self): ...
239
+
240
+ @abstractmethod
241
+ def _attributes(self): ...
242
+
243
+ @abstractmethod
244
+ def _domainForwarding(self): ...
245
+
246
+ @abstractmethod
247
+ def _merge_records(self): ...
248
+
249
+ @abstractmethod
250
+ def domain_forwarding(self): ...
251
+
252
+ @abstractmethod
253
+ def _domain_status(self): ...
254
+
255
+ @abstractmethod
256
+ def generateRecords(self): ...
257
+
258
+
259
+ class ABC_SAUA(ABC):
260
+ @abstractmethod
261
+ def is_singleton(self): ...
262
+
263
+
264
+ class ABC_PVE(ABC):
265
+ @abstractmethod
266
+ def _assert_symbol_values(self): ...
267
+
268
+ @abstractmethod
269
+ def _filter_zero_records(self): ...
270
+
271
+ @abstractmethod
272
+ def _countSpecialValues(self): ...
273
+
274
+ @abstractmethod
275
+ def _getMetric(self): ...
276
+
277
+ @abstractmethod
278
+ def _whereMetric(self): ...
279
+
280
+ @abstractmethod
281
+ def countEps(self): ...
282
+
283
+ @abstractmethod
284
+ def countNA(self): ...
285
+
286
+ @abstractmethod
287
+ def countNegInf(self): ...
288
+
289
+ @abstractmethod
290
+ def countPosInf(self): ...
291
+
292
+ @abstractmethod
293
+ def countUndef(self): ...
294
+
295
+ @abstractmethod
296
+ def findEps(self): ...
297
+
298
+ @abstractmethod
299
+ def findNA(self): ...
300
+
301
+ @abstractmethod
302
+ def findNegInf(self): ...
303
+
304
+ @abstractmethod
305
+ def findPosInf(self): ...
306
+
307
+ @abstractmethod
308
+ def findSpecialValues(self): ...
309
+
310
+ @abstractmethod
311
+ def findUndef(self): ...
312
+
313
+ @abstractmethod
314
+ def getMaxAbsValue(self): ...
315
+
316
+ @abstractmethod
317
+ def getMaxValue(self): ...
318
+
319
+ @abstractmethod
320
+ def getMeanValue(self): ...
321
+
322
+ @abstractmethod
323
+ def getMinValue(self): ...
324
+
325
+ @abstractmethod
326
+ def is_scalar(self): ...
327
+
328
+ @abstractmethod
329
+ def shape(self): ...
330
+
331
+ @abstractmethod
332
+ def toDense(self): ...
333
+
334
+ @abstractmethod
335
+ def toDict(self): ...
336
+
337
+ @abstractmethod
338
+ def toSparseCoo(self): ...
339
+
340
+ @abstractmethod
341
+ def toValue(self): ...
342
+
343
+ @abstractmethod
344
+ def whereMax(self): ...
345
+
346
+ @abstractmethod
347
+ def whereMaxAbs(self): ...
348
+
349
+ @abstractmethod
350
+ def whereMin(self): ...
351
+
352
+
353
+ class ABC_VE(ABC):
354
+ @abstractmethod
355
+ def type(self): ...
356
+
357
+
358
+ class ABC_AUA(ABC):
359
+ @abstractmethod
360
+ def alias_with(self): ...
361
+
362
+
363
+ class ABCSet(
364
+ AnyContainerSymbol,
365
+ AnyContainerDomainSymbol,
366
+ ABC_SAPVE_Container,
367
+ ABC_SAPVE_UA,
368
+ ABC_SAPVE,
369
+ ABC_SPVE,
370
+ ABC_SAUA,
371
+ ): ...
372
+
373
+
374
+ class ABCParameter(
375
+ AnyContainerSymbol,
376
+ ABC_SAPVE_Container,
377
+ ABC_SAPVE_UA,
378
+ ABC_SAPVE,
379
+ ABC_SPVE,
380
+ ABC_PVE,
381
+ ): ...
382
+
383
+
384
+ class ABCVariable(
385
+ AnyContainerSymbol,
386
+ ABC_SAPVE_Container,
387
+ ABC_SAPVE_UA,
388
+ ABC_SAPVE,
389
+ ABC_SPVE,
390
+ ABC_PVE,
391
+ ABC_VE,
392
+ ): ...
393
+
394
+
395
+ class ABCEquation(
396
+ AnyContainerSymbol,
397
+ ABC_SAPVE_Container,
398
+ ABC_SAPVE_UA,
399
+ ABC_SAPVE,
400
+ ABC_SPVE,
401
+ ABC_PVE,
402
+ ABC_VE,
403
+ ): ...
404
+
405
+
406
+ class ABCAlias(
407
+ AnyContainerSymbol,
408
+ AnyContainerDomainSymbol,
409
+ AnyContainerAlias,
410
+ ABC_SAPVE_Container,
411
+ ABC_SAPVE_UA,
412
+ ABC_SAPVE,
413
+ ABC_SAUA,
414
+ ABC_AUA,
415
+ ): ...
416
+
417
+
418
+ class ABCUniverseAlias(
419
+ AnyContainerSymbol,
420
+ AnyContainerDomainSymbol,
421
+ AnyContainerAlias,
422
+ ABC_SAPVE_UA,
423
+ ABC_SAUA,
424
+ ABC_AUA,
425
+ ): ...
426
+
427
+
428
+ class ABCContainer(ABC_SAPVE_Container):
429
+ @abstractmethod
430
+ def summary(self): ...
431
+
432
+ @abstractmethod
433
+ def hasSymbols(self): ...
@@ -0,0 +1,63 @@
1
+ #
2
+ # GAMS - General Algebraic Modeling System Python API
3
+ #
4
+ # Copyright (c) 2017-2026 GAMS Development Corp. <support@gams.com>
5
+ # Copyright (c) 2017-2026 GAMS Software GmbH <support@gams.com>
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the "Software"), to deal
9
+ # in the Software without restriction, including without limitation the rights
10
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ # copies of the Software, and to permit persons to whom the Software is
12
+ # furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included in all
15
+ # copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ # SOFTWARE.
24
+ #
25
+
26
+ from gams.transfer._internals.casepreservingdict import CasePreservingDict
27
+
28
+ from gams.transfer._internals.specialvalues import SpecialValues
29
+
30
+ from gams.transfer._internals.constants import (
31
+ GAMS_SYMBOL_MAX_LENGTH,
32
+ GAMS_UEL_MAX_LENGTH,
33
+ GAMS_DESCRIPTION_MAX_LENGTH,
34
+ GAMS_MAX_INDEX_DIM,
35
+ SourceType,
36
+ DestinationType,
37
+ DomainStatus,
38
+ DictFormat,
39
+ EPS,
40
+ UNDEF,
41
+ NA,
42
+ VAR_DEFAULT_VALUES,
43
+ EQU_TYPE,
44
+ EQU_DEFAULT_VALUES,
45
+ DICT_FORMAT,
46
+ GAMS_VARIABLE_SUBTYPES,
47
+ GAMS_EQUATION_SUBTYPES,
48
+ TRANSFER_TO_GAMS_VARIABLE_SUBTYPES,
49
+ TRANSFER_TO_GAMS_EQUATION_SUBTYPES,
50
+ GAMS_DOMAIN_STATUS,
51
+ )
52
+
53
+ from gams.transfer._internals.domainviolation import DomainViolation
54
+
55
+ from gams.transfer._internals.algorithms import (
56
+ cartesian_product,
57
+ choice_no_replace,
58
+ generate_unique_labels,
59
+ convert_to_categoricals_cat,
60
+ convert_to_categoricals_str,
61
+ get_keys_and_values,
62
+ check_all_same,
63
+ )