diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml index 77b198d..c5d07b3 100644 --- a/.github/workflows/builds.yml +++ b/.github/workflows/builds.yml @@ -3,7 +3,7 @@ name: Builds # TODO: generalize steps env: - DSS_CAPI_TAG: '0.14.4' + DSS_CAPI_TAG: '0.15.0b3' ARTIFACTS_FOLDER: '${{ github.workspace }}/artifacts' on: @@ -12,87 +12,96 @@ on: push: jobs: - build_linux_x64: - name: 'Linux x64' - runs-on: ubuntu-latest + build_linux: + name: 'Linux ${{ matrix.arch }} (${{ matrix.manylinux-base }})' + continue-on-error: false strategy: matrix: - container-image: [ - 'quay.io/pypa/manylinux_2_28_x86_64', - 'quay.io/pypa/manylinux2014_x86_64' - ] - container: - image: ${{ matrix.container-image }} + include: + - arch: x64 + docker_image: 'quay.io/pypa/manylinux_2_28_x86_64' + dss_extensions_linux32: '' + gh_image: ubuntu-latest + manylinux-base: 'manylinux_2_28' + conda_subdir: 'linux-64' + + - arch: x64 + docker_image: 'quay.io/pypa/manylinux2014_x86_64' + dss_extensions_linux32: '' + gh_image: ubuntu-latest + manylinux-base: 'manylinux2014' + conda_subdir: 'linux-64' + + - arch: x86 + docker_image: 'quay.io/pypa/manylinux_2_34_i686' + dss_extensions_linux32: linux32 + gh_image: ubuntu-latest + manylinux-base: 'manylinux2014' + conda_subdir: 'linux-32' + + - arch: arm64 + docker_image: 'quay.io/pypa/manylinux_2_28_aarch64' + dss_extensions_linux32: '' + gh_image: ubuntu-24.04-arm + manylinux-base: 'manylinux_2_28' + conda_subdir: 'linux-aarch64' + + - arch: arm64 + docker_image: 'quay.io/pypa/manylinux2014_aarch64' + dss_extensions_linux32: '' + gh_image: ubuntu-24.04-arm + manylinux-base: 'manylinux2014' + conda_subdir: 'linux-aarch64' + + runs-on: ${{ matrix.gh_image }} env: - CONDA_SUBDIR: 'linux-64' + CONDA_SUBDIR: '${{ matrix.conda_subdir }}' DSS_CAPI_PATH: '${{ github.workspace }}/dss_capi' CONDA: "/opt/miniconda/" + DOCKER_IMAGE: '${{ matrix.docker_image }}' steps: - name: 'Checkout' run: | git clone $GITHUB_SERVER_URL/$GITHUB_REPOSITORY dss_python_backend cd dss_python_backend git checkout $GITHUB_SHA + - name: 'Setup Docker' + run: | + docker pull $DOCKER_IMAGE - name: 'Download/extract DSS C-API binaries' run: | - curl -s -L https://github.com/dss-extensions/dss_capi/releases/download/${DSS_CAPI_TAG}/dss_capi_${DSS_CAPI_TAG}_linux_x64.tar.gz -o dss_capi.tar.gz + curl -s -L https://github.com/dss-extensions/dss_capi/releases/download/${DSS_CAPI_TAG}/dss_capi_${DSS_CAPI_TAG}_linux_${{ matrix.arch }}.tar.gz -o dss_capi.tar.gz tar zxf dss_capi.tar.gz cd dss_python_backend/dss_python_backend - name: Build wheel run: | mkdir -p artifacts mkdir -p artifacts_raw - bash dss_python_backend/ci/build_linux.sh x64 + docker run -e GITHUB_SHA -e GITHUB_REF -e DSS_CAPI_PATH=/build/dss_capi -v "${PWD}:/build" -w /build $DOCKER_IMAGE ${{ matrix.dss_extensions_linux32}} bash /build/dss_python_backend/ci/build_linux.sh ${{ matrix.arch }} + ls -lh dss_python_backend/dss_python_backend # - name: Build conda packages - # continue-on-error: true + # continue-on-error: false # run: | # bash dss_python_backend/ci/build_conda.sh - - name: Try installing the wheel - run: bash dss_python_backend/ci/test_wheel.sh - name: 'Upload artifacts' - uses: "actions/upload-artifact@v3" + uses: "actions/upload-artifact@v4" with: - name: 'packages' + name: 'packages-linux_${{ matrix.arch }}-${{ matrix.manylinux-base }}' path: '${{ github.workspace }}/artifacts' - - build_linux_x86: - name: 'Linux x86' - runs-on: ubuntu-latest - env: - CONDA_SUBDIR: 'linux-32' - DOCKER_IMAGE: 'pmeira/manylinux_wheel_fpc322_i686' - steps: - - name: 'Checkout' - run: | - git clone $GITHUB_SERVER_URL/$GITHUB_REPOSITORY dss_python_backend - cd dss_python_backend - git checkout $GITHUB_SHA - - name: 'Setup Docker' - run: | - docker pull $DOCKER_IMAGE - - name: 'Download/extract DSS C-API binaries' - run: | - curl -s -L https://github.com/dss-extensions/dss_capi/releases/download/${DSS_CAPI_TAG}/dss_capi_${DSS_CAPI_TAG}_linux_x86.tar.gz -o dss_capi.tar.gz - tar zxf dss_capi.tar.gz - cd dss_python_backend/dss_python_backend - - name: Build wheel + - name: Try installing the wheel + continue-on-error: ${{ matrix.arch == 'x86' }} run: | - mkdir -p artifacts - mkdir -p artifacts_raw - docker run -e GITHUB_SHA -e GITHUB_REF -e DSS_CAPI_PATH=/build/dss_capi -v "${PWD}:/build" -w /build $DOCKER_IMAGE bash /build/dss_python_backend/ci/build_linux.sh x86 - - name: 'Upload artifacts' - uses: "actions/upload-artifact@v3" - with: - name: 'packages' - path: '${{ github.workspace }}/artifacts' + docker run -e GITHUB_SHA -e GITHUB_REF -e DSS_CAPI_PATH=/build/dss_capi -v "${PWD}:/build" -w /build $DOCKER_IMAGE ${{ matrix.dss_extensions_linux32}} bash /build/dss_python_backend/ci/test_wheel.sh build_macos_x64: name: 'macOS x64' - runs-on: 'macos-11' + continue-on-error: false + runs-on: 'macos-15-intel' env: DSS_CAPI_PATH: '${{ github.workspace }}/dss_capi' #SDKROOT: '${{ github.workspace }}/MacOSX10.13.sdk' - PYTHON: python3 + PYTHON: python + MACOSX_DEPLOYMENT_TARGET: "11.0" steps: - uses: actions/checkout@v3 with: @@ -107,30 +116,47 @@ jobs: # run: | # curl -s -L https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX10.13.sdk.tar.xz -o macOSsdk.tar.xz # tar xf macOSsdk.tar.xz + - name: 'Prepare Python' + uses: actions/setup-python@v6 + with: + python-version: '3.11' + cache: 'pip' + - name: Prepare virtual environment + run: | + $PYTHON -m venv buildvenv - name: Build wheel run: | + source buildvenv/bin/activate bash dss_python_backend/ci/build_wheel.sh # - name: Build conda packages - # continue-on-error: true + # continue-on-error: false # run: | # sudo chown -R $UID $CONDA # bash dss_python_backend/ci/build_conda.sh - name: 'Upload artifacts' - uses: "actions/upload-artifact@v3" + uses: "actions/upload-artifact@v4" with: - name: 'packages' + name: 'packages-darwin_x64' path: '${{ github.workspace }}/artifacts' + - name: Try installing the wheel + continue-on-error: true + shell: bash + run: | + python -m pip install artifacts/dss_python_backend-*.whl + python -c 'from dss_python_backend import lib, ffi; lib.DSS_NewCircuit(ffi.NULL, b"test123"); assert ffi.string(lib.Circuit_Get_Name(ffi.NULL)) == b"test123"' + python -c 'from dss_python_backend import _fastdss' build_macos_arm64: name: 'macOS ARM64' - runs-on: 'macos-11' + continue-on-error: false + runs-on: 'macos-15' env: DSS_CAPI_PATH: '${{ github.workspace }}/dss_capi' # SDKROOT: '${{ github.workspace }}/MacOSX10.13.sdk' - PYTHON: python3 + PYTHON: python _PYTHON_HOST_PLATFORM: macosx-11.0-arm64 ARCHFLAGS: '-arch arm64' - + MACOSX_DEPLOYMENT_TARGET: "11.0" steps: - uses: actions/checkout@v3 with: @@ -145,23 +171,40 @@ jobs: # run: | # curl -s -L https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX10.13.sdk.tar.xz -o macOSsdk.tar.xz # tar xf macOSsdk.tar.xz + - name: 'Prepare Python' + uses: actions/setup-python@v6 + with: + python-version: '3.11' + cache: 'pip' + - name: Prepare virtual environment + run: | + python -m venv buildvenv - name: Build wheel run: | + source buildvenv/bin/activate bash dss_python_backend/ci/build_wheel.sh # - name: Build conda packages - # continue-on-error: true + # continue-on-error: false # run: | # sudo chown -R $UID $CONDA # bash dss_python_backend/ci/build_conda.sh - name: 'Upload artifacts' - uses: "actions/upload-artifact@v3" + uses: "actions/upload-artifact@v4" with: - name: 'packages' + name: 'packages-darwin_arm64' path: '${{ github.workspace }}/artifacts' + - name: Try installing the wheel + continue-on-error: true + shell: bash + run: | + python -m pip install artifacts/dss_python_backend-*.whl + python -c 'from dss_python_backend import lib, ffi; lib.DSS_NewCircuit(ffi.NULL, b"test123"); assert ffi.string(lib.Circuit_Get_Name(ffi.NULL)) == b"test123"' + python -c 'from dss_python_backend import _fastdss' build_win_x64: name: 'Windows x64' - runs-on: windows-2019 + continue-on-error: false + runs-on: windows-2022 env: CONDA_SUBDIR: 'win-64' DSS_CAPI_PATH: '${{ github.workspace }}\dss_capi' @@ -182,19 +225,28 @@ jobs: run: | bash dss_python_backend/ci/build_wheel.sh # - name: Build conda packages - # continue-on-error: true + # continue-on-error: false # shell: bash # run: | # bash dss_python_backend/ci/build_conda.sh - name: 'Upload artifacts' - uses: "actions/upload-artifact@v3" + uses: "actions/upload-artifact@v4" with: - name: 'packages' + name: 'packages-win_x64' path: '${{ github.workspace }}/artifacts' + - name: Try installing the wheel + continue-on-error: true + shell: bash + run: | + python -m pip install artifacts/dss_python_backend-*.whl + python -c "from dss_python_backend import lib, ffi; lib.DSS_NewCircuit(ffi.NULL, b'test123'); assert ffi.string(lib.Circuit_Get_Name(ffi.NULL)) == b'test123'" + python -c "from dss_python_backend import _fastdss" + build_win_x86: name: 'Windows x86' - runs-on: windows-2019 + continue-on-error: false + runs-on: windows-2022 env: CONDA_SUBDIR: 'win-32' DSS_CAPI_PATH: '${{ github.workspace }}\dss_capi' @@ -204,9 +256,11 @@ jobs: with: fetch-depth: 0 path: 'dss_python_backend' - - uses: actions/setup-python@v3 + - name: 'Setup Python' + uses: actions/setup-python@v6 with: - python-version: '3.8' + python-version: '3.11' + cache: 'pip' architecture: 'x86' - name: 'Download/extract DSS C-API binaries' shell: cmd @@ -219,8 +273,27 @@ jobs: run: | bash dss_python_backend/ci/build_wheel.sh - name: 'Upload artifacts' - uses: "actions/upload-artifact@v3" + uses: "actions/upload-artifact@v4" with: - name: 'packages' + name: 'packages-win_x86' path: '${{ github.workspace }}/artifacts' + - name: Try installing the wheel + continue-on-error: true + shell: bash + run: | + python -m pip install artifacts/dss_python_backend-*.whl + python -c "from dss_python_backend import lib, ffi; lib.DSS_NewCircuit(ffi.NULL, b'test123'); assert ffi.string(lib.Circuit_Get_Name(ffi.NULL)) == b'test123'" + python -c "from dss_python_backend import _fastdss" + merge: + name: 'Merge build artifacts' + continue-on-error: false + runs-on: ubuntu-latest + needs: [build_linux, build_macos_arm64, build_macos_x64, build_win_x64, build_win_x86] + steps: + - name: Merge Artifacts + uses: actions/upload-artifact/merge@v4 + with: + name: dss_python_backend-builds + pattern: packages-* + # delete-merged: true diff --git a/.gitignore b/.gitignore index cd4acd1..42711ae 100644 --- a/.gitignore +++ b/.gitignore @@ -126,3 +126,5 @@ dss_python_backend/**/*.hpp *.dbl *.sng *.pdb + +dss_python_backend/include \ No newline at end of file diff --git a/LICENSE b/LICENSE.BSD3 similarity index 94% rename from LICENSE rename to LICENSE.BSD3 index ec8473b..750348e 100644 --- a/LICENSE +++ b/LICENSE.BSD3 @@ -1,7 +1,7 @@ BSD 3-Clause License -Copyright (c) 2017-2023, Paulo Meira -Copyright (c) 2017-2023, DSS Python contributors +Copyright (c) 2017-2026, Paulo Meira +Copyright (c) 2017-2026, Contributors to DSS-Extensions All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/LICENSE.LGPL3 b/LICENSE.LGPL3 new file mode 100644 index 0000000..0a04128 --- /dev/null +++ b/LICENSE.LGPL3 @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/OPENDSS_LICENSE b/OPENDSS_LICENSE index d518064..7ad21ba 100644 --- a/OPENDSS_LICENSE +++ b/OPENDSS_LICENSE @@ -1,4 +1,4 @@ -* Copyright (c) 2008-2021, Electric Power Research Institute, Inc. +* Copyright (c) 2008-2026, Electric Power Research Institute, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/README.md b/README.md index f72dedc..6dcde49 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,18 @@ `dss_python_backend` provides low-level bindings for an implementation of EPRI's OpenDSS, using [CFFI](https://cffi.readthedocs.io/) and our [DSS C-API library and headers](https://github.com/dss-extensions/dss_capi/). It contains the native libraries (and DLLs) required by DSS-Python. This is considered an implementation detail. -**This is not intended for direct usage, [see DSS-Python](https://github.com/dss-extensions/dss_python/) and [OpenDSSDirect.py](https://github.com/dss-extensions/OpenDSSDirect.py/) instead!** +**This is not intended for direct usage, [see DSS-Python](https://github.com/dss-extensions/DSS-Python/), [OpenDSSDirect.py](https://github.com/dss-extensions/OpenDSSDirect.py/), and [AltDSS-Python](https://github.com/dss-extensions/AltDSS-Python/) instead!** After several years integrated into DSS-Python, this package was created in April 2023 to make the maintenance easier. See https://github.com/dss-extensions/dss_python/issues/51 -This package includes: -- CFFI modules for DSS C-API +The Python package includes: +- FastDSS modules for AltDSS/DSS C-API +- CFFI modules for AltDSS/DSS C-API - CFFI modules for user-models (only the code for generator user-models is being compiled nowadays) -- DSS C-API libraries, DLLs, and headers +- AltDSS/DSS C-API related libraries (AltDSS Engine, Oddie, Loader, etc.), DLLs, and headers +This module contains source-code licensed under BSD3 and LGPL3. See each file for SPDX comments. + +Although this repository does not contain code from OpenDSS, the license is listed in `OPENDSS_LICENSE` for reference. The final packages do include software derived from OpenDSS code and other libraries, such as KLUSolveX and KLU (from SuiteSparse), both licensed under the LGPL. Since the files listed in this repository contain multiple licenses, SPDX identifiers are now included in the file headers. + +*Note: this package might be renamed in the future to reflect the new developments.* \ No newline at end of file diff --git a/ci/build_conda.sh b/ci/build_conda.sh index b0036c1..3a2777c 100644 --- a/ci/build_conda.sh +++ b/ci/build_conda.sh @@ -6,7 +6,7 @@ if [ "$RUNNER_OS" = "Windows" ]; then fi export PATH=$CONDA:$CONDA/bin:$CONDA/scripts:$PATH -export DSS_PYTHON_BACKEND_MANYLINUX=0 +# export DSS_PYTHON_BACKEND_MANYLINUX=0 source $CONDA/etc/profile.d/conda.sh @@ -18,7 +18,7 @@ conda config --add channels conda-forge conda create -p ../boa boa anaconda-client conda activate boa -PYTHON_VERSIONS="3.7 3.8 3.9 3.10 3.11" +PYTHON_VERSIONS="3.11 3.12" for pyversion in $PYTHON_VERSIONS do # Workaround to build when a single version fails diff --git a/ci/build_linux.sh b/ci/build_linux.sh index a40a603..1038ad5 100644 --- a/ci/build_linux.sh +++ b/ci/build_linux.sh @@ -1,10 +1,11 @@ set -e -x -export PATH=/opt/python/cp39-cp39/bin/:$PATH -export DSS_PYTHON_BACKEND_MANYLINUX=1 +export PATH=/opt/python/cp311-cp311/bin/:$PATH +# export DSS_PYTHON_BACKEND_MANYLINUX=1 cd dss_python_backend -python3 -m pip install --upgrade pip cffi wheel -python3 setup.py --quiet bdist_wheel --py-limited-api cp37 --dist-dir="../artifacts_raw" +python3 -m pip install --user --upgrade pip setuptools packaging trove-classifiers cffi wheel 'numpy>=2,<3' build +# python3 setup.py --quiet bdist_wheel --py-limited-api cp37 --dist-dir="../artifacts_raw" +python3 -m build --wheel --outdir="../artifacts_raw" cd .. # Bundle external shared libraries into the wheels diff --git a/ci/build_wheel.sh b/ci/build_wheel.sh index 2d4b622..31889d6 100644 --- a/ci/build_wheel.sh +++ b/ci/build_wheel.sh @@ -1,5 +1,5 @@ mkdir -p artifacts cd dss_python_backend -$PYTHON -m pip install --upgrade pip setuptools -$PYTHON -m pip install cffi wheel -$PYTHON setup.py --quiet bdist_wheel --py-limited-api cp37 --dist-dir=$ARTIFACTS_FOLDER +$PYTHON -m pip install --upgrade pip setuptools packaging trove-classifiers cffi wheel 'numpy>=2,<3' build +# $PYTHON setup.py --quiet bdist_wheel --py-limited-api cp37 --dist-dir=$ARTIFACTS_FOLDER +$PYTHON -m build --wheel --outdir="$ARTIFACTS_FOLDER" \ No newline at end of file diff --git a/ci/test_wheel.sh b/ci/test_wheel.sh index 842f884..2e68448 100644 --- a/ci/test_wheel.sh +++ b/ci/test_wheel.sh @@ -3,12 +3,13 @@ set -e -x ORIGINAL_PATH=$PATH -PYTHON_DIRS="cp37-cp37m cp38-cp38 cp39-cp39 cp310-cp310 cp311-cp311" +PYTHON_DIRS="cp312-cp312 cp313-cp313 cp314-cp314" for pydir in $PYTHON_DIRS do echo Installing for CPython $pydir export PATH=/opt/python/${pydir}/bin/:$ORIGINAL_PATH python -m pip install artifacts/dss_python_backend-*.whl - python -c 'from dss_python_backend import lib, ffi; lib.ctx_DSS_NewCircuit(ffi.NULL, b"test123"); assert ffi.string(lib.ctx_Circuit_Get_Name(ffi.NULL)) == b"test123"' + python -c 'from dss_python_backend import lib, ffi; lib.DSS_NewCircuit(ffi.NULL, b"test123"); assert ffi.string(lib.Circuit_Get_Name(ffi.NULL)) == b"test123"' + python -c 'from dss_python_backend import _fastdss' done diff --git a/dss_build.py b/dss_build.py index c19aacb..e417550 100644 --- a/dss_build.py +++ b/dss_build.py @@ -1,20 +1,74 @@ +import numpy from cffi import FFI import sys, re, os from dss_setup_common import PLATFORM_FOLDER +from setuptools import Extension -def process_header(src, extern_py=False, implement_py=False, prefix=''): +def process_header(src, extern_py=False, implement_py=False, prefix='', flags=None, fn='', remove=[]): '''Prepare the DSS C-API headers for parsing and building with CFFI''' + src = src.replace('#endif // #ifdef HAS_ALTDSS_LOADER_FUNC', '') + src = src.replace('#ifdef HAS_ALTDSS_LOADER_FUNC', '') + + if flags is not None: + definitions = [x[2:] for x in flags] # remove -D + else: + definitions = None + call_convention = '__stdcall ' if (sys.platform == 'win32') else '' - - src = src.replace('dss_long_bool', 'int32_t') - src = re.sub('^.*namespace dss.*$', '', src, flags=re.MULTILINE) + for exp in remove: + src = re.sub(exp, '', src, flags=re.MULTILINE) + + if definitions is not None: + # Since we cannot easily use a C preprocessor here, some custom replacements + if 'ALTDSS_USERMODEL' in definitions: + src = src.replace('dss_long_bool', 'int32_t') + else: + src = src.replace('dss_long_bool', 'bool') + + candidate_definitions = ['ALTDSS_USERMODEL', 'OPENDSS_USERMODEL_V7', 'OPENDSS_USERMODEL_V10'] + + cond = re.escape('#if defined(ALTDSS_USERMODEL) || defined(OPENDSS_USERMODEL_V7)') + m = re.search(f'^{cond}\n(.*?)\n#else // {cond}\n(.*?)\n#endif // {cond}', src, flags=re.DOTALL|re.IGNORECASE|re.MULTILINE) + assert m + src = src.replace(m.group(0), + m.group(1) + if ('ALTDSS_USERMODEL' in definitions or 'OPENDSS_USERMODEL_V7' in definitions) else + m.group(2) + ) + + for candidate in candidate_definitions: + cond = re.escape(f'#ifdef {candidate}') + m = re.search(f'^{cond}\n(.*?)\n#else // {cond}\n(.*?)\n#endif // {cond}', src, flags=re.DOTALL|re.IGNORECASE|re.MULTILINE) + if m: + src = src.replace(m.group(0), + m.group(1) + if (candidate in definitions) else + m.group(2) + ) + + m = re.search(f'^{cond}\n(.*?)\n#endif // {cond}', src, flags=re.DOTALL|re.IGNORECASE|re.MULTILINE) + if m: + src = src.replace(m.group(0), + m.group(1) + if (candidate in definitions) else + '' + ) + + src = re.sub('^.*namespace .*$', '', src, flags=re.MULTILINE) if not implement_py: src = re.sub('^extern .*', '', src, flags=re.MULTILINE) src = re.sub('^.*extern .*$', '', src, flags=re.MULTILINE) src = re.sub('^#.*', '', src, flags=re.MULTILINE) - src = re.sub('DSS_CAPI_.*DLL', '', src) + src = re.sub('(DSS_CAPI_.*DLL)|(ALTDSS_.*_DLL)', '', src) + + # Remove functions for GR strings, deprecated + non_gr_str_list = re.findall(r'^\s*void (\w+)\(const\s+void\*\s*ctx,\s*char\s*\*\*\*\s*\w+,\s*int32_t\s*\*\s*\w+', src, flags=re.MULTILINE) + non_gr_str_list += re.findall(r'^\s*void (\w+)\(char\s*\*\*\*\s*\w+,\s*int32_t\s*\*\s*\w+', src, flags=re.MULTILINE) + for non_gr_name in non_gr_str_list: + src = re.sub(rf'^\s*void\s+({non_gr_name})_GR.*', '', src, count=1, flags=re.MULTILINE) + src = re.sub( r'DSS_MODEL_CALLBACK\(([^,]+), ([^\)]+)\)', r'\1 ({call_convention}*\2)'.format(call_convention=call_convention), @@ -61,7 +115,7 @@ def process_header(src, extern_py=False, implement_py=False, prefix=''): )) src = '\n'.join(out_lines) - + return src extra = {} @@ -70,62 +124,75 @@ def process_header(src, extern_py=False, implement_py=False, prefix=''): # loaded without changing LD_LIBRARY_PATH. if sys.platform == 'linux': extra['extra_link_args'] = ["-Wl,-R,$ORIGIN/."] +elif sys.platform == 'win32': + # Due to some specifics on Windows, we need to skip the lib included via pragma + python3xx_lib = f"python{sys.version_info.major}{sys.version_info.minor}.lib" + extra['extra_link_args'] = [f"/NODEFAULTLIB:{python3xx_lib}"] +elif sys.platform == 'darwin': + extra['extra_link_args'] = ["-Wl,-rpath,@loader_path/."] + ffi_builders = {} src_path = os.environ.get('SRC_DIR', '') DSS_CAPI_PATH = os.environ.get('DSS_CAPI_PATH', os.path.join(src_path, '..', 'dss_capi')) - -for version in ('', 'd'): - ffi_builder_dss = FFI() - debug = 'd' if version.endswith('d') else '' - - main_header_fn = os.path.join(DSS_CAPI_PATH, 'include', 'dss_capi.h') - dss_capi_ctx_path = os.path.join(DSS_CAPI_PATH, 'include', 'dss_capi_ctx.h') - headers = [main_header_fn, dss_capi_ctx_path] - # Temporary fixes for DSS C-API headers - for fn in headers: - with open(fn, 'r') as f: - patched = (f.read(). - replace(' ctx_Fuses_Reset(void* ctx, int32_t Value)', ' ctx_Fuses_Reset(void* ctx)'). - replace(' Fuses_Reset(int32_t Value)', ' Fuses_Reset(void)') - ) - with open(fn, 'w') as f: - f.write(patched) - - with open(main_header_fn, 'r') as f: - cffi_header_dss = process_header(f.read()) - - if os.path.exists(dss_capi_ctx_path): - with open(dss_capi_ctx_path, 'r') as f: + +ffi_builder_dss = FFI() +ffi_builders['dss_loader'] = ffi_builder_dss + +# main_header_fn = os.path.join(DSS_CAPI_PATH, 'include', 'altdss', 'capi', 'dss_ctx.h') +main_header_fn = os.path.join(DSS_CAPI_PATH, 'include', 'altdss', 'capi', 'capi.h') +common_header_fn = os.path.join(DSS_CAPI_PATH, 'include', 'altdss', 'capi', 'common.h') +enums_header_fn = os.path.join(DSS_CAPI_PATH, 'include', 'altdss', 'capi', 'enums.h') +# dss_capi_ctx_path = os.path.join(DSS_CAPI_PATH, 'include', 'altdss', 'capi', 'dss_ctx.h') +extra_headers = [enums_header_fn, ] + +if common_header_fn: + with open(common_header_fn, 'r') as f: + # Remove the functions from the common header, only use the other defs + cffi_header_dss = process_header(f.read(), fn=common_header_fn, remove=[r'^\s*ALTDSS_CAPI_DLL.*$', r'^\s*HMODULE.*$']) +else: + cffi_header_dss = '' + +with open(main_header_fn, 'r') as f: + src = f.read().replace('ALTDSS_CAPI_DLL', '') + cffi_header_dss += process_header(src, fn=main_header_fn, remove=[r'^\s*HMODULE.*$']) + + +for extra_fn in extra_headers: + if os.path.exists(extra_fn): + with open(extra_fn, 'r') as f: cffi_header_dss += process_header(f.read()) - - with open('cffi/dss_capi_custom.h', 'r') as f: - extra_header_dss = f.read() - - cffi_header_dss += extra_header_dss - - with open('cffi/dss_capi_custom.c', 'r') as f: - if os.path.exists(dss_capi_ctx_path): - extra_source_dss = '#include \n' - extra_source_dss += f.read() - else: - extra_source_dss = f.read() - - ffi_builder_dss.cdef(cffi_header_dss) - - ffi_builder_dss.set_source("_dss_capi{}".format(debug), extra_source_dss, - libraries=["dss_capi{}".format(debug)], - library_dirs=[ - os.path.join(DSS_CAPI_PATH, 'lib/{}'.format(PLATFORM_FOLDER)) - ], - include_dirs=[os.path.join(DSS_CAPI_PATH, 'include')], - source_extension='.c', - **extra - ) + +with open('cffi/dss_capi_custom.h', 'r') as f: + extra_header_dss = f.read() - ffi_builders[version] = ffi_builder_dss +cffi_header_dss += extra_header_dss +extra_source_dss = '' +with open('cffi/dss_capi_custom.c', 'r') as f: + extra_source_dss = '#include \n' + extra_source_dss += '#include \n' + extra_source_dss += '#include \n' + extra_source_dss += f.read() + +ffi_builder_dss.cdef(cffi_header_dss, packed=True) +lib_dir = os.path.join(DSS_CAPI_PATH, 'lib/{}'.format(PLATFORM_FOLDER)) +inc_dir = os.path.join(DSS_CAPI_PATH, 'include') + +ffi_builder_dss.set_source(f"_altdss_capi_loader", extra_source_dss, + libraries=['altdss_capi_loader'], + define_macros = [('HAS_ALTDSS_LOADER_FUNC', 1)], + library_dirs=[ + lib_dir + ], + include_dirs=[ + inc_dir, + # os.path.join(DSS_CAPI_PATH, 'include/altdss'), + ], + source_extension='.c', + **extra +) # User-model modules/DLLs # Currently we build a separate DLL for each kind of model, @@ -133,7 +200,7 @@ def process_header(src, extern_py=False, implement_py=False, prefix=''): # merged in a single DLL, but there's not much benefit. with open(os.path.join(DSS_CAPI_PATH, 'include/dss_UserModels.h'), 'r') as f: - cffi_header_um = process_header(f.read()) + raw_header_um = f.read() user_models = [ 'GenUserModel', @@ -143,36 +210,59 @@ def process_header(src, extern_py=False, implement_py=False, prefix=''): # 'CapUserControl', ] -for user_model in user_models: +variant_options = { + 'AltDSS': ['-DALTDSS_USERMODEL'], + 'OpenDSS_v7': ['-DOPENDSS_USERMODEL_V7'], + 'OpenDSS_v8v9': [], + 'OpenDSS_v10': ['-DOPENDSS_USERMODEL_V10'] +} + +for user_model in user_models: with open(os.path.join(DSS_CAPI_PATH, 'include', 'dss_{}.h'.format(user_model)), 'r') as f: func_def = f.read() prefix = "py{}_".format(user_model) user_model_def = process_header(func_def, extern_py=True, prefix=prefix) user_model_src = process_header(func_def, implement_py=True, prefix=prefix) - - ffi_builder = FFI() - ffi_builder.cdef(cffi_header_um + user_model_def, packed=True) - ffi_builder.set_source("_dss_{}".format(user_model), user_model_src, - libraries=[], - library_dirs=[], - include_dirs=[os.path.join(DSS_CAPI_PATH, 'include')], - source_extension='.c', - #extra_compile_args=['/DYNAMICBASE:NO'], - #extra_link_args=['/DYNAMICBASE:NO', '/NXCOMPAT:NO'] - ) - ffi_builders[user_model] = ffi_builder + + for variant, variant_flags in variant_options.items(): + cffi_header_um_variant = process_header(raw_header_um, flags=variant_flags) + ffi_builder = FFI() + ffi_builder.cdef(cffi_header_um_variant + user_model_def, packed=True) + ffi_builder.set_source(f"_dss_{user_model}_{variant}", user_model_src, + libraries=[], + library_dirs=[], + include_dirs=[inc_dir], + source_extension='.c', + extra_compile_args=variant_flags, + #extra_link_args=['/DYNAMICBASE:NO', '/NXCOMPAT:NO'] + ) + ffi_builders[f'{user_model}-{variant}'] = ffi_builder # Is there a better way to do this? Unfortunately setup(cffi_modules=...) # needs a list of strings and cannot handle objects directly -ffi_builder_ = ffi_builders[''] -ffi_builder_d = ffi_builders['d'] -ffi_builder_GenUserModel = ffi_builders['GenUserModel'] +ffi_builder_GenUserModel_altdss = ffi_builders['GenUserModel-AltDSS'] +ffi_builder_GenUserModel_v7 = ffi_builders['GenUserModel-OpenDSS_v7'] +ffi_builder_GenUserModel_v8v9 = ffi_builders['GenUserModel-OpenDSS_v8v9'] +ffi_builder_GenUserModel_v10 = ffi_builders['GenUserModel-OpenDSS_v10'] #ffi_builder_PVSystemUserModel = ffi_builders['PVSystemUserModel'] #ffi_builder_StoreDynaModel = ffi_builders['StoreDynaModel'] #ffi_builder_StoreUserModel = ffi_builders['StoreUserModel'] #ffi_builder_CapUserControl = ffi_builders['CapUserControl'] - + + +_fast_dss_options = dict( + py_limited_api=True, + include_dirs=[numpy.get_include(), inc_dir], + libraries=['altdss_capi_loader'], + library_dirs=[lib_dir], + **extra + # extra_compile_args=['-g', '-O0'], + # extra_link_args=['-g'], +) + +fastdss_extension = Extension('_fastdss', ["src/_fastdss.c"], **_fast_dss_options) + if __name__ == "__main__": for version, builder in ffi_builders.items(): print('-' * 40) diff --git a/dss_python_backend/__init__.py b/dss_python_backend/__init__.py index 0a19b39..6bdebee 100644 --- a/dss_python_backend/__init__.py +++ b/dss_python_backend/__init__.py @@ -6,18 +6,55 @@ For better maintenance and evolution of the Python-only code, the module was split in two. ''' -import os +import os, sys +from . import _altdss_capi_loader +from ._altdss_capi_loader import ffi, lib as loader_lib +from pathlib import Path + +altdss_lib_parent_path = Path(_altdss_capi_loader.__file__).absolute().parent + +if sys.platform == 'win32': + DLL_SUFFIX = '.dll' + DLL_PREFIX = '' +elif sys.platform in ('linux', 'linux2'): + DLL_SUFFIX = '.so' + DLL_PREFIX = 'lib' +elif sys.platform == 'darwin': + DLL_SUFFIX = '.dylib' + DLL_PREFIX = 'lib' +else: + raise RuntimeError("Unsupported platform!") if os.environ.get('DSS_EXTENSIONS_DEBUG', '') != '1': - from ._dss_capi import ffi, lib + altdss_lib_path = altdss_lib_parent_path.joinpath(f'{DLL_PREFIX}altdss_capi{DLL_SUFFIX}') else: import warnings warnings.warn('Environment variable DSS_EXTENSIONS_DEBUG=1 is set: loading the debug version of the DSS C-API library') - from ._dss_capid import ffi, lib + altdss_lib_path = altdss_lib_parent_path.joinpath(f'{DLL_PREFIX}altdss_capid{DLL_SUFFIX}') + +if not altdss_lib_path.exists(): + raise RuntimeError('AltDSS library not found!') + +# Basic initialization -- load the library and prepare the structures +lib = _altdss_capi_loader.ffi.new('AltDSSCAPI*') + +_init_result = loader_lib.AltDSSCAPILibInit( + str(altdss_lib_path).encode(), + ffi.NULL, + b"AltDSSCAPIInit", + lib, + ffi.sizeof(lib[0]), + 0, + 0, + ffi.NULL +) + +if _init_result != 1: + raise RuntimeError(f'AltDSS library found but could not be loaded (code {_init_result})!') -# Ensure this is called at least once. This was moved from +# For AltDSS, ensure this is called at least once. This was moved from # CffiApiUtil so we call it as soon as the DLL/so is loaded. -lib.DSS_Start(0) +lib.DSS_Start(ffi.NULL, 0) -__version__ = '0.14.4' -__all__ = ['ffi', 'lib'] +__version__ = '0.15.0b3' +__all__ = ['ffi', 'lib', 'loader_lib'] diff --git a/dss_python_backend/_func_info.py b/dss_python_backend/_func_info.py new file mode 100644 index 0000000..97fee09 --- /dev/null +++ b/dss_python_backend/_func_info.py @@ -0,0 +1,57 @@ +# SPDX-FileCopyrightText: (C) 2024-2025 Paulo Meira & contributors to DSS-Extensions +# SPDX-License-Identifier: LGPL-3.0-only + +from enum import Enum + +class FastDSSTypes(Enum): + fastdss_types_void = 0 + fastdss_types_u16 = 1 + fastdss_types_f32 = 2 + fastdss_types_f64 = 3 + fastdss_types_f64_f64_i32 = 4 + fastdss_types_gr_f64s = 5 + fastdss_types_gr_i32s = 6 + fastdss_types_gr_i8s = 7 + fastdss_types_gr_z128 = 8 + fastdss_types_gr_z128s = 9 + fastdss_types_i32 = 10 + fastdss_types_i32_i32 = 11 + fastdss_types_str = 12 + fastdss_types_strs = 13 + fastdss_types_z64 = 14 + +t = FastDSSTypes + +funcs = ( + (t.fastdss_types_str, t.fastdss_types_void, ('ActiveClass_Get_ActiveClassName', 'ActiveClass_Get_ActiveClassParent', 'ActiveClass_Get_Name', 'Bus_Get_Name', 'CNData_Get_Name', 'CapControls_Get_Capacitor', 'CapControls_Get_MonitoredObj', 'CapControls_Get_Name', 'Capacitors_Get_Name', 'Circuit_Get_Name', 'CktElement_Get_DisplayName', 'CktElement_Get_EnergyMeter', 'CktElement_Get_GUID', 'CktElement_Get_Name', 'CktElement_Get_VariableName', 'DSSElement_Get_Name', 'DSSProperty_Get_Description', 'DSSProperty_Get_Name', 'DSSProperty_Get_Val', 'DSS_Get_DataPath', 'DSS_Get_DefaultEditor', 'DSS_Get_Version', 'Error_Get_Description', 'Fuses_Get_MonitoredObj', 'Fuses_Get_Name', 'Fuses_Get_SwitchedObj', 'Fuses_Get_TCCcurve', 'GICSources_Get_Bus1', 'GICSources_Get_Bus2', 'GICSources_Get_Name', 'Generators_Get_Bus1', 'Generators_Get_Name', 'Generators_Get_Yearly', 'Generators_Get_daily', 'Generators_Get_duty', 'ISources_Get_Name', 'LineCodes_Get_Name', 'LineGeometries_Get_Name', 'LineSpacings_Get_Name', 'Lines_Get_Bus1', 'Lines_Get_Bus2', 'Lines_Get_Geometry', 'Lines_Get_LineCode', 'Lines_Get_Name', 'Lines_Get_Spacing', 'LoadShapes_Get_Name', 'Loads_Get_CVRcurve', 'Loads_Get_Growth', 'Loads_Get_Name', 'Loads_Get_Sensor', 'Loads_Get_Spectrum', 'Loads_Get_Yearly', 'Loads_Get_daily', 'Loads_Get_duty', 'Meters_Get_MeteredElement', 'Meters_Get_Name', 'Monitors_Get_Element', 'Monitors_Get_FileName', 'Monitors_Get_Name', 'PDElements_Get_Name', 'PVSystems_Get_Name', 'PVSystems_Get_Sensor', 'PVSystems_Get_Tdaily', 'PVSystems_Get_Tduty', 'PVSystems_Get_Tyearly', 'PVSystems_Get_daily', 'PVSystems_Get_duty', 'PVSystems_Get_yearly', 'Parser_Get_BeginQuote', 'Parser_Get_CmdString', 'Parser_Get_Delimiters', 'Parser_Get_EndQuote', 'Parser_Get_NextParam', 'Parser_Get_StrValue', 'Parser_Get_WhiteSpace', 'Reactors_Get_Bus1', 'Reactors_Get_Bus2', 'Reactors_Get_LCurve', 'Reactors_Get_Name', 'Reactors_Get_RCurve', 'Reclosers_Get_MonitoredObj', 'Reclosers_Get_Name', 'Reclosers_Get_SwitchedObj', 'ReduceCkt_Get_EditString', 'ReduceCkt_Get_EnergyMeter', 'ReduceCkt_Get_StartPDElement', 'RegControls_Get_MonitoredBus', 'RegControls_Get_Name', 'RegControls_Get_Transformer', 'Relays_Get_MonitoredObj', 'Relays_Get_Name', 'Relays_Get_SwitchedObj', 'Sensors_Get_MeteredElement', 'Sensors_Get_Name', 'Settings_Get_AutoBusList', 'Settings_Get_PriceCurve', 'Settings_Get_SkipFileRegExp', 'Solution_Get_DefaultDaily', 'Solution_Get_DefaultYearly', 'Solution_Get_LDCurve', 'Solution_Get_ModeID', 'Storages_Get_Name', 'SwtControls_Get_Name', 'SwtControls_Get_SwitchedObj', 'TSData_Get_Name', 'Text_Get_Command', 'Text_Get_Result', 'Topology_Get_BranchName', 'Topology_Get_BusName', 'Transformers_Get_Name', 'Transformers_Get_XfmrCode', 'Transformers_Get_strWdgCurrents', 'Vsources_Get_Name', 'WindGens_Get_Bus1', 'WindGens_Get_Name', 'WindGens_Get_Yearly', 'WindGens_Get_daily', 'WindGens_Get_duty', 'WireData_Get_Name', 'XYCurves_Get_Name')), + (t.fastdss_types_str, t.fastdss_types_i32, ('ActiveClass_ToJSON', 'Circuit_ToJSON', 'CktElement_Get_Controller', 'DSSElement_ToJSON', 'DSS_Executive_Get_Command', 'DSS_Executive_Get_CommandHelp', 'DSS_Executive_Get_Option', 'DSS_Executive_Get_OptionHelp', 'DSS_Executive_Get_OptionValue')), + (t.fastdss_types_void, t.fastdss_types_str, ('ActiveClass_Set_Name', 'CNData_Set_Name', 'CapControls_Set_Capacitor', 'CapControls_Set_MonitoredObj', 'CapControls_Set_Name', 'Capacitors_Set_Name', 'Circuit_Disable', 'Circuit_Enable', 'Circuit_SetCktElementName', 'CktElement_Set_DisplayName', 'CktElement_Set_VariableName', 'DSSProgress_Set_Caption', 'DSSProperty_Set_Name', 'DSSProperty_Set_Val', 'DSS_NewCircuit', 'DSS_Set_DataPath', 'Error_Set_Description', 'Fuses_Set_MonitoredObj', 'Fuses_Set_Name', 'Fuses_Set_SwitchedObj', 'Fuses_Set_TCCcurve', 'GICSources_Set_Name', 'Generators_Set_Bus1', 'Generators_Set_Name', 'Generators_Set_Yearly', 'Generators_Set_daily', 'Generators_Set_duty', 'ISources_Set_Name', 'LineCodes_Set_Name', 'LineGeometries_Set_Name', 'LineSpacings_Set_Name', 'Lines_Set_Bus1', 'Lines_Set_Bus2', 'Lines_Set_Geometry', 'Lines_Set_LineCode', 'Lines_Set_Name', 'Lines_Set_Spacing', 'LoadShapes_Set_Name', 'Loads_Set_CVRcurve', 'Loads_Set_Growth', 'Loads_Set_Name', 'Loads_Set_Spectrum', 'Loads_Set_Yearly', 'Loads_Set_daily', 'Loads_Set_duty', 'Meters_Set_MeteredElement', 'Meters_Set_Name', 'Monitors_Set_Element', 'Monitors_Set_Name', 'PDElements_Set_Name', 'PVSystems_Set_Name', 'PVSystems_Set_Tdaily', 'PVSystems_Set_Tduty', 'PVSystems_Set_Tyearly', 'PVSystems_Set_daily', 'PVSystems_Set_duty', 'PVSystems_Set_yearly', 'Parser_Set_BeginQuote', 'Parser_Set_CmdString', 'Parser_Set_Delimiters', 'Parser_Set_EndQuote', 'Parser_Set_WhiteSpace', 'Reactors_Set_Bus1', 'Reactors_Set_Bus2', 'Reactors_Set_LCurve', 'Reactors_Set_Name', 'Reactors_Set_RCurve', 'Reclosers_Set_MonitoredObj', 'Reclosers_Set_Name', 'Reclosers_Set_SwitchedObj', 'ReduceCkt_SaveCircuit', 'ReduceCkt_Set_EditString', 'ReduceCkt_Set_EnergyMeter', 'ReduceCkt_Set_StartPDElement', 'RegControls_Set_MonitoredBus', 'RegControls_Set_Name', 'RegControls_Set_Transformer', 'Relays_Set_MonitoredObj', 'Relays_Set_Name', 'Relays_Set_SwitchedObj', 'Sensors_Set_MeteredElement', 'Sensors_Set_Name', 'Settings_Set_AutoBusList', 'Settings_Set_PriceCurve', 'Settings_Set_SkipFileRegExp', 'Solution_Set_DefaultDaily', 'Solution_Set_DefaultYearly', 'Solution_Set_LDCurve', 'Storages_Set_Name', 'SwtControls_Set_Name', 'SwtControls_Set_SwitchedObj', 'TSData_Set_Name', 'Text_CommandBlock', 'Text_Set_Command', 'Topology_Set_BranchName', 'Topology_Set_BusName', 'Transformers_Set_Name', 'Transformers_Set_XfmrCode', 'Vsources_Set_Name', 'WindGens_Set_Bus1', 'WindGens_Set_Name', 'WindGens_Set_Yearly', 'WindGens_Set_daily', 'WindGens_Set_duty', 'WireData_Set_Name', 'XYCurves_Set_Name', 'YMatrix_SaveAsMarketFiles', 'ZIP_Open', 'ZIP_Redirect')), + (t.fastdss_types_strs, t.fastdss_types_void, ('ActiveClass_Get_AllNames', 'Bus_Get_AllPCEatBus', 'Bus_Get_AllPDEatBus', 'Bus_Get_LineList', 'Bus_Get_LoadList', 'CNData_Get_AllNames', 'CapControls_Get_AllNames', 'Capacitors_Get_AllNames', 'Circuit_Get_AllBusNames', 'Circuit_Get_AllElementNames', 'Circuit_Get_AllNodeNames', 'Circuit_Get_YNodeOrder', 'CktElement_Get_AllPropertyNames', 'CktElement_Get_AllVariableNames', 'CtrlQueue_Get_Queue', 'DSSElement_Get_AllPropertyNames', 'DSS_Get_Classes', 'DSS_Get_UserClasses', 'Fuses_Get_AllNames', 'Fuses_Get_NormalState', 'Fuses_Get_State', 'GICSources_Get_AllNames', 'Generators_Get_AllNames', 'Generators_Get_RegisterNames', 'ISources_Get_AllNames', 'LineCodes_Get_AllNames', 'LineGeometries_Get_AllNames', 'LineGeometries_Get_Conductors', 'LineSpacings_Get_AllNames', 'Lines_Get_AllNames', 'LoadShapes_Get_AllNames', 'Loads_Get_AllNames', 'Meters_Get_AllBranchesInZone', 'Meters_Get_AllEndElements', 'Meters_Get_AllNames', 'Meters_Get_RegisterNames', 'Meters_Get_ZonePCE', 'Monitors_Get_AllNames', 'Monitors_Get_Header', 'PDElements_Get_AllNames', 'PVSystems_Get_AllNames', 'PVSystems_Get_RegisterNames', 'Reactors_Get_AllNames', 'Reclosers_Get_AllNames', 'RegControls_Get_AllNames', 'Relays_Get_AllNames', 'Sensors_Get_AllNames', 'Solution_Get_EventLog', 'Solution_Get_IncMatrixCols', 'Solution_Get_IncMatrixRows', 'Storages_Get_AllNames', 'Storages_Get_RegisterNames', 'SwtControls_Get_AllNames', 'TSData_Get_AllNames', 'Topology_Get_AllIsolatedBranches', 'Topology_Get_AllIsolatedLoads', 'Topology_Get_AllLoopedPairs', 'Transformers_Get_AllNames', 'Vsources_Get_AllNames', 'WindGens_Get_AllNames', 'WindGens_Get_RegisterNames', 'WireData_Get_AllNames', 'XYCurves_Get_AllNames')), + (t.fastdss_types_strs, t.fastdss_types_u16, ('CktElement_Get_BusNames',)), + (t.fastdss_types_strs, t.fastdss_types_i32, ('Circuit_Get_AllNodeNamesByPhase',)), + (t.fastdss_types_strs, t.fastdss_types_str, ('ZIP_List',)), + (t.fastdss_types_gr_f64s, t.fastdss_types_void, ('Bus_Get_SeqVoltages', 'Bus_Get_VMagAngle', 'Bus_Get_puVmagAngle', 'Circuit_Get_AllBusDistances', 'Circuit_Get_AllBusVmag', 'Circuit_Get_AllBusVmagPu', 'Circuit_Get_AllNodeDistances', 'CktElement_Get_AllVariableValues', 'CktElement_Get_CurrentsMagAng', 'CktElement_Get_Residuals', 'CktElement_Get_SeqCurrents', 'CktElement_Get_SeqVoltages', 'CktElement_Get_VoltagesMagAng', 'Generators_Get_RegisterValues', 'LineCodes_Get_Cmatrix', 'LineCodes_Get_Rmatrix', 'LineCodes_Get_Xmatrix', 'LineGeometries_Get_Xcoords', 'LineGeometries_Get_Ycoords', 'LineSpacings_Get_Xcoords', 'LineSpacings_Get_Ycoords', 'Lines_Get_Cmatrix', 'Lines_Get_Rmatrix', 'Lines_Get_Xmatrix', 'LoadShapes_Get_Pmult', 'LoadShapes_Get_Qmult', 'LoadShapes_Get_TimeArray', 'Loads_Get_ZIPV', 'Meters_Get_AllocFactors', 'Meters_Get_CalcCurrent', 'Meters_Get_Peakcurrent', 'Meters_Get_RegisterValues', 'Meters_Get_Totals', 'Monitors_Get_dblFreq', 'Monitors_Get_dblHour', 'PDElements_Get_AllCurrentsMagAng', 'PDElements_Get_AllSeqCurrents', 'PVSystems_Get_RegisterValues', 'Reactors_Get_Rmatrix', 'Reactors_Get_Xmatrix', 'Reclosers_Get_RecloseIntervals', 'Sensors_Get_AllocationFactor', 'Sensors_Get_Currents', 'Sensors_Get_kVARS', 'Sensors_Get_kVS', 'Sensors_Get_kWS', 'Settings_Get_VoltageBases', 'Storages_Get_RegisterValues', 'WindGens_Get_RegisterValues', 'XYCurves_Get_Xarray', 'XYCurves_Get_Yarray')), + (t.fastdss_types_gr_f64s, t.fastdss_types_i32, ('Circuit_Get_AllNodeDistancesByPhase', 'Circuit_Get_AllNodeVmagByPhase', 'Circuit_Get_AllNodeVmagPUByPhase', 'Monitors_Get_Channel', 'Parser_Get_Matrix', 'Parser_Get_SymMatrix', 'Parser_Get_Vector')), + (t.fastdss_types_gr_f64s, t.fastdss_types_f64_f64_i32, ('LineGeometries_Get_Cmatrix', 'LineGeometries_Get_Rmatrix', 'LineGeometries_Get_Xmatrix')), + (t.fastdss_types_gr_f64s, t.fastdss_types_u16, ('PDElements_Get_AllMaxCurrents', 'PDElements_Get_AllPctEmerg', 'PDElements_Get_AllPctNorm')), + (t.fastdss_types_gr_z128s, t.fastdss_types_void, ('Bus_Get_CplxSeqVoltages', 'Bus_Get_Isc', 'Bus_Get_VLL', 'Bus_Get_Voc', 'Bus_Get_Voltages', 'Bus_Get_YscMatrix', 'Bus_Get_ZSC012Matrix', 'Bus_Get_ZscMatrix', 'Bus_Get_puVLL', 'Bus_Get_puVoltages', 'Circuit_Get_AllBusVolts', 'Circuit_Get_AllElementLosses', 'Circuit_Get_SystemY', 'Circuit_Get_YCurrents', 'Circuit_Get_YNodeVarray', 'CktElement_Get_AllLosses', 'CktElement_Get_CplxSeqCurrents', 'CktElement_Get_CplxSeqVoltages', 'CktElement_Get_Currents', 'CktElement_Get_PhaseLosses', 'CktElement_Get_Powers', 'CktElement_Get_SeqPowers', 'CktElement_Get_TotalPowers', 'CktElement_Get_Voltages', 'CktElement_Get_Yprim', 'Lines_Get_Yprim', 'PDElements_Get_AllCplxSeqCurrents', 'PDElements_Get_AllCurrents', 'PDElements_Get_AllPowers', 'PDElements_Get_AllSeqPowers', 'Transformers_Get_AllLossesByType', 'Transformers_Get_LossesByType', 'Transformers_Get_WdgCurrents', 'Transformers_Get_WdgVoltages')), + (t.fastdss_types_gr_z128s, t.fastdss_types_f64_f64_i32, ('LineGeometries_Get_Zmatrix',)), + (t.fastdss_types_gr_z128, t.fastdss_types_void, ('Bus_Get_Zsc0', 'Bus_Get_Zsc1', 'Circuit_Get_LineLosses', 'Circuit_Get_Losses', 'Circuit_Get_SubstationLosses', 'Circuit_Get_TotalPower', 'CktElement_Get_Losses', 'Reactors_Get_Z', 'Reactors_Get_Z0', 'Reactors_Get_Z1', 'Reactors_Get_Z2')), + (t.fastdss_types_gr_i32s, t.fastdss_types_void, ('Bus_Get_Nodes', 'Capacitors_Get_States', 'CktElement_Get_NodeOrder', 'CktElement_Get_NodeRef', 'LineGeometries_Get_Units', 'PDElements_Get_AllNumConductors', 'PDElements_Get_AllNumPhases', 'PDElements_Get_AllNumTerminals', 'Parallel_Get_ActorProgress', 'Parallel_Get_ActorStatus', 'Settings_Get_LossRegs', 'Settings_Get_SkipCommands', 'Settings_Get_UEregs', 'Solution_Get_BusLevels', 'Solution_Get_IncMatrix', 'Solution_Get_Laplacian')), + (t.fastdss_types_gr_i8s, t.fastdss_types_void, ('Monitors_Get_ByteStream',)), + (t.fastdss_types_i32, t.fastdss_types_void, ('ActiveClass_Get_Count', 'ActiveClass_Get_First', 'ActiveClass_Get_Next', 'ActiveClass_Get_NumElements', 'ActiveClass_Get_idx', 'Bus_Get_N_Customers', 'Bus_Get_Next', 'Bus_Get_NumNodes', 'Bus_Get_SectionID', 'Bus_Get_idx', 'CNData_Get_Count', 'CNData_Get_First', 'CNData_Get_GMRUnits', 'CNData_Get_Next', 'CNData_Get_RadiusUnits', 'CNData_Get_ResistanceUnits', 'CNData_Get_idx', 'CNData_Get_k', 'CapControls_Get_Count', 'CapControls_Get_First', 'CapControls_Get_Mode', 'CapControls_Get_MonitoredTerm', 'CapControls_Get_Next', 'CapControls_Get_idx', 'Capacitors_Get_AvailableSteps', 'Capacitors_Get_Count', 'Capacitors_Get_First', 'Capacitors_Get_Next', 'Capacitors_Get_NumSteps', 'Capacitors_Get_idx', 'Circuit_FirstElement', 'Circuit_FirstPCElement', 'Circuit_FirstPDElement', 'Circuit_Get_NumBuses', 'Circuit_Get_NumCktElements', 'Circuit_Get_NumNodes', 'Circuit_Get_ParentPDElement', 'Circuit_NextElement', 'Circuit_NextPCElement', 'Circuit_NextPDElement', 'CktElement_Get_Handle', 'CktElement_Get_NumConductors', 'CktElement_Get_NumControls', 'CktElement_Get_NumPhases', 'CktElement_Get_NumProperties', 'CktElement_Get_NumTerminals', 'CktElement_Get_OCPDevIndex', 'CktElement_Get_OCPDevType', 'CktElement_Get_VariableIdx', 'CktElement_Get_YprimOrder', 'CtrlQueue_Get_ActionCode', 'CtrlQueue_Get_DeviceHandle', 'CtrlQueue_Get_NumActions', 'CtrlQueue_Get_PopAction', 'CtrlQueue_Get_QueueSize', 'DSSElement_Get_NumProperties', 'DSS_Executive_Get_NumCommands', 'DSS_Executive_Get_NumOptions', 'DSS_Get_NumCircuits', 'DSS_Get_NumClasses', 'DSS_Get_NumUserClasses', 'Error_Get_Number', 'Fuses_Get_Count', 'Fuses_Get_First', 'Fuses_Get_MonitoredTerm', 'Fuses_Get_Next', 'Fuses_Get_NumPhases', 'Fuses_Get_SwitchedTerm', 'Fuses_Get_idx', 'GICSources_Get_Count', 'GICSources_Get_First', 'GICSources_Get_Next', 'GICSources_Get_Phases', 'GICSources_Get_idx', 'Generators_Get_Class_', 'Generators_Get_Count', 'Generators_Get_First', 'Generators_Get_Model', 'Generators_Get_Next', 'Generators_Get_Phases', 'Generators_Get_Status', 'Generators_Get_idx', 'ISources_Get_Count', 'ISources_Get_First', 'ISources_Get_Next', 'ISources_Get_idx', 'LineCodes_Get_Count', 'LineCodes_Get_First', 'LineCodes_Get_Next', 'LineCodes_Get_Phases', 'LineCodes_Get_Units', 'LineCodes_Get_idx', 'LineGeometries_Get_Count', 'LineGeometries_Get_First', 'LineGeometries_Get_Nconds', 'LineGeometries_Get_Next', 'LineGeometries_Get_Phases', 'LineGeometries_Get_idx', 'LineSpacings_Get_Count', 'LineSpacings_Get_First', 'LineSpacings_Get_Nconds', 'LineSpacings_Get_Next', 'LineSpacings_Get_Phases', 'LineSpacings_Get_Units', 'LineSpacings_Get_idx', 'Lines_Get_Count', 'Lines_Get_First', 'Lines_Get_Next', 'Lines_Get_NumCust', 'Lines_Get_Parent', 'Lines_Get_Phases', 'Lines_Get_TotalCust', 'Lines_Get_Units', 'Lines_Get_idx', 'LoadShapes_Get_Count', 'LoadShapes_Get_First', 'LoadShapes_Get_Next', 'LoadShapes_Get_Npts', 'LoadShapes_Get_idx', 'Loads_Get_Class_', 'Loads_Get_Count', 'Loads_Get_First', 'Loads_Get_Model', 'Loads_Get_Next', 'Loads_Get_NumCust', 'Loads_Get_Phases', 'Loads_Get_Status', 'Loads_Get_idx', 'Meters_Get_Count', 'Meters_Get_CountBranches', 'Meters_Get_CountEndElements', 'Meters_Get_First', 'Meters_Get_MeteredTerminal', 'Meters_Get_Next', 'Meters_Get_NumSectionBranches', 'Meters_Get_NumSectionCustomers', 'Meters_Get_NumSections', 'Meters_Get_OCPDeviceType', 'Meters_Get_SectSeqIdx', 'Meters_Get_SectTotalCust', 'Meters_Get_SeqListSize', 'Meters_Get_SequenceIndex', 'Meters_Get_TotalCustomers', 'Meters_Get_idx', 'Monitors_Get_Count', 'Monitors_Get_FileVersion', 'Monitors_Get_First', 'Monitors_Get_Mode', 'Monitors_Get_Next', 'Monitors_Get_NumChannels', 'Monitors_Get_RecordSize', 'Monitors_Get_SampleCount', 'Monitors_Get_Terminal', 'Monitors_Get_idx', 'PDElements_Get_Count', 'PDElements_Get_First', 'PDElements_Get_FromTerminal', 'PDElements_Get_Next', 'PDElements_Get_Numcustomers', 'PDElements_Get_ParentPDElement', 'PDElements_Get_SectionID', 'PDElements_Get_Totalcustomers', 'PDElements_Get_idx', 'PVSystems_Get_Count', 'PVSystems_Get_First', 'PVSystems_Get_Next', 'PVSystems_Get_idx', 'Parallel_Get_ActiveActor', 'Parallel_Get_ActiveParallel', 'Parallel_Get_ActorCPU', 'Parallel_Get_ConcatenateReports', 'Parallel_Get_NumCPUs', 'Parallel_Get_NumCores', 'Parallel_Get_NumOfActors', 'Parser_Get_IntValue', 'Reactors_Get_Count', 'Reactors_Get_First', 'Reactors_Get_Next', 'Reactors_Get_Phases', 'Reactors_Get_SpecType', 'Reactors_Get_idx', 'Reclosers_Get_Count', 'Reclosers_Get_First', 'Reclosers_Get_MonitoredTerm', 'Reclosers_Get_Next', 'Reclosers_Get_NormalState', 'Reclosers_Get_NumFast', 'Reclosers_Get_Shots', 'Reclosers_Get_State', 'Reclosers_Get_SwitchedTerm', 'Reclosers_Get_idx', 'RegControls_Get_Count', 'RegControls_Get_First', 'RegControls_Get_MaxTapChange', 'RegControls_Get_Next', 'RegControls_Get_TapNumber', 'RegControls_Get_TapWinding', 'RegControls_Get_Winding', 'RegControls_Get_idx', 'Relays_Get_Count', 'Relays_Get_First', 'Relays_Get_MonitoredTerm', 'Relays_Get_Next', 'Relays_Get_NormalState', 'Relays_Get_State', 'Relays_Get_SwitchedTerm', 'Relays_Get_idx', 'Sensors_Get_Count', 'Sensors_Get_First', 'Sensors_Get_MeteredTerminal', 'Sensors_Get_Next', 'Sensors_Get_idx', 'Settings_Get_CktModel', 'Settings_Get_IterateDisabled', 'Solution_Get_AddType', 'Solution_Get_Algorithm', 'Solution_Get_ControlIterations', 'Solution_Get_ControlMode', 'Solution_Get_Hour', 'Solution_Get_Iterations', 'Solution_Get_LoadModel', 'Solution_Get_MaxControlIterations', 'Solution_Get_MaxIterations', 'Solution_Get_MinIterations', 'Solution_Get_Mode', 'Solution_Get_MostIterationsDone', 'Solution_Get_Number', 'Solution_Get_Random', 'Solution_Get_Totaliterations', 'Solution_Get_Year', 'Storages_Get_ControlMode', 'Storages_Get_Count', 'Storages_Get_First', 'Storages_Get_Next', 'Storages_Get_SafeMode', 'Storages_Get_State', 'Storages_Get_VarFollowInverter', 'Storages_Get_idx', 'SwtControls_Get_Action', 'SwtControls_Get_Count', 'SwtControls_Get_First', 'SwtControls_Get_Next', 'SwtControls_Get_NormalState', 'SwtControls_Get_State', 'SwtControls_Get_SwitchedTerm', 'SwtControls_Get_idx', 'TSData_Get_Count', 'TSData_Get_First', 'TSData_Get_GMRUnits', 'TSData_Get_Next', 'TSData_Get_RadiusUnits', 'TSData_Get_ResistanceUnits', 'TSData_Get_idx', 'Topology_Get_ActiveBranch', 'Topology_Get_ActiveLevel', 'Topology_Get_BackwardBranch', 'Topology_Get_First', 'Topology_Get_FirstLoad', 'Topology_Get_ForwardBranch', 'Topology_Get_LoopedBranch', 'Topology_Get_Next', 'Topology_Get_NextLoad', 'Topology_Get_NumIsolatedBranches', 'Topology_Get_NumIsolatedLoads', 'Topology_Get_NumLoops', 'Topology_Get_ParallelBranch', 'Transformers_Get_CoreType', 'Transformers_Get_Count', 'Transformers_Get_First', 'Transformers_Get_Next', 'Transformers_Get_NumTaps', 'Transformers_Get_NumWindings', 'Transformers_Get_Wdg', 'Transformers_Get_idx', 'Vsources_Get_Count', 'Vsources_Get_First', 'Vsources_Get_Next', 'Vsources_Get_Phases', 'Vsources_Get_idx', 'WindGens_Get_Class_', 'WindGens_Get_Count', 'WindGens_Get_First', 'WindGens_Get_NPoles', 'WindGens_Get_N_WTG', 'WindGens_Get_Next', 'WindGens_Get_Phases', 'WindGens_Get_QFlag', 'WindGens_Get_QMode', 'WindGens_Get_idx', 'WireData_Get_Count', 'WireData_Get_First', 'WireData_Get_GMRUnits', 'WireData_Get_Next', 'WireData_Get_RadiusUnits', 'WireData_Get_ResistanceUnits', 'WireData_Get_idx', 'XYCurves_Get_Count', 'XYCurves_Get_First', 'XYCurves_Get_Next', 'XYCurves_Get_Npts', 'XYCurves_Get_idx', 'YMatrix_Get_ControlIteration', 'YMatrix_Get_Iteration', 'YMatrix_Get_IterationFlag')), + (t.fastdss_types_i32, t.fastdss_types_i32, ('Bus_GetUniqueNodeNumber', 'Circuit_SetActiveBusi')), + (t.fastdss_types_i32, t.fastdss_types_str, ('Circuit_SetActiveBus', 'Circuit_SetActiveClass', 'Circuit_SetActiveElement', 'DSS_SetActiveClass', 'Lines_New', 'LoadShapes_New')), + (t.fastdss_types_void, t.fastdss_types_i32, ('ActiveClass_Set_idx', 'CNData_Set_GMRUnits', 'CNData_Set_RadiusUnits', 'CNData_Set_ResistanceUnits', 'CNData_Set_idx', 'CNData_Set_k', 'CapControls_Set_Mode', 'CapControls_Set_MonitoredTerm', 'CapControls_Set_idx', 'Capacitors_Set_NumSteps', 'Capacitors_Set_idx', 'Circuit_Flatten', 'Circuit_SetCktElementIndex', 'CktElement_Set_VariableIdx', 'CtrlQueue_Delete', 'CtrlQueue_Set_Action', 'DSSProgress_Set_PctProgress', 'DSSProperty_Set_Index', 'Fuses_Set_MonitoredTerm', 'Fuses_Set_SwitchedTerm', 'Fuses_Set_idx', 'GICSources_Set_Phases', 'GICSources_Set_idx', 'Generators_Set_Class_', 'Generators_Set_Model', 'Generators_Set_Phases', 'Generators_Set_Status', 'Generators_Set_idx', 'ISources_Set_idx', 'LineCodes_Set_Phases', 'LineCodes_Set_Units', 'LineCodes_Set_idx', 'LineGeometries_Set_Nconds', 'LineGeometries_Set_Phases', 'LineGeometries_Set_idx', 'LineSpacings_Set_Nconds', 'LineSpacings_Set_Phases', 'LineSpacings_Set_Units', 'LineSpacings_Set_idx', 'Lines_Set_Phases', 'Lines_Set_Units', 'Lines_Set_idx', 'LoadShapes_Set_Npts', 'LoadShapes_Set_idx', 'Loads_Set_Class_', 'Loads_Set_Model', 'Loads_Set_NumCust', 'Loads_Set_Phases', 'Loads_Set_Status', 'Loads_Set_idx', 'Meters_SetActiveSection', 'Meters_Set_MeteredTerminal', 'Meters_Set_SequenceIndex', 'Meters_Set_idx', 'Monitors_Set_Mode', 'Monitors_Set_Terminal', 'Monitors_Set_idx', 'PDElements_Set_idx', 'PVSystems_Set_idx', 'Parallel_Set_ActiveActor', 'Parallel_Set_ActiveParallel', 'Parallel_Set_ActorCPU', 'Parallel_Set_ConcatenateReports', 'Reactors_Set_Phases', 'Reactors_Set_idx', 'Reclosers_Set_MonitoredTerm', 'Reclosers_Set_NormalState', 'Reclosers_Set_NumFast', 'Reclosers_Set_Shots', 'Reclosers_Set_State', 'Reclosers_Set_SwitchedTerm', 'Reclosers_Set_idx', 'RegControls_Set_MaxTapChange', 'RegControls_Set_TapNumber', 'RegControls_Set_TapWinding', 'RegControls_Set_Winding', 'RegControls_Set_idx', 'Relays_Set_MonitoredTerm', 'Relays_Set_NormalState', 'Relays_Set_State', 'Relays_Set_SwitchedTerm', 'Relays_Set_idx', 'Sensors_Set_MeteredTerminal', 'Sensors_Set_idx', 'Settings_SetPropertyNameStyle', 'Settings_Set_CktModel', 'Settings_Set_IterateDisabled', 'Solution_Set_AddType', 'Solution_Set_Algorithm', 'Solution_Set_ControlIterations', 'Solution_Set_ControlMode', 'Solution_Set_Hour', 'Solution_Set_LoadModel', 'Solution_Set_MaxControlIterations', 'Solution_Set_MaxIterations', 'Solution_Set_MinIterations', 'Solution_Set_Mode', 'Solution_Set_Number', 'Solution_Set_Random', 'Solution_Set_Year', 'Storages_Set_ControlMode', 'Storages_Set_State', 'Storages_Set_VarFollowInverter', 'Storages_Set_idx', 'SwtControls_Set_Action', 'SwtControls_Set_NormalState', 'SwtControls_Set_State', 'SwtControls_Set_SwitchedTerm', 'SwtControls_Set_idx', 'TSData_Set_GMRUnits', 'TSData_Set_RadiusUnits', 'TSData_Set_ResistanceUnits', 'TSData_Set_idx', 'Transformers_Set_CoreType', 'Transformers_Set_NumTaps', 'Transformers_Set_NumWindings', 'Transformers_Set_Wdg', 'Transformers_Set_idx', 'Vsources_Set_Phases', 'Vsources_Set_idx', 'WindGens_Set_Class_', 'WindGens_Set_NPoles', 'WindGens_Set_N_WTG', 'WindGens_Set_Phases', 'WindGens_Set_QFlag', 'WindGens_Set_QMode', 'WindGens_Set_idx', 'WireData_Set_GMRUnits', 'WireData_Set_RadiusUnits', 'WireData_Set_ResistanceUnits', 'WireData_Set_idx', 'XYCurves_Set_Npts', 'XYCurves_Set_idx', 'YMatrix_AddInAuxCurrents', 'YMatrix_Set_ControlIteration', 'YMatrix_Set_Iteration', 'YMatrix_Set_IterationFlag')), + (t.fastdss_types_void, t.fastdss_types_i32_i32, ('CktElement_Close', 'CktElement_Open', 'Solution_BuildYMatrix', 'YMatrix_BuildYMatrixD')), + (t.fastdss_types_f64, t.fastdss_types_void, ('Bus_Get_Cust_Duration', 'Bus_Get_Cust_Interrupts', 'Bus_Get_Distance', 'Bus_Get_Int_Duration', 'Bus_Get_Lambda', 'Bus_Get_Latitude', 'Bus_Get_Longitude', 'Bus_Get_N_interrupts', 'Bus_Get_TotalMiles', 'Bus_Get_kVBase', 'Bus_Get_x', 'Bus_Get_y', 'CNData_Get_DiaCable', 'CNData_Get_DiaIns', 'CNData_Get_DiaStrand', 'CNData_Get_Diameter', 'CNData_Get_EmergAmps', 'CNData_Get_EpsR', 'CNData_Get_GMRac', 'CNData_Get_GmrStrand', 'CNData_Get_InsLayer', 'CNData_Get_NormAmps', 'CNData_Get_RStrand', 'CNData_Get_Rac', 'CNData_Get_Radius', 'CNData_Get_Rdc', 'CapControls_Get_CTratio', 'CapControls_Get_DeadTime', 'CapControls_Get_Delay', 'CapControls_Get_DelayOff', 'CapControls_Get_OFFSetting', 'CapControls_Get_ONSetting', 'CapControls_Get_PTratio', 'CapControls_Get_Vmax', 'CapControls_Get_Vmin', 'Capacitors_Get_kV', 'Capacitors_Get_kvar', 'CktElement_Get_EmergAmps', 'CktElement_Get_NormalAmps', 'CktElement_Get_VariableValue', 'Fuses_Get_Delay', 'Fuses_Get_RatedCurrent', 'GICSources_Get_EE', 'GICSources_Get_EN', 'GICSources_Get_Lat1', 'GICSources_Get_Lat2', 'GICSources_Get_Lon1', 'GICSources_Get_Lon2', 'GICSources_Get_Volts', 'Generators_Get_PF', 'Generators_Get_Vmaxpu', 'Generators_Get_Vminpu', 'Generators_Get_kV', 'Generators_Get_kVArated', 'Generators_Get_kW', 'Generators_Get_kva', 'Generators_Get_kvar', 'ISources_Get_Amps', 'ISources_Get_AngleDeg', 'ISources_Get_Frequency', 'LineCodes_Get_C0', 'LineCodes_Get_C1', 'LineCodes_Get_EmergAmps', 'LineCodes_Get_NormAmps', 'LineCodes_Get_R0', 'LineCodes_Get_R1', 'LineCodes_Get_X0', 'LineCodes_Get_X1', 'LineGeometries_Get_EmergAmps', 'LineGeometries_Get_NormAmps', 'LineGeometries_Get_RhoEarth', 'Lines_Get_C0', 'Lines_Get_C1', 'Lines_Get_EmergAmps', 'Lines_Get_Length', 'Lines_Get_NormAmps', 'Lines_Get_R0', 'Lines_Get_R1', 'Lines_Get_Rg', 'Lines_Get_Rho', 'Lines_Get_SeasonRating', 'Lines_Get_X0', 'Lines_Get_X1', 'Lines_Get_Xg', 'LoadShapes_Get_HrInterval', 'LoadShapes_Get_MaxP', 'LoadShapes_Get_MaxQ', 'LoadShapes_Get_MinInterval', 'LoadShapes_Get_PBase', 'LoadShapes_Get_Qbase', 'LoadShapes_Get_SInterval', 'Loads_Get_AllocationFactor', 'Loads_Get_CVRvars', 'Loads_Get_CVRwatts', 'Loads_Get_Cfactor', 'Loads_Get_PF', 'Loads_Get_PctMean', 'Loads_Get_PctStdDev', 'Loads_Get_RelWeight', 'Loads_Get_Rneut', 'Loads_Get_Vmaxpu', 'Loads_Get_Vminemerg', 'Loads_Get_Vminnorm', 'Loads_Get_Vminpu', 'Loads_Get_Xneut', 'Loads_Get_kV', 'Loads_Get_kW', 'Loads_Get_kva', 'Loads_Get_kvar', 'Loads_Get_kwh', 'Loads_Get_kwhdays', 'Loads_Get_pctSeriesRL', 'Loads_Get_xfkVA', 'Meters_Get_AvgRepairTime', 'Meters_Get_CustInterrupts', 'Meters_Get_FaultRateXRepairHrs', 'Meters_Get_SAIDI', 'Meters_Get_SAIFI', 'Meters_Get_SAIFIKW', 'Meters_Get_SumBranchFltRates', 'PDElements_Get_AccumulatedL', 'PDElements_Get_FaultRate', 'PDElements_Get_Lambda', 'PDElements_Get_RepairTime', 'PDElements_Get_TotalMiles', 'PDElements_Get_pctPermanent', 'PVSystems_Get_Irradiance', 'PVSystems_Get_IrradianceNow', 'PVSystems_Get_PF', 'PVSystems_Get_Pmpp', 'PVSystems_Get_kVArated', 'PVSystems_Get_kW', 'PVSystems_Get_kvar', 'Parser_Get_DblValue', 'Reactors_Get_LmH', 'Reactors_Get_R', 'Reactors_Get_Rp', 'Reactors_Get_X', 'Reactors_Get_kV', 'Reactors_Get_kvar', 'Reclosers_Get_GroundInst', 'Reclosers_Get_GroundTrip', 'Reclosers_Get_PhaseInst', 'Reclosers_Get_PhaseTrip', 'ReduceCkt_Get_Zmag', 'RegControls_Get_CTPrimary', 'RegControls_Get_Delay', 'RegControls_Get_ForwardBand', 'RegControls_Get_ForwardR', 'RegControls_Get_ForwardVreg', 'RegControls_Get_ForwardX', 'RegControls_Get_PTratio', 'RegControls_Get_ReverseBand', 'RegControls_Get_ReverseR', 'RegControls_Get_ReverseVreg', 'RegControls_Get_ReverseX', 'RegControls_Get_TapDelay', 'RegControls_Get_VoltageLimit', 'Sensors_Get_PctError', 'Sensors_Get_Weight', 'Sensors_Get_kVbase', 'Settings_Get_EmergVmaxpu', 'Settings_Get_EmergVminpu', 'Settings_Get_LossWeight', 'Settings_Get_NormVmaxpu', 'Settings_Get_NormVminpu', 'Settings_Get_PriceSignal', 'Settings_Get_UEweight', 'Solution_Get_Capkvar', 'Solution_Get_Frequency', 'Solution_Get_GenMult', 'Solution_Get_GenPF', 'Solution_Get_GenkW', 'Solution_Get_IntervalHrs', 'Solution_Get_LoadMult', 'Solution_Get_Process_Time', 'Solution_Get_Seconds', 'Solution_Get_StepSize', 'Solution_Get_Time_of_Step', 'Solution_Get_Tolerance', 'Solution_Get_Total_Time', 'Solution_Get_dblHour', 'Solution_Get_pctGrowth', 'Storages_Get_AmpLimit', 'Storages_Get_AmpLimitGain', 'Storages_Get_ChargeTrigger', 'Storages_Get_DischargeTrigger', 'Storages_Get_EffCharge', 'Storages_Get_EffDischarge', 'Storages_Get_Kp', 'Storages_Get_PF', 'Storages_Get_PITol', 'Storages_Get_SafeVoltage', 'Storages_Get_TimeChargeTrig', 'Storages_Get_kV', 'Storages_Get_kVA', 'Storages_Get_kVDC', 'Storages_Get_kW', 'Storages_Get_kWRated', 'Storages_Get_kWhRated', 'Storages_Get_kvar', 'Storages_Get_puSOC', 'SwtControls_Get_Delay', 'TSData_Get_DiaCable', 'TSData_Get_DiaIns', 'TSData_Get_DiaShield', 'TSData_Get_Diameter', 'TSData_Get_EmergAmps', 'TSData_Get_EpsR', 'TSData_Get_GMRac', 'TSData_Get_InsLayer', 'TSData_Get_NormAmps', 'TSData_Get_Rac', 'TSData_Get_Radius', 'TSData_Get_Rdc', 'TSData_Get_TapeLap', 'TSData_Get_TapeLayer', 'Transformers_Get_MaxTap', 'Transformers_Get_MinTap', 'Transformers_Get_R', 'Transformers_Get_RdcOhms', 'Transformers_Get_Rneut', 'Transformers_Get_Tap', 'Transformers_Get_Xhl', 'Transformers_Get_Xht', 'Transformers_Get_Xlt', 'Transformers_Get_Xneut', 'Transformers_Get_kV', 'Transformers_Get_kVA', 'Vsources_Get_AngleDeg', 'Vsources_Get_BasekV', 'Vsources_Get_Frequency', 'Vsources_Get_pu', 'WindGens_Get_Ag', 'WindGens_Get_Cp', 'WindGens_Get_Lamda', 'WindGens_Get_PF', 'WindGens_Get_PSS', 'WindGens_Get_QSS', 'WindGens_Get_RThev', 'WindGens_Get_Rad', 'WindGens_Get_VCutIn', 'WindGens_Get_VCutOut', 'WindGens_Get_Vss', 'WindGens_Get_WindSpeed', 'WindGens_Get_XThev', 'WindGens_Get_kV', 'WindGens_Get_kVA', 'WindGens_Get_kW', 'WindGens_Get_kvar', 'WindGens_Get_pd', 'WireData_Get_CapRadius', 'WireData_Get_Diameter', 'WireData_Get_EmergAmps', 'WireData_Get_GMRac', 'WireData_Get_NormAmps', 'WireData_Get_Rac', 'WireData_Get_Radius', 'WireData_Get_Rdc', 'XYCurves_Get_Xscale', 'XYCurves_Get_Xshift', 'XYCurves_Get_Yscale', 'XYCurves_Get_Yshift', 'XYCurves_Get_x', 'XYCurves_Get_y')), + (t.fastdss_types_void, t.fastdss_types_f64, ('Bus_Set_Latitude', 'Bus_Set_Longitude', 'Bus_Set_x', 'Bus_Set_y', 'CNData_Set_DiaCable', 'CNData_Set_DiaIns', 'CNData_Set_DiaStrand', 'CNData_Set_Diameter', 'CNData_Set_EmergAmps', 'CNData_Set_EpsR', 'CNData_Set_GMRac', 'CNData_Set_GmrStrand', 'CNData_Set_InsLayer', 'CNData_Set_NormAmps', 'CNData_Set_RStrand', 'CNData_Set_Rac', 'CNData_Set_Radius', 'CNData_Set_Rdc', 'CapControls_Set_CTratio', 'CapControls_Set_DeadTime', 'CapControls_Set_Delay', 'CapControls_Set_DelayOff', 'CapControls_Set_OFFSetting', 'CapControls_Set_ONSetting', 'CapControls_Set_PTratio', 'CapControls_Set_Vmax', 'CapControls_Set_Vmin', 'Capacitors_Set_kV', 'Capacitors_Set_kvar', 'CktElement_Set_EmergAmps', 'CktElement_Set_NormalAmps', 'CktElement_Set_VariableValue', 'Fuses_Set_Delay', 'Fuses_Set_RatedCurrent', 'GICSources_Set_EE', 'GICSources_Set_EN', 'GICSources_Set_Lat1', 'GICSources_Set_Lat2', 'GICSources_Set_Lon1', 'GICSources_Set_Lon2', 'GICSources_Set_Volts', 'Generators_Set_PF', 'Generators_Set_Vmaxpu', 'Generators_Set_Vminpu', 'Generators_Set_kV', 'Generators_Set_kVArated', 'Generators_Set_kW', 'Generators_Set_kva', 'Generators_Set_kvar', 'ISources_Set_Amps', 'ISources_Set_AngleDeg', 'ISources_Set_Frequency', 'LineCodes_Set_C0', 'LineCodes_Set_C1', 'LineCodes_Set_EmergAmps', 'LineCodes_Set_NormAmps', 'LineCodes_Set_R0', 'LineCodes_Set_R1', 'LineCodes_Set_X0', 'LineCodes_Set_X1', 'LineGeometries_Set_EmergAmps', 'LineGeometries_Set_NormAmps', 'LineGeometries_Set_RhoEarth', 'Lines_Set_C0', 'Lines_Set_C1', 'Lines_Set_EmergAmps', 'Lines_Set_Length', 'Lines_Set_NormAmps', 'Lines_Set_R0', 'Lines_Set_R1', 'Lines_Set_Rg', 'Lines_Set_Rho', 'Lines_Set_X0', 'Lines_Set_X1', 'Lines_Set_Xg', 'LoadShapes_Set_HrInterval', 'LoadShapes_Set_MaxP', 'LoadShapes_Set_MaxQ', 'LoadShapes_Set_MinInterval', 'LoadShapes_Set_PBase', 'LoadShapes_Set_Qbase', 'LoadShapes_Set_SInterval', 'Loads_Set_AllocationFactor', 'Loads_Set_CVRvars', 'Loads_Set_CVRwatts', 'Loads_Set_Cfactor', 'Loads_Set_PF', 'Loads_Set_PctMean', 'Loads_Set_PctStdDev', 'Loads_Set_RelWeight', 'Loads_Set_Rneut', 'Loads_Set_Vmaxpu', 'Loads_Set_Vminemerg', 'Loads_Set_Vminnorm', 'Loads_Set_Vminpu', 'Loads_Set_Xneut', 'Loads_Set_kV', 'Loads_Set_kW', 'Loads_Set_kva', 'Loads_Set_kvar', 'Loads_Set_kwh', 'Loads_Set_kwhdays', 'Loads_Set_pctSeriesRL', 'Loads_Set_xfkVA', 'PDElements_Set_FaultRate', 'PDElements_Set_RepairTime', 'PDElements_Set_pctPermanent', 'PVSystems_Set_Irradiance', 'PVSystems_Set_PF', 'PVSystems_Set_Pmpp', 'PVSystems_Set_kVArated', 'PVSystems_Set_kvar', 'Reactors_Set_LmH', 'Reactors_Set_R', 'Reactors_Set_Rp', 'Reactors_Set_X', 'Reactors_Set_kV', 'Reactors_Set_kvar', 'Reclosers_Set_GroundInst', 'Reclosers_Set_GroundTrip', 'Reclosers_Set_PhaseInst', 'Reclosers_Set_PhaseTrip', 'ReduceCkt_Set_Zmag', 'RegControls_Set_CTPrimary', 'RegControls_Set_Delay', 'RegControls_Set_ForwardBand', 'RegControls_Set_ForwardR', 'RegControls_Set_ForwardVreg', 'RegControls_Set_ForwardX', 'RegControls_Set_PTratio', 'RegControls_Set_ReverseBand', 'RegControls_Set_ReverseR', 'RegControls_Set_ReverseVreg', 'RegControls_Set_ReverseX', 'RegControls_Set_TapDelay', 'RegControls_Set_VoltageLimit', 'Sensors_Set_PctError', 'Sensors_Set_Weight', 'Sensors_Set_kVbase', 'Settings_Set_AllocationFactors', 'Settings_Set_EmergVmaxpu', 'Settings_Set_EmergVminpu', 'Settings_Set_LossWeight', 'Settings_Set_NormVmaxpu', 'Settings_Set_NormVminpu', 'Settings_Set_PriceSignal', 'Settings_Set_UEweight', 'Solution_Set_Capkvar', 'Solution_Set_Frequency', 'Solution_Set_GenMult', 'Solution_Set_GenPF', 'Solution_Set_GenkW', 'Solution_Set_IntervalHrs', 'Solution_Set_LoadMult', 'Solution_Set_Seconds', 'Solution_Set_StepSize', 'Solution_Set_StepsizeHr', 'Solution_Set_StepsizeMin', 'Solution_Set_Tolerance', 'Solution_Set_Total_Time', 'Solution_Set_dblHour', 'Solution_Set_pctGrowth', 'Storages_Set_AmpLimit', 'Storages_Set_AmpLimitGain', 'Storages_Set_ChargeTrigger', 'Storages_Set_DischargeTrigger', 'Storages_Set_EffCharge', 'Storages_Set_EffDischarge', 'Storages_Set_Kp', 'Storages_Set_PF', 'Storages_Set_PITol', 'Storages_Set_SafeVoltage', 'Storages_Set_TimeChargeTrig', 'Storages_Set_kV', 'Storages_Set_kVA', 'Storages_Set_kVDC', 'Storages_Set_kW', 'Storages_Set_kWRated', 'Storages_Set_kWhRated', 'Storages_Set_kvar', 'Storages_Set_puSOC', 'SwtControls_Set_Delay', 'TSData_Set_DiaCable', 'TSData_Set_DiaIns', 'TSData_Set_DiaShield', 'TSData_Set_Diameter', 'TSData_Set_EmergAmps', 'TSData_Set_EpsR', 'TSData_Set_GMRac', 'TSData_Set_InsLayer', 'TSData_Set_NormAmps', 'TSData_Set_Rac', 'TSData_Set_Radius', 'TSData_Set_Rdc', 'TSData_Set_TapeLap', 'TSData_Set_TapeLayer', 'Transformers_Set_MaxTap', 'Transformers_Set_MinTap', 'Transformers_Set_R', 'Transformers_Set_RdcOhms', 'Transformers_Set_Rneut', 'Transformers_Set_Tap', 'Transformers_Set_Xhl', 'Transformers_Set_Xht', 'Transformers_Set_Xlt', 'Transformers_Set_Xneut', 'Transformers_Set_kV', 'Transformers_Set_kVA', 'Vsources_Set_AngleDeg', 'Vsources_Set_BasekV', 'Vsources_Set_Frequency', 'Vsources_Set_pu', 'WindGens_Set_Ag', 'WindGens_Set_Cp', 'WindGens_Set_Lamda', 'WindGens_Set_PF', 'WindGens_Set_PSS', 'WindGens_Set_QSS', 'WindGens_Set_RThev', 'WindGens_Set_Rad', 'WindGens_Set_VCutIn', 'WindGens_Set_VCutOut', 'WindGens_Set_Vss', 'WindGens_Set_WindSpeed', 'WindGens_Set_XThev', 'WindGens_Set_kV', 'WindGens_Set_kVA', 'WindGens_Set_kW', 'WindGens_Set_kvar', 'WindGens_Set_pd', 'WireData_Set_CapRadius', 'WireData_Set_Diameter', 'WireData_Set_EmergAmps', 'WireData_Set_GMRac', 'WireData_Set_NormAmps', 'WireData_Set_Rac', 'WireData_Set_Radius', 'WireData_Set_Rdc', 'XYCurves_Set_Xscale', 'XYCurves_Set_Xshift', 'XYCurves_Set_Yscale', 'XYCurves_Set_Yshift', 'XYCurves_Set_x', 'XYCurves_Set_y', 'YMatrix_IncrementTime')), + (t.fastdss_types_u16, t.fastdss_types_void, ('Bus_Get_Coorddefined', 'Bus_ZscRefresh', 'CapControls_Get_UseVoltOverride', 'Capacitors_AddStep', 'Capacitors_Get_IsDelta', 'Capacitors_SubtractStep', 'CktElement_Get_Enabled', 'CktElement_Get_HasOCPDevice', 'CktElement_Get_HasSwitchControl', 'CktElement_Get_HasVoltControl', 'CktElement_Get_IsIsolated', 'DSS_Get_AllowChangeDir', 'DSS_Get_AllowDOScmd', 'DSS_Get_AllowEditor', 'DSS_Get_AllowForms', 'DSS_Get_COMErrorResults', 'DSS_Get_EnableArrayDimensions', 'DSS_Get_LegacyModels', 'Error_Get_EarlyAbort', 'Error_Get_ExtendedErrors', 'Fuses_IsBlown', 'Generators_Get_ForcedON', 'Generators_Get_IsDelta', 'LineCodes_Get_IsZ1Z0', 'LineGeometries_Get_Reduce', 'Lines_Get_IsSwitch', 'LoadShapes_Get_UseActual', 'Loads_Get_IsDelta', 'Meters_Get_DIFilesAreOpen', 'PDElements_Get_IsShunt', 'Parser_Get_AutoIncrement', 'Reactors_Get_IsDelta', 'Reactors_Get_Parallel', 'ReduceCkt_Get_KeepLoad', 'RegControls_Get_IsInverseTime', 'RegControls_Get_IsReversible', 'Sensors_Get_IsDelta', 'Sensors_Get_ReverseDelta', 'Settings_Get_AllowDuplicates', 'Settings_Get_ControlTrace', 'Settings_Get_LoadsTerminalCheck', 'Settings_Get_Trapezoidal', 'Settings_Get_ZoneLock', 'Solution_Get_ControlActionsDone', 'Solution_Get_Converged', 'Solution_Get_SystemYChanged', 'Storages_Get_LimitCurrent', 'SwtControls_Get_IsLocked', 'Transformers_Get_IsDelta', 'WindGens_Get_IsDelta', 'YMatrix_CheckConvergence', 'YMatrix_Get_LoadsNeedUpdating', 'YMatrix_Get_SolutionAbort', 'YMatrix_Get_SolutionInitialized', 'YMatrix_Get_SystemYChanged', 'YMatrix_Get_UseAuxCurrents')), + (t.fastdss_types_u16, t.fastdss_types_str, ('ZIP_Contains',)), + (t.fastdss_types_u16, t.fastdss_types_i32, ('DSS_Start', 'Settings_Get_Flag')), + (t.fastdss_types_u16, t.fastdss_types_i32_i32, ('CktElement_IsOpen',)), + (t.fastdss_types_void, t.fastdss_types_u16, ('CapControls_Set_UseVoltOverride', 'Capacitors_Set_IsDelta', 'CktElement_Set_Enabled', 'DSS_Set_AllowChangeDir', 'DSS_Set_AllowDOScmd', 'DSS_Set_AllowEditor', 'DSS_Set_AllowForms', 'DSS_Set_COMErrorResults', 'DSS_Set_EnableArrayDimensions', 'DSS_Set_LegacyModels', 'Error_Set_EarlyAbort', 'Error_Set_ExtendedErrors', 'Generators_Set_ForcedON', 'Generators_Set_IsDelta', 'LineGeometries_Set_Reduce', 'Lines_Set_IsSwitch', 'LoadShapes_Set_UseActual', 'Loads_Set_IsDelta', 'Meters_DoReliabilityCalc', 'Parser_Set_AutoIncrement', 'Reactors_Set_IsDelta', 'Reactors_Set_Parallel', 'ReduceCkt_Set_KeepLoad', 'RegControls_Set_IsInverseTime', 'RegControls_Set_IsReversible', 'Sensors_Set_IsDelta', 'Sensors_Set_ReverseDelta', 'Settings_Set_AllowDuplicates', 'Settings_Set_ControlTrace', 'Settings_Set_LoadsTerminalCheck', 'Settings_Set_Trapezoidal', 'Settings_Set_ZoneLock', 'Solution_Set_ControlActionsDone', 'Solution_Set_Converged', 'Storages_Set_LimitCurrent', 'SwtControls_Set_IsLocked', 'Transformers_Set_IsDelta', 'WindGens_Set_IsDelta', 'YMatrix_Set_LoadsNeedUpdating', 'YMatrix_Set_SolutionAbort', 'YMatrix_Set_SolutionInitialized', 'YMatrix_Set_SystemYChanged', 'YMatrix_Set_UseAuxCurrents')), + (t.fastdss_types_void, t.fastdss_types_void, ('CapControls_Reset', 'Capacitors_Close', 'Capacitors_Open', 'Circuit_EndOfTimeStepUpdate', 'Circuit_Sample', 'Circuit_SaveSample', 'Circuit_UpdateStorage', 'CtrlQueue_ClearActions', 'CtrlQueue_ClearQueue', 'CtrlQueue_DoAllQueue', 'CtrlQueue_Show', 'DSSProgress_Close', 'DSSProgress_Show', 'DSS_ClearAll', 'DSS_DisposeGRData', 'DSS_Reset', 'DSS_ResetStringBuffer', 'ctx_Dispose', 'Fuses_Close', 'Fuses_Open', 'Fuses_Reset', 'LoadShapes_Normalize', 'LoadShapes_UseFloat32', 'LoadShapes_UseFloat64', 'Meters_CloseAllDIFiles', 'Meters_OpenAllDIFiles', 'Meters_Reset', 'Meters_ResetAll', 'Meters_Sample', 'Meters_SampleAll', 'Meters_Save', 'Meters_SaveAll', 'Monitors_Process', 'Monitors_ProcessAll', 'Monitors_Reset', 'Monitors_ResetAll', 'Monitors_Sample', 'Monitors_SampleAll', 'Monitors_Save', 'Monitors_SaveAll', 'Monitors_Show', 'Parallel_CreateActor', 'Parallel_Wait', 'Parser_ResetDelimiters', 'Reclosers_Close', 'Reclosers_Open', 'Reclosers_Reset', 'ReduceCkt_Do1phLaterals', 'ReduceCkt_DoBranchRemove', 'ReduceCkt_DoDangling', 'ReduceCkt_DoDefault', 'ReduceCkt_DoLoopBreak', 'ReduceCkt_DoParallelLines', 'ReduceCkt_DoShortLines', 'ReduceCkt_DoSwitches', 'RegControls_Reset', 'Relays_Close', 'Relays_Open', 'Relays_Reset', 'Sensors_Reset', 'Sensors_ResetAll', 'Solution_CheckControls', 'Solution_CheckFaultStatus', 'Solution_Cleanup', 'Solution_DoControlActions', 'Solution_FinishTimeStep', 'Solution_InitSnap', 'Solution_SampleControlDevices', 'Solution_Sample_DoControlActions', 'Solution_Solve', 'Solution_SolveAll', 'Solution_SolveDirect', 'Solution_SolveNoControl', 'Solution_SolvePflow', 'Solution_SolvePlusControl', 'Solution_SolveSnap', 'SwtControls_Reset', 'YMatrix_GetPCInjCurr', 'YMatrix_GetSourceInjCurrents', 'YMatrix_IntegratePCStates', 'YMatrix_SetGeneratordQdV', 'YMatrix_ZeroInjCurr', 'ZIP_Close')), + +) + diff --git a/dss_python_backend/enums.py b/dss_python_backend/enums.py index 7dc121e..fde2fb8 100644 --- a/dss_python_backend/enums.py +++ b/dss_python_backend/enums.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: (C) 2023-2026 Paulo Meira & contributors to DSS-Extensions +# SPDX-License-Identifier: BSD-3 + try: from enum import IntEnum, IntFlag except (ModuleNotFoundError, ImportError): @@ -125,6 +128,9 @@ class SolutionAlgorithms(IntEnum): NewtonSolve = 1 """Solution algorithm option - Newton solution""" + NCIMSolve = 2 + """Solution algorithm option - NCIM solution""" + class ControlModes(IntEnum): Static = 0 """Control Mode option - Static""" @@ -393,8 +399,9 @@ class DSSCompatFlags(IntFlag): InvControl9611 = 0x00000004 """ - Toggle some InvControl behavior introduced in OpenDSS 9.6.1.1. It could be a regression - but needs further investigation, so we added this flag in the time being. + Toggle some InvControl behavior introduced in OpenDSS 9.6.1.1. It was confirmed as a + regression and was fixed in OpenDSS v10. The flag still has effects for a few more + releases, in case users need to investigate differences across versions. """ SaveCalcVoltageBases = 0x00000008 @@ -436,6 +443,53 @@ class DSSCompatFlags(IntFlag): This flag only affects some of the classic API functions, especially Loads and Generators. """ + MonitorHeader = 0x00000080 + """ + Add extra spaces (and trailing comma) to the monitor headers to match the official OpenDSS implementation. + This affects both the Header function/property in the API, and the exported CSVs. + + The extra spaces can cause issues with third-party software. For example, Pandas adds + an extra empty column for monitor exports, and keeps the spaces in the column names. + This typically requires extra steps to both remove the spaces in the column names, and + discard the extra column. + """ + + InvControlDeltaV = 0x00000100 + """ + An issue with the voltage delta across iterations was found and fixed in AltDSS/DSS C-API 0.15.0. + Use this flag to restore the previous behavior, which also matches the official OpenDSS. + + The issue affects situations where an InvControl object tracks multiple DERs, while using one of the volt-var modes. + It is not always apparent and does not always affect the end results. + """ + + PermissiveProperties = 0x00000200 + """ + Starting AltDSS/DSS C-API v0.15.0, the way some properties are handled has been tweaked to try to provide a better experience for general users. + + - The arrays provided in the text interface, scripts or the Alt APIs are required to match the provided sizes. For example, if a LoadShape has `NPts` set to 12 and the user provides 24 values for `PMult`, an error is generated. + + - Some properties in Transformer and AutoTrans that previously silently replaced zeros with default values now error. + + - Some properties are read-only, but previously silent ignored input values. Errors are now generated if the user tries to set them. This includes some properties that are read-only on certain conditions. For example, if a SwtControl is locked, its state cannot be set. + + Set this compatibility flag to silently ignore the errors listed above and restore the original behavior. + """ + + LegacySMARTDS = 0x00000800 + """ + Starting AltDSS/DSS C-API v0.15.0, this flag was added to try to adjust the parser to handle .DSS files from the + [SMART-DS](https://data.openei.org/submissions/2981) dataset. + + Enable this flag to add the extra handling. If you save the circuit afterwards, the saved scripts should be compatible with + modern DSS versions. + + This flag is required since OpenDSS changed the models for a few components several years ago. + + If you still cannot load a scenario from SMART-DS, please report on GitHub, e.g., for a previous discussion see: + https://github.com/orgs/dss-extensions/discussions/50 + """ + class AltDSSEvent(IntEnum): """ @@ -455,7 +509,7 @@ class AltDSSEvent(IntEnum): class DSSPropertyNameStyle(IntEnum): """ This enum is used in the PropertyNameStyle property to control the naming convention. - Currently, this only affects capitalization, i.e., if you software already uses case + Currently, this only affects capitalization, i.e., if your software already uses case insensitive string comparisons for the property names, this is not useful. Otherwise, you can use `Legacy` to use the older names. """ @@ -609,11 +663,20 @@ class SetterFlags(IntFlag): - Null pointers for strings (in this case, use a `"\\0"` string for empty strings) """ + Broadcast = 0x00000010 + """ + In some specific array(-like) properties, a single scalar value can be broadcast to + all elements in the array. + """ + AllowAllConductors = 0x40000000 """ + **Deprecated** + Used internally for the "Wires" property ("Conductors"). This was left public in case someone tries to implement some internal aspects in - external functions. + external functions. EPRI's OpenDSS introduced a similar `Conductors` property, + so this flag is not required anymore in modern versions of AltDSS. """ @@ -1046,11 +1109,23 @@ class VCCSNonRMSVariables(IntEnum): '''Hout''' +class BatchOperation(IntEnum): + ''' + AltDSS Batch Operations + + *These are not typically used by end-users.* + ''' + Set = 0 + Multiply = 1 + Increment = 2 + Divide = 3 + __all__ = [ 'ActionCodes', 'AltDSSEvent', 'AutoAddTypes', + 'BatchOperation', 'CapControlModes', 'CktModels', 'ControlModes', diff --git a/dss_python_backend/events.py b/dss_python_backend/events.py index ad28ab8..68df435 100644 --- a/dss_python_backend/events.py +++ b/dss_python_backend/events.py @@ -1,7 +1,7 @@ import atexit from weakref import WeakKeyDictionary from .enums import AltDSSEvent -from . import ffi, lib +from . import ffi, lib, loader_lib LEGACY_EVENTS = ( AltDSSEvent.Legacy_InitControls, @@ -29,10 +29,10 @@ def unregister_all(self): continue handlers[:] = [] - lib.ctx_DSSEvents_UnregisterAlt( + lib.DSSEvents_UnregisterAlt( self.ctx, evt_type, - lib.altdss_python_util_callback + loader_lib.altdss_python_util_callback ) def __del__(self): @@ -41,10 +41,10 @@ def __del__(self): def register_func(self, evt: AltDSSEvent, func) -> bool: handlers = getattr(self, AltDSSEvent(evt).name) if len(handlers) == 0: - if lib.ctx_DSSEvents_RegisterAlt( + if lib.DSSEvents_RegisterAlt( self.ctx, evt, - lib.altdss_python_util_callback + loader_lib.altdss_python_util_callback ) == 0: raise RuntimeError('Could not register main callback function.') @@ -59,10 +59,10 @@ def unregister_func(self, evt: AltDSSEvent, func) -> bool: prev_len = len(handlers) handlers[:] = [f for f in handlers if f is not func] if len(handlers) == 0: - lib.ctx_DSSEvents_UnregisterAlt( + lib.DSSEvents_UnregisterAlt( self.ctx, evt, - lib.altdss_python_util_callback + loader_lib.altdss_python_util_callback ) return prev_len != len(handlers) diff --git a/dss_python_backend/oddie.py b/dss_python_backend/oddie.py new file mode 100644 index 0000000..cfe9914 --- /dev/null +++ b/dss_python_backend/oddie.py @@ -0,0 +1,43 @@ +''' +This file provides access to the Oddie library. +Note that it does not initialize the OpenDSS or OpenDSS-C libraries, that is a +second step. The same Oddie instance can be used to load multiple engine libraries. +''' +import os +from . import _altdss_capi_loader +from ._altdss_capi_loader import ffi, lib as loader_lib +from pathlib import Path +from . import DLL_SUFFIX, DLL_PREFIX + +altdss_lib_parent_path = Path(_altdss_capi_loader.__file__).absolute().parent + +if os.environ.get('DSS_EXTENSIONS_DEBUG', '') != '1': + oddie_lib_path = altdss_lib_parent_path.joinpath(f'{DLL_PREFIX}altdss_oddie_capi{DLL_SUFFIX}') +else: + import warnings + warnings.warn('Environment variable DSS_EXTENSIONS_DEBUG=1 is set: loading the debug version of the AltDSS Oddie library') + oddie_lib_path = altdss_lib_parent_path.joinpath(f'{DLL_PREFIX}altdss_oddie_capid{DLL_SUFFIX}') + +if not oddie_lib_path.exists(): + print(oddie_lib_path) + raise RuntimeError('Oddie library not found!') + +# Basic initialization -- load the library and prepare the structures +lib = _altdss_capi_loader.ffi.new('AltDSSCAPI*') + +_init_result = loader_lib.AltDSSCAPILibInit( + str(oddie_lib_path).encode(), + ffi.NULL, + b"AltDSSOddieCAPIInit", + lib, + ffi.sizeof(lib[0]), + 0, + 0, + ffi.NULL +) + +if _init_result != 1: + raise RuntimeError(f'Oddie library found but could not be loaded (code {_init_result})!') + +# Compared to the main "lib" in __init__.py, we will not call DSS_Start yet +# since the actual engine is not loaded. diff --git a/pyproject.toml b/pyproject.toml index fed528d..d306fba 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,42 @@ +[project] +name = "dss_python_backend" +dynamic = ["version"] +readme = {file = "README.md", content-type = "text/markdown"} +description = "Low-level Python bindings and native libs for DSS-Python, OpenDSSDirect.py and AltDSS-Python. Not intended for direct usage, see the high-level packages instead." +license = "BSD-3-Clause AND LGPL-3.0-only" +license-files = ["LICENSE.BSD3", "LICENSE.LGPL3", "OPENDSS_LICENSE"] +authors = [ + {name = "Paulo Meira", email = "pmeira@ieee.org"}, +] +maintainers = [ + {name = "Paulo Meira", email = "pmeira@ieee.org"}, +] +dependencies = [ + "cffi>=2,<3", + "numpy>=2,<3", +] +requires-python = ">=3.11" # Following NumPy's requirements + +classifiers=[ + "Intended Audience :: Science/Research", + "Intended Audience :: Education", + + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: Implementation :: CPython", + + "Development Status :: 5 - Production/Stable", + + "Topic :: Scientific/Engineering", +] + +[project.urls] +Homepage = "https://github.com/dss-extensions/dss_python_backend" +Repository = "https://github.com/dss-extensions/dss_python_backend.git" +"Bug Tracker" = "https://github.com/dss-extensions/dss-extensions/issues" + [build-system] -requires = ["setuptools"] +requires = ["setuptools", "numpy>=2,<3", "cffi"] build-backend = "setuptools.build_meta" diff --git a/setup.cfg b/setup.cfg index ea40441..c8ea78d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,4 +1,6 @@ [metadata] description_file = README.md -license_files = LICENSE -url = https://github.com/dss-extensions/dss_python_backend/ \ No newline at end of file +url = https://github.com/dss-extensions/dss_python_backend/ + +[bdist_wheel] +py_limited_api=cp37 diff --git a/setup.py b/setup.py index 76a2597..61f2f1d 100644 --- a/setup.py +++ b/setup.py @@ -1,9 +1,12 @@ from setuptools import setup -import re, shutil, os, io +import re, shutil, os, io, sys, glob + +sys.path.insert(0, os.path.dirname(__file__)) + from dss_setup_common import PLATFORM_FOLDER, DLL_SUFFIX -import glob +import dss_build -MANYLINUX = os.environ.get('DSS_PYTHON_BACKEND_MANYLINUX', '0') == '1' +SKIP_COPY = os.environ.get('DSS_PYTHON_BACKEND_SKIP_COPY', '0') == '1' # Copy README.md contents with io.open('README.md', encoding='utf8') as readme_md: @@ -13,6 +16,7 @@ # 1. Try env var DSS_PYTHON_BACKEND_VERSION # 2. Try GITHUB_REF for a Git tag # 3. Otherwise, just use the hardcoded version + package_version = os.environ.get('DSS_PYTHON_BACKEND_VERSION') github_ref = os.environ.get('GITHUB_REF') if package_version is None and github_ref is not None: @@ -49,14 +53,14 @@ dll_path_out = os.path.abspath(os.path.join(src_path, 'dss_python_backend')) include_path_out = os.path.join(dll_path_out, 'include') -if not MANYLINUX: - # for manylinux wheels, auditwheel handles copying the libs later +if not SKIP_COPY: for fn in glob.glob(os.path.join(base_dll_path_in, '*{}'.format(DLL_SUFFIX))): shutil.copy(fn, dll_path_out) -# Copy libs (easier to build custom extensions with a default DSS Python installation) -for fn in glob.glob(os.path.join(base_dll_path_in, '*.lib')) + glob.glob(os.path.join(base_dll_path_in, '*.a')): - shutil.copy(fn, dll_path_out) + # Copy libs (easier to build custom extensions with a default DSS Python installation) + for pattern in ('*.lib', '*.a', '*.pdb'): + for fn in glob.glob(os.path.join(base_dll_path_in, pattern)): + shutil.copy(fn, dll_path_out) # Copy headers if os.path.exists(include_path_out): @@ -72,56 +76,30 @@ glob.glob(os.path.join(dll_path_out, '*.a')) ) -if MANYLINUX: - # Do not pack .so files when building manylinux wheels - # (auditwheel will copy and adjust them anyway) - extra_args = dict(package_data={ - 'dss_python_backend': extra_files - }) -else: - extra_args = dict(package_data={ - 'dss_python_backend': ['*{}'.format(DLL_SUFFIX)] + extra_files - }) +extra_args = dict(package_data={ + 'dss_python_backend': ['*{}'.format(DLL_SUFFIX)] + extra_files +}) + setup( - name="dss_python_backend", - description="Low-level Python bindings and native libs for DSS-Python. Not intended for direct usage, see DSS-Python instead.", - long_description=long_description, - long_description_content_type='text/markdown', - author="Paulo Meira", - author_email="pmeira@ieee.org", version=package_version, - license="BSD", - packages=['dss_python_backend'], - setup_requires=["cffi>=1.11.2"], - cffi_modules=["dss_build.py:ffi_builder_{}".format(version) for version in ('', 'd')] + - [ - 'dss_build.py:ffi_builder_GenUserModel', - #'dss_build.py:ffi_builder_PVSystemUserModel', - #'dss_build.py:ffi_builder_StoreDynaModel', - #'dss_build.py:ffi_builder_StoreUserModel', - #'dss_build.py:ffi_builder_CapUserControl' - ], + packages=['dss_python_backend', 'dss_python_backend.include'], + setup_requires=["cffi>=2.0.0"], + cffi_modules= [ + "dss_build.py:ffi_builder_dss", + 'dss_build.py:ffi_builder_GenUserModel_altdss', + 'dss_build.py:ffi_builder_GenUserModel_v7', + 'dss_build.py:ffi_builder_GenUserModel_v8v9', + 'dss_build.py:ffi_builder_GenUserModel_v10', + #'dss_build.py:ffi_builder_PVSystemUserModel', + #'dss_build.py:ffi_builder_StoreDynaModel', + #'dss_build.py:ffi_builder_StoreUserModel', + #'dss_build.py:ffi_builder_CapUserControl' + ], + ext_modules=[dss_build.fastdss_extension], ext_package="dss_python_backend", - install_requires=["cffi>=1.11.2"], # tests_require=["pytest"], zip_safe=False, - classifiers=[ - 'Intended Audience :: Science/Research', - 'Intended Audience :: Education', - - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.9', - 'Programming Language :: Python :: 3.10', - 'Programming Language :: Python :: 3.11', - 'Programming Language :: Python :: 3.12', - 'Programming Language :: Python :: Implementation :: CPython', - 'Programming Language :: Python :: Implementation :: PyPy', - 'Development Status :: 5 - Production/Stable', - 'Topic :: Scientific/Engineering', - 'License :: OSI Approved :: BSD License' - ], **extra_args ) diff --git a/src/_fastdss.c b/src/_fastdss.c new file mode 100644 index 0000000..e0828e5 --- /dev/null +++ b/src/_fastdss.c @@ -0,0 +1,1324 @@ +// SPDX-FileCopyrightText: (C) 2024-2025 Paulo Meira & contributors to DSS-Extensions +// SPDX-License-Identifier: LGPL-3.0-only + +// This is a C extension that contains a few faster alternatives for a subset +// of functions from AltDSS/DSS C-API. The rest of the functions are handled +// via CFFI. +// Originally written by Paulo Meira for dss_python_backend, to be +// used in DSS-Python, OpenDSSDirect.py and AltDSS-Python. + +// TODO: PyLong_FromVoidPtr and PyLong_AsVoidPtr could be used? +// TODO: enums in int32 and one_int32 results, e.g. LoadModels + +#define PY_SSIZE_T_CLEAN + +#include +#ifdef _WIN32 +#if defined(_MSC_VER) +#pragma comment(lib, "python3.lib") +#endif +#endif + +#include +#include +#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION +#include "numpy/ndarrayobject.h" +#include "altdss/capi/common.h" +#include "altdss/capi/enums.h" +#include "altdss/capi/capi.h" + +#ifndef Py_T_OBJECT_EX +// For older Python releases +#define Py_T_OBJECT_EX T_OBJECT +#endif + +// #ifndef PyList_SET_ITEM +// #define PyList_SET_ITEM PyList_SetItem +// #endif + +#include "altdss/capi/fastdss_func_info.h" + +enum FastDSSSettings { + FastDSSSettings_UseExceptions = 1 << 0, + FastDSSSettings_AdvancedTypes = 1 << 1, + FastDSSSettings_ODDPyStrings = 1 << 2, + FastDSSSettings_UseLists = 1 << 3, +}; + +struct AltDSS_PyContextObject_; + +typedef struct +{ + PyObject_HEAD + + AltDSSCAPI *dssCFuncs; + void *dssCtx; + int32_t *errorPtr; + void* func; + int32_t *settingsPtr; + struct AltDSS_PyContextObject_* parent; + + unsigned char funcArgSignature; + unsigned char resType; + char const* fname; +} AltDSS_PyStrGetterObject; + +typedef struct +{ + PyObject_HEAD + + AltDSSCAPI *dssCFuncs; + void *dssCtx; + int32_t *errorPtr; + void* func; + int32_t *settingsPtr; + struct AltDSS_PyContextObject_* parent; + + unsigned char funcArgSignature; + unsigned char resType; + char const* fname; +} AltDSS_PyStrListGetterObject; + +typedef struct +{ + PyObject_HEAD + + AltDSSCAPI *dssCFuncs; + void *dssCtx; + int32_t *errorPtr; + void* func; + int32_t *settingsPtr; + struct AltDSS_PyContextObject_* parent; + + unsigned char funcArgSignature; + unsigned char resType; + char const* fname; +} AltDSS_PyScalarGetterObject; + +typedef struct +{ + PyObject_HEAD + + AltDSSCAPI *dssCFuncs; + void *dssCtx; + int32_t *errorPtr; + void* func; + int32_t *settingsPtr; + struct AltDSS_PyContextObject_* parent; + + unsigned char funcArgSignature; + unsigned char resType; + char const* fname; +} AltDSS_PyScalarSetterObject; + +typedef struct +{ + PyObject_HEAD + + AltDSSCAPI *dssCFuncs; + void *dssCtx; + int32_t *errorPtr; + void* func; + int32_t *settingsPtr; + struct AltDSS_PyContextObject_* parent; + + unsigned char funcArgSignature; + unsigned char resType; + char const* fname; + + // GR pointers + void *dataPtr; + int32_t *countPtr; +} AltDSS_PyGRGetterObject; + +typedef struct AltDSS_PyContextObject_ +{ + PyObject_HEAD + + AltDSSCAPI *dssCFuncs; + void *dssCtx; + int32_t *errorPtr; + PyObject *DSSExceptionType; + int32_t *settingsPtr; + + double **dataPtr_pdouble; + int32_t** dataPtr_pinteger; + int8_t** dataPtr_pbyte; + + int32_t* countPtr_pdouble; + int32_t* countPtr_pinteger; + int32_t* countPtr_pbyte; + + #include "./_fastdss_struct_members.inc.c" +} AltDSS_PyContextObject; + +static int AltDSS_PyScalarSetter_init(AltDSS_PyScalarSetterObject *f, PyObject *Py_UNUSED(args_ignored), PyObject *Py_UNUSED(kwargs_ignored)) +{ + f->parent = NULL; + f->dssCtx = NULL; + f->func = NULL; + return 0; +} + +static int AltDSS_PyScalarGetter_init(AltDSS_PyScalarGetterObject *f, PyObject *Py_UNUSED(args_ignored), PyObject *Py_UNUSED(kwargs_ignored)) +{ + f->parent = NULL; + f->dssCtx = NULL; + f->func = NULL; + return 0; +} + +static int AltDSS_PyGRGetter_init(AltDSS_PyGRGetterObject *f, PyObject *Py_UNUSED(args_ignored), PyObject *Py_UNUSED(kwargs_ignored)) +{ + f->parent = NULL; + f->dssCtx = NULL; + f->func = NULL; + return 0; +} + +static int AltDSS_PyStrGetter_init(AltDSS_PyStrGetterObject *f, PyObject *Py_UNUSED(args_ignored), PyObject *Py_UNUSED(kwargs_ignored)) +{ + f->parent = NULL; + f->func = NULL; + f->dssCtx = NULL; + return 0; +} + +static int AltDSS_PyStrListGetter_init(AltDSS_PyStrListGetterObject *f, PyObject *Py_UNUSED(args_ignored), PyObject *Py_UNUSED(kwargs_ignored)) +{ + f->dssCtx = NULL; + f->parent = NULL; + f->func = NULL; + return 0; +} + +static PyObject *AltDSS_PyScalarSetter_call(AltDSS_PyScalarSetterObject *f, PyObject *args, PyObject *Py_UNUSED(kwargs_ignored)) +{ + PyObject* result = NULL; + int cval_int, cval_int2; + double cval_float64; + char const *cstr = NULL; + Py_ssize_t cstr_size = 0; + PyThreadState *threadstate; + + switch (f->funcArgSignature) + { + case fastdss_types_i32: + if (!PyArg_ParseTuple(args, "i", &cval_int)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyScalarSetter call (expected an integer value)"); + return NULL; + } + threadstate = PyEval_SaveThread(); + ((altdss_func_v_cvp_i32)f->func)(f->dssCtx, cval_int); + PyEval_RestoreThread(threadstate); + break; + case fastdss_types_i32_i32: + if (!PyArg_ParseTuple(args, "ii", &cval_int, &cval_int2)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyScalarSetter call (expected two integer values)"); + return NULL; + } + threadstate = PyEval_SaveThread(); + ((altdss_func_v_cvp_i32_i32)f->func)(f->dssCtx, cval_int, cval_int2); + PyEval_RestoreThread(threadstate); + break; + case fastdss_types_f64: + if (!PyArg_ParseTuple(args, "d", &cval_float64)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyScalarSetter call (expected a float64 value)"); + return NULL; + } + threadstate = PyEval_SaveThread(); + ((altdss_func_v_cvp_f64)f->func)(f->dssCtx, cval_float64); + PyEval_RestoreThread(threadstate); + break; + case fastdss_types_u16: + if (!PyArg_ParseTuple(args, "p", &cval_int)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyScalarSetter call (expected a boolean value)"); + return NULL; + } + threadstate = PyEval_SaveThread(); + ((altdss_func_v_cvp_u16)f->func)(f->dssCtx, cval_int ? (uint16_t)-1 : (uint16_t)0); + PyEval_RestoreThread(threadstate); + break; + case fastdss_types_str: + if (!PyArg_ParseTuple(args, "s#", &cstr, &cstr_size)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyScalarSetter call (expected a str or bytes value)"); + return NULL; + } + threadstate = PyEval_SaveThread(); + ((altdss_func_v_cvp_cstr)f->func)(f->dssCtx, cstr); + PyEval_RestoreThread(threadstate); + break; + case fastdss_types_void: + threadstate = PyEval_SaveThread(); + ((altdss_func_v_cvp)f->func)(f->dssCtx); + PyEval_RestoreThread(threadstate); + break; + default: + PyErr_SetString(PyExc_TypeError, "Invalid call signature"); + return NULL; + } + + if (*f->errorPtr && ((*f->settingsPtr) & FastDSSSettings_UseExceptions) && f->parent->DSSExceptionType != Py_None) + { + const char *errorDesc = f->dssCFuncs->Error_Get_Description(f->dssCtx); + int32_t num = *f->errorPtr; + *f->errorPtr = 0; + PyErr_SetObject(f->parent->DSSExceptionType, PyTuple_Pack(2, + PyLong_FromLong(num), + PyUnicode_FromString(errorDesc) + )); + return NULL; + } + result = Py_None; + Py_INCREF(result); + return result; +} + +static PyObject *AltDSS_PyScalarGetter_call(AltDSS_PyScalarGetterObject *f, PyObject *args, PyObject *Py_UNUSED(kwargs_ignored)) +{ + PyObject *result = NULL; + int argValue, argValue2; + int32_t cval_int32 = -1; + double cval_float64 = -1; + char const *cstr = NULL; + Py_ssize_t cstr_size = 0; + PyThreadState *threadstate; + + switch (f->funcArgSignature) + { + case fastdss_types_i32_i32: + if (!PyArg_ParseTuple(args, "ii", &argValue, &argValue2)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyScalarGetter call (expected two integer values)"); + return NULL; + } + break; + case fastdss_types_i32: + if (!PyArg_ParseTuple(args, "i", &argValue)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyScalarGetter call (expected an integer value)"); + return NULL; + } + break; + case fastdss_types_str: + if (!PyArg_ParseTuple(args, "s#", &cstr, &cstr_size)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyScalarGetter call (expected a str or bytes value)"); + return NULL; + } + case fastdss_types_void: + break; + default: + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyStrGetter call (unknown signature)"); + return NULL; + } + + threadstate = PyEval_SaveThread(); + switch (f->resType) + { + case fastdss_types_u16: + switch (f->funcArgSignature) + { + case fastdss_types_i32_i32: + cval_int32 = ((altdss_func_u16_cvp_i32_i32)f->func)(f->dssCtx, argValue, argValue2); + break; + case fastdss_types_i32: + cval_int32 = ((altdss_func_u16_cvp_i32)f->func)(f->dssCtx, argValue); + break; + case fastdss_types_str: + cval_int32 = ((altdss_func_u16_cvp_cstr)f->func)(f->dssCtx, cstr); + break; + case fastdss_types_void: + cval_int32 = ((altdss_func_u16_cvp)f->func)(f->dssCtx); + break; + default: + PyEval_RestoreThread(threadstate); + PyErr_SetString(PyExc_TypeError, "Internal error: unknown signature"); + return NULL; + } + break; + case fastdss_types_i32: + switch (f->funcArgSignature) + { + case fastdss_types_i32: + cval_int32 = ((altdss_func_i32_cvp_i32)f->func)(f->dssCtx, argValue); + break; + case fastdss_types_str: + cval_int32 = ((altdss_func_i32_cvp_cstr)f->func)(f->dssCtx, cstr); + break; + case fastdss_types_void: + cval_int32 = ((altdss_func_i32_cvp)f->func)(f->dssCtx); + break; + default: + PyEval_RestoreThread(threadstate); + PyErr_SetString(PyExc_TypeError, "Internal error: unknown signature"); + return NULL; + } + break; + case fastdss_types_f64: + switch (f->funcArgSignature) + { + case fastdss_types_i32: + cval_float64 = ((altdss_func_f64_vp_i32)f->func)(f->dssCtx, argValue); + break; + case fastdss_types_str: + cval_float64 = ((altdss_func_f64_vp_cstr)f->func)(f->dssCtx, cstr); + break; + case fastdss_types_void: + cval_float64 = ((altdss_func_f64_cvp)f->func)(f->dssCtx); + break; + default: + PyEval_RestoreThread(threadstate); + PyErr_SetString(PyExc_TypeError, "Internal error: unknown signature"); + return NULL; + } + break; + } + PyEval_RestoreThread(threadstate); + + if (*f->errorPtr && ((*f->settingsPtr) & FastDSSSettings_UseExceptions) && f->parent->DSSExceptionType != Py_None) + { + const char *errorDesc = f->dssCFuncs->Error_Get_Description(f->dssCtx); + int32_t num = *f->errorPtr; + *f->errorPtr = 0; + PyErr_SetObject(f->parent->DSSExceptionType, PyTuple_Pack(2, + PyLong_FromLong(num), + PyUnicode_FromString(errorDesc) + )); + return NULL; + } + + switch (f->resType) + { + case fastdss_types_u16: + result = (cval_int32 ? Py_True : Py_False); + Py_INCREF(result); + return result; + case fastdss_types_i32: + return PyLong_FromLong(cval_int32); + case fastdss_types_f64: + return PyFloat_FromDouble(cval_float64); + } + return NULL; +} + +static PyObject *AltDSS_PyGRGetter_call(AltDSS_PyGRGetterObject *f, PyObject *args, PyObject *Py_UNUSED(kwargs_ignored)) +{ + PyObject *result = NULL; + PyObject *item = NULL; + NPY_ORDER order = NPY_ANYORDER; + double float64Arg1, float64Arg2; + int argValue = 0; + int32_t resType = f->resType; + const int32_t settings = *f->settingsPtr; + int nd = 1; + int nitems, i; + npy_intp dims[2]; + void *data; + double *dblPtr; + int32_t *i32Ptr; + int8_t *i8Ptr; + PyThreadState *threadstate; + + switch (f->funcArgSignature) + { + case fastdss_types_f64_f64_i32: + if (!PyArg_ParseTuple(args, "ddi", &float64Arg1, &float64Arg2, &argValue)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyGRGetter call (expected float, float, integer arguments)"); + return NULL; + } + threadstate = PyEval_SaveThread(); + ((altdss_func_v_cvp_f64_f64_i32)f->func)(f->dssCtx, float64Arg1, float64Arg2, argValue); + PyEval_RestoreThread(threadstate); + break; + case fastdss_types_i32: + if (!PyArg_ParseTuple(args, "i", &argValue)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyGRGetter call (expected an integer value)"); + return NULL; + } + threadstate = PyEval_SaveThread(); + ((altdss_func_v_cvp_i32)f->func)(f->dssCtx, argValue); + PyEval_RestoreThread(threadstate); + break; + case fastdss_types_u16: + if (!PyArg_ParseTuple(args, "p", &argValue)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyGRSetter call (expected a boolean value)"); + return NULL; + } + threadstate = PyEval_SaveThread(); + ((altdss_func_v_cvp_u16)f->func)(f->dssCtx, argValue ? (uint16_t)-1 : (uint16_t)0); + PyEval_RestoreThread(threadstate); + break; + default: + threadstate = PyEval_SaveThread(); + ((altdss_func_v_cvp)f->func)(f->dssCtx); + PyEval_RestoreThread(threadstate); + break; + } + if (*f->errorPtr && (settings & FastDSSSettings_UseExceptions) && f->parent->DSSExceptionType != Py_None) + { + const char *errorDesc = f->dssCFuncs->Error_Get_Description(f->dssCtx); + int32_t num = *f->errorPtr; + *f->errorPtr = 0; + PyErr_SetObject(f->parent->DSSExceptionType, PyTuple_Pack(2, + PyLong_FromLong(num), + PyUnicode_FromString(errorDesc) + )); + return NULL; + } + + nitems = f->countPtr[0]; + if (((settings & FastDSSSettings_AdvancedTypes) == 0)) + { + dims[0] = nitems; + if (resType == fastdss_types_gr_z128s || resType == fastdss_types_gr_z128) + { + resType = fastdss_types_gr_f64s; + } + } + else if (f->countPtr[2] == 0) + { + if (resType == fastdss_types_gr_z128s) + { + nitems /= 2; + } + dims[0] = nitems; + } + else + { + nd = 2; + dims[0] = f->countPtr[2]; + dims[1] = f->countPtr[3]; + if (resType == fastdss_types_gr_z128s) + { + nitems /= 2; + } + order = (resType == fastdss_types_gr_i32s) ? NPY_CORDER : NPY_FORTRANORDER; + } + + if (!(settings & FastDSSSettings_UseLists)) + { + switch (resType) + { + case fastdss_types_gr_z128: + if (f->countPtr[0] != 2) + { + PyErr_SetString(PyExc_RuntimeError, "Unexpected number of elements returned by API (complex number)."); + return NULL; + } + return PyComplex_FromDoubles((*(double**)f->dataPtr)[0], (*(double**)f->dataPtr)[1]); + case fastdss_types_gr_z128s: + if (f->countPtr[0] & 1) + { + PyErr_SetString(PyExc_RuntimeError, "Unexpected number of elements returned by API (array of complex numbers)."); + return NULL; + } + result = PyArray_EMPTY(nd, dims, NPY_COMPLEX128, order); + if (result == NULL) + { + return NULL; + } + data = PyArray_DATA((PyArrayObject*) result); + if (data == NULL) + goto array_error; + memcpy(data, *(double**)f->dataPtr, 2 * sizeof(double) * nitems); + return result; + case fastdss_types_gr_f64s: + result = PyArray_EMPTY(nd, dims, NPY_FLOAT64, order); + if (result == NULL) + { + return NULL; + } + data = PyArray_DATA((PyArrayObject*) result); + if (data == NULL) + goto array_error; + memcpy(data, *(double**)f->dataPtr, sizeof(double) * nitems); + return result; + // case fastdss_types_f32: + // result = PyArray_EMPTY(nd, dims, NPY_FLOAT32, order); + // memcpy(data, f->dataPtr[0], *(float**)f->dataPtr, sizeof(float) * nitems); + // data = PyArray_DATA(result); + // return result; + case fastdss_types_gr_i32s: + result = PyArray_EMPTY(nd, dims, NPY_INT32, order); + if (result == NULL) + { + return NULL; + } + data = PyArray_DATA((PyArrayObject*) result); + if (data == NULL) + goto array_error; + memcpy(data, *(int32_t**)f->dataPtr, sizeof(int32_t) * nitems); + return result; + case fastdss_types_gr_i8s: + result = PyArray_EMPTY(nd, dims, NPY_INT8, order); + if (result == NULL) + { + return NULL; + } + data = PyArray_DATA((PyArrayObject*) result); + if (data == NULL) + goto array_error; + memcpy(data, *(int8_t**)f->dataPtr, sizeof(int8_t) * nitems); + return result; + default: + PyErr_SetString(PyExc_TypeError, "Invalid type specified."); + return NULL; + } + } + + // Duplicated from above, but using lists + switch (resType) + { + case fastdss_types_gr_z128: + if (f->countPtr[0] != 2) + { + PyErr_SetString(PyExc_RuntimeError, "Unexpected number of elements returned by API (complex number)."); + return NULL; + } + return PyComplex_FromDoubles((*(double**)f->dataPtr)[0], (*(double**)f->dataPtr)[1]); + case fastdss_types_gr_z128s: + if (f->countPtr[0] & 1) + { + PyErr_SetString(PyExc_RuntimeError, "Unexpected number of elements returned by API (array of complex numbers)."); + return NULL; + } + result = PyList_New(nitems); + if (result == NULL) + { + return NULL; + } + dblPtr = *(double**)f->dataPtr; + for (i = 0; i < nitems; ++i, dblPtr += 2) + { + item = PyComplex_FromDoubles(dblPtr[0], dblPtr[1]); + if (item == NULL) + { + goto array_error; + } + PyList_SET_ITEM(result, i, item); + } + return result; + case fastdss_types_gr_f64s: + result = PyList_New(nitems); + if (result == NULL) + { + return NULL; + } + dblPtr = *(double**)f->dataPtr; + for (i = 0; i < nitems; ++i, ++dblPtr) + { + item = PyFloat_FromDouble(*dblPtr); + if (item == NULL) + { + goto array_error; + } + PyList_SET_ITEM(result, i, item); + } + return result; + // case fastdss_types_f32: + // result = PyArray_SimpleNew(nd, dims, NPY_FLOAT32); + // memcpy(data, f->dataPtr[0], *(float**)f->dataPtr, sizeof(float) * nitems); + // data = PyArray_DATA(result); + // return result; + case fastdss_types_gr_i32s: + result = PyList_New(nitems); + if (result == NULL) + { + return NULL; + } + i32Ptr = *(int32_t**)f->dataPtr; + for (i = 0; i < nitems; ++i, ++i32Ptr) + { + item = PyLong_FromLong(*i32Ptr); + if (item == NULL) + { + goto array_error; + } + PyList_SET_ITEM(result, i, item); + } + return result; + case fastdss_types_gr_i8s: + result = PyList_New(nitems); + if (result == NULL) + { + return NULL; + } + i8Ptr = *(int8_t**)f->dataPtr; + for (i = 0; i < nitems; ++i, ++i8Ptr) + { + item = PyLong_FromLong(*i8Ptr); + if (item == NULL) + { + goto array_error; + } + PyList_SET_ITEM(result, i, item); + } + return result; + default: + PyErr_SetString(PyExc_TypeError, "Invalid type specified."); + return NULL; + } + + return result; +array_error: + Py_XDECREF(result); + return NULL; +} + +static PyObject *AltDSS_PyStrGetter_call(AltDSS_PyStrGetterObject *f, PyObject *args, PyObject *Py_UNUSED(kwargs_ignored)) +{ + PyObject *result = NULL; + int argValue; + char const* cstr; + PyThreadState *threadstate; + switch (f->funcArgSignature) + { + case fastdss_types_i32: + if (!PyArg_ParseTuple(args, "i", &argValue)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyStrGetter call (expected an integer value)"); + return NULL; + } + threadstate = PyEval_SaveThread(); + cstr = ((altdss_func_cstr_cvp_i32)f->func)(f->dssCtx, argValue); + PyEval_RestoreThread(threadstate); + break; + default: + threadstate = PyEval_SaveThread(); + cstr = ((altdss_func_cstr_cvp)f->func)(f->dssCtx); + PyEval_RestoreThread(threadstate); + break; + } + //TODO: for Alt functions, we will need to dispose the C string later, + // or take ownership of the pointer. + if (*f->errorPtr && ((*f->settingsPtr) & FastDSSSettings_UseExceptions) && f->parent->DSSExceptionType != Py_None) + { + if (f->dssCFuncs->Error_Get_Description != f->func) + { + const char *errorDesc = f->dssCFuncs->Error_Get_Description(f->dssCtx); + int32_t num = *f->errorPtr; + *f->errorPtr = 0; + //TODO: check ref count here + PyErr_SetObject(f->parent->DSSExceptionType, PyTuple_Pack(2, + PyLong_FromLong(num), + PyUnicode_FromString(errorDesc) + )); + return NULL; + } + PyErr_SetString(f->parent->DSSExceptionType, "Error mapping DSS error to Python!"); + return NULL; + } + result = cstr ? PyUnicode_FromString(cstr) : PyUnicode_FromString(""); + return result; +} + +static PyObject *AltDSS_PyStrListGetter_call(AltDSS_PyStrListGetterObject *f, PyObject *args, PyObject *Py_UNUSED(kwargs_ignored)) +{ + PyObject *result = NULL; + PyObject *item = NULL; + char** cstr_list = NULL; + char const *cstr = NULL; + Py_ssize_t cstr_size = 0; + char** sptr = NULL; + int32_t count[4] = {0, 0, 0, 0}; + int32_t i; + int argIntValue; + const int32_t settings = *f->settingsPtr; + PyThreadState *threadstate; + + switch (f->funcArgSignature) + { + case fastdss_types_u16: + if (!PyArg_ParseTuple(args, "i", &argIntValue)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyStrGetter call (expected a boolean value)"); + return NULL; + } + threadstate = PyEval_SaveThread(); + ((altdss_func_v_cvp_strs_i32p_u16)f->func)(f->dssCtx, &cstr_list, &count[0], argIntValue ? 1 : 0); + PyEval_RestoreThread(threadstate); + break; + case fastdss_types_i32: + if (!PyArg_ParseTuple(args, "i", &argIntValue)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyStrGetter call (expected an integer value)"); + return NULL; + } + threadstate = PyEval_SaveThread(); + ((altdss_func_v_cvp_strs_i32p_i32)f->func)(f->dssCtx, &cstr_list, &count[0], argIntValue); + PyEval_RestoreThread(threadstate); + break; + case fastdss_types_str: + if (!PyArg_ParseTuple(args, "s#", &cstr, &cstr_size)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyStrGetter call (expected either a string or bytes value)"); + return NULL; + } + threadstate = PyEval_SaveThread(); + ((altdss_func_v_cvp_strs_i32p_cstr)f->func)(f->dssCtx, &cstr_list, &count[0], cstr); + PyEval_RestoreThread(threadstate); + break; + default: + threadstate = PyEval_SaveThread(); + ((altdss_func_v_cvp_strs_i32p)f->func)(f->dssCtx, &cstr_list, &count[0]); + PyEval_RestoreThread(threadstate); + break; + } + + if (*f->errorPtr && (settings & FastDSSSettings_UseExceptions) && f->parent->DSSExceptionType != Py_None) + { + const char *errorDesc = f->dssCFuncs->Error_Get_Description(f->dssCtx); + int32_t num = *f->errorPtr; + *f->errorPtr = 0; + //TODO: check ref count here + PyErr_SetObject(f->parent->DSSExceptionType, PyTuple_Pack(2, + PyLong_FromLong(num), + PyUnicode_FromString(errorDesc) + )); + f->dssCFuncs->DSS_Dispose_PPAnsiChar(&cstr_list, count[1]); + return NULL; + } + + if (PyErr_Occurred()) + { + f->dssCFuncs->DSS_Dispose_PPAnsiChar(&cstr_list, count[1]); + return NULL; + } + + if ((settings & FastDSSSettings_ODDPyStrings) && (count[0] == 1)) + { + cstr = cstr_list[0]; + if ((cstr == NULL) || (cstr[0] == 0)) + { + count[0] = 0; + } + else if ((strnlen(cstr, 5) == 4) && ( + (cstr[0] == 'n' || cstr[0] == 'N') && + (cstr[1] == 'o' || cstr[1] == 'O') && + (cstr[2] == 'n' || cstr[2] == 'N') && + (cstr[3] == 'e' || cstr[3] == 'E') + )) + { + count[0] = 0; + } + } + + result = PyList_New(count[0]); + + for (i = 0, sptr = cstr_list; i < count[0]; ++i, ++sptr) + { + item = (*sptr) ? PyUnicode_FromString(*sptr) : PyUnicode_FromString(""); + if (PyErr_Occurred()) + { + Py_DECREF(result); + f->dssCFuncs->DSS_Dispose_PPAnsiChar(&cstr_list, count[1]); + return NULL; + } + PyList_SET_ITEM(result, i, item); + } + f->dssCFuncs->DSS_Dispose_PPAnsiChar(&cstr_list, count[1]); + return result; +} + + +static PyTypeObject AltDSS_PyScalarGetterType = { + .ob_base = PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "_fastdss.AltDSS_PyScalarGetter", + .tp_doc = PyDoc_STR("Wrap an AltDSS C-API plain scalar (int32, float64, bool) getter functions, handling DSS errors"), + .tp_basicsize = sizeof(AltDSS_PyScalarGetterObject), + .tp_itemsize = 0, + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_new = PyType_GenericNew, + .tp_init = (initproc) AltDSS_PyScalarGetter_init, + .tp_call = ((PyCFunctionWithKeywords) AltDSS_PyScalarGetter_call), +}; + +static PyTypeObject AltDSS_PyScalarSetterType = { + .ob_base = PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "_fastdss.AltDSS_PyScalarSetter", + .tp_doc = PyDoc_STR("Wrap an AltDSS C-API plain scalar (int32, float64, bool) setter functions, handling DSS errors"), + .tp_basicsize = sizeof(AltDSS_PyScalarSetterObject), + .tp_itemsize = 0, + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_new = PyType_GenericNew, + .tp_init = (initproc) AltDSS_PyScalarSetter_init, + .tp_call = ((PyCFunctionWithKeywords) AltDSS_PyScalarSetter_call), +}; + +static PyTypeObject AltDSS_PyStrGetterType = { + .ob_base = PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "_fastdss.AltDSS_PyStrGetter", + .tp_doc = PyDoc_STR("Wrap an AltDSS C-API plain str functions, handling DSS errors"), + .tp_basicsize = sizeof(AltDSS_PyStrGetterObject), + .tp_itemsize = 0, + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_new = PyType_GenericNew, + .tp_init = (initproc) AltDSS_PyStrGetter_init, + .tp_call = ((PyCFunctionWithKeywords) AltDSS_PyStrGetter_call), +}; + +static PyTypeObject AltDSS_PyStrListGetterType = { + .ob_base = PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "_fastdss.AltDSS_PyStrListGetter", + .tp_doc = PyDoc_STR("Wrap an AltDSS C-API function that returns an array of strings, handling DSS errors"), + .tp_basicsize = sizeof(AltDSS_PyStrListGetterObject), + .tp_itemsize = 0, + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_new = PyType_GenericNew, + .tp_init = (initproc) AltDSS_PyStrListGetter_init, + .tp_call = ((PyCFunctionWithKeywords) AltDSS_PyStrListGetter_call), +}; + +static PyTypeObject AltDSS_PyGRGetterType = { + .ob_base = PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "_fastdss.AltDSS_PyGRGetter", + .tp_doc = PyDoc_STR("Wrap an AltDSS C-API function that returns a numeric array, handling DSS errors and runtime settings"), + .tp_basicsize = sizeof(AltDSS_PyGRGetterObject), + .tp_itemsize = 0, + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_new = PyType_GenericNew, + .tp_init = (initproc) AltDSS_PyGRGetter_init, + .tp_call = ((PyCFunctionWithKeywords) AltDSS_PyGRGetter_call), +}; + +static PyMethodDef funcs[] = { + {NULL, NULL, 0, NULL} +}; + +static struct PyModuleDef altdss_fast_def = { + PyModuleDef_HEAD_INIT, + "_fastdss", + "Faster, NumPy integrated wrapper implementations for AltDSS C-API and AltDSS Oddie C-API; intended for CPython only.\n", + -1, + funcs +}; + +int AltDSS_Add_PyFunc(AltDSS_PyContextObject *self, FastDSSFuncInfo* finfo, PyObject *setObj, PyObject *fakeLib); + +#define FASTDSS_FUNCINFO_FILL(funcname) offsetof(AltDSSCAPI, funcname), NULL, offsetof(AltDSS_PyContextObject, f_##funcname), #funcname +#include "altdss/capi/fastdss_func_info.inc.c" + +static int AltDSS_PyContext_init(AltDSS_PyContextObject *self, PyObject *args, PyObject *Py_UNUSED(kwargs_ignored)) +{ + PyObject* setObj = NULL; + PyObject* fakeLib = NULL; + FastDSSFuncInfo* finfo = NULL; + + if (sizeof(unsigned long long) < sizeof(void*)) + { + PyErr_SetString(PyExc_TypeError, "Unexpected integer sizes!"); + return -1; + } + + unsigned long long dssCtx, settingsPtr, dssCFuncs; + if ((!PyArg_ParseTuple(args, "KKKOOO", &dssCtx, &dssCFuncs, &settingsPtr, &self->DSSExceptionType, &setObj, &fakeLib)) || !PyObject_IsInstance(setObj, (PyObject*) &PySet_Type)) + { + PyErr_SetString(PyExc_TypeError, "Invalid arguments on AltDSS_PyContext initialization"); + return -1; + } + + self->dssCtx = (void*) dssCtx; + self->dssCFuncs = (AltDSSCAPI*) dssCFuncs; + self->settingsPtr = (int32_t*) settingsPtr; + self->errorPtr = self->dssCFuncs->Error_Get_NumberPtr(self->dssCtx); + + self->dssCFuncs->DSS_GetGRPointers(self->dssCtx, + &self->dataPtr_pdouble, + &self->dataPtr_pinteger, + &self->dataPtr_pbyte, + &self->countPtr_pdouble, + &self->countPtr_pinteger, + &self->countPtr_pbyte + ); + Py_INCREF(setObj); + Py_INCREF(fakeLib); + Py_INCREF(self->DSSExceptionType); + + finfo = &info[0]; + while (finfo->c_funcOffset) + { + // printf("INFO: function %s\n", finfo->fname); + if (!AltDSS_Add_PyFunc(self, finfo, setObj, fakeLib)) + { + goto ERROR_INIT; + } + ++finfo; + } + + Py_DECREF(setObj); + Py_DECREF(fakeLib); + return 0; +ERROR_INIT: + Py_DECREF(setObj); + Py_DECREF(fakeLib); + Py_DECREF(self->DSSExceptionType); + self->DSSExceptionType = NULL; + PyErr_SetString(PyExc_RuntimeError, "Error initializing AltDSS C-API function handlers!"); + return -1; +} + + +static PyObject *AltDSS_PyContext_set_exc_type(AltDSS_PyContextObject *self, PyObject *arg) +{ + PyObject* result = Py_None; + self->DSSExceptionType = arg; + Py_INCREF(arg); + Py_INCREF(result); + return result; +} + +static PyMethodDef AltDSS_PyContext_methods[] = { + //{"__call__", (PyCFunction) AltDSS_PyStrGetter_call, METH_NOARGS, "Call the low-level function, mapping the result string to Python, while checking for DSS errors."}, + {"set_exc_type", (PyCFunction) AltDSS_PyContext_set_exc_type, METH_O, "Set the exception class to raise on DSS errors. If None, exceptions are disabled."}, + {NULL} +}; + +#include "./_fastdss_py_members.inc.c" + +static PyTypeObject AltDSS_PyContextType = { + .ob_base = PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "_fastdss.AltDSS_PyContext", + .tp_doc = PyDoc_STR("Wraps a subset of the AltDSS C-API functions, handling DSS errors"), + .tp_basicsize = sizeof(AltDSS_PyContextObject), + .tp_itemsize = 0, + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_new = PyType_GenericNew, + .tp_init = (initproc) AltDSS_PyContext_init, + // .tp_call = AltDSS_PyContext_call, + .tp_methods = AltDSS_PyContext_methods, + .tp_members = AltDSS_PyContext_members, +}; + +PyMODINIT_FUNC PyInit__fastdss() +{ + PyObject *m; + + // Sanity checks + if (sizeof(unsigned long long) < sizeof(void*)) + { + PyErr_SetString(PyExc_TypeError, "Unexpected integer sizes (unsigned long long)"); + return NULL; + } + if (sizeof(long) < sizeof(int32_t)) + { + PyErr_SetString(PyExc_TypeError, "Unexpected integer sizes (int32_t)"); + return NULL; + } + + import_array(); + + if ( + PyType_Ready(&AltDSS_PyStrGetterType) < 0 + || PyType_Ready(&AltDSS_PyStrListGetterType) < 0 + || PyType_Ready(&AltDSS_PyGRGetterType) < 0 + || PyType_Ready(&AltDSS_PyScalarGetterType) < 0 + || PyType_Ready(&AltDSS_PyScalarSetterType) < 0 + || PyType_Ready(&AltDSS_PyContextType) < 0 + ) + { + return NULL; + } + + m = PyModule_Create(&altdss_fast_def); + if (m == NULL) + { + return NULL; + } +#ifdef Py_GIL_DISABLED + PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED); +#endif + + Py_INCREF(&AltDSS_PyContextType); + if (PyModule_AddObject(m, "AltDSS_PyContext", (PyObject *) &AltDSS_PyContextType) < 0) + { + goto ERROR0; + } + Py_INCREF(&AltDSS_PyStrGetterType); + if (PyModule_AddObject(m, "AltDSS_PyStrGetter", (PyObject *) &AltDSS_PyStrGetterType) < 0) + { + goto ERROR1; + } + Py_INCREF(&AltDSS_PyStrListGetterType); + if (PyModule_AddObject(m, "AltDSS_PyStrListGetter", (PyObject *) &AltDSS_PyStrListGetterType) < 0) + { + goto ERROR2; + } + Py_INCREF(&AltDSS_PyGRGetterType); + if (PyModule_AddObject(m, "AltDSS_PyGRGetter", (PyObject *) &AltDSS_PyGRGetterType) < 0) + { + goto ERROR3; + } + Py_INCREF(&AltDSS_PyScalarGetterType); + if (PyModule_AddObject(m, "AltDSS_PyScalarGetter", (PyObject *) &AltDSS_PyScalarGetterType) < 0) + { + goto ERROR4; + } + + Py_INCREF(&AltDSS_PyScalarSetterType); + if (PyModule_AddObject(m, "AltDSS_PyScalarSetter", (PyObject *) &AltDSS_PyScalarSetterType) < 0) + { + goto ERROR5; + } + + return m; + +ERROR5: + Py_DECREF(&AltDSS_PyScalarSetterType); +ERROR4: + Py_DECREF(&AltDSS_PyScalarGetterType); +ERROR3: + Py_DECREF(&AltDSS_PyGRGetterType); +ERROR2: + Py_DECREF(&AltDSS_PyStrListGetterType); +ERROR1: + Py_DECREF(&AltDSS_PyStrGetterType); +ERROR0: + Py_DECREF(&AltDSS_PyContextType); + Py_DECREF(m); + return NULL; +} + + +int AltDSS_PyStrListGetter_cinit(AltDSS_PyStrListGetterObject* f, AltDSS_PyContextObject *alt_py_ctx, FastDSSFuncInfo* finfo) +{ + if (finfo->resType != fastdss_types_strs) + { + f->dssCtx = NULL; + f->func = NULL; + return 0; + } + + f->parent = alt_py_ctx; + f->dssCtx = alt_py_ctx->dssCtx; + f->errorPtr = alt_py_ctx->errorPtr; + + f->func = *(void**)(((char*) alt_py_ctx->dssCFuncs) + finfo->c_funcOffset); + f->dssCFuncs = alt_py_ctx->dssCFuncs; + f->settingsPtr = alt_py_ctx->settingsPtr; + f->funcArgSignature = finfo->argType; + f->resType = finfo->resType; + f->fname = finfo->fname; + return 1; +} + +int AltDSS_PyScalarSetter_cinit(AltDSS_PyScalarSetterObject* f, AltDSS_PyContextObject *alt_py_ctx, FastDSSFuncInfo* finfo) +{ + if (( + finfo->argType != fastdss_types_i32_i32 && + finfo->argType != fastdss_types_i32 && + finfo->argType != fastdss_types_f64 && + finfo->argType != fastdss_types_u16 && + finfo->argType != fastdss_types_void && + finfo->argType != fastdss_types_str) + || (finfo->resType != fastdss_types_void) + ) + { + f->dssCtx = NULL; + f->func = NULL; + return 0; + } + + f->parent = alt_py_ctx; + f->dssCtx = alt_py_ctx->dssCtx; + f->errorPtr = alt_py_ctx->errorPtr; + f->func = *(void**)(((char*) alt_py_ctx->dssCFuncs) + finfo->c_funcOffset); + f->dssCFuncs = alt_py_ctx->dssCFuncs; + f->settingsPtr = alt_py_ctx->settingsPtr; + f->funcArgSignature = finfo->argType; + f->resType = finfo->resType; + f->fname = finfo->fname; + return 1; +} + +int AltDSS_PyScalarGetter_cinit(AltDSS_PyScalarGetterObject* f, AltDSS_PyContextObject *alt_py_ctx, FastDSSFuncInfo* finfo) +{ + if (finfo->resType != fastdss_types_i32 && + finfo->resType != fastdss_types_f64 && + finfo->resType != fastdss_types_u16) + { + f->dssCtx = NULL; + f->func = NULL; + return 0; + } + + f->parent = alt_py_ctx; + f->dssCtx = alt_py_ctx->dssCtx; + f->errorPtr = alt_py_ctx->errorPtr; + f->func = *(void**)(((char*) alt_py_ctx->dssCFuncs) + finfo->c_funcOffset); + f->dssCFuncs = alt_py_ctx->dssCFuncs; + f->settingsPtr = alt_py_ctx->settingsPtr; + f->funcArgSignature = finfo->argType; + f->resType = finfo->resType; + f->fname = finfo->fname; + return 1; +} + +int AltDSS_PyStrGetter_cinit(AltDSS_PyStrGetterObject* f, AltDSS_PyContextObject *alt_py_ctx, FastDSSFuncInfo* finfo) +{ + if (finfo->resType != fastdss_types_str) + { + f->dssCtx = NULL; + f->func = NULL; + return 0; + } + + f->parent = alt_py_ctx; + f->dssCtx = alt_py_ctx->dssCtx; + f->errorPtr = alt_py_ctx->errorPtr; + f->func = *(void**)(((char*) alt_py_ctx->dssCFuncs) + finfo->c_funcOffset); + f->dssCFuncs = alt_py_ctx->dssCFuncs; + f->settingsPtr = alt_py_ctx->settingsPtr; + f->funcArgSignature = finfo->argType; + f->resType = finfo->resType; + f->fname = finfo->fname; + return 1; +} + +int AltDSS_PyGRGetter_cinit(AltDSS_PyGRGetterObject* f, AltDSS_PyContextObject *alt_py_ctx, FastDSSFuncInfo* finfo) +{ + f->parent = alt_py_ctx; + f->dssCtx = alt_py_ctx->dssCtx; + f->errorPtr = alt_py_ctx->errorPtr; + f->func = *(void**)(((char*) alt_py_ctx->dssCFuncs) + finfo->c_funcOffset); + f->dssCFuncs = alt_py_ctx->dssCFuncs; + f->settingsPtr = alt_py_ctx->settingsPtr; + f->funcArgSignature = finfo->argType; + f->resType = finfo->resType; + f->fname = finfo->fname; + switch (finfo->resType) + { + case fastdss_types_gr_z128s: + case fastdss_types_gr_z128: + case fastdss_types_gr_f64s: + f->dataPtr = (void*) alt_py_ctx->dataPtr_pdouble; + f->countPtr = alt_py_ctx->countPtr_pdouble; + return 1; + case fastdss_types_gr_i32s: + f->dataPtr = (void*)alt_py_ctx->dataPtr_pinteger; + f->countPtr = alt_py_ctx->countPtr_pinteger; + return 1; + case fastdss_types_gr_i8s: + f->dataPtr = (void*)alt_py_ctx->dataPtr_pbyte; + f->countPtr = alt_py_ctx->countPtr_pbyte; + return 1; + default: + f->dssCtx = NULL; + f->func = NULL; + return 0; + } +} + +int AltDSS_Add_PyFunc(AltDSS_PyContextObject *self, FastDSSFuncInfo* finfo, PyObject *setObj, PyObject *fakeLib) +{ + PyObject **py_func = (PyObject**)(((char*)self) + finfo->attrOffset); + PyObject *key = NULL; + void** tmpFunc = *(void**)(((char*) self->dssCFuncs) + finfo->c_funcOffset); + + if (tmpFunc != NULL) + { + if (finfo->resType == fastdss_types_void) + { + switch (finfo->argType) + { + case fastdss_types_i32_i32: + case fastdss_types_f64: + case fastdss_types_i32: + case fastdss_types_u16: + case fastdss_types_str: + case fastdss_types_void: + *py_func = (PyObject*) PyObject_New(AltDSS_PyScalarSetterObject, &AltDSS_PyScalarSetterType); + if ((*py_func) == NULL) + { + goto ADD_FUNC_ERROR; + } + AltDSS_PyScalarSetter_cinit((AltDSS_PyScalarSetterObject*) *py_func, self, finfo); + break; + default: + goto ADD_FUNC_ERROR; + } + } + else + { + switch (finfo->resType) + { + case fastdss_types_strs: + *py_func = (PyObject*) PyObject_New(AltDSS_PyStrListGetterObject, &AltDSS_PyStrListGetterType); + if ((*py_func) == NULL) + { + goto ADD_FUNC_ERROR; + } + AltDSS_PyStrListGetter_cinit((AltDSS_PyStrListGetterObject*) *py_func, self, finfo); + break; + case fastdss_types_str: + *py_func = (PyObject*) PyObject_New(AltDSS_PyStrGetterObject, &AltDSS_PyStrGetterType); + if ((*py_func) == NULL) + { + goto ADD_FUNC_ERROR; + } + AltDSS_PyStrGetter_cinit((AltDSS_PyStrGetterObject*) *py_func, self, finfo); + break; + case fastdss_types_f64: + case fastdss_types_i32: + case fastdss_types_u16: + *py_func = (PyObject*) PyObject_New(AltDSS_PyScalarGetterObject, &AltDSS_PyScalarGetterType); + if ((*py_func) == NULL) + { + goto ADD_FUNC_ERROR; + } + AltDSS_PyScalarGetter_cinit((AltDSS_PyScalarGetterObject*) *py_func, self, finfo); + break; + case fastdss_types_gr_z128s: + case fastdss_types_gr_z128: + case fastdss_types_gr_f64s: + case fastdss_types_gr_i32s: + case fastdss_types_gr_i8s: + *py_func = (PyObject*) PyObject_New(AltDSS_PyGRGetterObject, &AltDSS_PyGRGetterType); + if ((*py_func) == NULL) + { + goto ADD_FUNC_ERROR; + } + AltDSS_PyGRGetter_cinit((AltDSS_PyGRGetterObject*) *py_func, self, finfo); + break; + default: + goto ADD_FUNC_ERROR; + } + } + } + else + { + // If the function is not available in the lib, + // set the attribute to None, but mark it as done. + *py_func = Py_None; + Py_INCREF(*py_func); + } + + key = PyUnicode_FromString(finfo->fname); + Py_INCREF(key); + if (PyObject_SetAttr(fakeLib, key, *py_func)) + { + Py_DECREF(*py_func); + goto ADD_FUNC_ERROR; + } + + if (PySet_Add(setObj, key)) + { + Py_DECREF(*py_func); + goto ADD_FUNC_ERROR; + } + + return 1; +ADD_FUNC_ERROR: + // printf("ERROR: function %s\n", fname); + *py_func = NULL; + Py_DECREF(key); + return 0; +} diff --git a/src/_fastdss_py_members.inc.c b/src/_fastdss_py_members.inc.c new file mode 100644 index 0000000..3d14932 --- /dev/null +++ b/src/_fastdss_py_members.inc.c @@ -0,0 +1,1586 @@ +// SPDX-FileCopyrightText: (C) 2024-2025 Paulo Meira & contributors to DSS-Extensions +// SPDX-License-Identifier: LGPL-3.0-only + +static PyMemberDef AltDSS_PyContext_members[] = { +{"ActiveClass_Get_ActiveClassName", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ActiveClass_Get_ActiveClassName)}, +{"ActiveClass_Get_ActiveClassParent", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ActiveClass_Get_ActiveClassParent)}, +{"ActiveClass_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ActiveClass_Get_Name)}, +{"Bus_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Name)}, +{"CNData_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_Name)}, +{"CapControls_Get_Capacitor", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_Capacitor)}, +{"CapControls_Get_MonitoredObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_MonitoredObj)}, +{"CapControls_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_Name)}, +{"Capacitors_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Get_Name)}, +{"Circuit_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_Name)}, +{"CktElement_Get_DisplayName", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_DisplayName)}, +{"CktElement_Get_EnergyMeter", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_EnergyMeter)}, +{"CktElement_Get_GUID", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_GUID)}, +{"CktElement_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_Name)}, +{"CktElement_Get_VariableName", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_VariableName)}, +{"DSSElement_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSSElement_Get_Name)}, +{"DSSProperty_Get_Description", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSSProperty_Get_Description)}, +{"DSSProperty_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSSProperty_Get_Name)}, +{"DSSProperty_Get_Val", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSSProperty_Get_Val)}, +{"DSS_Get_DataPath", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_DataPath)}, +{"DSS_Get_DefaultEditor", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_DefaultEditor)}, +{"DSS_Get_Version", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_Version)}, +{"Error_Get_Description", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Error_Get_Description)}, +{"Fuses_Get_MonitoredObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_MonitoredObj)}, +{"Fuses_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_Name)}, +{"Fuses_Get_SwitchedObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_SwitchedObj)}, +{"Fuses_Get_TCCcurve", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_TCCcurve)}, +{"GICSources_Get_Bus1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_Bus1)}, +{"GICSources_Get_Bus2", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_Bus2)}, +{"GICSources_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_Name)}, +{"Generators_Get_Bus1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_Bus1)}, +{"Generators_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_Name)}, +{"Generators_Get_Yearly", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_Yearly)}, +{"Generators_Get_daily", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_daily)}, +{"Generators_Get_duty", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_duty)}, +{"ISources_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ISources_Get_Name)}, +{"LineCodes_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_Name)}, +{"LineGeometries_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_Name)}, +{"LineSpacings_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Get_Name)}, +{"Lines_Get_Bus1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Bus1)}, +{"Lines_Get_Bus2", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Bus2)}, +{"Lines_Get_Geometry", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Geometry)}, +{"Lines_Get_LineCode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_LineCode)}, +{"Lines_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Name)}, +{"Lines_Get_Spacing", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Spacing)}, +{"LoadShapes_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_Name)}, +{"Loads_Get_CVRcurve", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_CVRcurve)}, +{"Loads_Get_Growth", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Growth)}, +{"Loads_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Name)}, +{"Loads_Get_Sensor", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Sensor)}, +{"Loads_Get_Spectrum", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Spectrum)}, +{"Loads_Get_Yearly", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Yearly)}, +{"Loads_Get_daily", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_daily)}, +{"Loads_Get_duty", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_duty)}, +{"Meters_Get_MeteredElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_MeteredElement)}, +{"Meters_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_Name)}, +{"Monitors_Get_Element", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_Element)}, +{"Monitors_Get_FileName", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_FileName)}, +{"Monitors_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_Name)}, +{"PDElements_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_Name)}, +{"PVSystems_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_Name)}, +{"PVSystems_Get_Sensor", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_Sensor)}, +{"PVSystems_Get_Tdaily", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_Tdaily)}, +{"PVSystems_Get_Tduty", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_Tduty)}, +{"PVSystems_Get_Tyearly", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_Tyearly)}, +{"PVSystems_Get_daily", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_daily)}, +{"PVSystems_Get_duty", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_duty)}, +{"PVSystems_Get_yearly", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_yearly)}, +{"Parser_Get_BeginQuote", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Get_BeginQuote)}, +{"Parser_Get_CmdString", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Get_CmdString)}, +{"Parser_Get_Delimiters", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Get_Delimiters)}, +{"Parser_Get_EndQuote", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Get_EndQuote)}, +{"Parser_Get_NextParam", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Get_NextParam)}, +{"Parser_Get_StrValue", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Get_StrValue)}, +{"Parser_Get_WhiteSpace", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Get_WhiteSpace)}, +{"Reactors_Get_Bus1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_Bus1)}, +{"Reactors_Get_Bus2", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_Bus2)}, +{"Reactors_Get_LCurve", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_LCurve)}, +{"Reactors_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_Name)}, +{"Reactors_Get_RCurve", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_RCurve)}, +{"Reclosers_Get_MonitoredObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_MonitoredObj)}, +{"Reclosers_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_Name)}, +{"Reclosers_Get_SwitchedObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_SwitchedObj)}, +{"ReduceCkt_Get_EditString", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_Get_EditString)}, +{"ReduceCkt_Get_EnergyMeter", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_Get_EnergyMeter)}, +{"ReduceCkt_Get_StartPDElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_Get_StartPDElement)}, +{"RegControls_Get_MonitoredBus", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_MonitoredBus)}, +{"RegControls_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_Name)}, +{"RegControls_Get_Transformer", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_Transformer)}, +{"Relays_Get_MonitoredObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Get_MonitoredObj)}, +{"Relays_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Get_Name)}, +{"Relays_Get_SwitchedObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Get_SwitchedObj)}, +{"Sensors_Get_MeteredElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_MeteredElement)}, +{"Sensors_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_Name)}, +{"Settings_Get_AutoBusList", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_AutoBusList)}, +{"Settings_Get_PriceCurve", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_PriceCurve)}, +{"Settings_Get_SkipFileRegExp", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_SkipFileRegExp)}, +{"Solution_Get_DefaultDaily", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_DefaultDaily)}, +{"Solution_Get_DefaultYearly", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_DefaultYearly)}, +{"Solution_Get_LDCurve", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_LDCurve)}, +{"Solution_Get_ModeID", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_ModeID)}, +{"Storages_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_Name)}, +{"SwtControls_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Get_Name)}, +{"SwtControls_Get_SwitchedObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Get_SwitchedObj)}, +{"TSData_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_Name)}, +{"Text_Get_Command", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Text_Get_Command)}, +{"Text_Get_Result", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Text_Get_Result)}, +{"Topology_Get_BranchName", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_BranchName)}, +{"Topology_Get_BusName", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_BusName)}, +{"Transformers_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_Name)}, +{"Transformers_Get_XfmrCode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_XfmrCode)}, +{"Transformers_Get_strWdgCurrents", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_strWdgCurrents)}, +{"Vsources_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Get_Name)}, +{"WindGens_Get_Bus1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_Bus1)}, +{"WindGens_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_Name)}, +{"WindGens_Get_Yearly", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_Yearly)}, +{"WindGens_Get_daily", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_daily)}, +{"WindGens_Get_duty", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_duty)}, +{"WireData_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_Name)}, +{"XYCurves_Get_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_Name)}, +{"ActiveClass_ToJSON", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ActiveClass_ToJSON)}, +{"Circuit_ToJSON", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_ToJSON)}, +{"CktElement_Get_Controller", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_Controller)}, +{"DSSElement_ToJSON", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSSElement_ToJSON)}, +{"DSS_Executive_Get_Command", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Executive_Get_Command)}, +{"DSS_Executive_Get_CommandHelp", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Executive_Get_CommandHelp)}, +{"DSS_Executive_Get_Option", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Executive_Get_Option)}, +{"DSS_Executive_Get_OptionHelp", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Executive_Get_OptionHelp)}, +{"DSS_Executive_Get_OptionValue", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Executive_Get_OptionValue)}, +{"ActiveClass_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ActiveClass_Set_Name)}, +{"CNData_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_Name)}, +{"CapControls_Set_Capacitor", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_Capacitor)}, +{"CapControls_Set_MonitoredObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_MonitoredObj)}, +{"CapControls_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_Name)}, +{"Capacitors_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Set_Name)}, +{"Circuit_Disable", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Disable)}, +{"Circuit_Enable", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Enable)}, +{"Circuit_SetCktElementName", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_SetCktElementName)}, +{"CktElement_Set_DisplayName", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Set_DisplayName)}, +{"CktElement_Set_VariableName", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Set_VariableName)}, +{"DSSProgress_Set_Caption", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSSProgress_Set_Caption)}, +{"DSSProperty_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSSProperty_Set_Name)}, +{"DSSProperty_Set_Val", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSSProperty_Set_Val)}, +{"DSS_NewCircuit", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_NewCircuit)}, +{"DSS_Set_DataPath", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Set_DataPath)}, +{"Error_Set_Description", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Error_Set_Description)}, +{"Fuses_Set_MonitoredObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Set_MonitoredObj)}, +{"Fuses_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Set_Name)}, +{"Fuses_Set_SwitchedObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Set_SwitchedObj)}, +{"Fuses_Set_TCCcurve", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Set_TCCcurve)}, +{"GICSources_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Set_Name)}, +{"Generators_Set_Bus1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_Bus1)}, +{"Generators_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_Name)}, +{"Generators_Set_Yearly", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_Yearly)}, +{"Generators_Set_daily", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_daily)}, +{"Generators_Set_duty", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_duty)}, +{"ISources_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ISources_Set_Name)}, +{"LineCodes_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Set_Name)}, +{"LineGeometries_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Set_Name)}, +{"LineSpacings_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Set_Name)}, +{"Lines_Set_Bus1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_Bus1)}, +{"Lines_Set_Bus2", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_Bus2)}, +{"Lines_Set_Geometry", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_Geometry)}, +{"Lines_Set_LineCode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_LineCode)}, +{"Lines_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_Name)}, +{"Lines_Set_Spacing", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_Spacing)}, +{"LoadShapes_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Set_Name)}, +{"Loads_Set_CVRcurve", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_CVRcurve)}, +{"Loads_Set_Growth", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Growth)}, +{"Loads_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Name)}, +{"Loads_Set_Spectrum", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Spectrum)}, +{"Loads_Set_Yearly", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Yearly)}, +{"Loads_Set_daily", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_daily)}, +{"Loads_Set_duty", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_duty)}, +{"Meters_Set_MeteredElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Set_MeteredElement)}, +{"Meters_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Set_Name)}, +{"Monitors_Set_Element", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Set_Element)}, +{"Monitors_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Set_Name)}, +{"PDElements_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Set_Name)}, +{"PVSystems_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Set_Name)}, +{"PVSystems_Set_Tdaily", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Set_Tdaily)}, +{"PVSystems_Set_Tduty", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Set_Tduty)}, +{"PVSystems_Set_Tyearly", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Set_Tyearly)}, +{"PVSystems_Set_daily", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Set_daily)}, +{"PVSystems_Set_duty", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Set_duty)}, +{"PVSystems_Set_yearly", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Set_yearly)}, +{"Parser_Set_BeginQuote", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Set_BeginQuote)}, +{"Parser_Set_CmdString", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Set_CmdString)}, +{"Parser_Set_Delimiters", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Set_Delimiters)}, +{"Parser_Set_EndQuote", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Set_EndQuote)}, +{"Parser_Set_WhiteSpace", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Set_WhiteSpace)}, +{"Reactors_Set_Bus1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_Bus1)}, +{"Reactors_Set_Bus2", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_Bus2)}, +{"Reactors_Set_LCurve", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_LCurve)}, +{"Reactors_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_Name)}, +{"Reactors_Set_RCurve", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_RCurve)}, +{"Reclosers_Set_MonitoredObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Set_MonitoredObj)}, +{"Reclosers_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Set_Name)}, +{"Reclosers_Set_SwitchedObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Set_SwitchedObj)}, +{"ReduceCkt_SaveCircuit", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_SaveCircuit)}, +{"ReduceCkt_Set_EditString", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_Set_EditString)}, +{"ReduceCkt_Set_EnergyMeter", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_Set_EnergyMeter)}, +{"ReduceCkt_Set_StartPDElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_Set_StartPDElement)}, +{"RegControls_Set_MonitoredBus", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_MonitoredBus)}, +{"RegControls_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_Name)}, +{"RegControls_Set_Transformer", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_Transformer)}, +{"Relays_Set_MonitoredObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Set_MonitoredObj)}, +{"Relays_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Set_Name)}, +{"Relays_Set_SwitchedObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Set_SwitchedObj)}, +{"Sensors_Set_MeteredElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Set_MeteredElement)}, +{"Sensors_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Set_Name)}, +{"Settings_Set_AutoBusList", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_AutoBusList)}, +{"Settings_Set_PriceCurve", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_PriceCurve)}, +{"Settings_Set_SkipFileRegExp", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_SkipFileRegExp)}, +{"Solution_Set_DefaultDaily", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_DefaultDaily)}, +{"Solution_Set_DefaultYearly", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_DefaultYearly)}, +{"Solution_Set_LDCurve", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_LDCurve)}, +{"Storages_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_Name)}, +{"SwtControls_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Set_Name)}, +{"SwtControls_Set_SwitchedObj", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Set_SwitchedObj)}, +{"TSData_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_Name)}, +{"Text_CommandBlock", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Text_CommandBlock)}, +{"Text_Set_Command", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Text_Set_Command)}, +{"Topology_Set_BranchName", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Set_BranchName)}, +{"Topology_Set_BusName", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Set_BusName)}, +{"Transformers_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_Name)}, +{"Transformers_Set_XfmrCode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_XfmrCode)}, +{"Vsources_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Set_Name)}, +{"WindGens_Set_Bus1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_Bus1)}, +{"WindGens_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_Name)}, +{"WindGens_Set_Yearly", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_Yearly)}, +{"WindGens_Set_daily", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_daily)}, +{"WindGens_Set_duty", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_duty)}, +{"WireData_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Set_Name)}, +{"XYCurves_Set_Name", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Set_Name)}, +{"YMatrix_SaveAsMarketFiles", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_SaveAsMarketFiles)}, +{"ZIP_Open", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ZIP_Open)}, +{"ZIP_Redirect", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ZIP_Redirect)}, +{"ActiveClass_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ActiveClass_Get_AllNames)}, +{"Bus_Get_AllPCEatBus", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_AllPCEatBus)}, +{"Bus_Get_AllPDEatBus", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_AllPDEatBus)}, +{"Bus_Get_LineList", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_LineList)}, +{"Bus_Get_LoadList", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_LoadList)}, +{"CNData_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_AllNames)}, +{"CapControls_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_AllNames)}, +{"Capacitors_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Get_AllNames)}, +{"Circuit_Get_AllBusNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_AllBusNames)}, +{"Circuit_Get_AllElementNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_AllElementNames)}, +{"Circuit_Get_AllNodeNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_AllNodeNames)}, +{"Circuit_Get_YNodeOrder", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_YNodeOrder)}, +{"CktElement_Get_AllPropertyNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_AllPropertyNames)}, +{"CktElement_Get_AllVariableNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_AllVariableNames)}, +{"CtrlQueue_Get_Queue", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CtrlQueue_Get_Queue)}, +{"DSSElement_Get_AllPropertyNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSSElement_Get_AllPropertyNames)}, +{"DSS_Get_Classes", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_Classes)}, +{"DSS_Get_UserClasses", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_UserClasses)}, +{"Fuses_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_AllNames)}, +{"Fuses_Get_NormalState", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_NormalState)}, +{"Fuses_Get_State", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_State)}, +{"GICSources_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_AllNames)}, +{"Generators_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_AllNames)}, +{"Generators_Get_RegisterNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_RegisterNames)}, +{"ISources_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ISources_Get_AllNames)}, +{"LineCodes_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_AllNames)}, +{"LineGeometries_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_AllNames)}, +{"LineGeometries_Get_Conductors", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_Conductors)}, +{"LineSpacings_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Get_AllNames)}, +{"Lines_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_AllNames)}, +{"LoadShapes_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_AllNames)}, +{"Loads_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_AllNames)}, +{"Meters_Get_AllBranchesInZone", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_AllBranchesInZone)}, +{"Meters_Get_AllEndElements", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_AllEndElements)}, +{"Meters_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_AllNames)}, +{"Meters_Get_RegisterNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_RegisterNames)}, +{"Meters_Get_ZonePCE", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_ZonePCE)}, +{"Monitors_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_AllNames)}, +{"Monitors_Get_Header", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_Header)}, +{"PDElements_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_AllNames)}, +{"PVSystems_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_AllNames)}, +{"PVSystems_Get_RegisterNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_RegisterNames)}, +{"Reactors_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_AllNames)}, +{"Reclosers_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_AllNames)}, +{"RegControls_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_AllNames)}, +{"Relays_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Get_AllNames)}, +{"Sensors_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_AllNames)}, +{"Solution_Get_EventLog", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_EventLog)}, +{"Solution_Get_IncMatrixCols", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_IncMatrixCols)}, +{"Solution_Get_IncMatrixRows", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_IncMatrixRows)}, +{"Storages_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_AllNames)}, +{"Storages_Get_RegisterNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_RegisterNames)}, +{"SwtControls_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Get_AllNames)}, +{"TSData_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_AllNames)}, +{"Topology_Get_AllIsolatedBranches", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_AllIsolatedBranches)}, +{"Topology_Get_AllIsolatedLoads", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_AllIsolatedLoads)}, +{"Topology_Get_AllLoopedPairs", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_AllLoopedPairs)}, +{"Transformers_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_AllNames)}, +{"Vsources_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Get_AllNames)}, +{"WindGens_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_AllNames)}, +{"WindGens_Get_RegisterNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_RegisterNames)}, +{"WireData_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_AllNames)}, +{"XYCurves_Get_AllNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_AllNames)}, +{"CktElement_Get_BusNames", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_BusNames)}, +{"Circuit_Get_AllNodeNamesByPhase", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_AllNodeNamesByPhase)}, +{"ZIP_List", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ZIP_List)}, +{"Bus_Get_SeqVoltages_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_SeqVoltages_GR)}, +{"Bus_Get_VMagAngle_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_VMagAngle_GR)}, +{"Bus_Get_puVmagAngle_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_puVmagAngle_GR)}, +{"Circuit_Get_AllBusDistances_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_AllBusDistances_GR)}, +{"Circuit_Get_AllBusVmag_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_AllBusVmag_GR)}, +{"Circuit_Get_AllBusVmagPu_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_AllBusVmagPu_GR)}, +{"Circuit_Get_AllNodeDistances_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_AllNodeDistances_GR)}, +{"CktElement_Get_AllVariableValues_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_AllVariableValues_GR)}, +{"CktElement_Get_CurrentsMagAng_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_CurrentsMagAng_GR)}, +{"CktElement_Get_Residuals_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_Residuals_GR)}, +{"CktElement_Get_SeqCurrents_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_SeqCurrents_GR)}, +{"CktElement_Get_SeqVoltages_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_SeqVoltages_GR)}, +{"CktElement_Get_VoltagesMagAng_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_VoltagesMagAng_GR)}, +{"Generators_Get_RegisterValues_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_RegisterValues_GR)}, +{"LineCodes_Get_Cmatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_Cmatrix_GR)}, +{"LineCodes_Get_Rmatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_Rmatrix_GR)}, +{"LineCodes_Get_Xmatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_Xmatrix_GR)}, +{"LineGeometries_Get_Xcoords_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_Xcoords_GR)}, +{"LineGeometries_Get_Ycoords_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_Ycoords_GR)}, +{"LineSpacings_Get_Xcoords_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Get_Xcoords_GR)}, +{"LineSpacings_Get_Ycoords_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Get_Ycoords_GR)}, +{"Lines_Get_Cmatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Cmatrix_GR)}, +{"Lines_Get_Rmatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Rmatrix_GR)}, +{"Lines_Get_Xmatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Xmatrix_GR)}, +{"LoadShapes_Get_Pmult_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_Pmult_GR)}, +{"LoadShapes_Get_Qmult_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_Qmult_GR)}, +{"LoadShapes_Get_TimeArray_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_TimeArray_GR)}, +{"Loads_Get_ZIPV_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_ZIPV_GR)}, +{"Meters_Get_AllocFactors_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_AllocFactors_GR)}, +{"Meters_Get_CalcCurrent_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_CalcCurrent_GR)}, +{"Meters_Get_Peakcurrent_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_Peakcurrent_GR)}, +{"Meters_Get_RegisterValues_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_RegisterValues_GR)}, +{"Meters_Get_Totals_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_Totals_GR)}, +{"Monitors_Get_dblFreq_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_dblFreq_GR)}, +{"Monitors_Get_dblHour_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_dblHour_GR)}, +{"PDElements_Get_AllCurrentsMagAng_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_AllCurrentsMagAng_GR)}, +{"PDElements_Get_AllSeqCurrents_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_AllSeqCurrents_GR)}, +{"PVSystems_Get_RegisterValues_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_RegisterValues_GR)}, +{"Reactors_Get_Rmatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_Rmatrix_GR)}, +{"Reactors_Get_Xmatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_Xmatrix_GR)}, +{"Reclosers_Get_RecloseIntervals_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_RecloseIntervals_GR)}, +{"Sensors_Get_AllocationFactor_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_AllocationFactor_GR)}, +{"Sensors_Get_Currents_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_Currents_GR)}, +{"Sensors_Get_kVARS_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_kVARS_GR)}, +{"Sensors_Get_kVS_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_kVS_GR)}, +{"Sensors_Get_kWS_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_kWS_GR)}, +{"Settings_Get_VoltageBases_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_VoltageBases_GR)}, +{"Storages_Get_RegisterValues_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_RegisterValues_GR)}, +{"WindGens_Get_RegisterValues_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_RegisterValues_GR)}, +{"XYCurves_Get_Xarray_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_Xarray_GR)}, +{"XYCurves_Get_Yarray_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_Yarray_GR)}, +{"Circuit_Get_AllNodeDistancesByPhase_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_AllNodeDistancesByPhase_GR)}, +{"Circuit_Get_AllNodeVmagByPhase_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_AllNodeVmagByPhase_GR)}, +{"Circuit_Get_AllNodeVmagPUByPhase_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_AllNodeVmagPUByPhase_GR)}, +{"Monitors_Get_Channel_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_Channel_GR)}, +{"Parser_Get_Matrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Get_Matrix_GR)}, +{"Parser_Get_SymMatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Get_SymMatrix_GR)}, +{"Parser_Get_Vector_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Get_Vector_GR)}, +{"LineGeometries_Get_Cmatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_Cmatrix_GR)}, +{"LineGeometries_Get_Rmatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_Rmatrix_GR)}, +{"LineGeometries_Get_Xmatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_Xmatrix_GR)}, +{"PDElements_Get_AllMaxCurrents_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_AllMaxCurrents_GR)}, +{"PDElements_Get_AllPctEmerg_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_AllPctEmerg_GR)}, +{"PDElements_Get_AllPctNorm_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_AllPctNorm_GR)}, +{"Bus_Get_CplxSeqVoltages_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_CplxSeqVoltages_GR)}, +{"Bus_Get_Isc_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Isc_GR)}, +{"Bus_Get_VLL_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_VLL_GR)}, +{"Bus_Get_Voc_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Voc_GR)}, +{"Bus_Get_Voltages_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Voltages_GR)}, +{"Bus_Get_YscMatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_YscMatrix_GR)}, +{"Bus_Get_ZSC012Matrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_ZSC012Matrix_GR)}, +{"Bus_Get_ZscMatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_ZscMatrix_GR)}, +{"Bus_Get_puVLL_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_puVLL_GR)}, +{"Bus_Get_puVoltages_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_puVoltages_GR)}, +{"Circuit_Get_AllBusVolts_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_AllBusVolts_GR)}, +{"Circuit_Get_AllElementLosses_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_AllElementLosses_GR)}, +{"Circuit_Get_SystemY_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_SystemY_GR)}, +{"Circuit_Get_YCurrents_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_YCurrents_GR)}, +{"Circuit_Get_YNodeVarray_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_YNodeVarray_GR)}, +{"CktElement_Get_AllLosses_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_AllLosses_GR)}, +{"CktElement_Get_CplxSeqCurrents_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_CplxSeqCurrents_GR)}, +{"CktElement_Get_CplxSeqVoltages_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_CplxSeqVoltages_GR)}, +{"CktElement_Get_Currents_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_Currents_GR)}, +{"CktElement_Get_PhaseLosses_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_PhaseLosses_GR)}, +{"CktElement_Get_Powers_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_Powers_GR)}, +{"CktElement_Get_SeqPowers_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_SeqPowers_GR)}, +{"CktElement_Get_TotalPowers_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_TotalPowers_GR)}, +{"CktElement_Get_Voltages_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_Voltages_GR)}, +{"CktElement_Get_Yprim_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_Yprim_GR)}, +{"Lines_Get_Yprim_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Yprim_GR)}, +{"PDElements_Get_AllCplxSeqCurrents_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_AllCplxSeqCurrents_GR)}, +{"PDElements_Get_AllCurrents_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_AllCurrents_GR)}, +{"PDElements_Get_AllPowers_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_AllPowers_GR)}, +{"PDElements_Get_AllSeqPowers_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_AllSeqPowers_GR)}, +{"Transformers_Get_AllLossesByType_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_AllLossesByType_GR)}, +{"Transformers_Get_LossesByType_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_LossesByType_GR)}, +{"Transformers_Get_WdgCurrents_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_WdgCurrents_GR)}, +{"Transformers_Get_WdgVoltages_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_WdgVoltages_GR)}, +{"LineGeometries_Get_Zmatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_Zmatrix_GR)}, +{"Bus_Get_Zsc0_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Zsc0_GR)}, +{"Bus_Get_Zsc1_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Zsc1_GR)}, +{"Circuit_Get_LineLosses_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_LineLosses_GR)}, +{"Circuit_Get_Losses_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_Losses_GR)}, +{"Circuit_Get_SubstationLosses_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_SubstationLosses_GR)}, +{"Circuit_Get_TotalPower_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_TotalPower_GR)}, +{"CktElement_Get_Losses_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_Losses_GR)}, +{"Reactors_Get_Z_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_Z_GR)}, +{"Reactors_Get_Z0_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_Z0_GR)}, +{"Reactors_Get_Z1_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_Z1_GR)}, +{"Reactors_Get_Z2_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_Z2_GR)}, +{"Bus_Get_Nodes_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Nodes_GR)}, +{"Capacitors_Get_States_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Get_States_GR)}, +{"CktElement_Get_NodeOrder_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_NodeOrder_GR)}, +{"CktElement_Get_NodeRef_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_NodeRef_GR)}, +{"LineGeometries_Get_Units_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_Units_GR)}, +{"PDElements_Get_AllNumConductors_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_AllNumConductors_GR)}, +{"PDElements_Get_AllNumPhases_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_AllNumPhases_GR)}, +{"PDElements_Get_AllNumTerminals_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_AllNumTerminals_GR)}, +{"Parallel_Get_ActorProgress_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_Get_ActorProgress_GR)}, +{"Parallel_Get_ActorStatus_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_Get_ActorStatus_GR)}, +{"Settings_Get_LossRegs_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_LossRegs_GR)}, +{"Settings_Get_SkipCommands_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_SkipCommands_GR)}, +{"Settings_Get_UEregs_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_UEregs_GR)}, +{"Solution_Get_BusLevels_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_BusLevels_GR)}, +{"Solution_Get_IncMatrix_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_IncMatrix_GR)}, +{"Solution_Get_Laplacian_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Laplacian_GR)}, +{"Monitors_Get_ByteStream_GR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_ByteStream_GR)}, +{"ActiveClass_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ActiveClass_Get_Count)}, +{"ActiveClass_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ActiveClass_Get_First)}, +{"ActiveClass_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ActiveClass_Get_Next)}, +{"ActiveClass_Get_NumElements", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ActiveClass_Get_NumElements)}, +{"ActiveClass_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ActiveClass_Get_idx)}, +{"Bus_Get_N_Customers", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_N_Customers)}, +{"Bus_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Next)}, +{"Bus_Get_NumNodes", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_NumNodes)}, +{"Bus_Get_SectionID", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_SectionID)}, +{"Bus_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_idx)}, +{"CNData_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_Count)}, +{"CNData_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_First)}, +{"CNData_Get_GMRUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_GMRUnits)}, +{"CNData_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_Next)}, +{"CNData_Get_RadiusUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_RadiusUnits)}, +{"CNData_Get_ResistanceUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_ResistanceUnits)}, +{"CNData_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_idx)}, +{"CNData_Get_k", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_k)}, +{"CapControls_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_Count)}, +{"CapControls_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_First)}, +{"CapControls_Get_Mode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_Mode)}, +{"CapControls_Get_MonitoredTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_MonitoredTerm)}, +{"CapControls_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_Next)}, +{"CapControls_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_idx)}, +{"Capacitors_Get_AvailableSteps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Get_AvailableSteps)}, +{"Capacitors_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Get_Count)}, +{"Capacitors_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Get_First)}, +{"Capacitors_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Get_Next)}, +{"Capacitors_Get_NumSteps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Get_NumSteps)}, +{"Capacitors_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Get_idx)}, +{"Circuit_FirstElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_FirstElement)}, +{"Circuit_FirstPCElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_FirstPCElement)}, +{"Circuit_FirstPDElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_FirstPDElement)}, +{"Circuit_Get_NumBuses", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_NumBuses)}, +{"Circuit_Get_NumCktElements", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_NumCktElements)}, +{"Circuit_Get_NumNodes", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_NumNodes)}, +{"Circuit_Get_ParentPDElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Get_ParentPDElement)}, +{"Circuit_NextElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_NextElement)}, +{"Circuit_NextPCElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_NextPCElement)}, +{"Circuit_NextPDElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_NextPDElement)}, +{"CktElement_Get_Handle", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_Handle)}, +{"CktElement_Get_NumConductors", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_NumConductors)}, +{"CktElement_Get_NumControls", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_NumControls)}, +{"CktElement_Get_NumPhases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_NumPhases)}, +{"CktElement_Get_NumProperties", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_NumProperties)}, +{"CktElement_Get_NumTerminals", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_NumTerminals)}, +{"CktElement_Get_OCPDevIndex", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_OCPDevIndex)}, +{"CktElement_Get_OCPDevType", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_OCPDevType)}, +{"CktElement_Get_VariableIdx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_VariableIdx)}, +{"CktElement_Get_YprimOrder", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_YprimOrder)}, +{"CtrlQueue_Get_ActionCode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CtrlQueue_Get_ActionCode)}, +{"CtrlQueue_Get_DeviceHandle", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CtrlQueue_Get_DeviceHandle)}, +{"CtrlQueue_Get_NumActions", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CtrlQueue_Get_NumActions)}, +{"CtrlQueue_Get_PopAction", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CtrlQueue_Get_PopAction)}, +{"CtrlQueue_Get_QueueSize", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CtrlQueue_Get_QueueSize)}, +{"DSSElement_Get_NumProperties", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSSElement_Get_NumProperties)}, +{"DSS_Executive_Get_NumCommands", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Executive_Get_NumCommands)}, +{"DSS_Executive_Get_NumOptions", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Executive_Get_NumOptions)}, +{"DSS_Get_NumCircuits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_NumCircuits)}, +{"DSS_Get_NumClasses", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_NumClasses)}, +{"DSS_Get_NumUserClasses", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_NumUserClasses)}, +{"Error_Get_Number", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Error_Get_Number)}, +{"Fuses_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_Count)}, +{"Fuses_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_First)}, +{"Fuses_Get_MonitoredTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_MonitoredTerm)}, +{"Fuses_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_Next)}, +{"Fuses_Get_NumPhases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_NumPhases)}, +{"Fuses_Get_SwitchedTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_SwitchedTerm)}, +{"Fuses_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_idx)}, +{"GICSources_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_Count)}, +{"GICSources_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_First)}, +{"GICSources_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_Next)}, +{"GICSources_Get_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_Phases)}, +{"GICSources_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_idx)}, +{"Generators_Get_Class_", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_Class_)}, +{"Generators_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_Count)}, +{"Generators_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_First)}, +{"Generators_Get_Model", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_Model)}, +{"Generators_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_Next)}, +{"Generators_Get_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_Phases)}, +{"Generators_Get_Status", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_Status)}, +{"Generators_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_idx)}, +{"ISources_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ISources_Get_Count)}, +{"ISources_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ISources_Get_First)}, +{"ISources_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ISources_Get_Next)}, +{"ISources_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ISources_Get_idx)}, +{"LineCodes_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_Count)}, +{"LineCodes_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_First)}, +{"LineCodes_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_Next)}, +{"LineCodes_Get_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_Phases)}, +{"LineCodes_Get_Units", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_Units)}, +{"LineCodes_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_idx)}, +{"LineGeometries_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_Count)}, +{"LineGeometries_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_First)}, +{"LineGeometries_Get_Nconds", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_Nconds)}, +{"LineGeometries_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_Next)}, +{"LineGeometries_Get_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_Phases)}, +{"LineGeometries_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_idx)}, +{"LineSpacings_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Get_Count)}, +{"LineSpacings_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Get_First)}, +{"LineSpacings_Get_Nconds", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Get_Nconds)}, +{"LineSpacings_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Get_Next)}, +{"LineSpacings_Get_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Get_Phases)}, +{"LineSpacings_Get_Units", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Get_Units)}, +{"LineSpacings_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Get_idx)}, +{"Lines_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Count)}, +{"Lines_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_First)}, +{"Lines_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Next)}, +{"Lines_Get_NumCust", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_NumCust)}, +{"Lines_Get_Parent", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Parent)}, +{"Lines_Get_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Phases)}, +{"Lines_Get_TotalCust", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_TotalCust)}, +{"Lines_Get_Units", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Units)}, +{"Lines_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_idx)}, +{"LoadShapes_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_Count)}, +{"LoadShapes_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_First)}, +{"LoadShapes_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_Next)}, +{"LoadShapes_Get_Npts", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_Npts)}, +{"LoadShapes_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_idx)}, +{"Loads_Get_Class_", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Class_)}, +{"Loads_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Count)}, +{"Loads_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_First)}, +{"Loads_Get_Model", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Model)}, +{"Loads_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Next)}, +{"Loads_Get_NumCust", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_NumCust)}, +{"Loads_Get_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Phases)}, +{"Loads_Get_Status", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Status)}, +{"Loads_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_idx)}, +{"Meters_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_Count)}, +{"Meters_Get_CountBranches", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_CountBranches)}, +{"Meters_Get_CountEndElements", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_CountEndElements)}, +{"Meters_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_First)}, +{"Meters_Get_MeteredTerminal", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_MeteredTerminal)}, +{"Meters_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_Next)}, +{"Meters_Get_NumSectionBranches", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_NumSectionBranches)}, +{"Meters_Get_NumSectionCustomers", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_NumSectionCustomers)}, +{"Meters_Get_NumSections", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_NumSections)}, +{"Meters_Get_OCPDeviceType", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_OCPDeviceType)}, +{"Meters_Get_SectSeqIdx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_SectSeqIdx)}, +{"Meters_Get_SectTotalCust", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_SectTotalCust)}, +{"Meters_Get_SeqListSize", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_SeqListSize)}, +{"Meters_Get_SequenceIndex", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_SequenceIndex)}, +{"Meters_Get_TotalCustomers", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_TotalCustomers)}, +{"Meters_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_idx)}, +{"Monitors_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_Count)}, +{"Monitors_Get_FileVersion", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_FileVersion)}, +{"Monitors_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_First)}, +{"Monitors_Get_Mode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_Mode)}, +{"Monitors_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_Next)}, +{"Monitors_Get_NumChannels", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_NumChannels)}, +{"Monitors_Get_RecordSize", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_RecordSize)}, +{"Monitors_Get_SampleCount", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_SampleCount)}, +{"Monitors_Get_Terminal", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_Terminal)}, +{"Monitors_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Get_idx)}, +{"PDElements_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_Count)}, +{"PDElements_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_First)}, +{"PDElements_Get_FromTerminal", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_FromTerminal)}, +{"PDElements_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_Next)}, +{"PDElements_Get_Numcustomers", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_Numcustomers)}, +{"PDElements_Get_ParentPDElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_ParentPDElement)}, +{"PDElements_Get_SectionID", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_SectionID)}, +{"PDElements_Get_Totalcustomers", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_Totalcustomers)}, +{"PDElements_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_idx)}, +{"PVSystems_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_Count)}, +{"PVSystems_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_First)}, +{"PVSystems_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_Next)}, +{"PVSystems_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_idx)}, +{"Parallel_Get_ActiveActor", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_Get_ActiveActor)}, +{"Parallel_Get_ActiveParallel", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_Get_ActiveParallel)}, +{"Parallel_Get_ActorCPU", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_Get_ActorCPU)}, +{"Parallel_Get_ConcatenateReports", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_Get_ConcatenateReports)}, +{"Parallel_Get_NumCPUs", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_Get_NumCPUs)}, +{"Parallel_Get_NumCores", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_Get_NumCores)}, +{"Parallel_Get_NumOfActors", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_Get_NumOfActors)}, +{"Parser_Get_IntValue", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Get_IntValue)}, +{"Reactors_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_Count)}, +{"Reactors_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_First)}, +{"Reactors_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_Next)}, +{"Reactors_Get_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_Phases)}, +{"Reactors_Get_SpecType", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_SpecType)}, +{"Reactors_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_idx)}, +{"Reclosers_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_Count)}, +{"Reclosers_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_First)}, +{"Reclosers_Get_MonitoredTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_MonitoredTerm)}, +{"Reclosers_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_Next)}, +{"Reclosers_Get_NormalState", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_NormalState)}, +{"Reclosers_Get_NumFast", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_NumFast)}, +{"Reclosers_Get_Shots", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_Shots)}, +{"Reclosers_Get_State", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_State)}, +{"Reclosers_Get_SwitchedTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_SwitchedTerm)}, +{"Reclosers_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_idx)}, +{"RegControls_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_Count)}, +{"RegControls_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_First)}, +{"RegControls_Get_MaxTapChange", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_MaxTapChange)}, +{"RegControls_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_Next)}, +{"RegControls_Get_TapNumber", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_TapNumber)}, +{"RegControls_Get_TapWinding", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_TapWinding)}, +{"RegControls_Get_Winding", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_Winding)}, +{"RegControls_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_idx)}, +{"Relays_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Get_Count)}, +{"Relays_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Get_First)}, +{"Relays_Get_MonitoredTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Get_MonitoredTerm)}, +{"Relays_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Get_Next)}, +{"Relays_Get_NormalState", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Get_NormalState)}, +{"Relays_Get_State", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Get_State)}, +{"Relays_Get_SwitchedTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Get_SwitchedTerm)}, +{"Relays_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Get_idx)}, +{"Sensors_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_Count)}, +{"Sensors_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_First)}, +{"Sensors_Get_MeteredTerminal", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_MeteredTerminal)}, +{"Sensors_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_Next)}, +{"Sensors_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_idx)}, +{"Settings_Get_CktModel", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_CktModel)}, +{"Settings_Get_IterateDisabled", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_IterateDisabled)}, +{"Solution_Get_AddType", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_AddType)}, +{"Solution_Get_Algorithm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Algorithm)}, +{"Solution_Get_ControlIterations", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_ControlIterations)}, +{"Solution_Get_ControlMode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_ControlMode)}, +{"Solution_Get_Hour", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Hour)}, +{"Solution_Get_Iterations", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Iterations)}, +{"Solution_Get_LoadModel", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_LoadModel)}, +{"Solution_Get_MaxControlIterations", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_MaxControlIterations)}, +{"Solution_Get_MaxIterations", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_MaxIterations)}, +{"Solution_Get_MinIterations", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_MinIterations)}, +{"Solution_Get_Mode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Mode)}, +{"Solution_Get_MostIterationsDone", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_MostIterationsDone)}, +{"Solution_Get_Number", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Number)}, +{"Solution_Get_Random", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Random)}, +{"Solution_Get_Totaliterations", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Totaliterations)}, +{"Solution_Get_Year", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Year)}, +{"Storages_Get_ControlMode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_ControlMode)}, +{"Storages_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_Count)}, +{"Storages_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_First)}, +{"Storages_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_Next)}, +{"Storages_Get_SafeMode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_SafeMode)}, +{"Storages_Get_State", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_State)}, +{"Storages_Get_VarFollowInverter", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_VarFollowInverter)}, +{"Storages_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_idx)}, +{"SwtControls_Get_Action", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Get_Action)}, +{"SwtControls_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Get_Count)}, +{"SwtControls_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Get_First)}, +{"SwtControls_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Get_Next)}, +{"SwtControls_Get_NormalState", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Get_NormalState)}, +{"SwtControls_Get_State", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Get_State)}, +{"SwtControls_Get_SwitchedTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Get_SwitchedTerm)}, +{"SwtControls_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Get_idx)}, +{"TSData_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_Count)}, +{"TSData_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_First)}, +{"TSData_Get_GMRUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_GMRUnits)}, +{"TSData_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_Next)}, +{"TSData_Get_RadiusUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_RadiusUnits)}, +{"TSData_Get_ResistanceUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_ResistanceUnits)}, +{"TSData_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_idx)}, +{"Topology_Get_ActiveBranch", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_ActiveBranch)}, +{"Topology_Get_ActiveLevel", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_ActiveLevel)}, +{"Topology_Get_BackwardBranch", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_BackwardBranch)}, +{"Topology_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_First)}, +{"Topology_Get_FirstLoad", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_FirstLoad)}, +{"Topology_Get_ForwardBranch", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_ForwardBranch)}, +{"Topology_Get_LoopedBranch", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_LoopedBranch)}, +{"Topology_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_Next)}, +{"Topology_Get_NextLoad", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_NextLoad)}, +{"Topology_Get_NumIsolatedBranches", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_NumIsolatedBranches)}, +{"Topology_Get_NumIsolatedLoads", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_NumIsolatedLoads)}, +{"Topology_Get_NumLoops", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_NumLoops)}, +{"Topology_Get_ParallelBranch", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Topology_Get_ParallelBranch)}, +{"Transformers_Get_CoreType", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_CoreType)}, +{"Transformers_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_Count)}, +{"Transformers_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_First)}, +{"Transformers_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_Next)}, +{"Transformers_Get_NumTaps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_NumTaps)}, +{"Transformers_Get_NumWindings", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_NumWindings)}, +{"Transformers_Get_Wdg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_Wdg)}, +{"Transformers_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_idx)}, +{"Vsources_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Get_Count)}, +{"Vsources_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Get_First)}, +{"Vsources_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Get_Next)}, +{"Vsources_Get_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Get_Phases)}, +{"Vsources_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Get_idx)}, +{"WindGens_Get_Class_", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_Class_)}, +{"WindGens_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_Count)}, +{"WindGens_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_First)}, +{"WindGens_Get_NPoles", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_NPoles)}, +{"WindGens_Get_N_WTG", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_N_WTG)}, +{"WindGens_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_Next)}, +{"WindGens_Get_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_Phases)}, +{"WindGens_Get_QFlag", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_QFlag)}, +{"WindGens_Get_QMode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_QMode)}, +{"WindGens_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_idx)}, +{"WireData_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_Count)}, +{"WireData_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_First)}, +{"WireData_Get_GMRUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_GMRUnits)}, +{"WireData_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_Next)}, +{"WireData_Get_RadiusUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_RadiusUnits)}, +{"WireData_Get_ResistanceUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_ResistanceUnits)}, +{"WireData_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_idx)}, +{"XYCurves_Get_Count", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_Count)}, +{"XYCurves_Get_First", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_First)}, +{"XYCurves_Get_Next", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_Next)}, +{"XYCurves_Get_Npts", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_Npts)}, +{"XYCurves_Get_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_idx)}, +{"YMatrix_Get_ControlIteration", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Get_ControlIteration)}, +{"YMatrix_Get_Iteration", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Get_Iteration)}, +{"YMatrix_Get_IterationFlag", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Get_IterationFlag)}, +{"Bus_GetUniqueNodeNumber", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_GetUniqueNodeNumber)}, +{"Circuit_SetActiveBusi", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_SetActiveBusi)}, +{"Circuit_SetActiveBus", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_SetActiveBus)}, +{"Circuit_SetActiveClass", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_SetActiveClass)}, +{"Circuit_SetActiveElement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_SetActiveElement)}, +{"DSS_SetActiveClass", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_SetActiveClass)}, +{"Lines_New", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_New)}, +{"LoadShapes_New", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_New)}, +{"ActiveClass_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ActiveClass_Set_idx)}, +{"CNData_Set_GMRUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_GMRUnits)}, +{"CNData_Set_RadiusUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_RadiusUnits)}, +{"CNData_Set_ResistanceUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_ResistanceUnits)}, +{"CNData_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_idx)}, +{"CNData_Set_k", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_k)}, +{"CapControls_Set_Mode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_Mode)}, +{"CapControls_Set_MonitoredTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_MonitoredTerm)}, +{"CapControls_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_idx)}, +{"Capacitors_Set_NumSteps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Set_NumSteps)}, +{"Capacitors_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Set_idx)}, +{"Circuit_Flatten", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Flatten)}, +{"Circuit_SetCktElementIndex", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_SetCktElementIndex)}, +{"CktElement_Set_VariableIdx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Set_VariableIdx)}, +{"CtrlQueue_Delete", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CtrlQueue_Delete)}, +{"CtrlQueue_Set_Action", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CtrlQueue_Set_Action)}, +{"DSSProgress_Set_PctProgress", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSSProgress_Set_PctProgress)}, +{"DSSProperty_Set_Index", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSSProperty_Set_Index)}, +{"Fuses_Set_MonitoredTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Set_MonitoredTerm)}, +{"Fuses_Set_SwitchedTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Set_SwitchedTerm)}, +{"Fuses_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Set_idx)}, +{"GICSources_Set_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Set_Phases)}, +{"GICSources_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Set_idx)}, +{"Generators_Set_Class_", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_Class_)}, +{"Generators_Set_Model", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_Model)}, +{"Generators_Set_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_Phases)}, +{"Generators_Set_Status", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_Status)}, +{"Generators_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_idx)}, +{"ISources_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ISources_Set_idx)}, +{"LineCodes_Set_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Set_Phases)}, +{"LineCodes_Set_Units", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Set_Units)}, +{"LineCodes_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Set_idx)}, +{"LineGeometries_Set_Nconds", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Set_Nconds)}, +{"LineGeometries_Set_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Set_Phases)}, +{"LineGeometries_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Set_idx)}, +{"LineSpacings_Set_Nconds", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Set_Nconds)}, +{"LineSpacings_Set_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Set_Phases)}, +{"LineSpacings_Set_Units", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Set_Units)}, +{"LineSpacings_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineSpacings_Set_idx)}, +{"Lines_Set_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_Phases)}, +{"Lines_Set_Units", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_Units)}, +{"Lines_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_idx)}, +{"LoadShapes_Set_Npts", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Set_Npts)}, +{"LoadShapes_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Set_idx)}, +{"Loads_Set_Class_", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Class_)}, +{"Loads_Set_Model", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Model)}, +{"Loads_Set_NumCust", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_NumCust)}, +{"Loads_Set_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Phases)}, +{"Loads_Set_Status", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Status)}, +{"Loads_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_idx)}, +{"Meters_SetActiveSection", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_SetActiveSection)}, +{"Meters_Set_MeteredTerminal", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Set_MeteredTerminal)}, +{"Meters_Set_SequenceIndex", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Set_SequenceIndex)}, +{"Meters_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Set_idx)}, +{"Monitors_Set_Mode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Set_Mode)}, +{"Monitors_Set_Terminal", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Set_Terminal)}, +{"Monitors_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Set_idx)}, +{"PDElements_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Set_idx)}, +{"PVSystems_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Set_idx)}, +{"Parallel_Set_ActiveActor", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_Set_ActiveActor)}, +{"Parallel_Set_ActiveParallel", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_Set_ActiveParallel)}, +{"Parallel_Set_ActorCPU", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_Set_ActorCPU)}, +{"Parallel_Set_ConcatenateReports", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_Set_ConcatenateReports)}, +{"Reactors_Set_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_Phases)}, +{"Reactors_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_idx)}, +{"Reclosers_Set_MonitoredTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Set_MonitoredTerm)}, +{"Reclosers_Set_NormalState", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Set_NormalState)}, +{"Reclosers_Set_NumFast", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Set_NumFast)}, +{"Reclosers_Set_Shots", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Set_Shots)}, +{"Reclosers_Set_State", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Set_State)}, +{"Reclosers_Set_SwitchedTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Set_SwitchedTerm)}, +{"Reclosers_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Set_idx)}, +{"RegControls_Set_MaxTapChange", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_MaxTapChange)}, +{"RegControls_Set_TapNumber", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_TapNumber)}, +{"RegControls_Set_TapWinding", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_TapWinding)}, +{"RegControls_Set_Winding", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_Winding)}, +{"RegControls_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_idx)}, +{"Relays_Set_MonitoredTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Set_MonitoredTerm)}, +{"Relays_Set_NormalState", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Set_NormalState)}, +{"Relays_Set_State", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Set_State)}, +{"Relays_Set_SwitchedTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Set_SwitchedTerm)}, +{"Relays_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Set_idx)}, +{"Sensors_Set_MeteredTerminal", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Set_MeteredTerminal)}, +{"Sensors_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Set_idx)}, +{"Settings_SetPropertyNameStyle", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_SetPropertyNameStyle)}, +{"Settings_Set_CktModel", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_CktModel)}, +{"Settings_Set_IterateDisabled", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_IterateDisabled)}, +{"Solution_Set_AddType", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_AddType)}, +{"Solution_Set_Algorithm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_Algorithm)}, +{"Solution_Set_ControlIterations", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_ControlIterations)}, +{"Solution_Set_ControlMode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_ControlMode)}, +{"Solution_Set_Hour", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_Hour)}, +{"Solution_Set_LoadModel", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_LoadModel)}, +{"Solution_Set_MaxControlIterations", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_MaxControlIterations)}, +{"Solution_Set_MaxIterations", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_MaxIterations)}, +{"Solution_Set_MinIterations", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_MinIterations)}, +{"Solution_Set_Mode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_Mode)}, +{"Solution_Set_Number", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_Number)}, +{"Solution_Set_Random", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_Random)}, +{"Solution_Set_Year", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_Year)}, +{"Storages_Set_ControlMode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_ControlMode)}, +{"Storages_Set_State", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_State)}, +{"Storages_Set_VarFollowInverter", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_VarFollowInverter)}, +{"Storages_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_idx)}, +{"SwtControls_Set_Action", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Set_Action)}, +{"SwtControls_Set_NormalState", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Set_NormalState)}, +{"SwtControls_Set_State", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Set_State)}, +{"SwtControls_Set_SwitchedTerm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Set_SwitchedTerm)}, +{"SwtControls_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Set_idx)}, +{"TSData_Set_GMRUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_GMRUnits)}, +{"TSData_Set_RadiusUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_RadiusUnits)}, +{"TSData_Set_ResistanceUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_ResistanceUnits)}, +{"TSData_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_idx)}, +{"Transformers_Set_CoreType", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_CoreType)}, +{"Transformers_Set_NumTaps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_NumTaps)}, +{"Transformers_Set_NumWindings", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_NumWindings)}, +{"Transformers_Set_Wdg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_Wdg)}, +{"Transformers_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_idx)}, +{"Vsources_Set_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Set_Phases)}, +{"Vsources_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Set_idx)}, +{"WindGens_Set_Class_", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_Class_)}, +{"WindGens_Set_NPoles", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_NPoles)}, +{"WindGens_Set_N_WTG", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_N_WTG)}, +{"WindGens_Set_Phases", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_Phases)}, +{"WindGens_Set_QFlag", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_QFlag)}, +{"WindGens_Set_QMode", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_QMode)}, +{"WindGens_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_idx)}, +{"WireData_Set_GMRUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Set_GMRUnits)}, +{"WireData_Set_RadiusUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Set_RadiusUnits)}, +{"WireData_Set_ResistanceUnits", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Set_ResistanceUnits)}, +{"WireData_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Set_idx)}, +{"XYCurves_Set_Npts", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Set_Npts)}, +{"XYCurves_Set_idx", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Set_idx)}, +{"YMatrix_AddInAuxCurrents", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_AddInAuxCurrents)}, +{"YMatrix_Set_ControlIteration", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Set_ControlIteration)}, +{"YMatrix_Set_Iteration", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Set_Iteration)}, +{"YMatrix_Set_IterationFlag", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Set_IterationFlag)}, +{"CktElement_Close", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Close)}, +{"CktElement_Open", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Open)}, +{"Solution_BuildYMatrix", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_BuildYMatrix)}, +{"YMatrix_BuildYMatrixD", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_BuildYMatrixD)}, +{"Bus_Get_Cust_Duration", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Cust_Duration)}, +{"Bus_Get_Cust_Interrupts", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Cust_Interrupts)}, +{"Bus_Get_Distance", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Distance)}, +{"Bus_Get_Int_Duration", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Int_Duration)}, +{"Bus_Get_Lambda", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Lambda)}, +{"Bus_Get_Latitude", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Latitude)}, +{"Bus_Get_Longitude", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Longitude)}, +{"Bus_Get_N_interrupts", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_N_interrupts)}, +{"Bus_Get_TotalMiles", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_TotalMiles)}, +{"Bus_Get_kVBase", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_kVBase)}, +{"Bus_Get_x", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_x)}, +{"Bus_Get_y", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_y)}, +{"CNData_Get_DiaCable", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_DiaCable)}, +{"CNData_Get_DiaIns", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_DiaIns)}, +{"CNData_Get_DiaStrand", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_DiaStrand)}, +{"CNData_Get_Diameter", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_Diameter)}, +{"CNData_Get_EmergAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_EmergAmps)}, +{"CNData_Get_EpsR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_EpsR)}, +{"CNData_Get_GMRac", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_GMRac)}, +{"CNData_Get_GmrStrand", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_GmrStrand)}, +{"CNData_Get_InsLayer", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_InsLayer)}, +{"CNData_Get_NormAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_NormAmps)}, +{"CNData_Get_RStrand", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_RStrand)}, +{"CNData_Get_Rac", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_Rac)}, +{"CNData_Get_Radius", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_Radius)}, +{"CNData_Get_Rdc", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Get_Rdc)}, +{"CapControls_Get_CTratio", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_CTratio)}, +{"CapControls_Get_DeadTime", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_DeadTime)}, +{"CapControls_Get_Delay", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_Delay)}, +{"CapControls_Get_DelayOff", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_DelayOff)}, +{"CapControls_Get_OFFSetting", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_OFFSetting)}, +{"CapControls_Get_ONSetting", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_ONSetting)}, +{"CapControls_Get_PTratio", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_PTratio)}, +{"CapControls_Get_Vmax", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_Vmax)}, +{"CapControls_Get_Vmin", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_Vmin)}, +{"Capacitors_Get_kV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Get_kV)}, +{"Capacitors_Get_kvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Get_kvar)}, +{"CktElement_Get_EmergAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_EmergAmps)}, +{"CktElement_Get_NormalAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_NormalAmps)}, +{"CktElement_Get_VariableValue", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_VariableValue)}, +{"Fuses_Get_Delay", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_Delay)}, +{"Fuses_Get_RatedCurrent", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Get_RatedCurrent)}, +{"GICSources_Get_EE", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_EE)}, +{"GICSources_Get_EN", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_EN)}, +{"GICSources_Get_Lat1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_Lat1)}, +{"GICSources_Get_Lat2", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_Lat2)}, +{"GICSources_Get_Lon1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_Lon1)}, +{"GICSources_Get_Lon2", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_Lon2)}, +{"GICSources_Get_Volts", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Get_Volts)}, +{"Generators_Get_PF", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_PF)}, +{"Generators_Get_Vmaxpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_Vmaxpu)}, +{"Generators_Get_Vminpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_Vminpu)}, +{"Generators_Get_kV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_kV)}, +{"Generators_Get_kVArated", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_kVArated)}, +{"Generators_Get_kW", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_kW)}, +{"Generators_Get_kva", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_kva)}, +{"Generators_Get_kvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_kvar)}, +{"ISources_Get_Amps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ISources_Get_Amps)}, +{"ISources_Get_AngleDeg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ISources_Get_AngleDeg)}, +{"ISources_Get_Frequency", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ISources_Get_Frequency)}, +{"LineCodes_Get_C0", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_C0)}, +{"LineCodes_Get_C1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_C1)}, +{"LineCodes_Get_EmergAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_EmergAmps)}, +{"LineCodes_Get_NormAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_NormAmps)}, +{"LineCodes_Get_R0", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_R0)}, +{"LineCodes_Get_R1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_R1)}, +{"LineCodes_Get_X0", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_X0)}, +{"LineCodes_Get_X1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_X1)}, +{"LineGeometries_Get_EmergAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_EmergAmps)}, +{"LineGeometries_Get_NormAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_NormAmps)}, +{"LineGeometries_Get_RhoEarth", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_RhoEarth)}, +{"Lines_Get_C0", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_C0)}, +{"Lines_Get_C1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_C1)}, +{"Lines_Get_EmergAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_EmergAmps)}, +{"Lines_Get_Length", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Length)}, +{"Lines_Get_NormAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_NormAmps)}, +{"Lines_Get_R0", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_R0)}, +{"Lines_Get_R1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_R1)}, +{"Lines_Get_Rg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Rg)}, +{"Lines_Get_Rho", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Rho)}, +{"Lines_Get_SeasonRating", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_SeasonRating)}, +{"Lines_Get_X0", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_X0)}, +{"Lines_Get_X1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_X1)}, +{"Lines_Get_Xg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_Xg)}, +{"LoadShapes_Get_HrInterval", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_HrInterval)}, +{"LoadShapes_Get_MaxP", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_MaxP)}, +{"LoadShapes_Get_MaxQ", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_MaxQ)}, +{"LoadShapes_Get_MinInterval", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_MinInterval)}, +{"LoadShapes_Get_PBase", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_PBase)}, +{"LoadShapes_Get_Qbase", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_Qbase)}, +{"LoadShapes_Get_SInterval", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_SInterval)}, +{"Loads_Get_AllocationFactor", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_AllocationFactor)}, +{"Loads_Get_CVRvars", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_CVRvars)}, +{"Loads_Get_CVRwatts", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_CVRwatts)}, +{"Loads_Get_Cfactor", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Cfactor)}, +{"Loads_Get_PF", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_PF)}, +{"Loads_Get_PctMean", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_PctMean)}, +{"Loads_Get_PctStdDev", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_PctStdDev)}, +{"Loads_Get_RelWeight", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_RelWeight)}, +{"Loads_Get_Rneut", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Rneut)}, +{"Loads_Get_Vmaxpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Vmaxpu)}, +{"Loads_Get_Vminemerg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Vminemerg)}, +{"Loads_Get_Vminnorm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Vminnorm)}, +{"Loads_Get_Vminpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Vminpu)}, +{"Loads_Get_Xneut", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_Xneut)}, +{"Loads_Get_kV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_kV)}, +{"Loads_Get_kW", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_kW)}, +{"Loads_Get_kva", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_kva)}, +{"Loads_Get_kvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_kvar)}, +{"Loads_Get_kwh", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_kwh)}, +{"Loads_Get_kwhdays", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_kwhdays)}, +{"Loads_Get_pctSeriesRL", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_pctSeriesRL)}, +{"Loads_Get_xfkVA", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_xfkVA)}, +{"Meters_Get_AvgRepairTime", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_AvgRepairTime)}, +{"Meters_Get_CustInterrupts", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_CustInterrupts)}, +{"Meters_Get_FaultRateXRepairHrs", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_FaultRateXRepairHrs)}, +{"Meters_Get_SAIDI", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_SAIDI)}, +{"Meters_Get_SAIFI", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_SAIFI)}, +{"Meters_Get_SAIFIKW", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_SAIFIKW)}, +{"Meters_Get_SumBranchFltRates", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_SumBranchFltRates)}, +{"PDElements_Get_AccumulatedL", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_AccumulatedL)}, +{"PDElements_Get_FaultRate", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_FaultRate)}, +{"PDElements_Get_Lambda", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_Lambda)}, +{"PDElements_Get_RepairTime", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_RepairTime)}, +{"PDElements_Get_TotalMiles", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_TotalMiles)}, +{"PDElements_Get_pctPermanent", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_pctPermanent)}, +{"PVSystems_Get_Irradiance", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_Irradiance)}, +{"PVSystems_Get_IrradianceNow", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_IrradianceNow)}, +{"PVSystems_Get_PF", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_PF)}, +{"PVSystems_Get_Pmpp", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_Pmpp)}, +{"PVSystems_Get_kVArated", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_kVArated)}, +{"PVSystems_Get_kW", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_kW)}, +{"PVSystems_Get_kvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Get_kvar)}, +{"Parser_Get_DblValue", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Get_DblValue)}, +{"Reactors_Get_LmH", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_LmH)}, +{"Reactors_Get_R", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_R)}, +{"Reactors_Get_Rp", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_Rp)}, +{"Reactors_Get_X", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_X)}, +{"Reactors_Get_kV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_kV)}, +{"Reactors_Get_kvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_kvar)}, +{"Reclosers_Get_GroundInst", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_GroundInst)}, +{"Reclosers_Get_GroundTrip", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_GroundTrip)}, +{"Reclosers_Get_PhaseInst", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_PhaseInst)}, +{"Reclosers_Get_PhaseTrip", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Get_PhaseTrip)}, +{"ReduceCkt_Get_Zmag", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_Get_Zmag)}, +{"RegControls_Get_CTPrimary", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_CTPrimary)}, +{"RegControls_Get_Delay", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_Delay)}, +{"RegControls_Get_ForwardBand", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_ForwardBand)}, +{"RegControls_Get_ForwardR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_ForwardR)}, +{"RegControls_Get_ForwardVreg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_ForwardVreg)}, +{"RegControls_Get_ForwardX", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_ForwardX)}, +{"RegControls_Get_PTratio", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_PTratio)}, +{"RegControls_Get_ReverseBand", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_ReverseBand)}, +{"RegControls_Get_ReverseR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_ReverseR)}, +{"RegControls_Get_ReverseVreg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_ReverseVreg)}, +{"RegControls_Get_ReverseX", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_ReverseX)}, +{"RegControls_Get_TapDelay", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_TapDelay)}, +{"RegControls_Get_VoltageLimit", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_VoltageLimit)}, +{"Sensors_Get_PctError", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_PctError)}, +{"Sensors_Get_Weight", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_Weight)}, +{"Sensors_Get_kVbase", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_kVbase)}, +{"Settings_Get_EmergVmaxpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_EmergVmaxpu)}, +{"Settings_Get_EmergVminpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_EmergVminpu)}, +{"Settings_Get_LossWeight", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_LossWeight)}, +{"Settings_Get_NormVmaxpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_NormVmaxpu)}, +{"Settings_Get_NormVminpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_NormVminpu)}, +{"Settings_Get_PriceSignal", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_PriceSignal)}, +{"Settings_Get_UEweight", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_UEweight)}, +{"Solution_Get_Capkvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Capkvar)}, +{"Solution_Get_Frequency", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Frequency)}, +{"Solution_Get_GenMult", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_GenMult)}, +{"Solution_Get_GenPF", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_GenPF)}, +{"Solution_Get_GenkW", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_GenkW)}, +{"Solution_Get_IntervalHrs", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_IntervalHrs)}, +{"Solution_Get_LoadMult", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_LoadMult)}, +{"Solution_Get_Process_Time", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Process_Time)}, +{"Solution_Get_Seconds", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Seconds)}, +{"Solution_Get_StepSize", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_StepSize)}, +{"Solution_Get_Time_of_Step", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Time_of_Step)}, +{"Solution_Get_Tolerance", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Tolerance)}, +{"Solution_Get_Total_Time", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Total_Time)}, +{"Solution_Get_dblHour", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_dblHour)}, +{"Solution_Get_pctGrowth", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_pctGrowth)}, +{"Storages_Get_AmpLimit", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_AmpLimit)}, +{"Storages_Get_AmpLimitGain", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_AmpLimitGain)}, +{"Storages_Get_ChargeTrigger", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_ChargeTrigger)}, +{"Storages_Get_DischargeTrigger", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_DischargeTrigger)}, +{"Storages_Get_EffCharge", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_EffCharge)}, +{"Storages_Get_EffDischarge", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_EffDischarge)}, +{"Storages_Get_Kp", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_Kp)}, +{"Storages_Get_PF", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_PF)}, +{"Storages_Get_PITol", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_PITol)}, +{"Storages_Get_SafeVoltage", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_SafeVoltage)}, +{"Storages_Get_TimeChargeTrig", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_TimeChargeTrig)}, +{"Storages_Get_kV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_kV)}, +{"Storages_Get_kVA", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_kVA)}, +{"Storages_Get_kVDC", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_kVDC)}, +{"Storages_Get_kW", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_kW)}, +{"Storages_Get_kWRated", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_kWRated)}, +{"Storages_Get_kWhRated", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_kWhRated)}, +{"Storages_Get_kvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_kvar)}, +{"Storages_Get_puSOC", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_puSOC)}, +{"SwtControls_Get_Delay", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Get_Delay)}, +{"TSData_Get_DiaCable", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_DiaCable)}, +{"TSData_Get_DiaIns", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_DiaIns)}, +{"TSData_Get_DiaShield", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_DiaShield)}, +{"TSData_Get_Diameter", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_Diameter)}, +{"TSData_Get_EmergAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_EmergAmps)}, +{"TSData_Get_EpsR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_EpsR)}, +{"TSData_Get_GMRac", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_GMRac)}, +{"TSData_Get_InsLayer", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_InsLayer)}, +{"TSData_Get_NormAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_NormAmps)}, +{"TSData_Get_Rac", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_Rac)}, +{"TSData_Get_Radius", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_Radius)}, +{"TSData_Get_Rdc", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_Rdc)}, +{"TSData_Get_TapeLap", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_TapeLap)}, +{"TSData_Get_TapeLayer", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Get_TapeLayer)}, +{"Transformers_Get_MaxTap", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_MaxTap)}, +{"Transformers_Get_MinTap", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_MinTap)}, +{"Transformers_Get_R", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_R)}, +{"Transformers_Get_RdcOhms", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_RdcOhms)}, +{"Transformers_Get_Rneut", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_Rneut)}, +{"Transformers_Get_Tap", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_Tap)}, +{"Transformers_Get_Xhl", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_Xhl)}, +{"Transformers_Get_Xht", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_Xht)}, +{"Transformers_Get_Xlt", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_Xlt)}, +{"Transformers_Get_Xneut", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_Xneut)}, +{"Transformers_Get_kV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_kV)}, +{"Transformers_Get_kVA", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_kVA)}, +{"Vsources_Get_AngleDeg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Get_AngleDeg)}, +{"Vsources_Get_BasekV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Get_BasekV)}, +{"Vsources_Get_Frequency", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Get_Frequency)}, +{"Vsources_Get_pu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Get_pu)}, +{"WindGens_Get_Ag", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_Ag)}, +{"WindGens_Get_Cp", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_Cp)}, +{"WindGens_Get_Lamda", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_Lamda)}, +{"WindGens_Get_PF", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_PF)}, +{"WindGens_Get_PSS", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_PSS)}, +{"WindGens_Get_QSS", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_QSS)}, +{"WindGens_Get_RThev", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_RThev)}, +{"WindGens_Get_Rad", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_Rad)}, +{"WindGens_Get_VCutIn", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_VCutIn)}, +{"WindGens_Get_VCutOut", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_VCutOut)}, +{"WindGens_Get_Vss", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_Vss)}, +{"WindGens_Get_WindSpeed", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_WindSpeed)}, +{"WindGens_Get_XThev", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_XThev)}, +{"WindGens_Get_kV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_kV)}, +{"WindGens_Get_kVA", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_kVA)}, +{"WindGens_Get_kW", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_kW)}, +{"WindGens_Get_kvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_kvar)}, +{"WindGens_Get_pd", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_pd)}, +{"WireData_Get_CapRadius", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_CapRadius)}, +{"WireData_Get_Diameter", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_Diameter)}, +{"WireData_Get_EmergAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_EmergAmps)}, +{"WireData_Get_GMRac", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_GMRac)}, +{"WireData_Get_NormAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_NormAmps)}, +{"WireData_Get_Rac", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_Rac)}, +{"WireData_Get_Radius", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_Radius)}, +{"WireData_Get_Rdc", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Get_Rdc)}, +{"XYCurves_Get_Xscale", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_Xscale)}, +{"XYCurves_Get_Xshift", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_Xshift)}, +{"XYCurves_Get_Yscale", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_Yscale)}, +{"XYCurves_Get_Yshift", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_Yshift)}, +{"XYCurves_Get_x", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_x)}, +{"XYCurves_Get_y", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Get_y)}, +{"Bus_Set_Latitude", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Set_Latitude)}, +{"Bus_Set_Longitude", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Set_Longitude)}, +{"Bus_Set_x", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Set_x)}, +{"Bus_Set_y", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Set_y)}, +{"CNData_Set_DiaCable", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_DiaCable)}, +{"CNData_Set_DiaIns", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_DiaIns)}, +{"CNData_Set_DiaStrand", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_DiaStrand)}, +{"CNData_Set_Diameter", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_Diameter)}, +{"CNData_Set_EmergAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_EmergAmps)}, +{"CNData_Set_EpsR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_EpsR)}, +{"CNData_Set_GMRac", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_GMRac)}, +{"CNData_Set_GmrStrand", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_GmrStrand)}, +{"CNData_Set_InsLayer", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_InsLayer)}, +{"CNData_Set_NormAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_NormAmps)}, +{"CNData_Set_RStrand", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_RStrand)}, +{"CNData_Set_Rac", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_Rac)}, +{"CNData_Set_Radius", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_Radius)}, +{"CNData_Set_Rdc", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CNData_Set_Rdc)}, +{"CapControls_Set_CTratio", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_CTratio)}, +{"CapControls_Set_DeadTime", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_DeadTime)}, +{"CapControls_Set_Delay", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_Delay)}, +{"CapControls_Set_DelayOff", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_DelayOff)}, +{"CapControls_Set_OFFSetting", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_OFFSetting)}, +{"CapControls_Set_ONSetting", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_ONSetting)}, +{"CapControls_Set_PTratio", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_PTratio)}, +{"CapControls_Set_Vmax", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_Vmax)}, +{"CapControls_Set_Vmin", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_Vmin)}, +{"Capacitors_Set_kV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Set_kV)}, +{"Capacitors_Set_kvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Set_kvar)}, +{"CktElement_Set_EmergAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Set_EmergAmps)}, +{"CktElement_Set_NormalAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Set_NormalAmps)}, +{"CktElement_Set_VariableValue", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Set_VariableValue)}, +{"Fuses_Set_Delay", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Set_Delay)}, +{"Fuses_Set_RatedCurrent", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Set_RatedCurrent)}, +{"GICSources_Set_EE", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Set_EE)}, +{"GICSources_Set_EN", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Set_EN)}, +{"GICSources_Set_Lat1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Set_Lat1)}, +{"GICSources_Set_Lat2", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Set_Lat2)}, +{"GICSources_Set_Lon1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Set_Lon1)}, +{"GICSources_Set_Lon2", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Set_Lon2)}, +{"GICSources_Set_Volts", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_GICSources_Set_Volts)}, +{"Generators_Set_PF", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_PF)}, +{"Generators_Set_Vmaxpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_Vmaxpu)}, +{"Generators_Set_Vminpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_Vminpu)}, +{"Generators_Set_kV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_kV)}, +{"Generators_Set_kVArated", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_kVArated)}, +{"Generators_Set_kW", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_kW)}, +{"Generators_Set_kva", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_kva)}, +{"Generators_Set_kvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_kvar)}, +{"ISources_Set_Amps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ISources_Set_Amps)}, +{"ISources_Set_AngleDeg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ISources_Set_AngleDeg)}, +{"ISources_Set_Frequency", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ISources_Set_Frequency)}, +{"LineCodes_Set_C0", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Set_C0)}, +{"LineCodes_Set_C1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Set_C1)}, +{"LineCodes_Set_EmergAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Set_EmergAmps)}, +{"LineCodes_Set_NormAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Set_NormAmps)}, +{"LineCodes_Set_R0", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Set_R0)}, +{"LineCodes_Set_R1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Set_R1)}, +{"LineCodes_Set_X0", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Set_X0)}, +{"LineCodes_Set_X1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Set_X1)}, +{"LineGeometries_Set_EmergAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Set_EmergAmps)}, +{"LineGeometries_Set_NormAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Set_NormAmps)}, +{"LineGeometries_Set_RhoEarth", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Set_RhoEarth)}, +{"Lines_Set_C0", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_C0)}, +{"Lines_Set_C1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_C1)}, +{"Lines_Set_EmergAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_EmergAmps)}, +{"Lines_Set_Length", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_Length)}, +{"Lines_Set_NormAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_NormAmps)}, +{"Lines_Set_R0", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_R0)}, +{"Lines_Set_R1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_R1)}, +{"Lines_Set_Rg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_Rg)}, +{"Lines_Set_Rho", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_Rho)}, +{"Lines_Set_X0", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_X0)}, +{"Lines_Set_X1", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_X1)}, +{"Lines_Set_Xg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_Xg)}, +{"LoadShapes_Set_HrInterval", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Set_HrInterval)}, +{"LoadShapes_Set_MaxP", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Set_MaxP)}, +{"LoadShapes_Set_MaxQ", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Set_MaxQ)}, +{"LoadShapes_Set_MinInterval", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Set_MinInterval)}, +{"LoadShapes_Set_PBase", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Set_PBase)}, +{"LoadShapes_Set_Qbase", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Set_Qbase)}, +{"LoadShapes_Set_SInterval", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Set_SInterval)}, +{"Loads_Set_AllocationFactor", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_AllocationFactor)}, +{"Loads_Set_CVRvars", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_CVRvars)}, +{"Loads_Set_CVRwatts", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_CVRwatts)}, +{"Loads_Set_Cfactor", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Cfactor)}, +{"Loads_Set_PF", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_PF)}, +{"Loads_Set_PctMean", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_PctMean)}, +{"Loads_Set_PctStdDev", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_PctStdDev)}, +{"Loads_Set_RelWeight", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_RelWeight)}, +{"Loads_Set_Rneut", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Rneut)}, +{"Loads_Set_Vmaxpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Vmaxpu)}, +{"Loads_Set_Vminemerg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Vminemerg)}, +{"Loads_Set_Vminnorm", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Vminnorm)}, +{"Loads_Set_Vminpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Vminpu)}, +{"Loads_Set_Xneut", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_Xneut)}, +{"Loads_Set_kV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_kV)}, +{"Loads_Set_kW", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_kW)}, +{"Loads_Set_kva", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_kva)}, +{"Loads_Set_kvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_kvar)}, +{"Loads_Set_kwh", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_kwh)}, +{"Loads_Set_kwhdays", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_kwhdays)}, +{"Loads_Set_pctSeriesRL", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_pctSeriesRL)}, +{"Loads_Set_xfkVA", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_xfkVA)}, +{"PDElements_Set_FaultRate", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Set_FaultRate)}, +{"PDElements_Set_RepairTime", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Set_RepairTime)}, +{"PDElements_Set_pctPermanent", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Set_pctPermanent)}, +{"PVSystems_Set_Irradiance", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Set_Irradiance)}, +{"PVSystems_Set_PF", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Set_PF)}, +{"PVSystems_Set_Pmpp", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Set_Pmpp)}, +{"PVSystems_Set_kVArated", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Set_kVArated)}, +{"PVSystems_Set_kvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PVSystems_Set_kvar)}, +{"Reactors_Set_LmH", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_LmH)}, +{"Reactors_Set_R", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_R)}, +{"Reactors_Set_Rp", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_Rp)}, +{"Reactors_Set_X", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_X)}, +{"Reactors_Set_kV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_kV)}, +{"Reactors_Set_kvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_kvar)}, +{"Reclosers_Set_GroundInst", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Set_GroundInst)}, +{"Reclosers_Set_GroundTrip", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Set_GroundTrip)}, +{"Reclosers_Set_PhaseInst", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Set_PhaseInst)}, +{"Reclosers_Set_PhaseTrip", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Set_PhaseTrip)}, +{"ReduceCkt_Set_Zmag", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_Set_Zmag)}, +{"RegControls_Set_CTPrimary", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_CTPrimary)}, +{"RegControls_Set_Delay", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_Delay)}, +{"RegControls_Set_ForwardBand", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_ForwardBand)}, +{"RegControls_Set_ForwardR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_ForwardR)}, +{"RegControls_Set_ForwardVreg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_ForwardVreg)}, +{"RegControls_Set_ForwardX", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_ForwardX)}, +{"RegControls_Set_PTratio", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_PTratio)}, +{"RegControls_Set_ReverseBand", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_ReverseBand)}, +{"RegControls_Set_ReverseR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_ReverseR)}, +{"RegControls_Set_ReverseVreg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_ReverseVreg)}, +{"RegControls_Set_ReverseX", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_ReverseX)}, +{"RegControls_Set_TapDelay", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_TapDelay)}, +{"RegControls_Set_VoltageLimit", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_VoltageLimit)}, +{"Sensors_Set_PctError", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Set_PctError)}, +{"Sensors_Set_Weight", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Set_Weight)}, +{"Sensors_Set_kVbase", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Set_kVbase)}, +{"Settings_Set_AllocationFactors", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_AllocationFactors)}, +{"Settings_Set_EmergVmaxpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_EmergVmaxpu)}, +{"Settings_Set_EmergVminpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_EmergVminpu)}, +{"Settings_Set_LossWeight", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_LossWeight)}, +{"Settings_Set_NormVmaxpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_NormVmaxpu)}, +{"Settings_Set_NormVminpu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_NormVminpu)}, +{"Settings_Set_PriceSignal", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_PriceSignal)}, +{"Settings_Set_UEweight", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_UEweight)}, +{"Solution_Set_Capkvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_Capkvar)}, +{"Solution_Set_Frequency", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_Frequency)}, +{"Solution_Set_GenMult", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_GenMult)}, +{"Solution_Set_GenPF", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_GenPF)}, +{"Solution_Set_GenkW", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_GenkW)}, +{"Solution_Set_IntervalHrs", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_IntervalHrs)}, +{"Solution_Set_LoadMult", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_LoadMult)}, +{"Solution_Set_Seconds", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_Seconds)}, +{"Solution_Set_StepSize", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_StepSize)}, +{"Solution_Set_StepsizeHr", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_StepsizeHr)}, +{"Solution_Set_StepsizeMin", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_StepsizeMin)}, +{"Solution_Set_Tolerance", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_Tolerance)}, +{"Solution_Set_Total_Time", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_Total_Time)}, +{"Solution_Set_dblHour", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_dblHour)}, +{"Solution_Set_pctGrowth", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_pctGrowth)}, +{"Storages_Set_AmpLimit", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_AmpLimit)}, +{"Storages_Set_AmpLimitGain", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_AmpLimitGain)}, +{"Storages_Set_ChargeTrigger", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_ChargeTrigger)}, +{"Storages_Set_DischargeTrigger", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_DischargeTrigger)}, +{"Storages_Set_EffCharge", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_EffCharge)}, +{"Storages_Set_EffDischarge", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_EffDischarge)}, +{"Storages_Set_Kp", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_Kp)}, +{"Storages_Set_PF", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_PF)}, +{"Storages_Set_PITol", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_PITol)}, +{"Storages_Set_SafeVoltage", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_SafeVoltage)}, +{"Storages_Set_TimeChargeTrig", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_TimeChargeTrig)}, +{"Storages_Set_kV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_kV)}, +{"Storages_Set_kVA", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_kVA)}, +{"Storages_Set_kVDC", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_kVDC)}, +{"Storages_Set_kW", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_kW)}, +{"Storages_Set_kWRated", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_kWRated)}, +{"Storages_Set_kWhRated", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_kWhRated)}, +{"Storages_Set_kvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_kvar)}, +{"Storages_Set_puSOC", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_puSOC)}, +{"SwtControls_Set_Delay", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Set_Delay)}, +{"TSData_Set_DiaCable", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_DiaCable)}, +{"TSData_Set_DiaIns", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_DiaIns)}, +{"TSData_Set_DiaShield", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_DiaShield)}, +{"TSData_Set_Diameter", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_Diameter)}, +{"TSData_Set_EmergAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_EmergAmps)}, +{"TSData_Set_EpsR", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_EpsR)}, +{"TSData_Set_GMRac", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_GMRac)}, +{"TSData_Set_InsLayer", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_InsLayer)}, +{"TSData_Set_NormAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_NormAmps)}, +{"TSData_Set_Rac", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_Rac)}, +{"TSData_Set_Radius", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_Radius)}, +{"TSData_Set_Rdc", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_Rdc)}, +{"TSData_Set_TapeLap", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_TapeLap)}, +{"TSData_Set_TapeLayer", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_TSData_Set_TapeLayer)}, +{"Transformers_Set_MaxTap", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_MaxTap)}, +{"Transformers_Set_MinTap", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_MinTap)}, +{"Transformers_Set_R", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_R)}, +{"Transformers_Set_RdcOhms", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_RdcOhms)}, +{"Transformers_Set_Rneut", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_Rneut)}, +{"Transformers_Set_Tap", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_Tap)}, +{"Transformers_Set_Xhl", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_Xhl)}, +{"Transformers_Set_Xht", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_Xht)}, +{"Transformers_Set_Xlt", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_Xlt)}, +{"Transformers_Set_Xneut", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_Xneut)}, +{"Transformers_Set_kV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_kV)}, +{"Transformers_Set_kVA", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_kVA)}, +{"Vsources_Set_AngleDeg", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Set_AngleDeg)}, +{"Vsources_Set_BasekV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Set_BasekV)}, +{"Vsources_Set_Frequency", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Set_Frequency)}, +{"Vsources_Set_pu", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Vsources_Set_pu)}, +{"WindGens_Set_Ag", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_Ag)}, +{"WindGens_Set_Cp", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_Cp)}, +{"WindGens_Set_Lamda", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_Lamda)}, +{"WindGens_Set_PF", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_PF)}, +{"WindGens_Set_PSS", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_PSS)}, +{"WindGens_Set_QSS", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_QSS)}, +{"WindGens_Set_RThev", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_RThev)}, +{"WindGens_Set_Rad", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_Rad)}, +{"WindGens_Set_VCutIn", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_VCutIn)}, +{"WindGens_Set_VCutOut", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_VCutOut)}, +{"WindGens_Set_Vss", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_Vss)}, +{"WindGens_Set_WindSpeed", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_WindSpeed)}, +{"WindGens_Set_XThev", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_XThev)}, +{"WindGens_Set_kV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_kV)}, +{"WindGens_Set_kVA", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_kVA)}, +{"WindGens_Set_kW", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_kW)}, +{"WindGens_Set_kvar", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_kvar)}, +{"WindGens_Set_pd", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_pd)}, +{"WireData_Set_CapRadius", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Set_CapRadius)}, +{"WireData_Set_Diameter", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Set_Diameter)}, +{"WireData_Set_EmergAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Set_EmergAmps)}, +{"WireData_Set_GMRac", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Set_GMRac)}, +{"WireData_Set_NormAmps", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Set_NormAmps)}, +{"WireData_Set_Rac", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Set_Rac)}, +{"WireData_Set_Radius", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Set_Radius)}, +{"WireData_Set_Rdc", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WireData_Set_Rdc)}, +{"XYCurves_Set_Xscale", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Set_Xscale)}, +{"XYCurves_Set_Xshift", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Set_Xshift)}, +{"XYCurves_Set_Yscale", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Set_Yscale)}, +{"XYCurves_Set_Yshift", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Set_Yshift)}, +{"XYCurves_Set_x", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Set_x)}, +{"XYCurves_Set_y", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_XYCurves_Set_y)}, +{"YMatrix_IncrementTime", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_IncrementTime)}, +{"Bus_Get_Coorddefined", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_Get_Coorddefined)}, +{"Bus_ZscRefresh", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Bus_ZscRefresh)}, +{"CapControls_Get_UseVoltOverride", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Get_UseVoltOverride)}, +{"Capacitors_AddStep", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_AddStep)}, +{"Capacitors_Get_IsDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Get_IsDelta)}, +{"Capacitors_SubtractStep", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_SubtractStep)}, +{"CktElement_Get_Enabled", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_Enabled)}, +{"CktElement_Get_HasOCPDevice", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_HasOCPDevice)}, +{"CktElement_Get_HasSwitchControl", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_HasSwitchControl)}, +{"CktElement_Get_HasVoltControl", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_HasVoltControl)}, +{"CktElement_Get_IsIsolated", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Get_IsIsolated)}, +{"DSS_Get_AllowChangeDir", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_AllowChangeDir)}, +{"DSS_Get_AllowDOScmd", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_AllowDOScmd)}, +{"DSS_Get_AllowEditor", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_AllowEditor)}, +{"DSS_Get_AllowForms", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_AllowForms)}, +{"DSS_Get_COMErrorResults", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_COMErrorResults)}, +{"DSS_Get_EnableArrayDimensions", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_EnableArrayDimensions)}, +{"DSS_Get_LegacyModels", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Get_LegacyModels)}, +{"Error_Get_EarlyAbort", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Error_Get_EarlyAbort)}, +{"Error_Get_ExtendedErrors", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Error_Get_ExtendedErrors)}, +{"Fuses_IsBlown", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_IsBlown)}, +{"Generators_Get_ForcedON", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_ForcedON)}, +{"Generators_Get_IsDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Get_IsDelta)}, +{"LineCodes_Get_IsZ1Z0", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineCodes_Get_IsZ1Z0)}, +{"LineGeometries_Get_Reduce", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Get_Reduce)}, +{"Lines_Get_IsSwitch", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Get_IsSwitch)}, +{"LoadShapes_Get_UseActual", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Get_UseActual)}, +{"Loads_Get_IsDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Get_IsDelta)}, +{"Meters_Get_DIFilesAreOpen", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Get_DIFilesAreOpen)}, +{"PDElements_Get_IsShunt", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_PDElements_Get_IsShunt)}, +{"Parser_Get_AutoIncrement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Get_AutoIncrement)}, +{"Reactors_Get_IsDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_IsDelta)}, +{"Reactors_Get_Parallel", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Get_Parallel)}, +{"ReduceCkt_Get_KeepLoad", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_Get_KeepLoad)}, +{"RegControls_Get_IsInverseTime", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_IsInverseTime)}, +{"RegControls_Get_IsReversible", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Get_IsReversible)}, +{"Sensors_Get_IsDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_IsDelta)}, +{"Sensors_Get_ReverseDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Get_ReverseDelta)}, +{"Settings_Get_AllowDuplicates", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_AllowDuplicates)}, +{"Settings_Get_ControlTrace", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_ControlTrace)}, +{"Settings_Get_LoadsTerminalCheck", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_LoadsTerminalCheck)}, +{"Settings_Get_Trapezoidal", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_Trapezoidal)}, +{"Settings_Get_ZoneLock", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_ZoneLock)}, +{"Solution_Get_ControlActionsDone", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_ControlActionsDone)}, +{"Solution_Get_Converged", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_Converged)}, +{"Solution_Get_SystemYChanged", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Get_SystemYChanged)}, +{"Storages_Get_LimitCurrent", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Get_LimitCurrent)}, +{"SwtControls_Get_IsLocked", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Get_IsLocked)}, +{"Transformers_Get_IsDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Get_IsDelta)}, +{"WindGens_Get_IsDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Get_IsDelta)}, +{"YMatrix_CheckConvergence", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_CheckConvergence)}, +{"YMatrix_Get_LoadsNeedUpdating", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Get_LoadsNeedUpdating)}, +{"YMatrix_Get_SolutionAbort", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Get_SolutionAbort)}, +{"YMatrix_Get_SolutionInitialized", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Get_SolutionInitialized)}, +{"YMatrix_Get_SystemYChanged", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Get_SystemYChanged)}, +{"YMatrix_Get_UseAuxCurrents", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Get_UseAuxCurrents)}, +{"ZIP_Contains", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ZIP_Contains)}, +{"DSS_Start", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Start)}, +{"Settings_Get_Flag", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Get_Flag)}, +{"CktElement_IsOpen", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_IsOpen)}, +{"CapControls_Set_UseVoltOverride", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Set_UseVoltOverride)}, +{"Capacitors_Set_IsDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Set_IsDelta)}, +{"CktElement_Set_Enabled", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CktElement_Set_Enabled)}, +{"DSS_Set_AllowChangeDir", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Set_AllowChangeDir)}, +{"DSS_Set_AllowDOScmd", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Set_AllowDOScmd)}, +{"DSS_Set_AllowEditor", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Set_AllowEditor)}, +{"DSS_Set_AllowForms", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Set_AllowForms)}, +{"DSS_Set_COMErrorResults", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Set_COMErrorResults)}, +{"DSS_Set_EnableArrayDimensions", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Set_EnableArrayDimensions)}, +{"DSS_Set_LegacyModels", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Set_LegacyModels)}, +{"Error_Set_EarlyAbort", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Error_Set_EarlyAbort)}, +{"Error_Set_ExtendedErrors", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Error_Set_ExtendedErrors)}, +{"Generators_Set_ForcedON", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_ForcedON)}, +{"Generators_Set_IsDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Generators_Set_IsDelta)}, +{"LineGeometries_Set_Reduce", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LineGeometries_Set_Reduce)}, +{"Lines_Set_IsSwitch", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Lines_Set_IsSwitch)}, +{"LoadShapes_Set_UseActual", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Set_UseActual)}, +{"Loads_Set_IsDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Loads_Set_IsDelta)}, +{"Meters_DoReliabilityCalc", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_DoReliabilityCalc)}, +{"Parser_Set_AutoIncrement", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_Set_AutoIncrement)}, +{"Reactors_Set_IsDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_IsDelta)}, +{"Reactors_Set_Parallel", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reactors_Set_Parallel)}, +{"ReduceCkt_Set_KeepLoad", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_Set_KeepLoad)}, +{"RegControls_Set_IsInverseTime", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_IsInverseTime)}, +{"RegControls_Set_IsReversible", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Set_IsReversible)}, +{"Sensors_Set_IsDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Set_IsDelta)}, +{"Sensors_Set_ReverseDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Set_ReverseDelta)}, +{"Settings_Set_AllowDuplicates", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_AllowDuplicates)}, +{"Settings_Set_ControlTrace", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_ControlTrace)}, +{"Settings_Set_LoadsTerminalCheck", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_LoadsTerminalCheck)}, +{"Settings_Set_Trapezoidal", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_Trapezoidal)}, +{"Settings_Set_ZoneLock", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Settings_Set_ZoneLock)}, +{"Solution_Set_ControlActionsDone", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_ControlActionsDone)}, +{"Solution_Set_Converged", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Set_Converged)}, +{"Storages_Set_LimitCurrent", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Storages_Set_LimitCurrent)}, +{"SwtControls_Set_IsLocked", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Set_IsLocked)}, +{"Transformers_Set_IsDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Transformers_Set_IsDelta)}, +{"WindGens_Set_IsDelta", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_WindGens_Set_IsDelta)}, +{"YMatrix_Set_LoadsNeedUpdating", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Set_LoadsNeedUpdating)}, +{"YMatrix_Set_SolutionAbort", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Set_SolutionAbort)}, +{"YMatrix_Set_SolutionInitialized", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Set_SolutionInitialized)}, +{"YMatrix_Set_SystemYChanged", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Set_SystemYChanged)}, +{"YMatrix_Set_UseAuxCurrents", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_Set_UseAuxCurrents)}, +{"CapControls_Reset", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CapControls_Reset)}, +{"Capacitors_Close", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Close)}, +{"Capacitors_Open", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Capacitors_Open)}, +{"Circuit_EndOfTimeStepUpdate", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_EndOfTimeStepUpdate)}, +{"Circuit_Sample", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_Sample)}, +{"Circuit_SaveSample", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_SaveSample)}, +{"Circuit_UpdateStorage", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Circuit_UpdateStorage)}, +{"CtrlQueue_ClearActions", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CtrlQueue_ClearActions)}, +{"CtrlQueue_ClearQueue", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CtrlQueue_ClearQueue)}, +{"CtrlQueue_DoAllQueue", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CtrlQueue_DoAllQueue)}, +{"CtrlQueue_Show", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_CtrlQueue_Show)}, +{"DSSProgress_Close", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSSProgress_Close)}, +{"DSSProgress_Show", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSSProgress_Show)}, +{"DSS_ClearAll", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_ClearAll)}, +{"DSS_DisposeGRData", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_DisposeGRData)}, +{"DSS_Reset", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_Reset)}, +{"DSS_ResetStringBuffer", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_DSS_ResetStringBuffer)}, +{"ctx_Dispose", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ctx_Dispose)}, +{"Fuses_Close", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Close)}, +{"Fuses_Open", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Open)}, +{"Fuses_Reset", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Fuses_Reset)}, +{"LoadShapes_Normalize", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_Normalize)}, +{"LoadShapes_UseFloat32", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_UseFloat32)}, +{"LoadShapes_UseFloat64", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_LoadShapes_UseFloat64)}, +{"Meters_CloseAllDIFiles", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_CloseAllDIFiles)}, +{"Meters_OpenAllDIFiles", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_OpenAllDIFiles)}, +{"Meters_Reset", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Reset)}, +{"Meters_ResetAll", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_ResetAll)}, +{"Meters_Sample", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Sample)}, +{"Meters_SampleAll", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_SampleAll)}, +{"Meters_Save", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_Save)}, +{"Meters_SaveAll", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Meters_SaveAll)}, +{"Monitors_Process", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Process)}, +{"Monitors_ProcessAll", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_ProcessAll)}, +{"Monitors_Reset", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Reset)}, +{"Monitors_ResetAll", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_ResetAll)}, +{"Monitors_Sample", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Sample)}, +{"Monitors_SampleAll", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_SampleAll)}, +{"Monitors_Save", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Save)}, +{"Monitors_SaveAll", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_SaveAll)}, +{"Monitors_Show", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Monitors_Show)}, +{"Parallel_CreateActor", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_CreateActor)}, +{"Parallel_Wait", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parallel_Wait)}, +{"Parser_ResetDelimiters", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Parser_ResetDelimiters)}, +{"Reclosers_Close", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Close)}, +{"Reclosers_Open", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Open)}, +{"Reclosers_Reset", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Reclosers_Reset)}, +{"ReduceCkt_Do1phLaterals", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_Do1phLaterals)}, +{"ReduceCkt_DoBranchRemove", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_DoBranchRemove)}, +{"ReduceCkt_DoDangling", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_DoDangling)}, +{"ReduceCkt_DoDefault", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_DoDefault)}, +{"ReduceCkt_DoLoopBreak", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_DoLoopBreak)}, +{"ReduceCkt_DoParallelLines", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_DoParallelLines)}, +{"ReduceCkt_DoShortLines", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_DoShortLines)}, +{"ReduceCkt_DoSwitches", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ReduceCkt_DoSwitches)}, +{"RegControls_Reset", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_RegControls_Reset)}, +{"Relays_Close", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Close)}, +{"Relays_Open", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Open)}, +{"Relays_Reset", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Relays_Reset)}, +{"Sensors_Reset", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_Reset)}, +{"Sensors_ResetAll", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Sensors_ResetAll)}, +{"Solution_CheckControls", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_CheckControls)}, +{"Solution_CheckFaultStatus", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_CheckFaultStatus)}, +{"Solution_Cleanup", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Cleanup)}, +{"Solution_DoControlActions", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_DoControlActions)}, +{"Solution_FinishTimeStep", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_FinishTimeStep)}, +{"Solution_InitSnap", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_InitSnap)}, +{"Solution_SampleControlDevices", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_SampleControlDevices)}, +{"Solution_Sample_DoControlActions", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Sample_DoControlActions)}, +{"Solution_Solve", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_Solve)}, +{"Solution_SolveAll", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_SolveAll)}, +{"Solution_SolveDirect", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_SolveDirect)}, +{"Solution_SolveNoControl", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_SolveNoControl)}, +{"Solution_SolvePflow", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_SolvePflow)}, +{"Solution_SolvePlusControl", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_SolvePlusControl)}, +{"Solution_SolveSnap", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_Solution_SolveSnap)}, +{"SwtControls_Reset", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_SwtControls_Reset)}, +{"YMatrix_GetPCInjCurr", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_GetPCInjCurr)}, +{"YMatrix_GetSourceInjCurrents", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_GetSourceInjCurrents)}, +{"YMatrix_IntegratePCStates", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_IntegratePCStates)}, +{"YMatrix_SetGeneratordQdV", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_SetGeneratordQdV)}, +{"YMatrix_ZeroInjCurr", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_YMatrix_ZeroInjCurr)}, +{"ZIP_Close", Py_T_OBJECT_EX, offsetof(AltDSS_PyContextObject, f_ZIP_Close)}, +{NULL} +}; diff --git a/src/_fastdss_struct_members.inc.c b/src/_fastdss_struct_members.inc.c new file mode 100644 index 0000000..a46c522 --- /dev/null +++ b/src/_fastdss_struct_members.inc.c @@ -0,0 +1,1583 @@ +// SPDX-FileCopyrightText: (C) 2024-2025 Paulo Meira & contributors to DSS-Extensions +// SPDX-License-Identifier: LGPL-3.0-only + +PyObject *f_ActiveClass_Get_ActiveClassName; +PyObject *f_ActiveClass_Get_ActiveClassParent; +PyObject *f_ActiveClass_Get_Name; +PyObject *f_Bus_Get_Name; +PyObject *f_CNData_Get_Name; +PyObject *f_CapControls_Get_Capacitor; +PyObject *f_CapControls_Get_MonitoredObj; +PyObject *f_CapControls_Get_Name; +PyObject *f_Capacitors_Get_Name; +PyObject *f_Circuit_Get_Name; +PyObject *f_CktElement_Get_DisplayName; +PyObject *f_CktElement_Get_EnergyMeter; +PyObject *f_CktElement_Get_GUID; +PyObject *f_CktElement_Get_Name; +PyObject *f_CktElement_Get_VariableName; +PyObject *f_DSSElement_Get_Name; +PyObject *f_DSSProperty_Get_Description; +PyObject *f_DSSProperty_Get_Name; +PyObject *f_DSSProperty_Get_Val; +PyObject *f_DSS_Get_DataPath; +PyObject *f_DSS_Get_DefaultEditor; +PyObject *f_DSS_Get_Version; +PyObject *f_Error_Get_Description; +PyObject *f_Fuses_Get_MonitoredObj; +PyObject *f_Fuses_Get_Name; +PyObject *f_Fuses_Get_SwitchedObj; +PyObject *f_Fuses_Get_TCCcurve; +PyObject *f_GICSources_Get_Bus1; +PyObject *f_GICSources_Get_Bus2; +PyObject *f_GICSources_Get_Name; +PyObject *f_Generators_Get_Bus1; +PyObject *f_Generators_Get_Name; +PyObject *f_Generators_Get_Yearly; +PyObject *f_Generators_Get_daily; +PyObject *f_Generators_Get_duty; +PyObject *f_ISources_Get_Name; +PyObject *f_LineCodes_Get_Name; +PyObject *f_LineGeometries_Get_Name; +PyObject *f_LineSpacings_Get_Name; +PyObject *f_Lines_Get_Bus1; +PyObject *f_Lines_Get_Bus2; +PyObject *f_Lines_Get_Geometry; +PyObject *f_Lines_Get_LineCode; +PyObject *f_Lines_Get_Name; +PyObject *f_Lines_Get_Spacing; +PyObject *f_LoadShapes_Get_Name; +PyObject *f_Loads_Get_CVRcurve; +PyObject *f_Loads_Get_Growth; +PyObject *f_Loads_Get_Name; +PyObject *f_Loads_Get_Sensor; +PyObject *f_Loads_Get_Spectrum; +PyObject *f_Loads_Get_Yearly; +PyObject *f_Loads_Get_daily; +PyObject *f_Loads_Get_duty; +PyObject *f_Meters_Get_MeteredElement; +PyObject *f_Meters_Get_Name; +PyObject *f_Monitors_Get_Element; +PyObject *f_Monitors_Get_FileName; +PyObject *f_Monitors_Get_Name; +PyObject *f_PDElements_Get_Name; +PyObject *f_PVSystems_Get_Name; +PyObject *f_PVSystems_Get_Sensor; +PyObject *f_PVSystems_Get_Tdaily; +PyObject *f_PVSystems_Get_Tduty; +PyObject *f_PVSystems_Get_Tyearly; +PyObject *f_PVSystems_Get_daily; +PyObject *f_PVSystems_Get_duty; +PyObject *f_PVSystems_Get_yearly; +PyObject *f_Parser_Get_BeginQuote; +PyObject *f_Parser_Get_CmdString; +PyObject *f_Parser_Get_Delimiters; +PyObject *f_Parser_Get_EndQuote; +PyObject *f_Parser_Get_NextParam; +PyObject *f_Parser_Get_StrValue; +PyObject *f_Parser_Get_WhiteSpace; +PyObject *f_Reactors_Get_Bus1; +PyObject *f_Reactors_Get_Bus2; +PyObject *f_Reactors_Get_LCurve; +PyObject *f_Reactors_Get_Name; +PyObject *f_Reactors_Get_RCurve; +PyObject *f_Reclosers_Get_MonitoredObj; +PyObject *f_Reclosers_Get_Name; +PyObject *f_Reclosers_Get_SwitchedObj; +PyObject *f_ReduceCkt_Get_EditString; +PyObject *f_ReduceCkt_Get_EnergyMeter; +PyObject *f_ReduceCkt_Get_StartPDElement; +PyObject *f_RegControls_Get_MonitoredBus; +PyObject *f_RegControls_Get_Name; +PyObject *f_RegControls_Get_Transformer; +PyObject *f_Relays_Get_MonitoredObj; +PyObject *f_Relays_Get_Name; +PyObject *f_Relays_Get_SwitchedObj; +PyObject *f_Sensors_Get_MeteredElement; +PyObject *f_Sensors_Get_Name; +PyObject *f_Settings_Get_AutoBusList; +PyObject *f_Settings_Get_PriceCurve; +PyObject *f_Settings_Get_SkipFileRegExp; +PyObject *f_Solution_Get_DefaultDaily; +PyObject *f_Solution_Get_DefaultYearly; +PyObject *f_Solution_Get_LDCurve; +PyObject *f_Solution_Get_ModeID; +PyObject *f_Storages_Get_Name; +PyObject *f_SwtControls_Get_Name; +PyObject *f_SwtControls_Get_SwitchedObj; +PyObject *f_TSData_Get_Name; +PyObject *f_Text_Get_Command; +PyObject *f_Text_Get_Result; +PyObject *f_Topology_Get_BranchName; +PyObject *f_Topology_Get_BusName; +PyObject *f_Transformers_Get_Name; +PyObject *f_Transformers_Get_XfmrCode; +PyObject *f_Transformers_Get_strWdgCurrents; +PyObject *f_Vsources_Get_Name; +PyObject *f_WindGens_Get_Bus1; +PyObject *f_WindGens_Get_Name; +PyObject *f_WindGens_Get_Yearly; +PyObject *f_WindGens_Get_daily; +PyObject *f_WindGens_Get_duty; +PyObject *f_WireData_Get_Name; +PyObject *f_XYCurves_Get_Name; +PyObject *f_ActiveClass_ToJSON; +PyObject *f_Circuit_ToJSON; +PyObject *f_CktElement_Get_Controller; +PyObject *f_DSSElement_ToJSON; +PyObject *f_DSS_Executive_Get_Command; +PyObject *f_DSS_Executive_Get_CommandHelp; +PyObject *f_DSS_Executive_Get_Option; +PyObject *f_DSS_Executive_Get_OptionHelp; +PyObject *f_DSS_Executive_Get_OptionValue; +PyObject *f_ActiveClass_Set_Name; +PyObject *f_CNData_Set_Name; +PyObject *f_CapControls_Set_Capacitor; +PyObject *f_CapControls_Set_MonitoredObj; +PyObject *f_CapControls_Set_Name; +PyObject *f_Capacitors_Set_Name; +PyObject *f_Circuit_Disable; +PyObject *f_Circuit_Enable; +PyObject *f_Circuit_SetCktElementName; +PyObject *f_CktElement_Set_DisplayName; +PyObject *f_CktElement_Set_VariableName; +PyObject *f_DSSProgress_Set_Caption; +PyObject *f_DSSProperty_Set_Name; +PyObject *f_DSSProperty_Set_Val; +PyObject *f_DSS_NewCircuit; +PyObject *f_DSS_Set_DataPath; +PyObject *f_Error_Set_Description; +PyObject *f_Fuses_Set_MonitoredObj; +PyObject *f_Fuses_Set_Name; +PyObject *f_Fuses_Set_SwitchedObj; +PyObject *f_Fuses_Set_TCCcurve; +PyObject *f_GICSources_Set_Name; +PyObject *f_Generators_Set_Bus1; +PyObject *f_Generators_Set_Name; +PyObject *f_Generators_Set_Yearly; +PyObject *f_Generators_Set_daily; +PyObject *f_Generators_Set_duty; +PyObject *f_ISources_Set_Name; +PyObject *f_LineCodes_Set_Name; +PyObject *f_LineGeometries_Set_Name; +PyObject *f_LineSpacings_Set_Name; +PyObject *f_Lines_Set_Bus1; +PyObject *f_Lines_Set_Bus2; +PyObject *f_Lines_Set_Geometry; +PyObject *f_Lines_Set_LineCode; +PyObject *f_Lines_Set_Name; +PyObject *f_Lines_Set_Spacing; +PyObject *f_LoadShapes_Set_Name; +PyObject *f_Loads_Set_CVRcurve; +PyObject *f_Loads_Set_Growth; +PyObject *f_Loads_Set_Name; +PyObject *f_Loads_Set_Spectrum; +PyObject *f_Loads_Set_Yearly; +PyObject *f_Loads_Set_daily; +PyObject *f_Loads_Set_duty; +PyObject *f_Meters_Set_MeteredElement; +PyObject *f_Meters_Set_Name; +PyObject *f_Monitors_Set_Element; +PyObject *f_Monitors_Set_Name; +PyObject *f_PDElements_Set_Name; +PyObject *f_PVSystems_Set_Name; +PyObject *f_PVSystems_Set_Tdaily; +PyObject *f_PVSystems_Set_Tduty; +PyObject *f_PVSystems_Set_Tyearly; +PyObject *f_PVSystems_Set_daily; +PyObject *f_PVSystems_Set_duty; +PyObject *f_PVSystems_Set_yearly; +PyObject *f_Parser_Set_BeginQuote; +PyObject *f_Parser_Set_CmdString; +PyObject *f_Parser_Set_Delimiters; +PyObject *f_Parser_Set_EndQuote; +PyObject *f_Parser_Set_WhiteSpace; +PyObject *f_Reactors_Set_Bus1; +PyObject *f_Reactors_Set_Bus2; +PyObject *f_Reactors_Set_LCurve; +PyObject *f_Reactors_Set_Name; +PyObject *f_Reactors_Set_RCurve; +PyObject *f_Reclosers_Set_MonitoredObj; +PyObject *f_Reclosers_Set_Name; +PyObject *f_Reclosers_Set_SwitchedObj; +PyObject *f_ReduceCkt_SaveCircuit; +PyObject *f_ReduceCkt_Set_EditString; +PyObject *f_ReduceCkt_Set_EnergyMeter; +PyObject *f_ReduceCkt_Set_StartPDElement; +PyObject *f_RegControls_Set_MonitoredBus; +PyObject *f_RegControls_Set_Name; +PyObject *f_RegControls_Set_Transformer; +PyObject *f_Relays_Set_MonitoredObj; +PyObject *f_Relays_Set_Name; +PyObject *f_Relays_Set_SwitchedObj; +PyObject *f_Sensors_Set_MeteredElement; +PyObject *f_Sensors_Set_Name; +PyObject *f_Settings_Set_AutoBusList; +PyObject *f_Settings_Set_PriceCurve; +PyObject *f_Settings_Set_SkipFileRegExp; +PyObject *f_Solution_Set_DefaultDaily; +PyObject *f_Solution_Set_DefaultYearly; +PyObject *f_Solution_Set_LDCurve; +PyObject *f_Storages_Set_Name; +PyObject *f_SwtControls_Set_Name; +PyObject *f_SwtControls_Set_SwitchedObj; +PyObject *f_TSData_Set_Name; +PyObject *f_Text_CommandBlock; +PyObject *f_Text_Set_Command; +PyObject *f_Topology_Set_BranchName; +PyObject *f_Topology_Set_BusName; +PyObject *f_Transformers_Set_Name; +PyObject *f_Transformers_Set_XfmrCode; +PyObject *f_Vsources_Set_Name; +PyObject *f_WindGens_Set_Bus1; +PyObject *f_WindGens_Set_Name; +PyObject *f_WindGens_Set_Yearly; +PyObject *f_WindGens_Set_daily; +PyObject *f_WindGens_Set_duty; +PyObject *f_WireData_Set_Name; +PyObject *f_XYCurves_Set_Name; +PyObject *f_YMatrix_SaveAsMarketFiles; +PyObject *f_ZIP_Open; +PyObject *f_ZIP_Redirect; +PyObject *f_ActiveClass_Get_AllNames; +PyObject *f_Bus_Get_AllPCEatBus; +PyObject *f_Bus_Get_AllPDEatBus; +PyObject *f_Bus_Get_LineList; +PyObject *f_Bus_Get_LoadList; +PyObject *f_CNData_Get_AllNames; +PyObject *f_CapControls_Get_AllNames; +PyObject *f_Capacitors_Get_AllNames; +PyObject *f_Circuit_Get_AllBusNames; +PyObject *f_Circuit_Get_AllElementNames; +PyObject *f_Circuit_Get_AllNodeNames; +PyObject *f_Circuit_Get_YNodeOrder; +PyObject *f_CktElement_Get_AllPropertyNames; +PyObject *f_CktElement_Get_AllVariableNames; +PyObject *f_CtrlQueue_Get_Queue; +PyObject *f_DSSElement_Get_AllPropertyNames; +PyObject *f_DSS_Get_Classes; +PyObject *f_DSS_Get_UserClasses; +PyObject *f_Fuses_Get_AllNames; +PyObject *f_Fuses_Get_NormalState; +PyObject *f_Fuses_Get_State; +PyObject *f_GICSources_Get_AllNames; +PyObject *f_Generators_Get_AllNames; +PyObject *f_Generators_Get_RegisterNames; +PyObject *f_ISources_Get_AllNames; +PyObject *f_LineCodes_Get_AllNames; +PyObject *f_LineGeometries_Get_AllNames; +PyObject *f_LineGeometries_Get_Conductors; +PyObject *f_LineSpacings_Get_AllNames; +PyObject *f_Lines_Get_AllNames; +PyObject *f_LoadShapes_Get_AllNames; +PyObject *f_Loads_Get_AllNames; +PyObject *f_Meters_Get_AllBranchesInZone; +PyObject *f_Meters_Get_AllEndElements; +PyObject *f_Meters_Get_AllNames; +PyObject *f_Meters_Get_RegisterNames; +PyObject *f_Meters_Get_ZonePCE; +PyObject *f_Monitors_Get_AllNames; +PyObject *f_Monitors_Get_Header; +PyObject *f_PDElements_Get_AllNames; +PyObject *f_PVSystems_Get_AllNames; +PyObject *f_PVSystems_Get_RegisterNames; +PyObject *f_Reactors_Get_AllNames; +PyObject *f_Reclosers_Get_AllNames; +PyObject *f_RegControls_Get_AllNames; +PyObject *f_Relays_Get_AllNames; +PyObject *f_Sensors_Get_AllNames; +PyObject *f_Solution_Get_EventLog; +PyObject *f_Solution_Get_IncMatrixCols; +PyObject *f_Solution_Get_IncMatrixRows; +PyObject *f_Storages_Get_AllNames; +PyObject *f_Storages_Get_RegisterNames; +PyObject *f_SwtControls_Get_AllNames; +PyObject *f_TSData_Get_AllNames; +PyObject *f_Topology_Get_AllIsolatedBranches; +PyObject *f_Topology_Get_AllIsolatedLoads; +PyObject *f_Topology_Get_AllLoopedPairs; +PyObject *f_Transformers_Get_AllNames; +PyObject *f_Vsources_Get_AllNames; +PyObject *f_WindGens_Get_AllNames; +PyObject *f_WindGens_Get_RegisterNames; +PyObject *f_WireData_Get_AllNames; +PyObject *f_XYCurves_Get_AllNames; +PyObject *f_CktElement_Get_BusNames; +PyObject *f_Circuit_Get_AllNodeNamesByPhase; +PyObject *f_ZIP_List; +PyObject *f_Bus_Get_SeqVoltages_GR; +PyObject *f_Bus_Get_VMagAngle_GR; +PyObject *f_Bus_Get_puVmagAngle_GR; +PyObject *f_Circuit_Get_AllBusDistances_GR; +PyObject *f_Circuit_Get_AllBusVmag_GR; +PyObject *f_Circuit_Get_AllBusVmagPu_GR; +PyObject *f_Circuit_Get_AllNodeDistances_GR; +PyObject *f_CktElement_Get_AllVariableValues_GR; +PyObject *f_CktElement_Get_CurrentsMagAng_GR; +PyObject *f_CktElement_Get_Residuals_GR; +PyObject *f_CktElement_Get_SeqCurrents_GR; +PyObject *f_CktElement_Get_SeqVoltages_GR; +PyObject *f_CktElement_Get_VoltagesMagAng_GR; +PyObject *f_Generators_Get_RegisterValues_GR; +PyObject *f_LineCodes_Get_Cmatrix_GR; +PyObject *f_LineCodes_Get_Rmatrix_GR; +PyObject *f_LineCodes_Get_Xmatrix_GR; +PyObject *f_LineGeometries_Get_Xcoords_GR; +PyObject *f_LineGeometries_Get_Ycoords_GR; +PyObject *f_LineSpacings_Get_Xcoords_GR; +PyObject *f_LineSpacings_Get_Ycoords_GR; +PyObject *f_Lines_Get_Cmatrix_GR; +PyObject *f_Lines_Get_Rmatrix_GR; +PyObject *f_Lines_Get_Xmatrix_GR; +PyObject *f_LoadShapes_Get_Pmult_GR; +PyObject *f_LoadShapes_Get_Qmult_GR; +PyObject *f_LoadShapes_Get_TimeArray_GR; +PyObject *f_Loads_Get_ZIPV_GR; +PyObject *f_Meters_Get_AllocFactors_GR; +PyObject *f_Meters_Get_CalcCurrent_GR; +PyObject *f_Meters_Get_Peakcurrent_GR; +PyObject *f_Meters_Get_RegisterValues_GR; +PyObject *f_Meters_Get_Totals_GR; +PyObject *f_Monitors_Get_dblFreq_GR; +PyObject *f_Monitors_Get_dblHour_GR; +PyObject *f_PDElements_Get_AllCurrentsMagAng_GR; +PyObject *f_PDElements_Get_AllSeqCurrents_GR; +PyObject *f_PVSystems_Get_RegisterValues_GR; +PyObject *f_Reactors_Get_Rmatrix_GR; +PyObject *f_Reactors_Get_Xmatrix_GR; +PyObject *f_Reclosers_Get_RecloseIntervals_GR; +PyObject *f_Sensors_Get_AllocationFactor_GR; +PyObject *f_Sensors_Get_Currents_GR; +PyObject *f_Sensors_Get_kVARS_GR; +PyObject *f_Sensors_Get_kVS_GR; +PyObject *f_Sensors_Get_kWS_GR; +PyObject *f_Settings_Get_VoltageBases_GR; +PyObject *f_Storages_Get_RegisterValues_GR; +PyObject *f_WindGens_Get_RegisterValues_GR; +PyObject *f_XYCurves_Get_Xarray_GR; +PyObject *f_XYCurves_Get_Yarray_GR; +PyObject *f_Circuit_Get_AllNodeDistancesByPhase_GR; +PyObject *f_Circuit_Get_AllNodeVmagByPhase_GR; +PyObject *f_Circuit_Get_AllNodeVmagPUByPhase_GR; +PyObject *f_Monitors_Get_Channel_GR; +PyObject *f_Parser_Get_Matrix_GR; +PyObject *f_Parser_Get_SymMatrix_GR; +PyObject *f_Parser_Get_Vector_GR; +PyObject *f_LineGeometries_Get_Cmatrix_GR; +PyObject *f_LineGeometries_Get_Rmatrix_GR; +PyObject *f_LineGeometries_Get_Xmatrix_GR; +PyObject *f_PDElements_Get_AllMaxCurrents_GR; +PyObject *f_PDElements_Get_AllPctEmerg_GR; +PyObject *f_PDElements_Get_AllPctNorm_GR; +PyObject *f_Bus_Get_CplxSeqVoltages_GR; +PyObject *f_Bus_Get_Isc_GR; +PyObject *f_Bus_Get_VLL_GR; +PyObject *f_Bus_Get_Voc_GR; +PyObject *f_Bus_Get_Voltages_GR; +PyObject *f_Bus_Get_YscMatrix_GR; +PyObject *f_Bus_Get_ZSC012Matrix_GR; +PyObject *f_Bus_Get_ZscMatrix_GR; +PyObject *f_Bus_Get_puVLL_GR; +PyObject *f_Bus_Get_puVoltages_GR; +PyObject *f_Circuit_Get_AllBusVolts_GR; +PyObject *f_Circuit_Get_AllElementLosses_GR; +PyObject *f_Circuit_Get_SystemY_GR; +PyObject *f_Circuit_Get_YCurrents_GR; +PyObject *f_Circuit_Get_YNodeVarray_GR; +PyObject *f_CktElement_Get_AllLosses_GR; +PyObject *f_CktElement_Get_CplxSeqCurrents_GR; +PyObject *f_CktElement_Get_CplxSeqVoltages_GR; +PyObject *f_CktElement_Get_Currents_GR; +PyObject *f_CktElement_Get_PhaseLosses_GR; +PyObject *f_CktElement_Get_Powers_GR; +PyObject *f_CktElement_Get_SeqPowers_GR; +PyObject *f_CktElement_Get_TotalPowers_GR; +PyObject *f_CktElement_Get_Voltages_GR; +PyObject *f_CktElement_Get_Yprim_GR; +PyObject *f_Lines_Get_Yprim_GR; +PyObject *f_PDElements_Get_AllCplxSeqCurrents_GR; +PyObject *f_PDElements_Get_AllCurrents_GR; +PyObject *f_PDElements_Get_AllPowers_GR; +PyObject *f_PDElements_Get_AllSeqPowers_GR; +PyObject *f_Transformers_Get_AllLossesByType_GR; +PyObject *f_Transformers_Get_LossesByType_GR; +PyObject *f_Transformers_Get_WdgCurrents_GR; +PyObject *f_Transformers_Get_WdgVoltages_GR; +PyObject *f_LineGeometries_Get_Zmatrix_GR; +PyObject *f_Bus_Get_Zsc0_GR; +PyObject *f_Bus_Get_Zsc1_GR; +PyObject *f_Circuit_Get_LineLosses_GR; +PyObject *f_Circuit_Get_Losses_GR; +PyObject *f_Circuit_Get_SubstationLosses_GR; +PyObject *f_Circuit_Get_TotalPower_GR; +PyObject *f_CktElement_Get_Losses_GR; +PyObject *f_Reactors_Get_Z_GR; +PyObject *f_Reactors_Get_Z0_GR; +PyObject *f_Reactors_Get_Z1_GR; +PyObject *f_Reactors_Get_Z2_GR; +PyObject *f_Bus_Get_Nodes_GR; +PyObject *f_Capacitors_Get_States_GR; +PyObject *f_CktElement_Get_NodeOrder_GR; +PyObject *f_CktElement_Get_NodeRef_GR; +PyObject *f_LineGeometries_Get_Units_GR; +PyObject *f_PDElements_Get_AllNumConductors_GR; +PyObject *f_PDElements_Get_AllNumPhases_GR; +PyObject *f_PDElements_Get_AllNumTerminals_GR; +PyObject *f_Parallel_Get_ActorProgress_GR; +PyObject *f_Parallel_Get_ActorStatus_GR; +PyObject *f_Settings_Get_LossRegs_GR; +PyObject *f_Settings_Get_SkipCommands_GR; +PyObject *f_Settings_Get_UEregs_GR; +PyObject *f_Solution_Get_BusLevels_GR; +PyObject *f_Solution_Get_IncMatrix_GR; +PyObject *f_Solution_Get_Laplacian_GR; +PyObject *f_Monitors_Get_ByteStream_GR; +PyObject *f_ActiveClass_Get_Count; +PyObject *f_ActiveClass_Get_First; +PyObject *f_ActiveClass_Get_Next; +PyObject *f_ActiveClass_Get_NumElements; +PyObject *f_ActiveClass_Get_idx; +PyObject *f_Bus_Get_N_Customers; +PyObject *f_Bus_Get_Next; +PyObject *f_Bus_Get_NumNodes; +PyObject *f_Bus_Get_SectionID; +PyObject *f_Bus_Get_idx; +PyObject *f_CNData_Get_Count; +PyObject *f_CNData_Get_First; +PyObject *f_CNData_Get_GMRUnits; +PyObject *f_CNData_Get_Next; +PyObject *f_CNData_Get_RadiusUnits; +PyObject *f_CNData_Get_ResistanceUnits; +PyObject *f_CNData_Get_idx; +PyObject *f_CNData_Get_k; +PyObject *f_CapControls_Get_Count; +PyObject *f_CapControls_Get_First; +PyObject *f_CapControls_Get_Mode; +PyObject *f_CapControls_Get_MonitoredTerm; +PyObject *f_CapControls_Get_Next; +PyObject *f_CapControls_Get_idx; +PyObject *f_Capacitors_Get_AvailableSteps; +PyObject *f_Capacitors_Get_Count; +PyObject *f_Capacitors_Get_First; +PyObject *f_Capacitors_Get_Next; +PyObject *f_Capacitors_Get_NumSteps; +PyObject *f_Capacitors_Get_idx; +PyObject *f_Circuit_FirstElement; +PyObject *f_Circuit_FirstPCElement; +PyObject *f_Circuit_FirstPDElement; +PyObject *f_Circuit_Get_NumBuses; +PyObject *f_Circuit_Get_NumCktElements; +PyObject *f_Circuit_Get_NumNodes; +PyObject *f_Circuit_Get_ParentPDElement; +PyObject *f_Circuit_NextElement; +PyObject *f_Circuit_NextPCElement; +PyObject *f_Circuit_NextPDElement; +PyObject *f_CktElement_Get_Handle; +PyObject *f_CktElement_Get_NumConductors; +PyObject *f_CktElement_Get_NumControls; +PyObject *f_CktElement_Get_NumPhases; +PyObject *f_CktElement_Get_NumProperties; +PyObject *f_CktElement_Get_NumTerminals; +PyObject *f_CktElement_Get_OCPDevIndex; +PyObject *f_CktElement_Get_OCPDevType; +PyObject *f_CktElement_Get_VariableIdx; +PyObject *f_CktElement_Get_YprimOrder; +PyObject *f_CtrlQueue_Get_ActionCode; +PyObject *f_CtrlQueue_Get_DeviceHandle; +PyObject *f_CtrlQueue_Get_NumActions; +PyObject *f_CtrlQueue_Get_PopAction; +PyObject *f_CtrlQueue_Get_QueueSize; +PyObject *f_DSSElement_Get_NumProperties; +PyObject *f_DSS_Executive_Get_NumCommands; +PyObject *f_DSS_Executive_Get_NumOptions; +PyObject *f_DSS_Get_NumCircuits; +PyObject *f_DSS_Get_NumClasses; +PyObject *f_DSS_Get_NumUserClasses; +PyObject *f_Error_Get_Number; +PyObject *f_Fuses_Get_Count; +PyObject *f_Fuses_Get_First; +PyObject *f_Fuses_Get_MonitoredTerm; +PyObject *f_Fuses_Get_Next; +PyObject *f_Fuses_Get_NumPhases; +PyObject *f_Fuses_Get_SwitchedTerm; +PyObject *f_Fuses_Get_idx; +PyObject *f_GICSources_Get_Count; +PyObject *f_GICSources_Get_First; +PyObject *f_GICSources_Get_Next; +PyObject *f_GICSources_Get_Phases; +PyObject *f_GICSources_Get_idx; +PyObject *f_Generators_Get_Class_; +PyObject *f_Generators_Get_Count; +PyObject *f_Generators_Get_First; +PyObject *f_Generators_Get_Model; +PyObject *f_Generators_Get_Next; +PyObject *f_Generators_Get_Phases; +PyObject *f_Generators_Get_Status; +PyObject *f_Generators_Get_idx; +PyObject *f_ISources_Get_Count; +PyObject *f_ISources_Get_First; +PyObject *f_ISources_Get_Next; +PyObject *f_ISources_Get_idx; +PyObject *f_LineCodes_Get_Count; +PyObject *f_LineCodes_Get_First; +PyObject *f_LineCodes_Get_Next; +PyObject *f_LineCodes_Get_Phases; +PyObject *f_LineCodes_Get_Units; +PyObject *f_LineCodes_Get_idx; +PyObject *f_LineGeometries_Get_Count; +PyObject *f_LineGeometries_Get_First; +PyObject *f_LineGeometries_Get_Nconds; +PyObject *f_LineGeometries_Get_Next; +PyObject *f_LineGeometries_Get_Phases; +PyObject *f_LineGeometries_Get_idx; +PyObject *f_LineSpacings_Get_Count; +PyObject *f_LineSpacings_Get_First; +PyObject *f_LineSpacings_Get_Nconds; +PyObject *f_LineSpacings_Get_Next; +PyObject *f_LineSpacings_Get_Phases; +PyObject *f_LineSpacings_Get_Units; +PyObject *f_LineSpacings_Get_idx; +PyObject *f_Lines_Get_Count; +PyObject *f_Lines_Get_First; +PyObject *f_Lines_Get_Next; +PyObject *f_Lines_Get_NumCust; +PyObject *f_Lines_Get_Parent; +PyObject *f_Lines_Get_Phases; +PyObject *f_Lines_Get_TotalCust; +PyObject *f_Lines_Get_Units; +PyObject *f_Lines_Get_idx; +PyObject *f_LoadShapes_Get_Count; +PyObject *f_LoadShapes_Get_First; +PyObject *f_LoadShapes_Get_Next; +PyObject *f_LoadShapes_Get_Npts; +PyObject *f_LoadShapes_Get_idx; +PyObject *f_Loads_Get_Class_; +PyObject *f_Loads_Get_Count; +PyObject *f_Loads_Get_First; +PyObject *f_Loads_Get_Model; +PyObject *f_Loads_Get_Next; +PyObject *f_Loads_Get_NumCust; +PyObject *f_Loads_Get_Phases; +PyObject *f_Loads_Get_Status; +PyObject *f_Loads_Get_idx; +PyObject *f_Meters_Get_Count; +PyObject *f_Meters_Get_CountBranches; +PyObject *f_Meters_Get_CountEndElements; +PyObject *f_Meters_Get_First; +PyObject *f_Meters_Get_MeteredTerminal; +PyObject *f_Meters_Get_Next; +PyObject *f_Meters_Get_NumSectionBranches; +PyObject *f_Meters_Get_NumSectionCustomers; +PyObject *f_Meters_Get_NumSections; +PyObject *f_Meters_Get_OCPDeviceType; +PyObject *f_Meters_Get_SectSeqIdx; +PyObject *f_Meters_Get_SectTotalCust; +PyObject *f_Meters_Get_SeqListSize; +PyObject *f_Meters_Get_SequenceIndex; +PyObject *f_Meters_Get_TotalCustomers; +PyObject *f_Meters_Get_idx; +PyObject *f_Monitors_Get_Count; +PyObject *f_Monitors_Get_FileVersion; +PyObject *f_Monitors_Get_First; +PyObject *f_Monitors_Get_Mode; +PyObject *f_Monitors_Get_Next; +PyObject *f_Monitors_Get_NumChannels; +PyObject *f_Monitors_Get_RecordSize; +PyObject *f_Monitors_Get_SampleCount; +PyObject *f_Monitors_Get_Terminal; +PyObject *f_Monitors_Get_idx; +PyObject *f_PDElements_Get_Count; +PyObject *f_PDElements_Get_First; +PyObject *f_PDElements_Get_FromTerminal; +PyObject *f_PDElements_Get_Next; +PyObject *f_PDElements_Get_Numcustomers; +PyObject *f_PDElements_Get_ParentPDElement; +PyObject *f_PDElements_Get_SectionID; +PyObject *f_PDElements_Get_Totalcustomers; +PyObject *f_PDElements_Get_idx; +PyObject *f_PVSystems_Get_Count; +PyObject *f_PVSystems_Get_First; +PyObject *f_PVSystems_Get_Next; +PyObject *f_PVSystems_Get_idx; +PyObject *f_Parallel_Get_ActiveActor; +PyObject *f_Parallel_Get_ActiveParallel; +PyObject *f_Parallel_Get_ActorCPU; +PyObject *f_Parallel_Get_ConcatenateReports; +PyObject *f_Parallel_Get_NumCPUs; +PyObject *f_Parallel_Get_NumCores; +PyObject *f_Parallel_Get_NumOfActors; +PyObject *f_Parser_Get_IntValue; +PyObject *f_Reactors_Get_Count; +PyObject *f_Reactors_Get_First; +PyObject *f_Reactors_Get_Next; +PyObject *f_Reactors_Get_Phases; +PyObject *f_Reactors_Get_SpecType; +PyObject *f_Reactors_Get_idx; +PyObject *f_Reclosers_Get_Count; +PyObject *f_Reclosers_Get_First; +PyObject *f_Reclosers_Get_MonitoredTerm; +PyObject *f_Reclosers_Get_Next; +PyObject *f_Reclosers_Get_NormalState; +PyObject *f_Reclosers_Get_NumFast; +PyObject *f_Reclosers_Get_Shots; +PyObject *f_Reclosers_Get_State; +PyObject *f_Reclosers_Get_SwitchedTerm; +PyObject *f_Reclosers_Get_idx; +PyObject *f_RegControls_Get_Count; +PyObject *f_RegControls_Get_First; +PyObject *f_RegControls_Get_MaxTapChange; +PyObject *f_RegControls_Get_Next; +PyObject *f_RegControls_Get_TapNumber; +PyObject *f_RegControls_Get_TapWinding; +PyObject *f_RegControls_Get_Winding; +PyObject *f_RegControls_Get_idx; +PyObject *f_Relays_Get_Count; +PyObject *f_Relays_Get_First; +PyObject *f_Relays_Get_MonitoredTerm; +PyObject *f_Relays_Get_Next; +PyObject *f_Relays_Get_NormalState; +PyObject *f_Relays_Get_State; +PyObject *f_Relays_Get_SwitchedTerm; +PyObject *f_Relays_Get_idx; +PyObject *f_Sensors_Get_Count; +PyObject *f_Sensors_Get_First; +PyObject *f_Sensors_Get_MeteredTerminal; +PyObject *f_Sensors_Get_Next; +PyObject *f_Sensors_Get_idx; +PyObject *f_Settings_Get_CktModel; +PyObject *f_Settings_Get_IterateDisabled; +PyObject *f_Solution_Get_AddType; +PyObject *f_Solution_Get_Algorithm; +PyObject *f_Solution_Get_ControlIterations; +PyObject *f_Solution_Get_ControlMode; +PyObject *f_Solution_Get_Hour; +PyObject *f_Solution_Get_Iterations; +PyObject *f_Solution_Get_LoadModel; +PyObject *f_Solution_Get_MaxControlIterations; +PyObject *f_Solution_Get_MaxIterations; +PyObject *f_Solution_Get_MinIterations; +PyObject *f_Solution_Get_Mode; +PyObject *f_Solution_Get_MostIterationsDone; +PyObject *f_Solution_Get_Number; +PyObject *f_Solution_Get_Random; +PyObject *f_Solution_Get_Totaliterations; +PyObject *f_Solution_Get_Year; +PyObject *f_Storages_Get_ControlMode; +PyObject *f_Storages_Get_Count; +PyObject *f_Storages_Get_First; +PyObject *f_Storages_Get_Next; +PyObject *f_Storages_Get_SafeMode; +PyObject *f_Storages_Get_State; +PyObject *f_Storages_Get_VarFollowInverter; +PyObject *f_Storages_Get_idx; +PyObject *f_SwtControls_Get_Action; +PyObject *f_SwtControls_Get_Count; +PyObject *f_SwtControls_Get_First; +PyObject *f_SwtControls_Get_Next; +PyObject *f_SwtControls_Get_NormalState; +PyObject *f_SwtControls_Get_State; +PyObject *f_SwtControls_Get_SwitchedTerm; +PyObject *f_SwtControls_Get_idx; +PyObject *f_TSData_Get_Count; +PyObject *f_TSData_Get_First; +PyObject *f_TSData_Get_GMRUnits; +PyObject *f_TSData_Get_Next; +PyObject *f_TSData_Get_RadiusUnits; +PyObject *f_TSData_Get_ResistanceUnits; +PyObject *f_TSData_Get_idx; +PyObject *f_Topology_Get_ActiveBranch; +PyObject *f_Topology_Get_ActiveLevel; +PyObject *f_Topology_Get_BackwardBranch; +PyObject *f_Topology_Get_First; +PyObject *f_Topology_Get_FirstLoad; +PyObject *f_Topology_Get_ForwardBranch; +PyObject *f_Topology_Get_LoopedBranch; +PyObject *f_Topology_Get_Next; +PyObject *f_Topology_Get_NextLoad; +PyObject *f_Topology_Get_NumIsolatedBranches; +PyObject *f_Topology_Get_NumIsolatedLoads; +PyObject *f_Topology_Get_NumLoops; +PyObject *f_Topology_Get_ParallelBranch; +PyObject *f_Transformers_Get_CoreType; +PyObject *f_Transformers_Get_Count; +PyObject *f_Transformers_Get_First; +PyObject *f_Transformers_Get_Next; +PyObject *f_Transformers_Get_NumTaps; +PyObject *f_Transformers_Get_NumWindings; +PyObject *f_Transformers_Get_Wdg; +PyObject *f_Transformers_Get_idx; +PyObject *f_Vsources_Get_Count; +PyObject *f_Vsources_Get_First; +PyObject *f_Vsources_Get_Next; +PyObject *f_Vsources_Get_Phases; +PyObject *f_Vsources_Get_idx; +PyObject *f_WindGens_Get_Class_; +PyObject *f_WindGens_Get_Count; +PyObject *f_WindGens_Get_First; +PyObject *f_WindGens_Get_NPoles; +PyObject *f_WindGens_Get_N_WTG; +PyObject *f_WindGens_Get_Next; +PyObject *f_WindGens_Get_Phases; +PyObject *f_WindGens_Get_QFlag; +PyObject *f_WindGens_Get_QMode; +PyObject *f_WindGens_Get_idx; +PyObject *f_WireData_Get_Count; +PyObject *f_WireData_Get_First; +PyObject *f_WireData_Get_GMRUnits; +PyObject *f_WireData_Get_Next; +PyObject *f_WireData_Get_RadiusUnits; +PyObject *f_WireData_Get_ResistanceUnits; +PyObject *f_WireData_Get_idx; +PyObject *f_XYCurves_Get_Count; +PyObject *f_XYCurves_Get_First; +PyObject *f_XYCurves_Get_Next; +PyObject *f_XYCurves_Get_Npts; +PyObject *f_XYCurves_Get_idx; +PyObject *f_YMatrix_Get_ControlIteration; +PyObject *f_YMatrix_Get_Iteration; +PyObject *f_YMatrix_Get_IterationFlag; +PyObject *f_Bus_GetUniqueNodeNumber; +PyObject *f_Circuit_SetActiveBusi; +PyObject *f_Circuit_SetActiveBus; +PyObject *f_Circuit_SetActiveClass; +PyObject *f_Circuit_SetActiveElement; +PyObject *f_DSS_SetActiveClass; +PyObject *f_Lines_New; +PyObject *f_LoadShapes_New; +PyObject *f_ActiveClass_Set_idx; +PyObject *f_CNData_Set_GMRUnits; +PyObject *f_CNData_Set_RadiusUnits; +PyObject *f_CNData_Set_ResistanceUnits; +PyObject *f_CNData_Set_idx; +PyObject *f_CNData_Set_k; +PyObject *f_CapControls_Set_Mode; +PyObject *f_CapControls_Set_MonitoredTerm; +PyObject *f_CapControls_Set_idx; +PyObject *f_Capacitors_Set_NumSteps; +PyObject *f_Capacitors_Set_idx; +PyObject *f_Circuit_Flatten; +PyObject *f_Circuit_SetCktElementIndex; +PyObject *f_CktElement_Set_VariableIdx; +PyObject *f_CtrlQueue_Delete; +PyObject *f_CtrlQueue_Set_Action; +PyObject *f_DSSProgress_Set_PctProgress; +PyObject *f_DSSProperty_Set_Index; +PyObject *f_Fuses_Set_MonitoredTerm; +PyObject *f_Fuses_Set_SwitchedTerm; +PyObject *f_Fuses_Set_idx; +PyObject *f_GICSources_Set_Phases; +PyObject *f_GICSources_Set_idx; +PyObject *f_Generators_Set_Class_; +PyObject *f_Generators_Set_Model; +PyObject *f_Generators_Set_Phases; +PyObject *f_Generators_Set_Status; +PyObject *f_Generators_Set_idx; +PyObject *f_ISources_Set_idx; +PyObject *f_LineCodes_Set_Phases; +PyObject *f_LineCodes_Set_Units; +PyObject *f_LineCodes_Set_idx; +PyObject *f_LineGeometries_Set_Nconds; +PyObject *f_LineGeometries_Set_Phases; +PyObject *f_LineGeometries_Set_idx; +PyObject *f_LineSpacings_Set_Nconds; +PyObject *f_LineSpacings_Set_Phases; +PyObject *f_LineSpacings_Set_Units; +PyObject *f_LineSpacings_Set_idx; +PyObject *f_Lines_Set_Phases; +PyObject *f_Lines_Set_Units; +PyObject *f_Lines_Set_idx; +PyObject *f_LoadShapes_Set_Npts; +PyObject *f_LoadShapes_Set_idx; +PyObject *f_Loads_Set_Class_; +PyObject *f_Loads_Set_Model; +PyObject *f_Loads_Set_NumCust; +PyObject *f_Loads_Set_Phases; +PyObject *f_Loads_Set_Status; +PyObject *f_Loads_Set_idx; +PyObject *f_Meters_SetActiveSection; +PyObject *f_Meters_Set_MeteredTerminal; +PyObject *f_Meters_Set_SequenceIndex; +PyObject *f_Meters_Set_idx; +PyObject *f_Monitors_Set_Mode; +PyObject *f_Monitors_Set_Terminal; +PyObject *f_Monitors_Set_idx; +PyObject *f_PDElements_Set_idx; +PyObject *f_PVSystems_Set_idx; +PyObject *f_Parallel_Set_ActiveActor; +PyObject *f_Parallel_Set_ActiveParallel; +PyObject *f_Parallel_Set_ActorCPU; +PyObject *f_Parallel_Set_ConcatenateReports; +PyObject *f_Reactors_Set_Phases; +PyObject *f_Reactors_Set_idx; +PyObject *f_Reclosers_Set_MonitoredTerm; +PyObject *f_Reclosers_Set_NormalState; +PyObject *f_Reclosers_Set_NumFast; +PyObject *f_Reclosers_Set_Shots; +PyObject *f_Reclosers_Set_State; +PyObject *f_Reclosers_Set_SwitchedTerm; +PyObject *f_Reclosers_Set_idx; +PyObject *f_RegControls_Set_MaxTapChange; +PyObject *f_RegControls_Set_TapNumber; +PyObject *f_RegControls_Set_TapWinding; +PyObject *f_RegControls_Set_Winding; +PyObject *f_RegControls_Set_idx; +PyObject *f_Relays_Set_MonitoredTerm; +PyObject *f_Relays_Set_NormalState; +PyObject *f_Relays_Set_State; +PyObject *f_Relays_Set_SwitchedTerm; +PyObject *f_Relays_Set_idx; +PyObject *f_Sensors_Set_MeteredTerminal; +PyObject *f_Sensors_Set_idx; +PyObject *f_Settings_SetPropertyNameStyle; +PyObject *f_Settings_Set_CktModel; +PyObject *f_Settings_Set_IterateDisabled; +PyObject *f_Solution_Set_AddType; +PyObject *f_Solution_Set_Algorithm; +PyObject *f_Solution_Set_ControlIterations; +PyObject *f_Solution_Set_ControlMode; +PyObject *f_Solution_Set_Hour; +PyObject *f_Solution_Set_LoadModel; +PyObject *f_Solution_Set_MaxControlIterations; +PyObject *f_Solution_Set_MaxIterations; +PyObject *f_Solution_Set_MinIterations; +PyObject *f_Solution_Set_Mode; +PyObject *f_Solution_Set_Number; +PyObject *f_Solution_Set_Random; +PyObject *f_Solution_Set_Year; +PyObject *f_Storages_Set_ControlMode; +PyObject *f_Storages_Set_State; +PyObject *f_Storages_Set_VarFollowInverter; +PyObject *f_Storages_Set_idx; +PyObject *f_SwtControls_Set_Action; +PyObject *f_SwtControls_Set_NormalState; +PyObject *f_SwtControls_Set_State; +PyObject *f_SwtControls_Set_SwitchedTerm; +PyObject *f_SwtControls_Set_idx; +PyObject *f_TSData_Set_GMRUnits; +PyObject *f_TSData_Set_RadiusUnits; +PyObject *f_TSData_Set_ResistanceUnits; +PyObject *f_TSData_Set_idx; +PyObject *f_Transformers_Set_CoreType; +PyObject *f_Transformers_Set_NumTaps; +PyObject *f_Transformers_Set_NumWindings; +PyObject *f_Transformers_Set_Wdg; +PyObject *f_Transformers_Set_idx; +PyObject *f_Vsources_Set_Phases; +PyObject *f_Vsources_Set_idx; +PyObject *f_WindGens_Set_Class_; +PyObject *f_WindGens_Set_NPoles; +PyObject *f_WindGens_Set_N_WTG; +PyObject *f_WindGens_Set_Phases; +PyObject *f_WindGens_Set_QFlag; +PyObject *f_WindGens_Set_QMode; +PyObject *f_WindGens_Set_idx; +PyObject *f_WireData_Set_GMRUnits; +PyObject *f_WireData_Set_RadiusUnits; +PyObject *f_WireData_Set_ResistanceUnits; +PyObject *f_WireData_Set_idx; +PyObject *f_XYCurves_Set_Npts; +PyObject *f_XYCurves_Set_idx; +PyObject *f_YMatrix_AddInAuxCurrents; +PyObject *f_YMatrix_Set_ControlIteration; +PyObject *f_YMatrix_Set_Iteration; +PyObject *f_YMatrix_Set_IterationFlag; +PyObject *f_CktElement_Close; +PyObject *f_CktElement_Open; +PyObject *f_Solution_BuildYMatrix; +PyObject *f_YMatrix_BuildYMatrixD; +PyObject *f_Bus_Get_Cust_Duration; +PyObject *f_Bus_Get_Cust_Interrupts; +PyObject *f_Bus_Get_Distance; +PyObject *f_Bus_Get_Int_Duration; +PyObject *f_Bus_Get_Lambda; +PyObject *f_Bus_Get_Latitude; +PyObject *f_Bus_Get_Longitude; +PyObject *f_Bus_Get_N_interrupts; +PyObject *f_Bus_Get_TotalMiles; +PyObject *f_Bus_Get_kVBase; +PyObject *f_Bus_Get_x; +PyObject *f_Bus_Get_y; +PyObject *f_CNData_Get_DiaCable; +PyObject *f_CNData_Get_DiaIns; +PyObject *f_CNData_Get_DiaStrand; +PyObject *f_CNData_Get_Diameter; +PyObject *f_CNData_Get_EmergAmps; +PyObject *f_CNData_Get_EpsR; +PyObject *f_CNData_Get_GMRac; +PyObject *f_CNData_Get_GmrStrand; +PyObject *f_CNData_Get_InsLayer; +PyObject *f_CNData_Get_NormAmps; +PyObject *f_CNData_Get_RStrand; +PyObject *f_CNData_Get_Rac; +PyObject *f_CNData_Get_Radius; +PyObject *f_CNData_Get_Rdc; +PyObject *f_CapControls_Get_CTratio; +PyObject *f_CapControls_Get_DeadTime; +PyObject *f_CapControls_Get_Delay; +PyObject *f_CapControls_Get_DelayOff; +PyObject *f_CapControls_Get_OFFSetting; +PyObject *f_CapControls_Get_ONSetting; +PyObject *f_CapControls_Get_PTratio; +PyObject *f_CapControls_Get_Vmax; +PyObject *f_CapControls_Get_Vmin; +PyObject *f_Capacitors_Get_kV; +PyObject *f_Capacitors_Get_kvar; +PyObject *f_CktElement_Get_EmergAmps; +PyObject *f_CktElement_Get_NormalAmps; +PyObject *f_CktElement_Get_VariableValue; +PyObject *f_Fuses_Get_Delay; +PyObject *f_Fuses_Get_RatedCurrent; +PyObject *f_GICSources_Get_EE; +PyObject *f_GICSources_Get_EN; +PyObject *f_GICSources_Get_Lat1; +PyObject *f_GICSources_Get_Lat2; +PyObject *f_GICSources_Get_Lon1; +PyObject *f_GICSources_Get_Lon2; +PyObject *f_GICSources_Get_Volts; +PyObject *f_Generators_Get_PF; +PyObject *f_Generators_Get_Vmaxpu; +PyObject *f_Generators_Get_Vminpu; +PyObject *f_Generators_Get_kV; +PyObject *f_Generators_Get_kVArated; +PyObject *f_Generators_Get_kW; +PyObject *f_Generators_Get_kva; +PyObject *f_Generators_Get_kvar; +PyObject *f_ISources_Get_Amps; +PyObject *f_ISources_Get_AngleDeg; +PyObject *f_ISources_Get_Frequency; +PyObject *f_LineCodes_Get_C0; +PyObject *f_LineCodes_Get_C1; +PyObject *f_LineCodes_Get_EmergAmps; +PyObject *f_LineCodes_Get_NormAmps; +PyObject *f_LineCodes_Get_R0; +PyObject *f_LineCodes_Get_R1; +PyObject *f_LineCodes_Get_X0; +PyObject *f_LineCodes_Get_X1; +PyObject *f_LineGeometries_Get_EmergAmps; +PyObject *f_LineGeometries_Get_NormAmps; +PyObject *f_LineGeometries_Get_RhoEarth; +PyObject *f_Lines_Get_C0; +PyObject *f_Lines_Get_C1; +PyObject *f_Lines_Get_EmergAmps; +PyObject *f_Lines_Get_Length; +PyObject *f_Lines_Get_NormAmps; +PyObject *f_Lines_Get_R0; +PyObject *f_Lines_Get_R1; +PyObject *f_Lines_Get_Rg; +PyObject *f_Lines_Get_Rho; +PyObject *f_Lines_Get_SeasonRating; +PyObject *f_Lines_Get_X0; +PyObject *f_Lines_Get_X1; +PyObject *f_Lines_Get_Xg; +PyObject *f_LoadShapes_Get_HrInterval; +PyObject *f_LoadShapes_Get_MaxP; +PyObject *f_LoadShapes_Get_MaxQ; +PyObject *f_LoadShapes_Get_MinInterval; +PyObject *f_LoadShapes_Get_PBase; +PyObject *f_LoadShapes_Get_Qbase; +PyObject *f_LoadShapes_Get_SInterval; +PyObject *f_Loads_Get_AllocationFactor; +PyObject *f_Loads_Get_CVRvars; +PyObject *f_Loads_Get_CVRwatts; +PyObject *f_Loads_Get_Cfactor; +PyObject *f_Loads_Get_PF; +PyObject *f_Loads_Get_PctMean; +PyObject *f_Loads_Get_PctStdDev; +PyObject *f_Loads_Get_RelWeight; +PyObject *f_Loads_Get_Rneut; +PyObject *f_Loads_Get_Vmaxpu; +PyObject *f_Loads_Get_Vminemerg; +PyObject *f_Loads_Get_Vminnorm; +PyObject *f_Loads_Get_Vminpu; +PyObject *f_Loads_Get_Xneut; +PyObject *f_Loads_Get_kV; +PyObject *f_Loads_Get_kW; +PyObject *f_Loads_Get_kva; +PyObject *f_Loads_Get_kvar; +PyObject *f_Loads_Get_kwh; +PyObject *f_Loads_Get_kwhdays; +PyObject *f_Loads_Get_pctSeriesRL; +PyObject *f_Loads_Get_xfkVA; +PyObject *f_Meters_Get_AvgRepairTime; +PyObject *f_Meters_Get_CustInterrupts; +PyObject *f_Meters_Get_FaultRateXRepairHrs; +PyObject *f_Meters_Get_SAIDI; +PyObject *f_Meters_Get_SAIFI; +PyObject *f_Meters_Get_SAIFIKW; +PyObject *f_Meters_Get_SumBranchFltRates; +PyObject *f_PDElements_Get_AccumulatedL; +PyObject *f_PDElements_Get_FaultRate; +PyObject *f_PDElements_Get_Lambda; +PyObject *f_PDElements_Get_RepairTime; +PyObject *f_PDElements_Get_TotalMiles; +PyObject *f_PDElements_Get_pctPermanent; +PyObject *f_PVSystems_Get_Irradiance; +PyObject *f_PVSystems_Get_IrradianceNow; +PyObject *f_PVSystems_Get_PF; +PyObject *f_PVSystems_Get_Pmpp; +PyObject *f_PVSystems_Get_kVArated; +PyObject *f_PVSystems_Get_kW; +PyObject *f_PVSystems_Get_kvar; +PyObject *f_Parser_Get_DblValue; +PyObject *f_Reactors_Get_LmH; +PyObject *f_Reactors_Get_R; +PyObject *f_Reactors_Get_Rp; +PyObject *f_Reactors_Get_X; +PyObject *f_Reactors_Get_kV; +PyObject *f_Reactors_Get_kvar; +PyObject *f_Reclosers_Get_GroundInst; +PyObject *f_Reclosers_Get_GroundTrip; +PyObject *f_Reclosers_Get_PhaseInst; +PyObject *f_Reclosers_Get_PhaseTrip; +PyObject *f_ReduceCkt_Get_Zmag; +PyObject *f_RegControls_Get_CTPrimary; +PyObject *f_RegControls_Get_Delay; +PyObject *f_RegControls_Get_ForwardBand; +PyObject *f_RegControls_Get_ForwardR; +PyObject *f_RegControls_Get_ForwardVreg; +PyObject *f_RegControls_Get_ForwardX; +PyObject *f_RegControls_Get_PTratio; +PyObject *f_RegControls_Get_ReverseBand; +PyObject *f_RegControls_Get_ReverseR; +PyObject *f_RegControls_Get_ReverseVreg; +PyObject *f_RegControls_Get_ReverseX; +PyObject *f_RegControls_Get_TapDelay; +PyObject *f_RegControls_Get_VoltageLimit; +PyObject *f_Sensors_Get_PctError; +PyObject *f_Sensors_Get_Weight; +PyObject *f_Sensors_Get_kVbase; +PyObject *f_Settings_Get_EmergVmaxpu; +PyObject *f_Settings_Get_EmergVminpu; +PyObject *f_Settings_Get_LossWeight; +PyObject *f_Settings_Get_NormVmaxpu; +PyObject *f_Settings_Get_NormVminpu; +PyObject *f_Settings_Get_PriceSignal; +PyObject *f_Settings_Get_UEweight; +PyObject *f_Solution_Get_Capkvar; +PyObject *f_Solution_Get_Frequency; +PyObject *f_Solution_Get_GenMult; +PyObject *f_Solution_Get_GenPF; +PyObject *f_Solution_Get_GenkW; +PyObject *f_Solution_Get_IntervalHrs; +PyObject *f_Solution_Get_LoadMult; +PyObject *f_Solution_Get_Process_Time; +PyObject *f_Solution_Get_Seconds; +PyObject *f_Solution_Get_StepSize; +PyObject *f_Solution_Get_Time_of_Step; +PyObject *f_Solution_Get_Tolerance; +PyObject *f_Solution_Get_Total_Time; +PyObject *f_Solution_Get_dblHour; +PyObject *f_Solution_Get_pctGrowth; +PyObject *f_Storages_Get_AmpLimit; +PyObject *f_Storages_Get_AmpLimitGain; +PyObject *f_Storages_Get_ChargeTrigger; +PyObject *f_Storages_Get_DischargeTrigger; +PyObject *f_Storages_Get_EffCharge; +PyObject *f_Storages_Get_EffDischarge; +PyObject *f_Storages_Get_Kp; +PyObject *f_Storages_Get_PF; +PyObject *f_Storages_Get_PITol; +PyObject *f_Storages_Get_SafeVoltage; +PyObject *f_Storages_Get_TimeChargeTrig; +PyObject *f_Storages_Get_kV; +PyObject *f_Storages_Get_kVA; +PyObject *f_Storages_Get_kVDC; +PyObject *f_Storages_Get_kW; +PyObject *f_Storages_Get_kWRated; +PyObject *f_Storages_Get_kWhRated; +PyObject *f_Storages_Get_kvar; +PyObject *f_Storages_Get_puSOC; +PyObject *f_SwtControls_Get_Delay; +PyObject *f_TSData_Get_DiaCable; +PyObject *f_TSData_Get_DiaIns; +PyObject *f_TSData_Get_DiaShield; +PyObject *f_TSData_Get_Diameter; +PyObject *f_TSData_Get_EmergAmps; +PyObject *f_TSData_Get_EpsR; +PyObject *f_TSData_Get_GMRac; +PyObject *f_TSData_Get_InsLayer; +PyObject *f_TSData_Get_NormAmps; +PyObject *f_TSData_Get_Rac; +PyObject *f_TSData_Get_Radius; +PyObject *f_TSData_Get_Rdc; +PyObject *f_TSData_Get_TapeLap; +PyObject *f_TSData_Get_TapeLayer; +PyObject *f_Transformers_Get_MaxTap; +PyObject *f_Transformers_Get_MinTap; +PyObject *f_Transformers_Get_R; +PyObject *f_Transformers_Get_RdcOhms; +PyObject *f_Transformers_Get_Rneut; +PyObject *f_Transformers_Get_Tap; +PyObject *f_Transformers_Get_Xhl; +PyObject *f_Transformers_Get_Xht; +PyObject *f_Transformers_Get_Xlt; +PyObject *f_Transformers_Get_Xneut; +PyObject *f_Transformers_Get_kV; +PyObject *f_Transformers_Get_kVA; +PyObject *f_Vsources_Get_AngleDeg; +PyObject *f_Vsources_Get_BasekV; +PyObject *f_Vsources_Get_Frequency; +PyObject *f_Vsources_Get_pu; +PyObject *f_WindGens_Get_Ag; +PyObject *f_WindGens_Get_Cp; +PyObject *f_WindGens_Get_Lamda; +PyObject *f_WindGens_Get_PF; +PyObject *f_WindGens_Get_PSS; +PyObject *f_WindGens_Get_QSS; +PyObject *f_WindGens_Get_RThev; +PyObject *f_WindGens_Get_Rad; +PyObject *f_WindGens_Get_VCutIn; +PyObject *f_WindGens_Get_VCutOut; +PyObject *f_WindGens_Get_Vss; +PyObject *f_WindGens_Get_WindSpeed; +PyObject *f_WindGens_Get_XThev; +PyObject *f_WindGens_Get_kV; +PyObject *f_WindGens_Get_kVA; +PyObject *f_WindGens_Get_kW; +PyObject *f_WindGens_Get_kvar; +PyObject *f_WindGens_Get_pd; +PyObject *f_WireData_Get_CapRadius; +PyObject *f_WireData_Get_Diameter; +PyObject *f_WireData_Get_EmergAmps; +PyObject *f_WireData_Get_GMRac; +PyObject *f_WireData_Get_NormAmps; +PyObject *f_WireData_Get_Rac; +PyObject *f_WireData_Get_Radius; +PyObject *f_WireData_Get_Rdc; +PyObject *f_XYCurves_Get_Xscale; +PyObject *f_XYCurves_Get_Xshift; +PyObject *f_XYCurves_Get_Yscale; +PyObject *f_XYCurves_Get_Yshift; +PyObject *f_XYCurves_Get_x; +PyObject *f_XYCurves_Get_y; +PyObject *f_Bus_Set_Latitude; +PyObject *f_Bus_Set_Longitude; +PyObject *f_Bus_Set_x; +PyObject *f_Bus_Set_y; +PyObject *f_CNData_Set_DiaCable; +PyObject *f_CNData_Set_DiaIns; +PyObject *f_CNData_Set_DiaStrand; +PyObject *f_CNData_Set_Diameter; +PyObject *f_CNData_Set_EmergAmps; +PyObject *f_CNData_Set_EpsR; +PyObject *f_CNData_Set_GMRac; +PyObject *f_CNData_Set_GmrStrand; +PyObject *f_CNData_Set_InsLayer; +PyObject *f_CNData_Set_NormAmps; +PyObject *f_CNData_Set_RStrand; +PyObject *f_CNData_Set_Rac; +PyObject *f_CNData_Set_Radius; +PyObject *f_CNData_Set_Rdc; +PyObject *f_CapControls_Set_CTratio; +PyObject *f_CapControls_Set_DeadTime; +PyObject *f_CapControls_Set_Delay; +PyObject *f_CapControls_Set_DelayOff; +PyObject *f_CapControls_Set_OFFSetting; +PyObject *f_CapControls_Set_ONSetting; +PyObject *f_CapControls_Set_PTratio; +PyObject *f_CapControls_Set_Vmax; +PyObject *f_CapControls_Set_Vmin; +PyObject *f_Capacitors_Set_kV; +PyObject *f_Capacitors_Set_kvar; +PyObject *f_CktElement_Set_EmergAmps; +PyObject *f_CktElement_Set_NormalAmps; +PyObject *f_CktElement_Set_VariableValue; +PyObject *f_Fuses_Set_Delay; +PyObject *f_Fuses_Set_RatedCurrent; +PyObject *f_GICSources_Set_EE; +PyObject *f_GICSources_Set_EN; +PyObject *f_GICSources_Set_Lat1; +PyObject *f_GICSources_Set_Lat2; +PyObject *f_GICSources_Set_Lon1; +PyObject *f_GICSources_Set_Lon2; +PyObject *f_GICSources_Set_Volts; +PyObject *f_Generators_Set_PF; +PyObject *f_Generators_Set_Vmaxpu; +PyObject *f_Generators_Set_Vminpu; +PyObject *f_Generators_Set_kV; +PyObject *f_Generators_Set_kVArated; +PyObject *f_Generators_Set_kW; +PyObject *f_Generators_Set_kva; +PyObject *f_Generators_Set_kvar; +PyObject *f_ISources_Set_Amps; +PyObject *f_ISources_Set_AngleDeg; +PyObject *f_ISources_Set_Frequency; +PyObject *f_LineCodes_Set_C0; +PyObject *f_LineCodes_Set_C1; +PyObject *f_LineCodes_Set_EmergAmps; +PyObject *f_LineCodes_Set_NormAmps; +PyObject *f_LineCodes_Set_R0; +PyObject *f_LineCodes_Set_R1; +PyObject *f_LineCodes_Set_X0; +PyObject *f_LineCodes_Set_X1; +PyObject *f_LineGeometries_Set_EmergAmps; +PyObject *f_LineGeometries_Set_NormAmps; +PyObject *f_LineGeometries_Set_RhoEarth; +PyObject *f_Lines_Set_C0; +PyObject *f_Lines_Set_C1; +PyObject *f_Lines_Set_EmergAmps; +PyObject *f_Lines_Set_Length; +PyObject *f_Lines_Set_NormAmps; +PyObject *f_Lines_Set_R0; +PyObject *f_Lines_Set_R1; +PyObject *f_Lines_Set_Rg; +PyObject *f_Lines_Set_Rho; +PyObject *f_Lines_Set_X0; +PyObject *f_Lines_Set_X1; +PyObject *f_Lines_Set_Xg; +PyObject *f_LoadShapes_Set_HrInterval; +PyObject *f_LoadShapes_Set_MaxP; +PyObject *f_LoadShapes_Set_MaxQ; +PyObject *f_LoadShapes_Set_MinInterval; +PyObject *f_LoadShapes_Set_PBase; +PyObject *f_LoadShapes_Set_Qbase; +PyObject *f_LoadShapes_Set_SInterval; +PyObject *f_Loads_Set_AllocationFactor; +PyObject *f_Loads_Set_CVRvars; +PyObject *f_Loads_Set_CVRwatts; +PyObject *f_Loads_Set_Cfactor; +PyObject *f_Loads_Set_PF; +PyObject *f_Loads_Set_PctMean; +PyObject *f_Loads_Set_PctStdDev; +PyObject *f_Loads_Set_RelWeight; +PyObject *f_Loads_Set_Rneut; +PyObject *f_Loads_Set_Vmaxpu; +PyObject *f_Loads_Set_Vminemerg; +PyObject *f_Loads_Set_Vminnorm; +PyObject *f_Loads_Set_Vminpu; +PyObject *f_Loads_Set_Xneut; +PyObject *f_Loads_Set_kV; +PyObject *f_Loads_Set_kW; +PyObject *f_Loads_Set_kva; +PyObject *f_Loads_Set_kvar; +PyObject *f_Loads_Set_kwh; +PyObject *f_Loads_Set_kwhdays; +PyObject *f_Loads_Set_pctSeriesRL; +PyObject *f_Loads_Set_xfkVA; +PyObject *f_PDElements_Set_FaultRate; +PyObject *f_PDElements_Set_RepairTime; +PyObject *f_PDElements_Set_pctPermanent; +PyObject *f_PVSystems_Set_Irradiance; +PyObject *f_PVSystems_Set_PF; +PyObject *f_PVSystems_Set_Pmpp; +PyObject *f_PVSystems_Set_kVArated; +PyObject *f_PVSystems_Set_kvar; +PyObject *f_Reactors_Set_LmH; +PyObject *f_Reactors_Set_R; +PyObject *f_Reactors_Set_Rp; +PyObject *f_Reactors_Set_X; +PyObject *f_Reactors_Set_kV; +PyObject *f_Reactors_Set_kvar; +PyObject *f_Reclosers_Set_GroundInst; +PyObject *f_Reclosers_Set_GroundTrip; +PyObject *f_Reclosers_Set_PhaseInst; +PyObject *f_Reclosers_Set_PhaseTrip; +PyObject *f_ReduceCkt_Set_Zmag; +PyObject *f_RegControls_Set_CTPrimary; +PyObject *f_RegControls_Set_Delay; +PyObject *f_RegControls_Set_ForwardBand; +PyObject *f_RegControls_Set_ForwardR; +PyObject *f_RegControls_Set_ForwardVreg; +PyObject *f_RegControls_Set_ForwardX; +PyObject *f_RegControls_Set_PTratio; +PyObject *f_RegControls_Set_ReverseBand; +PyObject *f_RegControls_Set_ReverseR; +PyObject *f_RegControls_Set_ReverseVreg; +PyObject *f_RegControls_Set_ReverseX; +PyObject *f_RegControls_Set_TapDelay; +PyObject *f_RegControls_Set_VoltageLimit; +PyObject *f_Sensors_Set_PctError; +PyObject *f_Sensors_Set_Weight; +PyObject *f_Sensors_Set_kVbase; +PyObject *f_Settings_Set_AllocationFactors; +PyObject *f_Settings_Set_EmergVmaxpu; +PyObject *f_Settings_Set_EmergVminpu; +PyObject *f_Settings_Set_LossWeight; +PyObject *f_Settings_Set_NormVmaxpu; +PyObject *f_Settings_Set_NormVminpu; +PyObject *f_Settings_Set_PriceSignal; +PyObject *f_Settings_Set_UEweight; +PyObject *f_Solution_Set_Capkvar; +PyObject *f_Solution_Set_Frequency; +PyObject *f_Solution_Set_GenMult; +PyObject *f_Solution_Set_GenPF; +PyObject *f_Solution_Set_GenkW; +PyObject *f_Solution_Set_IntervalHrs; +PyObject *f_Solution_Set_LoadMult; +PyObject *f_Solution_Set_Seconds; +PyObject *f_Solution_Set_StepSize; +PyObject *f_Solution_Set_StepsizeHr; +PyObject *f_Solution_Set_StepsizeMin; +PyObject *f_Solution_Set_Tolerance; +PyObject *f_Solution_Set_Total_Time; +PyObject *f_Solution_Set_dblHour; +PyObject *f_Solution_Set_pctGrowth; +PyObject *f_Storages_Set_AmpLimit; +PyObject *f_Storages_Set_AmpLimitGain; +PyObject *f_Storages_Set_ChargeTrigger; +PyObject *f_Storages_Set_DischargeTrigger; +PyObject *f_Storages_Set_EffCharge; +PyObject *f_Storages_Set_EffDischarge; +PyObject *f_Storages_Set_Kp; +PyObject *f_Storages_Set_PF; +PyObject *f_Storages_Set_PITol; +PyObject *f_Storages_Set_SafeVoltage; +PyObject *f_Storages_Set_TimeChargeTrig; +PyObject *f_Storages_Set_kV; +PyObject *f_Storages_Set_kVA; +PyObject *f_Storages_Set_kVDC; +PyObject *f_Storages_Set_kW; +PyObject *f_Storages_Set_kWRated; +PyObject *f_Storages_Set_kWhRated; +PyObject *f_Storages_Set_kvar; +PyObject *f_Storages_Set_puSOC; +PyObject *f_SwtControls_Set_Delay; +PyObject *f_TSData_Set_DiaCable; +PyObject *f_TSData_Set_DiaIns; +PyObject *f_TSData_Set_DiaShield; +PyObject *f_TSData_Set_Diameter; +PyObject *f_TSData_Set_EmergAmps; +PyObject *f_TSData_Set_EpsR; +PyObject *f_TSData_Set_GMRac; +PyObject *f_TSData_Set_InsLayer; +PyObject *f_TSData_Set_NormAmps; +PyObject *f_TSData_Set_Rac; +PyObject *f_TSData_Set_Radius; +PyObject *f_TSData_Set_Rdc; +PyObject *f_TSData_Set_TapeLap; +PyObject *f_TSData_Set_TapeLayer; +PyObject *f_Transformers_Set_MaxTap; +PyObject *f_Transformers_Set_MinTap; +PyObject *f_Transformers_Set_R; +PyObject *f_Transformers_Set_RdcOhms; +PyObject *f_Transformers_Set_Rneut; +PyObject *f_Transformers_Set_Tap; +PyObject *f_Transformers_Set_Xhl; +PyObject *f_Transformers_Set_Xht; +PyObject *f_Transformers_Set_Xlt; +PyObject *f_Transformers_Set_Xneut; +PyObject *f_Transformers_Set_kV; +PyObject *f_Transformers_Set_kVA; +PyObject *f_Vsources_Set_AngleDeg; +PyObject *f_Vsources_Set_BasekV; +PyObject *f_Vsources_Set_Frequency; +PyObject *f_Vsources_Set_pu; +PyObject *f_WindGens_Set_Ag; +PyObject *f_WindGens_Set_Cp; +PyObject *f_WindGens_Set_Lamda; +PyObject *f_WindGens_Set_PF; +PyObject *f_WindGens_Set_PSS; +PyObject *f_WindGens_Set_QSS; +PyObject *f_WindGens_Set_RThev; +PyObject *f_WindGens_Set_Rad; +PyObject *f_WindGens_Set_VCutIn; +PyObject *f_WindGens_Set_VCutOut; +PyObject *f_WindGens_Set_Vss; +PyObject *f_WindGens_Set_WindSpeed; +PyObject *f_WindGens_Set_XThev; +PyObject *f_WindGens_Set_kV; +PyObject *f_WindGens_Set_kVA; +PyObject *f_WindGens_Set_kW; +PyObject *f_WindGens_Set_kvar; +PyObject *f_WindGens_Set_pd; +PyObject *f_WireData_Set_CapRadius; +PyObject *f_WireData_Set_Diameter; +PyObject *f_WireData_Set_EmergAmps; +PyObject *f_WireData_Set_GMRac; +PyObject *f_WireData_Set_NormAmps; +PyObject *f_WireData_Set_Rac; +PyObject *f_WireData_Set_Radius; +PyObject *f_WireData_Set_Rdc; +PyObject *f_XYCurves_Set_Xscale; +PyObject *f_XYCurves_Set_Xshift; +PyObject *f_XYCurves_Set_Yscale; +PyObject *f_XYCurves_Set_Yshift; +PyObject *f_XYCurves_Set_x; +PyObject *f_XYCurves_Set_y; +PyObject *f_YMatrix_IncrementTime; +PyObject *f_Bus_Get_Coorddefined; +PyObject *f_Bus_ZscRefresh; +PyObject *f_CapControls_Get_UseVoltOverride; +PyObject *f_Capacitors_AddStep; +PyObject *f_Capacitors_Get_IsDelta; +PyObject *f_Capacitors_SubtractStep; +PyObject *f_CktElement_Get_Enabled; +PyObject *f_CktElement_Get_HasOCPDevice; +PyObject *f_CktElement_Get_HasSwitchControl; +PyObject *f_CktElement_Get_HasVoltControl; +PyObject *f_CktElement_Get_IsIsolated; +PyObject *f_DSS_Get_AllowChangeDir; +PyObject *f_DSS_Get_AllowDOScmd; +PyObject *f_DSS_Get_AllowEditor; +PyObject *f_DSS_Get_AllowForms; +PyObject *f_DSS_Get_COMErrorResults; +PyObject *f_DSS_Get_EnableArrayDimensions; +PyObject *f_DSS_Get_LegacyModels; +PyObject *f_Error_Get_EarlyAbort; +PyObject *f_Error_Get_ExtendedErrors; +PyObject *f_Fuses_IsBlown; +PyObject *f_Generators_Get_ForcedON; +PyObject *f_Generators_Get_IsDelta; +PyObject *f_LineCodes_Get_IsZ1Z0; +PyObject *f_LineGeometries_Get_Reduce; +PyObject *f_Lines_Get_IsSwitch; +PyObject *f_LoadShapes_Get_UseActual; +PyObject *f_Loads_Get_IsDelta; +PyObject *f_Meters_Get_DIFilesAreOpen; +PyObject *f_PDElements_Get_IsShunt; +PyObject *f_Parser_Get_AutoIncrement; +PyObject *f_Reactors_Get_IsDelta; +PyObject *f_Reactors_Get_Parallel; +PyObject *f_ReduceCkt_Get_KeepLoad; +PyObject *f_RegControls_Get_IsInverseTime; +PyObject *f_RegControls_Get_IsReversible; +PyObject *f_Sensors_Get_IsDelta; +PyObject *f_Sensors_Get_ReverseDelta; +PyObject *f_Settings_Get_AllowDuplicates; +PyObject *f_Settings_Get_ControlTrace; +PyObject *f_Settings_Get_LoadsTerminalCheck; +PyObject *f_Settings_Get_Trapezoidal; +PyObject *f_Settings_Get_ZoneLock; +PyObject *f_Solution_Get_ControlActionsDone; +PyObject *f_Solution_Get_Converged; +PyObject *f_Solution_Get_SystemYChanged; +PyObject *f_Storages_Get_LimitCurrent; +PyObject *f_SwtControls_Get_IsLocked; +PyObject *f_Transformers_Get_IsDelta; +PyObject *f_WindGens_Get_IsDelta; +PyObject *f_YMatrix_CheckConvergence; +PyObject *f_YMatrix_Get_LoadsNeedUpdating; +PyObject *f_YMatrix_Get_SolutionAbort; +PyObject *f_YMatrix_Get_SolutionInitialized; +PyObject *f_YMatrix_Get_SystemYChanged; +PyObject *f_YMatrix_Get_UseAuxCurrents; +PyObject *f_ZIP_Contains; +PyObject *f_DSS_Start; +PyObject *f_Settings_Get_Flag; +PyObject *f_CktElement_IsOpen; +PyObject *f_CapControls_Set_UseVoltOverride; +PyObject *f_Capacitors_Set_IsDelta; +PyObject *f_CktElement_Set_Enabled; +PyObject *f_DSS_Set_AllowChangeDir; +PyObject *f_DSS_Set_AllowDOScmd; +PyObject *f_DSS_Set_AllowEditor; +PyObject *f_DSS_Set_AllowForms; +PyObject *f_DSS_Set_COMErrorResults; +PyObject *f_DSS_Set_EnableArrayDimensions; +PyObject *f_DSS_Set_LegacyModels; +PyObject *f_Error_Set_EarlyAbort; +PyObject *f_Error_Set_ExtendedErrors; +PyObject *f_Generators_Set_ForcedON; +PyObject *f_Generators_Set_IsDelta; +PyObject *f_LineGeometries_Set_Reduce; +PyObject *f_Lines_Set_IsSwitch; +PyObject *f_LoadShapes_Set_UseActual; +PyObject *f_Loads_Set_IsDelta; +PyObject *f_Meters_DoReliabilityCalc; +PyObject *f_Parser_Set_AutoIncrement; +PyObject *f_Reactors_Set_IsDelta; +PyObject *f_Reactors_Set_Parallel; +PyObject *f_ReduceCkt_Set_KeepLoad; +PyObject *f_RegControls_Set_IsInverseTime; +PyObject *f_RegControls_Set_IsReversible; +PyObject *f_Sensors_Set_IsDelta; +PyObject *f_Sensors_Set_ReverseDelta; +PyObject *f_Settings_Set_AllowDuplicates; +PyObject *f_Settings_Set_ControlTrace; +PyObject *f_Settings_Set_LoadsTerminalCheck; +PyObject *f_Settings_Set_Trapezoidal; +PyObject *f_Settings_Set_ZoneLock; +PyObject *f_Solution_Set_ControlActionsDone; +PyObject *f_Solution_Set_Converged; +PyObject *f_Storages_Set_LimitCurrent; +PyObject *f_SwtControls_Set_IsLocked; +PyObject *f_Transformers_Set_IsDelta; +PyObject *f_WindGens_Set_IsDelta; +PyObject *f_YMatrix_Set_LoadsNeedUpdating; +PyObject *f_YMatrix_Set_SolutionAbort; +PyObject *f_YMatrix_Set_SolutionInitialized; +PyObject *f_YMatrix_Set_SystemYChanged; +PyObject *f_YMatrix_Set_UseAuxCurrents; +PyObject *f_CapControls_Reset; +PyObject *f_Capacitors_Close; +PyObject *f_Capacitors_Open; +PyObject *f_Circuit_EndOfTimeStepUpdate; +PyObject *f_Circuit_Sample; +PyObject *f_Circuit_SaveSample; +PyObject *f_Circuit_UpdateStorage; +PyObject *f_CtrlQueue_ClearActions; +PyObject *f_CtrlQueue_ClearQueue; +PyObject *f_CtrlQueue_DoAllQueue; +PyObject *f_CtrlQueue_Show; +PyObject *f_DSSProgress_Close; +PyObject *f_DSSProgress_Show; +PyObject *f_DSS_ClearAll; +PyObject *f_DSS_DisposeGRData; +PyObject *f_DSS_Reset; +PyObject *f_DSS_ResetStringBuffer; +PyObject *f_ctx_Dispose; +PyObject *f_Fuses_Close; +PyObject *f_Fuses_Open; +PyObject *f_Fuses_Reset; +PyObject *f_LoadShapes_Normalize; +PyObject *f_LoadShapes_UseFloat32; +PyObject *f_LoadShapes_UseFloat64; +PyObject *f_Meters_CloseAllDIFiles; +PyObject *f_Meters_OpenAllDIFiles; +PyObject *f_Meters_Reset; +PyObject *f_Meters_ResetAll; +PyObject *f_Meters_Sample; +PyObject *f_Meters_SampleAll; +PyObject *f_Meters_Save; +PyObject *f_Meters_SaveAll; +PyObject *f_Monitors_Process; +PyObject *f_Monitors_ProcessAll; +PyObject *f_Monitors_Reset; +PyObject *f_Monitors_ResetAll; +PyObject *f_Monitors_Sample; +PyObject *f_Monitors_SampleAll; +PyObject *f_Monitors_Save; +PyObject *f_Monitors_SaveAll; +PyObject *f_Monitors_Show; +PyObject *f_Parallel_CreateActor; +PyObject *f_Parallel_Wait; +PyObject *f_Parser_ResetDelimiters; +PyObject *f_Reclosers_Close; +PyObject *f_Reclosers_Open; +PyObject *f_Reclosers_Reset; +PyObject *f_ReduceCkt_Do1phLaterals; +PyObject *f_ReduceCkt_DoBranchRemove; +PyObject *f_ReduceCkt_DoDangling; +PyObject *f_ReduceCkt_DoDefault; +PyObject *f_ReduceCkt_DoLoopBreak; +PyObject *f_ReduceCkt_DoParallelLines; +PyObject *f_ReduceCkt_DoShortLines; +PyObject *f_ReduceCkt_DoSwitches; +PyObject *f_RegControls_Reset; +PyObject *f_Relays_Close; +PyObject *f_Relays_Open; +PyObject *f_Relays_Reset; +PyObject *f_Sensors_Reset; +PyObject *f_Sensors_ResetAll; +PyObject *f_Solution_CheckControls; +PyObject *f_Solution_CheckFaultStatus; +PyObject *f_Solution_Cleanup; +PyObject *f_Solution_DoControlActions; +PyObject *f_Solution_FinishTimeStep; +PyObject *f_Solution_InitSnap; +PyObject *f_Solution_SampleControlDevices; +PyObject *f_Solution_Sample_DoControlActions; +PyObject *f_Solution_Solve; +PyObject *f_Solution_SolveAll; +PyObject *f_Solution_SolveDirect; +PyObject *f_Solution_SolveNoControl; +PyObject *f_Solution_SolvePflow; +PyObject *f_Solution_SolvePlusControl; +PyObject *f_Solution_SolveSnap; +PyObject *f_SwtControls_Reset; +PyObject *f_YMatrix_GetPCInjCurr; +PyObject *f_YMatrix_GetSourceInjCurrents; +PyObject *f_YMatrix_IntegratePCStates; +PyObject *f_YMatrix_SetGeneratordQdV; +PyObject *f_YMatrix_ZeroInjCurr; +PyObject *f_ZIP_Close; diff --git a/src/bench.py b/src/bench.py new file mode 100644 index 0000000..eb8f1e2 --- /dev/null +++ b/src/bench.py @@ -0,0 +1,82 @@ +from _faststr import addr_to_str, addr_to_strs, AltDSSStrFunc, AltDSSStrListFunc +from dss import dss, api_util, DSSException + +dss('redirect ../../electricdss-tst/Version8/Distrib/IEEETestCases/8500-Node/Master.dss') + +lib = api_util.lib +lib_unpatched = api_util.lib_unpatched +ffi = api_util.ffi +circ = dss.ActiveCircuit +bus = circ.ActiveBus + +def arrayversion1(): + ptr = ffi.new('char***') + cnt = ffi.new('int32_t[4]') + lib.Circuit_Get_AllBusNames(ptr, cnt) + return addr_to_strs(int(ffi.cast('uintptr_t', ptr[0])), int(cnt[0])) + +arrayversion0 = lambda: circ.AllBusNames + +arrayversion2 = AltDSSStrListFunc( + int(ffi.cast('uintptr_t', api_util.ctx)), # ctx + int(ffi.cast('uintptr_t', api_util._errorPtr)), # errorPtr + int(ffi.cast('uintptr_t', ffi.addressof(lib_unpatched, 'ctx_Circuit_Get_AllBusNames'))), # func + int(ffi.cast('uintptr_t', ffi.addressof(lib_unpatched, 'ctx_Error_Get_Description'))), # errorDescFunc + int(ffi.cast('uintptr_t', ffi.addressof(lib_unpatched, 'DSS_Dispose_PPAnsiChar'))), # disposeFunc + DSSException, # DSSExceptionType +) + + + +# &dssCtx, &errorPtr, &func, &errorDescFunc, &f->DSSExceptionType +version2 = AltDSSStrFunc( + int(ffi.cast('uintptr_t', api_util.ctx)), # ctx + int(ffi.cast('uintptr_t', api_util._errorPtr)), # errorPtr + int(ffi.cast('uintptr_t', ffi.addressof(lib_unpatched, 'ctx_Bus_Get_Name'))), # func + int(ffi.cast('uintptr_t', ffi.addressof(lib_unpatched, 'ctx_Error_Get_Description'))), # errorDescFunc + DSSException, # DSSExceptionType +) + +def version1(): + return addr_to_str(int(ffi.cast('uintptr_t', lib.Bus_Get_Name()))) + # v0 = lib.DSS_Get_Version() + # v = int(ffi.cast('uintptr_t', v0)) + # try: + # return addr_to_str(v) + # except: + # print(hex(int(v))) + # print(v0) + # raise + + +version0 = lambda: bus.Name + + +from timeit import timeit + +print('Single element') +t0 = timeit(version0) +t1 = timeit(version1) +t2 = timeit(version2) +print(t0) +print(t1) +print(t2) +print(100 * (t1 / t0)) +print(100 * (t2 / t0)) + +print() +print('Arrays') +t0 = timeit(arrayversion0, number=1000) +t1 = timeit(arrayversion1, number=1000) +t2 = timeit(arrayversion2, number=1000) + +print(t0) +print(t1) +print(t2) +print(100 * (t1 / t0)) +print(100 * (t2 / t0)) + +print(version2()) +res = arrayversion2() +print(res[:10]) +print(res[-10:]) \ No newline at end of file