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