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
@@ -0,0 +1,24 @@
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
+ #
@@ -0,0 +1,89 @@
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
+ # module: emplexer.py
27
+ #
28
+ # This module contains the lexing rules for the EMP.
29
+ #
30
+ # Contributor: Youngdae Kim (02.17.2019)
31
+
32
+ import ply.lex as lex
33
+
34
+ tokens = [
35
+ 'COMMA',
36
+ 'ID',
37
+ 'NUMBER',
38
+ 'LPAREN',
39
+ 'RPAREN',
40
+ 'SQUOTE',
41
+ 'DQUOTE',
42
+ 'DOLLAR',
43
+ ]
44
+
45
+ reserved = {
46
+ 'dualvar' : 'DUALVAR',
47
+ 'equilibrium' : 'EQUILIBRIUM',
48
+ 'implicit' : 'IMPLICIT',
49
+ 'max' : 'MAX',
50
+ 'min' : 'MIN',
51
+ 'not' : 'NOT',
52
+ 'qvi' : 'QVI',
53
+ 's.t.' : 'ST',
54
+ 'vi' : 'VI',
55
+ 'visol' : 'VISOL'
56
+ }
57
+
58
+ tokens += list(reserved.values())
59
+
60
+ t_COMMA = r'\,'
61
+ t_NUMBER = r'\d+'
62
+ t_LPAREN = r'\('
63
+ t_RPAREN = r'\)'
64
+ t_SQUOTE = r'\''
65
+ t_DQUOTE = r'\"'
66
+ t_DOLLAR = r'\$'
67
+
68
+ # s.t. should com first as the OR operator | matches from left to right.
69
+ def t_ID(t):
70
+ r's\.t\. | [a-zA-Z][a-zA-Z_0-9]*'
71
+ t.type = reserved.get(t.value.lower(),'ID') # Check for reserved words.
72
+ return t
73
+
74
+ def t_COMMENT(t):
75
+ r'\*.*'
76
+ pass
77
+
78
+ def t_newline(t):
79
+ r'\n+'
80
+ t.lexer.lineno += len(t.value)
81
+
82
+ def t_error(t):
83
+ print("\n\n Illegal character '%s'" % t.value[0])
84
+ t.lexer.skip(1)
85
+
86
+ t_ignore = ' \t'
87
+
88
+ # Build the lexer.
89
+ lexer = lex.lex()
@@ -0,0 +1,281 @@
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
+ # module: empyacc.py
27
+ #
28
+ # This module parses the EMP model specification and generates an EMPINFO file.
29
+ #
30
+ # Contributor: Youngdae Kim (02.17.2019)
31
+ #
32
+ # -------------------------------------------------------------------------
33
+ # Syntax
34
+ #
35
+ # empinfo := EQUILIBRIUM agentlist
36
+ # | agent
37
+ #
38
+ # agentlist := agentlist optagent
39
+ # | agentlist viagent
40
+ # | agentlist dualvar
41
+ # | agentlist implicit
42
+ # | agentlist visol
43
+ # | agent
44
+ #
45
+ # agent := optagent
46
+ # | viagent
47
+ # | qviagent
48
+ # | dualvar
49
+ # | implicit
50
+ # | visol
51
+ #
52
+ # optagent := MAX item ST itemlist
53
+ # | MIN item ST itemlist
54
+ #
55
+ # viagent := VI itemlist
56
+ # qviagent := QVI itemlist
57
+ # dualvar := DUALVAR itemlist
58
+ # implicit := IMPLICIT itemlist
59
+ # visol := VISOL itemlist
60
+ #
61
+ # itemlist := itemlist COMMA item
62
+ # | item
63
+ #
64
+ # item := ID
65
+ # | ID(tuple)
66
+ # | ID(tuple)$ID(dset)
67
+ # | ID(tuple)$(ID(dset))
68
+ # | ID(tuple)$(NOT ID(dset))
69
+ # | NUMBER (this should be zero, checked by empmodel)
70
+ #
71
+ # tuple := tuple COMMA setitem
72
+ # | setitem
73
+ #
74
+ # setitem := 'ID'
75
+ # | "ID"
76
+ # | 'NUMBER'
77
+ # | "NUMBER"
78
+ # | ID
79
+ #
80
+ # dset := dset COMMA ID
81
+ # | ID
82
+ # -------------------------------------------------------------------------
83
+
84
+ import ply.yacc as yacc
85
+ from gams.core.emp.emplexer import tokens
86
+
87
+ class Field: pass
88
+
89
+ class EMPInfo(Field):
90
+ def __init__(self,type,agentlist):
91
+ self.type = type
92
+ self.agentlist = agentlist
93
+
94
+ class Agent(Field):
95
+ def __init__(self,type,items,obj=None):
96
+ self.type = type
97
+ self.items = items
98
+ self.obj = obj
99
+
100
+ def __repr__(self):
101
+ if self.obj is not None:
102
+ return self.type + ' ' + self.obj.__repr__() + ' ' + self.items.__repr__()
103
+ else:
104
+ return self.type + ' ' + self.items.__repr__()
105
+
106
+ def __str__(self):
107
+ return self.__repr__()
108
+
109
+ class Item(Field):
110
+ def __init__(self,name,sets=None,such=None,notop=False):
111
+ self.name = name
112
+ self.sets = sets
113
+ self.such = such
114
+ self.notop = notop
115
+
116
+ def __repr__(self):
117
+ s = ""
118
+
119
+ if self.notop:
120
+ s += "(not "
121
+
122
+ if self.sets is not None:
123
+ s += self.name + '(' + ','.join(filter(None,[str(s) for s in self.sets])) + ')'
124
+ else:
125
+ s += self.name
126
+
127
+ if self.notop:
128
+ s += ')'
129
+
130
+ return s
131
+
132
+ def __str__(self):
133
+ return self.__repr__()
134
+
135
+ class Setitem(Field):
136
+ def __init__(self,name,inst=False):
137
+ self.name = name
138
+ self.inst = inst
139
+ self.masked = False
140
+
141
+ def __repr__(self):
142
+ if self.inst:
143
+ return '"' + self.name + '"'
144
+ else:
145
+ return self.name
146
+
147
+ def __str__(self):
148
+ return self.__repr__()
149
+
150
+ def maskedRepr(self):
151
+ if self.masked:
152
+ return ''
153
+
154
+ return self.__repr__()
155
+
156
+ def strippedRepr(self):
157
+ if self.inst:
158
+ return '"' + self.name + '"'
159
+ else:
160
+ return self.name
161
+
162
+ def p_empinfo(p):
163
+ '''empinfo : EQUILIBRIUM agentlist
164
+ | agent'''
165
+ if p[1] == 'equilibrium':
166
+ p[0] = EMPInfo('equilibrium',p[2])
167
+ else:
168
+ p[0] = EMPInfo('agent',p[1])
169
+
170
+ def p_agentlist(p):
171
+ '''agentlist : agentlist optagent
172
+ | agentlist viagent
173
+ | agentlist dualvar
174
+ | agentlist implicit
175
+ | agentlist visol'''
176
+ p[0] = p[1] + p[2]
177
+
178
+ def p_agentlist_term(p):
179
+ '''agentlist : agent'''
180
+ p[0] = p[1]
181
+
182
+ def p_agent(p):
183
+ '''agent : optagent
184
+ | qviagent
185
+ | viagent
186
+ | dualvar
187
+ | implicit
188
+ | visol'''
189
+ p[0] = p[1]
190
+
191
+ def p_optagent(p):
192
+ '''optagent : MAX item ST itemlist
193
+ | MIN item ST itemlist'''
194
+ p[0] = [Agent(p[1].lower(),p[4],p[2])]
195
+
196
+ def p_qviagent(p):
197
+ 'qviagent : QVI itemlist'
198
+ p[0] = [Agent('qvi',p[2])]
199
+
200
+ def p_viagent(p):
201
+ 'viagent : VI itemlist'
202
+ p[0] = [Agent('vi',p[2])]
203
+
204
+ def p_dualvar(p):
205
+ 'dualvar : DUALVAR itemlist'
206
+ p[0] = [Agent('dualvar',p[2])]
207
+
208
+ def p_implicit(p):
209
+ 'implicit : IMPLICIT itemlist'
210
+ p[0] = [Agent('implicit',p[2])]
211
+
212
+ def p_visol(p):
213
+ 'visol : VISOL itemlist'
214
+ p[0] = [Agent('visol',p[2])]
215
+
216
+ def p_itemlist_list(p):
217
+ 'itemlist : itemlist COMMA item'
218
+ p[0] = p[1] + p[3]
219
+
220
+ def p_itemlist_item(p):
221
+ 'itemlist : item'
222
+ p[0] = p[1]
223
+
224
+ def p_item(p):
225
+ 'item : ID'
226
+ p[0] = [Item(p[1])]
227
+
228
+ def p_item_tuple(p):
229
+ 'item : ID LPAREN tuple RPAREN'
230
+ p[0] = [Item(p[1],p[3])]
231
+
232
+ def p_item_suchthat(p):
233
+ 'item : ID LPAREN tuple RPAREN DOLLAR ID LPAREN dset RPAREN'
234
+ p[0] = [Item(p[1],p[3],Item(p[6],p[8]))]
235
+
236
+ def p_item_suchthat_inparen(p):
237
+ 'item : ID LPAREN tuple RPAREN DOLLAR LPAREN ID LPAREN dset RPAREN RPAREN'
238
+ p[0] = [Item(p[1],p[3],Item(p[7],p[9]))]
239
+
240
+ def p_item_suchthat_inparen_with_not(p):
241
+ 'item : ID LPAREN tuple RPAREN DOLLAR LPAREN NOT ID LPAREN dset RPAREN RPAREN'
242
+ p[0] = [Item(p[1],p[3],Item(p[8],p[10],None,True))]
243
+
244
+ def p_item_zero(p):
245
+ 'item : NUMBER'
246
+ p[0] = [Item(p[1])]
247
+
248
+ def p_tuple_list(p):
249
+ 'tuple : tuple COMMA setitem'
250
+ p[0] = p[1] + p[3]
251
+
252
+ def p_tuple_setitem(p):
253
+ 'tuple : setitem'
254
+ p[0] = p[1]
255
+
256
+ def p_setitem_quote(p):
257
+ '''setitem : SQUOTE ID SQUOTE
258
+ | DQUOTE ID DQUOTE
259
+ | SQUOTE NUMBER SQUOTE
260
+ | DQUOTE NUMBER DQUOTE'''
261
+ p[0] = [Setitem(p[2],True)]
262
+
263
+ def p_setitem_set(p):
264
+ 'setitem : ID'
265
+ p[0] = [Setitem(p[1],False)]
266
+
267
+ def p_dset_list(p):
268
+ 'dset : dset COMMA ID'
269
+ p[0] = p[1] + [Setitem(p[3],False)]
270
+
271
+ def p_dset_id(p):
272
+ 'dset : ID'
273
+ p[0] = [Setitem(p[1],False)]
274
+
275
+ def p_error(p):
276
+ print("\n\n Syntax error: " + p.value + " in line " + str(p.lineno))
277
+ print(" wildshot: equilibrium keyword was omitted.")
278
+ raise Exception
279
+
280
+ # Build the parser.
281
+ parser = yacc.yacc()
@@ -0,0 +1,26 @@
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.core.gdx.gdxcc import *
Binary file