gamsapi 53.2.0__tar.gz → 53.3.0__tar.gz
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.
- {gamsapi-53.2.0/src/gamsapi.egg-info → gamsapi-53.3.0}/PKG-INFO +12 -12
- gamsapi-53.3.0/VERSION +1 -0
- gamsapi-53.3.0/src/gams/_version.py +1 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/_internals/algorithms.py +21 -11
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/_internals/specialvalues.py +31 -11
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/containers/_container.py +92 -94
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/containers/_io/gdx.py +34 -27
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/containers/_io/gmd.py +5 -4
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/containers/_mixins/ccc.py +77 -64
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_methods/tables.py +6 -3
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_mixins/equals.py +16 -10
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_mixins/generateRecords.py +24 -12
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_mixins/pivot.py +24 -13
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_mixins/pve.py +38 -34
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_mixins/spve.py +69 -55
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_mixins/ve.py +45 -16
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/container_syms/_alias.py +73 -72
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/container_syms/_parameter.py +44 -22
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/container_syms/_set.py +20 -13
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/container_syms/_universe_alias.py +20 -17
- {gamsapi-53.2.0 → gamsapi-53.3.0/src/gamsapi.egg-info}/PKG-INFO +12 -12
- gamsapi-53.2.0/VERSION +0 -1
- gamsapi-53.2.0/src/gams/_version.py +0 -1
- {gamsapi-53.2.0 → gamsapi-53.3.0}/LICENSE +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/MANIFEST.in +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/README.md +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/pyproject.toml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/setup.cfg +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/setup.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/_excel/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/_excel/excelagent.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/_excel/workbook.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/_sqlconnectors/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/_sqlconnectors/_accesshandler.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/_sqlconnectors/_databasehandler.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/_sqlconnectors/_mysqlhandler.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/_sqlconnectors/_postgreshandler.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/_sqlconnectors/_pyodbchandler.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/_sqlconnectors/_sqlalchemyhandler.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/_sqlconnectors/_sqlitehandler.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/_sqlconnectors/_sqlserverhandler.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/concatenate.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/connectagent.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/csvreader.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/csvwriter.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/domainwriter.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/excelreader.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/excelwriter.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/filter.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/gamsreader.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/gamswriter.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/gdxreader.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/gdxwriter.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/labelmanipulator.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/projection.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/pythoncode.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/rawcsvreader.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/rawexcelreader.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/CSVReader.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/CSVWriter.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/Concatenate.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/DomainWriter.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/ExcelReader.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/ExcelWriter.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/Filter.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/GAMSReader.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/GAMSWriter.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/GDXReader.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/GDXWriter.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/LabelManipulator.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/Projection.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/PythonCode.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/RawCSVReader.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/RawExcelReader.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/SQLReader.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/schema/SQLWriter.yaml +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/sqlreader.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/agents/sqlwriter.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/connectdatabase.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/connectvalidator.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/connect/errors.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/control/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/control/database.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/control/execution.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/control/options.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/control/workspace.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/cfg/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/cfg/cfgmcc.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/cfg/cfgmcc.h +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/cfg/cfgmcc.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/cfg/cfgmcc_wrap.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/dct/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/dct/dctmcc.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/dct/dctmcc.h +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/dct/dctmcc.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/dct/dctmcc_wrap.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/embedded/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/embedded/gamsemb.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/emp/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/emp/emplexer.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/emp/empyacc.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gclgms.h +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gdx/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gdx/gdxcc.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gdx/gdxcc.h +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gdx/gdxcc.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gdx/gdxcc_wrap.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gev/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gev/gevmcc.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gev/gevmcc.h +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gev/gevmcc.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gev/gevmcc_wrap.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gmd/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gmd/gmdcc.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gmd/gmdcc.h +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gmd/gmdcc.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gmd/gmdcc_wrap.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gmo/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gmo/gmomcc.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gmo/gmomcc.h +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gmo/gmomcc.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/gmo/gmomcc_wrap.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/idx/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/idx/idxcc.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/idx/idxcc.h +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/idx/idxcc.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/idx/idxcc_wrap.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/numpy/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/numpy/_gams2numpy.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/numpy/gams2numpy.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/opt/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/opt/optcc.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/opt/optcc.h +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/opt/optcc.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/core/opt/optcc_wrap.c +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/api/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/api/auth_api.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/api/cleanup_api.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/api/default_api.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/api/hypercube_api.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/api/jobs_api.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/api/licenses_api.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/api/namespaces_api.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/api/usage_api.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/api/users_api.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/api_client.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/api_response.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/configuration.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/exceptions.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/bad_input.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/cleanable_job_result.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/cleanable_job_result_page.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/engine_license.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/files_not_found.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/forwarded_token_response.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/generic_key_value_pair.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/hypercube.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/hypercube_page.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/hypercube_summary.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/hypercube_token.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/identity_provider.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/identity_provider_ldap.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/identity_provider_oauth2.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/identity_provider_oauth2_scope.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/identity_provider_oauth2_with_secret.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/identity_provider_oidc.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/identity_provider_oidc_with_secret.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/inex.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/invitation.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/invitation_quota.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/invitation_token.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/job.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/job_no_text_entry.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/job_no_text_entry_page.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/license.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/log_piece.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/message.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/message_and_token.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/message_with_webhook_id.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_auth_token.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_configuration.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_default_instance.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_default_user_instance.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_hypercube_job.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_hypercube_usage.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_instance_info.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_instance_info_full.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_instance_pool_info.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_job_labels.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_job_usage.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_pool_usage.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_usage.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_user.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_userinstance_info.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_userinstancepool_info.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/model_version.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/models.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/namespace.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/namespace_quota.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/namespace_with_permission.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/not_found.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/password_policy.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/perm_and_username.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/quota.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/quota_exceeded.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/status_code_meaning.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/stream_entry.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/system_wide_license.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/text_entries.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/text_entry.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/time_span.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/time_span_pool_worker.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/token_forward_error.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/user.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/user_group_member.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/user_groups.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/vapid_info.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/webhook.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/models/webhook_parameterized_event.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/py.typed +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/engine/rest.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/magic/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/magic/gams_magic.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/magic/interactive.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/errors.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/alg/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/alg/rank.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/data/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/data/csvread.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/data/csvwrite.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/data/exceldump.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/data/sqlitewrite.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/gdxservice/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/gdxservice/gdxencoding.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/gdxservice/gdxrename.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/linalg/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/linalg/cholesky.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/linalg/eigenvalue.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/linalg/eigenvector.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/linalg/invert.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/linalg/ols.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/tooltemplate.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/win32/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/win32/excelmerge.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/win32/exceltalk.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/win32/msappavail.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/toolcollection/win32/shellexecute.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/tools/tools.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/_abcs/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/_abcs/container_abcs.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/_internals/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/_internals/_cache.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/_internals/casepreservingdict.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/_internals/constants.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/_internals/domainviolation.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/containers/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/containers/_io/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/containers/_io/containers.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/containers/_mixins/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_methods/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_methods/toDict.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_methods/toList.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_methods/toValue.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_mixins/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_mixins/sa.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_mixins/sapve.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_mixins/saua.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/_mixins/sauapve.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/container_syms/__init__.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/container_syms/_equation.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gams/transfer/syms/container_syms/_variable.py +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gamsapi.egg-info/SOURCES.txt +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gamsapi.egg-info/dependency_links.txt +0 -0
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gamsapi.egg-info/requires.txt +11 -11
- {gamsapi-53.2.0 → gamsapi-53.3.0}/src/gamsapi.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gamsapi
|
|
3
|
-
Version: 53.
|
|
3
|
+
Version: 53.3.0
|
|
4
4
|
Summary: GAMS Python API
|
|
5
5
|
Home-page: https://www.gams.com/
|
|
6
6
|
Author: GAMS Development Corporation
|
|
@@ -52,23 +52,23 @@ Provides-Extra: transfer
|
|
|
52
52
|
Requires-Dist: pandas<3.1,>=2.2.2; extra == "transfer"
|
|
53
53
|
Requires-Dist: scipy; extra == "transfer"
|
|
54
54
|
Provides-Extra: all
|
|
55
|
-
Requires-Dist: sqlalchemy; extra == "all"
|
|
56
|
-
Requires-Dist: pyodbc; extra == "all"
|
|
57
|
-
Requires-Dist: pymysql; extra == "all"
|
|
58
|
-
Requires-Dist: urllib3; extra == "all"
|
|
59
|
-
Requires-Dist: pyyaml; extra == "all"
|
|
60
|
-
Requires-Dist: openpyxl>=3.1.0; extra == "all"
|
|
61
|
-
Requires-Dist: cerberus; extra == "all"
|
|
62
|
-
Requires-Dist: python_dateutil; extra == "all"
|
|
63
55
|
Requires-Dist: ipython; extra == "all"
|
|
56
|
+
Requires-Dist: python_dateutil; extra == "all"
|
|
57
|
+
Requires-Dist: scipy; extra == "all"
|
|
64
58
|
Requires-Dist: numpy; extra == "all"
|
|
59
|
+
Requires-Dist: ply; extra == "all"
|
|
60
|
+
Requires-Dist: psycopg2-binary; extra == "all"
|
|
61
|
+
Requires-Dist: pymysql; extra == "all"
|
|
65
62
|
Requires-Dist: pymssql; extra == "all"
|
|
66
63
|
Requires-Dist: pydantic; extra == "all"
|
|
67
|
-
Requires-Dist:
|
|
68
|
-
Requires-Dist:
|
|
69
|
-
Requires-Dist:
|
|
64
|
+
Requires-Dist: urllib3; extra == "all"
|
|
65
|
+
Requires-Dist: pyodbc; extra == "all"
|
|
66
|
+
Requires-Dist: cerberus; extra == "all"
|
|
67
|
+
Requires-Dist: openpyxl>=3.1.0; extra == "all"
|
|
70
68
|
Requires-Dist: certifi; extra == "all"
|
|
71
69
|
Requires-Dist: pandas<3.1,>=2.2.2; extra == "all"
|
|
70
|
+
Requires-Dist: sqlalchemy; extra == "all"
|
|
71
|
+
Requires-Dist: pyyaml; extra == "all"
|
|
72
72
|
Dynamic: author
|
|
73
73
|
Dynamic: author-email
|
|
74
74
|
Dynamic: classifier
|
gamsapi-53.3.0/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
53.3.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "53.3.0"
|
|
@@ -22,15 +22,17 @@
|
|
|
22
22
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
23
23
|
# SOFTWARE.
|
|
24
24
|
#
|
|
25
|
+
from __future__ import annotations
|
|
25
26
|
|
|
26
27
|
import itertools
|
|
27
28
|
import random
|
|
28
|
-
import numpy as np
|
|
29
|
-
import pandas as pd
|
|
30
29
|
import gams.transfer._abcs as abcs
|
|
31
|
-
from typing import Sequence,
|
|
30
|
+
from typing import Sequence, TYPE_CHECKING
|
|
32
31
|
|
|
33
32
|
if TYPE_CHECKING:
|
|
33
|
+
import pandas as pd
|
|
34
|
+
import numpy as np
|
|
35
|
+
|
|
34
36
|
from gams.transfer.syms import Set, Parameter, Variable, Equation
|
|
35
37
|
|
|
36
38
|
|
|
@@ -62,8 +64,8 @@ def check_all_same(iterable1: Sequence, iterable2: Sequence) -> bool:
|
|
|
62
64
|
|
|
63
65
|
|
|
64
66
|
def get_keys_and_values(
|
|
65
|
-
symobj:
|
|
66
|
-
) ->
|
|
67
|
+
symobj: Set | Parameter | Variable | Equation, mode: str
|
|
68
|
+
) -> tuple[np.ndarray, np.ndarray]:
|
|
67
69
|
"""
|
|
68
70
|
Gets the keys and values of a specific symbol.
|
|
69
71
|
|
|
@@ -76,7 +78,7 @@ def get_keys_and_values(
|
|
|
76
78
|
|
|
77
79
|
Returns
|
|
78
80
|
-------
|
|
79
|
-
|
|
81
|
+
tuple[ndarray, ndarray]
|
|
80
82
|
The tuple includes the symbol's keys and values.
|
|
81
83
|
|
|
82
84
|
Raises
|
|
@@ -84,6 +86,8 @@ def get_keys_and_values(
|
|
|
84
86
|
ValueError
|
|
85
87
|
If the given mode is niether 'string' nor 'category'.
|
|
86
88
|
"""
|
|
89
|
+
import numpy as np
|
|
90
|
+
|
|
87
91
|
if symobj.records is None:
|
|
88
92
|
if isinstance(symobj, abcs.ABCSet):
|
|
89
93
|
arrkeys = np.full(
|
|
@@ -201,6 +205,8 @@ def convert_to_categoricals_str(
|
|
|
201
205
|
-----
|
|
202
206
|
- This function assumes that the lengths of `arrkeys` and `arrvals` are compatible.
|
|
203
207
|
"""
|
|
208
|
+
import pandas as pd
|
|
209
|
+
|
|
204
210
|
has_domains = arrkeys.size > 0
|
|
205
211
|
has_values = arrvals.size > 0
|
|
206
212
|
|
|
@@ -234,6 +240,8 @@ def convert_to_categoricals_str(
|
|
|
234
240
|
def convert_to_categoricals_cat(
|
|
235
241
|
arrkeys: np.ndarray, arrvals: np.ndarray, unique_uels: Sequence
|
|
236
242
|
) -> pd.DataFrame:
|
|
243
|
+
import pandas as pd
|
|
244
|
+
|
|
237
245
|
has_domains = arrkeys.size > 0
|
|
238
246
|
has_values = arrvals.size > 0
|
|
239
247
|
|
|
@@ -262,7 +270,7 @@ def convert_to_categoricals_cat(
|
|
|
262
270
|
return df
|
|
263
271
|
|
|
264
272
|
|
|
265
|
-
def generate_unique_labels(labels:
|
|
273
|
+
def generate_unique_labels(labels: list | str) -> list[str]:
|
|
266
274
|
"""
|
|
267
275
|
Generate unique labels from a list of labels.
|
|
268
276
|
|
|
@@ -273,7 +281,7 @@ def generate_unique_labels(labels: Union[list, str]) -> List[str]:
|
|
|
273
281
|
|
|
274
282
|
Returns
|
|
275
283
|
-------
|
|
276
|
-
|
|
284
|
+
list[str]
|
|
277
285
|
A list of labels with uniqueness enforced. If the input list contains duplicates, this
|
|
278
286
|
function appends numeric suffixes to make the labels unique. If the input is not a list,
|
|
279
287
|
it is converted to a single-element list.
|
|
@@ -295,7 +303,7 @@ def generate_unique_labels(labels: Union[list, str]) -> List[str]:
|
|
|
295
303
|
return labels
|
|
296
304
|
|
|
297
305
|
|
|
298
|
-
def cartesian_product(*arrays:
|
|
306
|
+
def cartesian_product(*arrays: tuple[np.ndarray]) -> np.ndarray:
|
|
299
307
|
"""
|
|
300
308
|
Calculate the Cartesian product of multiple input arrays.
|
|
301
309
|
|
|
@@ -305,7 +313,7 @@ def cartesian_product(*arrays: Tuple[np.ndarray]) -> np.ndarray:
|
|
|
305
313
|
|
|
306
314
|
Parameters
|
|
307
315
|
----------
|
|
308
|
-
*arrays :
|
|
316
|
+
*arrays : tuple[ndarray]
|
|
309
317
|
Multiple input arrays for which the Cartesian product is calculated.
|
|
310
318
|
|
|
311
319
|
Returns
|
|
@@ -339,6 +347,7 @@ def cartesian_product(*arrays: Tuple[np.ndarray]) -> np.ndarray:
|
|
|
339
347
|
[2, 'B', 0.2]], dtype=object)
|
|
340
348
|
|
|
341
349
|
"""
|
|
350
|
+
import numpy as np
|
|
342
351
|
|
|
343
352
|
la = len(arrays)
|
|
344
353
|
dtype = np.result_type(*arrays)
|
|
@@ -353,7 +362,7 @@ def cartesian_product(*arrays: Tuple[np.ndarray]) -> np.ndarray:
|
|
|
353
362
|
def choice_no_replace(
|
|
354
363
|
choose_from: int,
|
|
355
364
|
n_choose: int,
|
|
356
|
-
seed:
|
|
365
|
+
seed: int | None = None,
|
|
357
366
|
) -> np.ndarray:
|
|
358
367
|
"""
|
|
359
368
|
Randomly select 'n_choose' unique items from a pool of 'choose_from' items without replacement.
|
|
@@ -398,6 +407,7 @@ def choice_no_replace(
|
|
|
398
407
|
>>> choice_no_replace(100, 10, seed=42)
|
|
399
408
|
array([8, 9, 19, 41, 60, 68, 71, 82, 94, 96])
|
|
400
409
|
"""
|
|
410
|
+
import numpy as np
|
|
401
411
|
|
|
402
412
|
if not isinstance(seed, (int, type(None))):
|
|
403
413
|
raise TypeError("Argument 'seed' must be type int or NoneType")
|
|
@@ -22,22 +22,25 @@
|
|
|
22
22
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
23
23
|
# SOFTWARE.
|
|
24
24
|
#
|
|
25
|
+
from __future__ import annotations
|
|
25
26
|
|
|
26
27
|
import struct
|
|
27
|
-
|
|
28
|
-
import pandas as pd
|
|
29
|
-
from typing import Union
|
|
28
|
+
from typing import TYPE_CHECKING
|
|
30
29
|
|
|
30
|
+
if TYPE_CHECKING:
|
|
31
|
+
import pandas as pd
|
|
31
32
|
|
|
32
33
|
class SpecialValues:
|
|
33
34
|
NA = struct.unpack(">d", bytes.fromhex("fffffffffffffffe"))[0]
|
|
34
|
-
_NA_INT64 = np.float64(NA).view(np.uint64)
|
|
35
35
|
EPS = -0.0
|
|
36
36
|
UNDEF = float("nan")
|
|
37
37
|
POSINF = float("inf")
|
|
38
38
|
NEGINF = float("-inf")
|
|
39
39
|
|
|
40
|
+
@staticmethod
|
|
40
41
|
def _convertNPfloat64(records, sv_name):
|
|
42
|
+
import numpy as np
|
|
43
|
+
|
|
41
44
|
if not (
|
|
42
45
|
isinstance(records, np.ndarray) and np.issubdtype(records.dtype, np.float64)
|
|
43
46
|
):
|
|
@@ -51,7 +54,8 @@ class SpecialValues:
|
|
|
51
54
|
) from err
|
|
52
55
|
return records
|
|
53
56
|
|
|
54
|
-
|
|
57
|
+
@staticmethod
|
|
58
|
+
def isEps(records: int | float | str | pd.Series | pd.DataFrame) -> bool:
|
|
55
59
|
"""
|
|
56
60
|
Check if the input records represent a value close to zero with specific considerations for different data types.
|
|
57
61
|
|
|
@@ -72,10 +76,13 @@ class SpecialValues:
|
|
|
72
76
|
Exception
|
|
73
77
|
If the data structure passed in 'records' could not be converted to a numpy array (dtype=float) for testing.
|
|
74
78
|
"""
|
|
79
|
+
import numpy as np
|
|
80
|
+
|
|
75
81
|
records = SpecialValues._convertNPfloat64(records, "EPS")
|
|
76
82
|
return (records == 0) & (np.signbit(records))
|
|
77
83
|
|
|
78
|
-
|
|
84
|
+
@staticmethod
|
|
85
|
+
def isNA(records: int | float | str | pd.Series | pd.DataFrame) -> bool:
|
|
79
86
|
"""
|
|
80
87
|
Check if values in records represent GAMS NA (Not Available) values.
|
|
81
88
|
|
|
@@ -96,10 +103,14 @@ class SpecialValues:
|
|
|
96
103
|
Exception
|
|
97
104
|
If the data structure passed in 'records' could not be converted to a numpy array (dtype=float) for testing.
|
|
98
105
|
"""
|
|
106
|
+
import numpy as np
|
|
107
|
+
|
|
108
|
+
_NA_INT64 = np.float64(SpecialValues.NA).view(np.uint64)
|
|
99
109
|
records = SpecialValues._convertNPfloat64(records, "NA")
|
|
100
|
-
return records.view(np.uint64) ==
|
|
110
|
+
return records.view(np.uint64) == _NA_INT64
|
|
101
111
|
|
|
102
|
-
|
|
112
|
+
@staticmethod
|
|
113
|
+
def isUndef(records: int | float | str | pd.Series | pd.DataFrame) -> bool:
|
|
103
114
|
"""
|
|
104
115
|
Determine if the given input(s) represent GAMS "undef" values.
|
|
105
116
|
|
|
@@ -120,10 +131,14 @@ class SpecialValues:
|
|
|
120
131
|
Exception
|
|
121
132
|
If the data structure passed in 'records' could not be converted to a numpy array (dtype=float) for testing.
|
|
122
133
|
"""
|
|
134
|
+
import numpy as np
|
|
135
|
+
|
|
136
|
+
_NA_INT64 = np.float64(SpecialValues.NA).view(np.uint64)
|
|
123
137
|
records = SpecialValues._convertNPfloat64(records, "UNDEF")
|
|
124
|
-
return np.isnan(records) & (records.view(np.uint64) !=
|
|
138
|
+
return np.isnan(records) & (records.view(np.uint64) != _NA_INT64)
|
|
125
139
|
|
|
126
|
-
|
|
140
|
+
@staticmethod
|
|
141
|
+
def isPosInf(records: int | float | str | pd.Series | pd.DataFrame) -> bool:
|
|
127
142
|
"""
|
|
128
143
|
Check if the input records represent positive infinity.
|
|
129
144
|
|
|
@@ -144,10 +159,13 @@ class SpecialValues:
|
|
|
144
159
|
Exception
|
|
145
160
|
If the data structure passed in 'records' could not be converted to a numpy array (dtype=float) for testing.
|
|
146
161
|
"""
|
|
162
|
+
import numpy as np
|
|
163
|
+
|
|
147
164
|
records = SpecialValues._convertNPfloat64(records, "POSINF")
|
|
148
165
|
return np.isposinf(records)
|
|
149
166
|
|
|
150
|
-
|
|
167
|
+
@staticmethod
|
|
168
|
+
def isNegInf(records: int | float | str | pd.Series | pd.DataFrame) -> bool:
|
|
151
169
|
"""
|
|
152
170
|
Check if the input records represent negative infinity.
|
|
153
171
|
|
|
@@ -168,5 +186,7 @@ class SpecialValues:
|
|
|
168
186
|
Exception
|
|
169
187
|
If the data structure passed in 'records' could not be converted to a numpy array (dtype=float) for testing.
|
|
170
188
|
"""
|
|
189
|
+
import numpy as np
|
|
190
|
+
|
|
171
191
|
records = SpecialValues._convertNPfloat64(records, "NEGINF")
|
|
172
192
|
return np.isneginf(records)
|