From 8281e1e1ca49c186aea10a93f3354560cafffd0a Mon Sep 17 00:00:00 2001
From: Boris Basic <boris.basic@edf.fr>
Date: Wed, 29 Mar 2023 11:01:18 +0200
Subject: [PATCH] Telemac on Windows now requires Python 3.10 as a prerequisite

---
 README.md                                     |   10 +-
 build-telemac-deps.bat                        |  212 +-
 config/pysource.win.bat                       |   16 +-
 config/pysource.win.debug.bat                 |   16 +-
 python_requirements.txt                       |   19 +
 pythonsdk/include/Python-ast.h                |  637 -----
 pythonsdk/include/Python.h                    |  159 --
 pythonsdk/include/abstract.h                  | 1109 --------
 pythonsdk/include/accu.h                      |   37 -
 pythonsdk/include/asdl.h                      |   46 -
 pythonsdk/include/ast.h                       |   29 -
 pythonsdk/include/bitset.h                    |   32 -
 pythonsdk/include/bltinmodule.h               |   14 -
 pythonsdk/include/boolobject.h                |   34 -
 pythonsdk/include/bytearrayobject.h           |   62 -
 pythonsdk/include/bytes_methods.h             |   69 -
 pythonsdk/include/bytesobject.h               |  224 --
 pythonsdk/include/cellobject.h                |   29 -
 pythonsdk/include/ceval.h                     |  239 --
 pythonsdk/include/classobject.h               |   58 -
 pythonsdk/include/code.h                      |  157 --
 pythonsdk/include/codecs.h                    |  240 --
 pythonsdk/include/compile.h                   |   93 -
 pythonsdk/include/complexobject.h             |   69 -
 pythonsdk/include/context.h                   |   84 -
 pythonsdk/include/datetime.h                  |  273 --
 pythonsdk/include/descrobject.h               |  110 -
 pythonsdk/include/dictobject.h                |  179 --
 pythonsdk/include/dtoa.h                      |   19 -
 pythonsdk/include/dynamic_annotations.h       |  499 ----
 pythonsdk/include/enumobject.h                |   17 -
 pythonsdk/include/errcode.h                   |   38 -
 pythonsdk/include/eval.h                      |   37 -
 pythonsdk/include/fileobject.h                |   55 -
 pythonsdk/include/fileutils.h                 |  201 --
 pythonsdk/include/floatobject.h               |  130 -
 pythonsdk/include/frameobject.h               |   93 -
 pythonsdk/include/funcobject.h                |  103 -
 pythonsdk/include/genobject.h                 |  105 -
 pythonsdk/include/graminit.h                  |   89 -
 pythonsdk/include/grammar.h                   |   94 -
 pythonsdk/include/import.h                    |  151 --
 pythonsdk/include/internal/ceval.h            |   52 -
 pythonsdk/include/internal/condvar.h          |   91 -
 pythonsdk/include/internal/context.h          |   41 -
 pythonsdk/include/internal/gil.h              |   46 -
 pythonsdk/include/internal/hamt.h             |  113 -
 pythonsdk/include/internal/hash.h             |    6 -
 pythonsdk/include/internal/import.h           |    6 -
 pythonsdk/include/internal/mem.h              |  175 --
 pythonsdk/include/internal/pygetopt.h         |   19 -
 pythonsdk/include/internal/pystate.h          |  135 -
 pythonsdk/include/internal/warnings.h         |   21 -
 pythonsdk/include/intrcheck.h                 |   33 -
 pythonsdk/include/iterobject.h                |   25 -
 pythonsdk/include/listobject.h                |   81 -
 pythonsdk/include/longintrepr.h               |   99 -
 pythonsdk/include/longobject.h                |  220 --
 pythonsdk/include/marshal.h                   |   28 -
 pythonsdk/include/memoryobject.h              |   72 -
 pythonsdk/include/metagrammar.h               |   18 -
 pythonsdk/include/methodobject.h              |  135 -
 pythonsdk/include/modsupport.h                |  229 --
 pythonsdk/include/moduleobject.h              |   89 -
 pythonsdk/include/namespaceobject.h           |   19 -
 pythonsdk/include/node.h                      |   44 -
 pythonsdk/include/object.h                    | 1105 --------
 pythonsdk/include/objimpl.h                   |  374 ---
 pythonsdk/include/odictobject.h               |   43 -
 pythonsdk/include/opcode.h                    |  147 --
 pythonsdk/include/osdefs.h                    |   47 -
 pythonsdk/include/osmodule.h                  |   17 -
 pythonsdk/include/parsetok.h                  |  108 -
 pythonsdk/include/patchlevel.h                |   35 -
 pythonsdk/include/pgen.h                      |   18 -
 pythonsdk/include/pgenheaders.h               |   43 -
 pythonsdk/include/py_curses.h                 |  159 --
 pythonsdk/include/pyarena.h                   |   64 -
 pythonsdk/include/pyatomic.h                  |  535 ----
 pythonsdk/include/pycapsule.h                 |   59 -
 pythonsdk/include/pyconfig.h                  |  684 -----
 pythonsdk/include/pyctype.h                   |   33 -
 pythonsdk/include/pydebug.h                   |   40 -
 pythonsdk/include/pydtrace.h                  |   57 -
 pythonsdk/include/pyerrors.h                  |  504 ----
 pythonsdk/include/pyexpat.h                   |   55 -
 pythonsdk/include/pyfpe.h                     |   12 -
 pythonsdk/include/pyhash.h                    |  145 -
 pythonsdk/include/pylifecycle.h               |  238 --
 pythonsdk/include/pymacconfig.h               |  102 -
 pythonsdk/include/pymacro.h                   |  100 -
 pythonsdk/include/pymath.h                    |  230 --
 pythonsdk/include/pymem.h                     |  244 --
 pythonsdk/include/pyport.h                    |  793 ------
 pythonsdk/include/pystate.h                   |  456 ----
 pythonsdk/include/pystrcmp.h                  |   23 -
 pythonsdk/include/pystrhex.h                  |   19 -
 pythonsdk/include/pystrtod.h                  |   45 -
 pythonsdk/include/pythonrun.h                 |  181 --
 pythonsdk/include/pythread.h                  |  155 --
 pythonsdk/include/pytime.h                    |  246 --
 pythonsdk/include/rangeobject.h               |   27 -
 pythonsdk/include/setobject.h                 |  108 -
 pythonsdk/include/sliceobject.h               |   63 -
 pythonsdk/include/structmember.h              |   74 -
 pythonsdk/include/structseq.h                 |   49 -
 pythonsdk/include/symtable.h                  |  118 -
 pythonsdk/include/sysmodule.h                 |   48 -
 pythonsdk/include/token.h                     |   92 -
 pythonsdk/include/traceback.h                 |  119 -
 pythonsdk/include/tupleobject.h               |   73 -
 pythonsdk/include/typeslots.h                 |   85 -
 pythonsdk/include/ucnhash.h                   |   36 -
 pythonsdk/include/unicodeobject.h             | 2334 -----------------
 pythonsdk/include/warnings.h                  |   67 -
 pythonsdk/include/weakrefobject.h             |   86 -
 pythonsdk/libs/libpython37.a                  |  Bin 1232690 -> 0 bytes
 pythonsdk/libs/python3.lib                    |  Bin 170564 -> 0 bytes
 pythonsdk/libs/python37.lib                   |  Bin 342420 -> 0 bytes
 requirements.txt                              |   21 -
 wheels/Fiona-1.8.21-cp310-cp310-win_amd64.whl |    3 +
 wheels/Fiona-1.8.21-cp37-cp37m-win_amd64.whl  |    3 -
 wheels/GDAL-3.4.2-cp37-cp37m-win_amd64.whl    |    3 -
 wheels/GDAL-3.4.3-cp310-cp310-win_amd64.whl   |    3 +
 ...apely-1.8.1.post1-cp37-cp37m-win_amd64.whl |    3 -
 .../Shapely-1.8.2-cp310-cp310-win_amd64.whl   |    3 +
 .../rasterio-1.2.10-cp310-cp310-win_amd64.whl |    3 +
 .../rasterio-1.2.10-cp37-cp37m-win_amd64.whl  |    3 -
 128 files changed, 157 insertions(+), 18067 deletions(-)
 create mode 100644 python_requirements.txt
 delete mode 100644 pythonsdk/include/Python-ast.h
 delete mode 100644 pythonsdk/include/Python.h
 delete mode 100644 pythonsdk/include/abstract.h
 delete mode 100644 pythonsdk/include/accu.h
 delete mode 100644 pythonsdk/include/asdl.h
 delete mode 100644 pythonsdk/include/ast.h
 delete mode 100644 pythonsdk/include/bitset.h
 delete mode 100644 pythonsdk/include/bltinmodule.h
 delete mode 100644 pythonsdk/include/boolobject.h
 delete mode 100644 pythonsdk/include/bytearrayobject.h
 delete mode 100644 pythonsdk/include/bytes_methods.h
 delete mode 100644 pythonsdk/include/bytesobject.h
 delete mode 100644 pythonsdk/include/cellobject.h
 delete mode 100644 pythonsdk/include/ceval.h
 delete mode 100644 pythonsdk/include/classobject.h
 delete mode 100644 pythonsdk/include/code.h
 delete mode 100644 pythonsdk/include/codecs.h
 delete mode 100644 pythonsdk/include/compile.h
 delete mode 100644 pythonsdk/include/complexobject.h
 delete mode 100644 pythonsdk/include/context.h
 delete mode 100644 pythonsdk/include/datetime.h
 delete mode 100644 pythonsdk/include/descrobject.h
 delete mode 100644 pythonsdk/include/dictobject.h
 delete mode 100644 pythonsdk/include/dtoa.h
 delete mode 100644 pythonsdk/include/dynamic_annotations.h
 delete mode 100644 pythonsdk/include/enumobject.h
 delete mode 100644 pythonsdk/include/errcode.h
 delete mode 100644 pythonsdk/include/eval.h
 delete mode 100644 pythonsdk/include/fileobject.h
 delete mode 100644 pythonsdk/include/fileutils.h
 delete mode 100644 pythonsdk/include/floatobject.h
 delete mode 100644 pythonsdk/include/frameobject.h
 delete mode 100644 pythonsdk/include/funcobject.h
 delete mode 100644 pythonsdk/include/genobject.h
 delete mode 100644 pythonsdk/include/graminit.h
 delete mode 100644 pythonsdk/include/grammar.h
 delete mode 100644 pythonsdk/include/import.h
 delete mode 100644 pythonsdk/include/internal/ceval.h
 delete mode 100644 pythonsdk/include/internal/condvar.h
 delete mode 100644 pythonsdk/include/internal/context.h
 delete mode 100644 pythonsdk/include/internal/gil.h
 delete mode 100644 pythonsdk/include/internal/hamt.h
 delete mode 100644 pythonsdk/include/internal/hash.h
 delete mode 100644 pythonsdk/include/internal/import.h
 delete mode 100644 pythonsdk/include/internal/mem.h
 delete mode 100644 pythonsdk/include/internal/pygetopt.h
 delete mode 100644 pythonsdk/include/internal/pystate.h
 delete mode 100644 pythonsdk/include/internal/warnings.h
 delete mode 100644 pythonsdk/include/intrcheck.h
 delete mode 100644 pythonsdk/include/iterobject.h
 delete mode 100644 pythonsdk/include/listobject.h
 delete mode 100644 pythonsdk/include/longintrepr.h
 delete mode 100644 pythonsdk/include/longobject.h
 delete mode 100644 pythonsdk/include/marshal.h
 delete mode 100644 pythonsdk/include/memoryobject.h
 delete mode 100644 pythonsdk/include/metagrammar.h
 delete mode 100644 pythonsdk/include/methodobject.h
 delete mode 100644 pythonsdk/include/modsupport.h
 delete mode 100644 pythonsdk/include/moduleobject.h
 delete mode 100644 pythonsdk/include/namespaceobject.h
 delete mode 100644 pythonsdk/include/node.h
 delete mode 100644 pythonsdk/include/object.h
 delete mode 100644 pythonsdk/include/objimpl.h
 delete mode 100644 pythonsdk/include/odictobject.h
 delete mode 100644 pythonsdk/include/opcode.h
 delete mode 100644 pythonsdk/include/osdefs.h
 delete mode 100644 pythonsdk/include/osmodule.h
 delete mode 100644 pythonsdk/include/parsetok.h
 delete mode 100644 pythonsdk/include/patchlevel.h
 delete mode 100644 pythonsdk/include/pgen.h
 delete mode 100644 pythonsdk/include/pgenheaders.h
 delete mode 100644 pythonsdk/include/py_curses.h
 delete mode 100644 pythonsdk/include/pyarena.h
 delete mode 100644 pythonsdk/include/pyatomic.h
 delete mode 100644 pythonsdk/include/pycapsule.h
 delete mode 100644 pythonsdk/include/pyconfig.h
 delete mode 100644 pythonsdk/include/pyctype.h
 delete mode 100644 pythonsdk/include/pydebug.h
 delete mode 100644 pythonsdk/include/pydtrace.h
 delete mode 100644 pythonsdk/include/pyerrors.h
 delete mode 100644 pythonsdk/include/pyexpat.h
 delete mode 100644 pythonsdk/include/pyfpe.h
 delete mode 100644 pythonsdk/include/pyhash.h
 delete mode 100644 pythonsdk/include/pylifecycle.h
 delete mode 100644 pythonsdk/include/pymacconfig.h
 delete mode 100644 pythonsdk/include/pymacro.h
 delete mode 100644 pythonsdk/include/pymath.h
 delete mode 100644 pythonsdk/include/pymem.h
 delete mode 100644 pythonsdk/include/pyport.h
 delete mode 100644 pythonsdk/include/pystate.h
 delete mode 100644 pythonsdk/include/pystrcmp.h
 delete mode 100644 pythonsdk/include/pystrhex.h
 delete mode 100644 pythonsdk/include/pystrtod.h
 delete mode 100644 pythonsdk/include/pythonrun.h
 delete mode 100644 pythonsdk/include/pythread.h
 delete mode 100644 pythonsdk/include/pytime.h
 delete mode 100644 pythonsdk/include/rangeobject.h
 delete mode 100644 pythonsdk/include/setobject.h
 delete mode 100644 pythonsdk/include/sliceobject.h
 delete mode 100644 pythonsdk/include/structmember.h
 delete mode 100644 pythonsdk/include/structseq.h
 delete mode 100644 pythonsdk/include/symtable.h
 delete mode 100644 pythonsdk/include/sysmodule.h
 delete mode 100644 pythonsdk/include/token.h
 delete mode 100644 pythonsdk/include/traceback.h
 delete mode 100644 pythonsdk/include/tupleobject.h
 delete mode 100644 pythonsdk/include/typeslots.h
 delete mode 100644 pythonsdk/include/ucnhash.h
 delete mode 100644 pythonsdk/include/unicodeobject.h
 delete mode 100644 pythonsdk/include/warnings.h
 delete mode 100644 pythonsdk/include/weakrefobject.h
 delete mode 100644 pythonsdk/libs/libpython37.a
 delete mode 100644 pythonsdk/libs/python3.lib
 delete mode 100644 pythonsdk/libs/python37.lib
 delete mode 100644 requirements.txt
 create mode 100644 wheels/Fiona-1.8.21-cp310-cp310-win_amd64.whl
 delete mode 100644 wheels/Fiona-1.8.21-cp37-cp37m-win_amd64.whl
 delete mode 100644 wheels/GDAL-3.4.2-cp37-cp37m-win_amd64.whl
 create mode 100644 wheels/GDAL-3.4.3-cp310-cp310-win_amd64.whl
 delete mode 100644 wheels/Shapely-1.8.1.post1-cp37-cp37m-win_amd64.whl
 create mode 100644 wheels/Shapely-1.8.2-cp310-cp310-win_amd64.whl
 create mode 100644 wheels/rasterio-1.2.10-cp310-cp310-win_amd64.whl
 delete mode 100644 wheels/rasterio-1.2.10-cp37-cp37m-win_amd64.whl

diff --git a/README.md b/README.md
index 4ae710c..8f329f5 100644
--- a/README.md
+++ b/README.md
@@ -5,10 +5,14 @@ This provides a set of scripts and a configuration file allowing to build TELEMA
 ## Prerequisites:
 
 - **Git**: download it from [gitforwindows.org](https://gitforwindows.org/) and install it with the LFS extension.
-- **CMake**: install the latest 64 bits version available from [cmake.org](https://cmake.org), and ensure that CMake `bin` directory is added to your `PATH` environment variable.<br>
-Note: to install CMake without administrator rights, you need to download and extract the zip file and set your `PATH` manually.
-- **Mingw-w64**: download the 12.2 version from [winlibs](https://github.com/brechtsanders/winlibs_mingw/releases/download/12.2.0-15.0.7-10.0.0-msvcrt-r4/winlibs-x86_64-posix-seh-gcc-12.2.0-mingw-w64msvcrt-10.0.0-r4.zip) and extract it to `C:\`.<br>
+- **CMake**: install the latest 64 bits version available from [cmake.org](https://cmake.org), and ensure that CMake
+`bin` directory is added to your `PATH` environment variable.<br>
+Note: to install CMake without administrator rights, you need to download and extract the zip file and set your `PATH`
+manually.
+- **Mingw-w64**: download the latest version from [winlibs](https://github.com/brechtsanders/winlibs_mingw/releases/download/12.2.0-14.0.6-10.0.0-msvcrt-r2/winlibs-x86_64-posix-seh-gcc-12.2.0-mingw-w64msvcrt-10.0.0-r2.zip) and extract it to `C:\`.<br>
 Note: if you don't install Mingw-w64 in `C:\`, you will need to add its `bin` directory to your `PATH`.
+- **Python**: download and install the 3.10 version from [python.org](https://www.python.org/ftp/python/3.10.9/python-3.10.9-amd64.exe).<br>
+Note: to install Python without administrator rights, you must uncheck the option `Use admin privileges when installing py.exe`.
 
 ## Proxy configuration
 
diff --git a/build-telemac-deps.bat b/build-telemac-deps.bat
index b403181..22d033e 100644
--- a/build-telemac-deps.bat
+++ b/build-telemac-deps.bat
@@ -1,7 +1,29 @@
 @echo off
 
+rem Local variables only
+setlocal
+
+rem ****************************************
+rem Dependency versions must be defined here
+rem ****************************************
+set hdf5=hdf5-1.10.9
+set med=med-4.1.1
+set metis=metis-5.1.0
+set msmpi=msmpi-10.1.2
+set openblas=openblas-0.3.21
+set scalapack=scalapack-2.1.0
+set mumps=mumps-5.4.1
+set aed2=libaed2-1.2.0
+set gotm=gotm-2019-06-14-opentelemac
+
+rem *********************************************************************************
+rem Parse input arguments to determine where and how the dependencies should be built
+rem *********************************************************************************
+
 rem Check that the installation path was provided
-if "%~1" == "" (
+set install_path=%~1
+if "%install_path:~0,1%" == "/" set install_path=
+if "%install_path%" == "" (
   echo The syntax is:
   echo:
   echo %~n0 installation_path [compiler]
@@ -12,30 +34,27 @@ if "%~1" == "" (
   exit /b 0
 )
 
-rem Create it if it does not exist
-if not exist "%~1" (
-  mkdir "%~1" || exit /b 0
-)
-
-rem Local variables only
-setlocal
-
-rem Create the installation path
-set install_path=%~1
+rem Ensure that the installation path is absolute and create it
+set install_path=%~f1
 mkdir %install_path% 2>nul
-rem Keep the installation path using forward slashes for CMake (they are mandatory because ScaLAPACK is using a bugged CMake module)
+rem Convert directory separators to forward slashes for CMake (they are mandatory because ScaLAPACK uses a bugged CMake module)
 set install_path=%install_path:\=/%
 
+rem Set the compiler (default is mingw)
 if "%~2" == "" (
   set compiler=mingw
 ) else (
   set compiler=%~2
 )
 
-rem Store compiler name
+rem Store the compiler name with the first letter capitalized
 for /f "tokens=2 delims=:" %%a in ('"find "" ":%compiler:~,1%" 2>&1"') do set compiler_name=%%a%compiler:~1%
 
-rem Check that Git is available
+rem ***********************************************************************
+rem Check that all prerequisites (Git, Cmake and Python 3.10) are available 
+rem ***********************************************************************
+
+rem Check for the presence of Git
 set git_path=
 for /f "delims=" %%a in ('"where git 2>nul"') do set git_path=%%a
 if not defined git_path (
@@ -43,7 +62,7 @@ if not defined git_path (
   exit /b 0
 )
 
-rem Check that CMake is available
+rem Check for the presence of CMake
 set cmake_path=
 for /f "delims=,tokens=*" %%a in ('"where cmake 2>nul"') do set cmake_path=%%a
 if not defined cmake_path (
@@ -51,26 +70,23 @@ if not defined cmake_path (
   exit /b 0
 )
 
-rem ***************************
-rem * Set dependency versions *
-rem ***************************
-set hdf5=hdf5-1.10.9
-set med=med-4.1.1
-set metis=metis-5.1.0
-set msmpi=msmpi-10.1.2
-set openblas=openblas-0.3.21
-set scalapack=scalapack-2.1.0
-set mumps=mumps-5.4.1
-set aed2=libaed2-1.2.0
-set gotm=gotm-2019-06-14-opentelemac
-set python=python-3.7.9
-rem GDAL, Fiona and Rasterio Python packages cannot be installed using PyPI on Windows
-rem Also, the version of Shapely that comes through pip is unstable
-rem Instead, we need to use unofficial wheels from Christoph Gohlke’s website
-set gdal=GDAL-3.4.2-cp37-cp37m-win_amd64.whl
-set fiona=Fiona-1.8.21-cp37-cp37m-win_amd64.whl
-set rasterio=rasterio-1.2.10-cp37-cp37m-win_amd64.whl
-set shapely=Shapely-1.8.1.post1-cp37-cp37m-win_amd64.whl
+rem Check for the presence of the Python launcher
+set py_path=
+for /f "delims=,tokens=*" %%a in ('"where py 2>nul"') do set py_path=%%a
+if not defined py_path (
+  echo Error: Python launcher not found. Please install Python 3.10 with the launcher.
+  exit /b 0
+)
+rem Check for the presence of Python 3.10
+py -0 2>nul | findstr /I /B /C:" -3.10-64" > nul 2>&1
+if %errorlevel% == 1 (
+    echo Error: Python 3.10 not found. You need to install it using the official installer.
+    exit /b 0
+)
+
+rem **********************
+rem Build the dependencies
+rem **********************
 
 pushd %~dp0deps
 
@@ -111,7 +127,7 @@ call :build_scalapack || goto exit
 call :build_mumps || goto exit
 call :build_aed2 || goto exit
 call :build_gotm || goto exit
-call :install_python || goto exit
+call :install_python_packages || goto exit
 goto exit
 
 :intel_build
@@ -121,21 +137,22 @@ call :build_metis || goto exit
 rem call :build_mumps || goto exit
 rem call :build_aed2 || goto exit
 rem call :buid_gotm || goto exit
+call :install_python_packages || goto exit
 goto exit
 
+rem ****
+rem HDF5
+rem ****
 :build_hdf5
-rem ********
-rem * HDF5 *
-rem ********
 call :download %hdf5% "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.9/src/hdf5-1.10.9.zip" || exit /b 1
 set cmake_config_options=-DONLY_SHARED_LIBS:BOOL=ON -DHDF5_GENERATE_HEADERS:BOOL=OFF -DBUILD_TESTING:BOOL=OFF -DHDF5_BUILD_EXAMPLES:BOOL=OFF -DHDF5_BUILD_TOOLS:BOOL=OFF -DHDF5_BUILD_UTILS:BOOL=OFF -DHDF5_BUILD_HL_LIB:BOOL=OFF -DHDF5_BUILD_HL_TOOLS:BOOL=OFF
 call :cmake_build %hdf5% || exit /b 1
 exit /b 0
 
+rem ***
+rem MED
+rem ***
 :build_med
-rem *******
-rem * MED *
-rem *******
 call :download %med% "https://files.salome-platform.org/Salome/other/med-4.1.1.tar.gz" || exit /b 1
 set cmake_config_options=-DHDF5_ROOT_DIR:PATH=%install_path%/%hdf5% -DMEDFILE_BUILD_TESTS:BOOL=OFF -DMEDFILE_INSTALL_DOC:BOOL=OFF
 if %compiler% == intel (
@@ -146,19 +163,19 @@ if %compiler% == intel (
 call :cmake_build %med% || exit /b 1
 exit /b 0
 
+rem *****
+rem METIS
+rem *****
 :build_metis
-rem *********
-rem * METIS *
-rem *********
 call :download %metis% "https://github.com/scivision/METIS/archive/refs/tags/v5.1.0.3.tar.gz" || exit /b 1
 set cmake_config_options=-DBUILD_SHARED_LIBS:BOOL=OFF
 call :cmake_build %metis% || exit /b 1
 exit /b 0
 
+rem ******
+rem MS-MPI
+rem ******
 :build_msmpi
-rem **********
-rem * MS-MPI *
-rem **********
 echo Building %msmpi% with %compiler_name% compiler...
 set carch=x86_64
 pushd %msmpi%
@@ -194,29 +211,29 @@ xcopy /e/y sdk\build-x86_64 %install_path:/=\%\%msmpi%\
 popd
 exit /b 0
 
+rem ********
+rem OpenBLAS
+rem ********
 :build_openblas
-rem ************
-rem * OpenBLAS *
-rem ************
 call :download %openblas% "https://github.com/xianyi/OpenBLAS/archive/refs/tags/v0.3.21.tar.gz" || exit /b 1
 set cmake_config_options=
 call :cmake_build %openblas% || exit /b 1
 exit /b 0
 
+rem *********
+rem ScaLAPACK
+rem *********
 :build_scalapack
-rem *************
-rem * ScaLAPACK *
-rem *************
 call :download %scalapack% "https://github.com/Reference-ScaLAPACK/scalapack/archive/refs/tags/v2.1.0.zip" || exit /b 1
 rem We need to use a foward slash for lapack and blas libraries paths since CMake CheckFortranFunctionExists is bugged when using a backward slash
 set cmake_config_options=-DMPI_BASE_DIR:PATH=%install_path%/%msmpi% -DLAPACK_LIBRARIES:STRING=%install_path%/%openblas%/lib/libopenblas.a -DBLAS_LIBRARIES:STRING=%install_path%/%openblas%/lib/libopenblas.a -DBUILD_TESTING:BOOL=OFF
 call :cmake_build %scalapack% || exit /b 1
 exit /b 0
 
+rem *****
+rem MUMPS
+rem *****
 :build_mumps
-rem *********
-rem * MUMPS *
-rem *********
 call :download %mumps% "https://github.com/scivision/mumps/archive/refs/tags/v5.4.1.11.zip" || exit /b 1
 set cmake_config_options=-DBLAS_LIBRARY=%install_path%/%openblas%/lib/libopenblas.a -DLAPACK_LIBRARY=%install_path%/%openblas%/lib/libopenblas.a -DSCALAPACK_ROOT:PATH=%install_path%/%scalapack%
 if %compiler% == mingw (
@@ -235,10 +252,10 @@ if %compiler% == mingw (
 call :cmake_build %mumps% || exit /b 1
 exit /b 0
 
+rem ****
+rem AED2
+rem ****
 :build_aed2
-rem ********
-rem * AED2 *
-rem ********
 call :download %aed2% "http://www.opentelemac.org/index.php/component/jdownloads/finish/39-manual-installation-sources/2126-aed2m/0?Itemid=55" || exit /b 1
 echo Building libaed2 with %compiler_name% compiler...
 set install_dir=%install_path:/=\%\%aed2%
@@ -256,50 +273,43 @@ exit /b 0
 popd
 exit /b 1
 
+rem ****
+rem GOTM
+rem ****
 :build_gotm
-rem ********
-rem * GOTM *
-rem ********
 call :download %gotm% "http://www.opentelemac.org/index.php/component/jdownloads/finish/39-manual-installation-sources/2127-gotm/0?Itemid=54" || exit /b 1
 set cmake_config_options=-DBUILD_SHARED_LIBS:BOOL=ON -DGOTM_USE_NetCDF=OFF
 call :cmake_build %gotm% || exit /b 1
 exit /b 0
 
-:install_python
-if exist %install_path%\%python% (
-  exit /b 0
-)
-
-pushd %install_path:/=\%
-
-echo Downloading and extracting %python%...
-curl -L https://www.python.org/ftp/python/3.7.9/python-3.7.9-embed-amd64.zip -o python.zip || goto install_error
-mkdir %python%
-tar -xvzf python.zip -C %python% || goto install_error
-del python.zip
-rem Remove the _pth file
-del %python%\python3*._pth
-
-rem Install Python SDK to be able to use f2py
-xcopy /e/y %~dp0pythonsdk\include %cd%\%python%\include\
-xcopy /e/y %~dp0pythonsdk\libs %cd%\%python%\libs\
-
-rem Download and install pip
-curl -O -J https://bootstrap.pypa.io/get-pip.py || goto install_error
-set path=%cd%\%python%\Scripts;%cd%\%python%;%path%
-python get-pip.py
-del get-pip.py
-
+rem ***************
+rem Python packages
+rem ***************
+:install_python_packages
 rem Install all Python requirements for TELEMAC-MASCARET
 echo Installing Python requirements...
-pip install -r %~dp0requirements.txt || goto install_error
+rem Create a virtual environment
+set python_dir=%install_path:/=\%\python
+rd /s/q %python_dir% 2>nul
+py -3.10 -m venv %python_dir% --prompt telemac
+rem Copy python310.dll to the virtual environment (required by F2PY)
+pushd %python_dir%
+py -3.10 -c "import os, sys, shutil; shutil.copy2(f'{os.path.dirname(sys.executable)}\\python310.dll', f'{os.getcwd()}\\Scripts')"
+rem Mingw also requires a definition file for F2PY in a "libs" subdirectory
+if %compiler% == mingw (
+  mkdir libs
+  pushd libs
+  py -3.10 -c "import os, sys; os.system(f'gendef {os.path.dirname(sys.executable)}\python310.dll')"
+  popd
+)
+popd
+rem Activate the virtual environment and install all Python requirements
+call %python_dir%\Scripts\activate.bat
+pushd %~dp0
+pip install -r python_requirements.txt || goto install_error
 
-rem Use GDAL, Fiona, Rasterio and Shapely unofficial wheels, to avoid building them locally
-pip install %~dp0wheels\%gdal%
-pip install %~dp0wheels\%fiona%
-pip install %~dp0wheels\%rasterio%
-pip install %~dp0wheels\%shapely%
-pip install geopandas
+rem Starting with Python 3.8, mpi4py requires MPI DLLs to be present in the module directory: copy them there
+xcopy /y %install_path:/=\%\%msmpi%\bin\msmpi*.dll %python_dir%\Lib\site-packages\mpi4py\ >nul
 
 popd
 exit /b 0
@@ -308,10 +318,10 @@ exit /b 0
 popd
 exit /b 1
 
+rem **************************************
+rem Download a library if not already done
+rem **************************************
 :download
-rem ******************************************
-rem * Download a library if not already done *
-rem ******************************************
 set lib=%~1
 set url="%~2"
 
@@ -336,10 +346,10 @@ if exist %~dp0patches\%lib%.patch (
 
 exit /b 0
 
+rem ********************
+rem CMake build function
+rem ********************
 :cmake_build
-rem ************************
-rem * CMake build function *
-rem ************************
 set lib=%~1
 
 rem Set the number of build processes
diff --git a/config/pysource.win.bat b/config/pysource.win.bat
index 0b3a055..5715abd 100644
--- a/config/pysource.win.bat
+++ b/config/pysource.win.bat
@@ -14,17 +14,9 @@ set SYSTELCFG=%HOMETEL%\configs\systel.edf.cfg
 rem Name of the configuration to use
 set USETELCFG=win
 
-rem Add Python to PATH, its modules to PYTHONPATH and set it as the
-rem default one to launch Python scripts from the command line
-setlocal enabledelayedexpansion
-set python=python-3.7.9
-endlocal & (
-  set "PATH=%TELEMACDEPS%\%python%;%TELEMACDEPS%\%python%\Scripts;%PATH%"
-  set "PYTHONPATH=%TELEMACDEPS%\%python%\Lib\site-packages"
-  reg add HKCU\SOFTWARE\Classes\Python.File\shell\open\command /f /ve /d "\"%TELEMACDEPS%\%python%\python.exe\" \"%%1\" %%*" 1>nul
-  reg delete HKCU\SOFTWARE\Classes\.py\OpenWithProgids /f >nul 2>&1
-  reg add HKCU\SOFTWARE\Classes\.py\OpenWithProgids /f /v Python.File 1>nul
-)
+rem Activate TELEMAC Python environment and set it as the default
+rem one to launch Python scripts from the command line
+call %TELEMACDEPS%\python\Scripts\activate.bat
 
 rem Add Mingw to PATH if it is found
 call :find_mingw
@@ -37,7 +29,7 @@ set PYTHONPATH=%HOMETEL%\scripts\python3;%PYTHONPATH%
 set PYTHONPATH=%HOMETEL%\builds\%USETELCFG%\wrap_api\lib;%PYTHONPATH%
 
 rem External libraries versions
-rem HDF
+rem HDF5
 set HDF5HOME=%TELEMACDEPS%\hdf5-1.10.9
 set PATH=%HDF5HOME%\bin;%PATH%
 rem MED
diff --git a/config/pysource.win.debug.bat b/config/pysource.win.debug.bat
index 28988e3..af67ffe 100644
--- a/config/pysource.win.debug.bat
+++ b/config/pysource.win.debug.bat
@@ -14,17 +14,9 @@ set SYSTELCFG=%HOMETEL%\configs\systel.edf.cfg
 rem Name of the configuration to use
 set USETELCFG=win.debug
 
-rem Add Python to PATH, its modules to PYTHONPATH and set it as the
-rem default one to launch Python scripts from the command line
-setlocal enabledelayedexpansion
-set python=python-3.7.9
-endlocal & (
-  set "PATH=%TELEMACDEPS%\%python%;%TELEMACDEPS%\%python%\Scripts;%PATH%"
-  set "PYTHONPATH=%TELEMACDEPS%\%python%\Lib\site-packages"
-  reg add HKCU\SOFTWARE\Classes\Python.File\shell\open\command /f /ve /d "\"%TELEMACDEPS%\%python%\python.exe\" \"%%1\" %%*" 1>nul
-  reg delete HKCU\SOFTWARE\Classes\.py\OpenWithProgids /f >nul 2>&1
-  reg add HKCU\SOFTWARE\Classes\.py\OpenWithProgids /f /v Python.File 1>nul
-)
+rem Activate TELEMAC Python environment and set it as the default
+rem one to launch Python scripts from the command line
+call %TELEMACDEPS%\python\Scripts\activate.bat
 
 rem Add Mingw to PATH if it is found
 call :find_mingw
@@ -37,7 +29,7 @@ set PYTHONPATH=%HOMETEL%\scripts\python3;%PYTHONPATH%
 set PYTHONPATH=%HOMETEL%\builds\%USETELCFG%\wrap_api\lib;%PYTHONPATH%
 
 rem External libraries versions
-rem HDF
+rem HDF5
 set HDF5HOME=%TELEMACDEPS%\hdf5-1.10.9
 set PATH=%HDF5HOME%\bin;%PATH%
 rem MED
diff --git a/python_requirements.txt b/python_requirements.txt
new file mode 100644
index 0000000..18e3c75
--- /dev/null
+++ b/python_requirements.txt
@@ -0,0 +1,19 @@
+numpy
+scipy
+matplotlib
+mpi4py
+doxypypy
+jupyter
+openpyxl
+OWSLib
+pandas
+pyproj
+seaborn
+# GDAL, Fiona and Rasterio Python packages cannot be installed using PyPI on Windows
+# Also, the version of Shapely that comes through pip is unstable
+# Instead, we need to use unofficial wheels from Christoph Gohlke’s website
+.\wheels\GDAL-3.4.3-cp310-cp310-win_amd64.whl
+.\wheels\Fiona-1.8.21-cp310-cp310-win_amd64.whl
+.\wheels\rasterio-1.2.10-cp310-cp310-win_amd64.whl
+.\wheels\Shapely-1.8.2-cp310-cp310-win_amd64.whl
+geopandas
\ No newline at end of file
diff --git a/pythonsdk/include/Python-ast.h b/pythonsdk/include/Python-ast.h
deleted file mode 100644
index 7e6494e..0000000
--- a/pythonsdk/include/Python-ast.h
+++ /dev/null
@@ -1,637 +0,0 @@
-/* File automatically generated by Parser/asdl_c.py. */
-
-#include "asdl.h"
-
-typedef struct _mod *mod_ty;
-
-typedef struct _stmt *stmt_ty;
-
-typedef struct _expr *expr_ty;
-
-typedef enum _expr_context { Load=1, Store=2, Del=3, AugLoad=4, AugStore=5,
-                             Param=6 } expr_context_ty;
-
-typedef struct _slice *slice_ty;
-
-typedef enum _boolop { And=1, Or=2 } boolop_ty;
-
-typedef enum _operator { Add=1, Sub=2, Mult=3, MatMult=4, Div=5, Mod=6, Pow=7,
-                         LShift=8, RShift=9, BitOr=10, BitXor=11, BitAnd=12,
-                         FloorDiv=13 } operator_ty;
-
-typedef enum _unaryop { Invert=1, Not=2, UAdd=3, USub=4 } unaryop_ty;
-
-typedef enum _cmpop { Eq=1, NotEq=2, Lt=3, LtE=4, Gt=5, GtE=6, Is=7, IsNot=8,
-                      In=9, NotIn=10 } cmpop_ty;
-
-typedef struct _comprehension *comprehension_ty;
-
-typedef struct _excepthandler *excepthandler_ty;
-
-typedef struct _arguments *arguments_ty;
-
-typedef struct _arg *arg_ty;
-
-typedef struct _keyword *keyword_ty;
-
-typedef struct _alias *alias_ty;
-
-typedef struct _withitem *withitem_ty;
-
-
-enum _mod_kind {Module_kind=1, Interactive_kind=2, Expression_kind=3,
-                 Suite_kind=4};
-struct _mod {
-    enum _mod_kind kind;
-    union {
-        struct {
-            asdl_seq *body;
-        } Module;
-
-        struct {
-            asdl_seq *body;
-        } Interactive;
-
-        struct {
-            expr_ty body;
-        } Expression;
-
-        struct {
-            asdl_seq *body;
-        } Suite;
-
-    } v;
-};
-
-enum _stmt_kind {FunctionDef_kind=1, AsyncFunctionDef_kind=2, ClassDef_kind=3,
-                  Return_kind=4, Delete_kind=5, Assign_kind=6,
-                  AugAssign_kind=7, AnnAssign_kind=8, For_kind=9,
-                  AsyncFor_kind=10, While_kind=11, If_kind=12, With_kind=13,
-                  AsyncWith_kind=14, Raise_kind=15, Try_kind=16,
-                  Assert_kind=17, Import_kind=18, ImportFrom_kind=19,
-                  Global_kind=20, Nonlocal_kind=21, Expr_kind=22, Pass_kind=23,
-                  Break_kind=24, Continue_kind=25};
-struct _stmt {
-    enum _stmt_kind kind;
-    union {
-        struct {
-            identifier name;
-            arguments_ty args;
-            asdl_seq *body;
-            asdl_seq *decorator_list;
-            expr_ty returns;
-        } FunctionDef;
-
-        struct {
-            identifier name;
-            arguments_ty args;
-            asdl_seq *body;
-            asdl_seq *decorator_list;
-            expr_ty returns;
-        } AsyncFunctionDef;
-
-        struct {
-            identifier name;
-            asdl_seq *bases;
-            asdl_seq *keywords;
-            asdl_seq *body;
-            asdl_seq *decorator_list;
-        } ClassDef;
-
-        struct {
-            expr_ty value;
-        } Return;
-
-        struct {
-            asdl_seq *targets;
-        } Delete;
-
-        struct {
-            asdl_seq *targets;
-            expr_ty value;
-        } Assign;
-
-        struct {
-            expr_ty target;
-            operator_ty op;
-            expr_ty value;
-        } AugAssign;
-
-        struct {
-            expr_ty target;
-            expr_ty annotation;
-            expr_ty value;
-            int simple;
-        } AnnAssign;
-
-        struct {
-            expr_ty target;
-            expr_ty iter;
-            asdl_seq *body;
-            asdl_seq *orelse;
-        } For;
-
-        struct {
-            expr_ty target;
-            expr_ty iter;
-            asdl_seq *body;
-            asdl_seq *orelse;
-        } AsyncFor;
-
-        struct {
-            expr_ty test;
-            asdl_seq *body;
-            asdl_seq *orelse;
-        } While;
-
-        struct {
-            expr_ty test;
-            asdl_seq *body;
-            asdl_seq *orelse;
-        } If;
-
-        struct {
-            asdl_seq *items;
-            asdl_seq *body;
-        } With;
-
-        struct {
-            asdl_seq *items;
-            asdl_seq *body;
-        } AsyncWith;
-
-        struct {
-            expr_ty exc;
-            expr_ty cause;
-        } Raise;
-
-        struct {
-            asdl_seq *body;
-            asdl_seq *handlers;
-            asdl_seq *orelse;
-            asdl_seq *finalbody;
-        } Try;
-
-        struct {
-            expr_ty test;
-            expr_ty msg;
-        } Assert;
-
-        struct {
-            asdl_seq *names;
-        } Import;
-
-        struct {
-            identifier module;
-            asdl_seq *names;
-            int level;
-        } ImportFrom;
-
-        struct {
-            asdl_seq *names;
-        } Global;
-
-        struct {
-            asdl_seq *names;
-        } Nonlocal;
-
-        struct {
-            expr_ty value;
-        } Expr;
-
-    } v;
-    int lineno;
-    int col_offset;
-};
-
-enum _expr_kind {BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, Lambda_kind=4,
-                  IfExp_kind=5, Dict_kind=6, Set_kind=7, ListComp_kind=8,
-                  SetComp_kind=9, DictComp_kind=10, GeneratorExp_kind=11,
-                  Await_kind=12, Yield_kind=13, YieldFrom_kind=14,
-                  Compare_kind=15, Call_kind=16, Num_kind=17, Str_kind=18,
-                  FormattedValue_kind=19, JoinedStr_kind=20, Bytes_kind=21,
-                  NameConstant_kind=22, Ellipsis_kind=23, Constant_kind=24,
-                  Attribute_kind=25, Subscript_kind=26, Starred_kind=27,
-                  Name_kind=28, List_kind=29, Tuple_kind=30};
-struct _expr {
-    enum _expr_kind kind;
-    union {
-        struct {
-            boolop_ty op;
-            asdl_seq *values;
-        } BoolOp;
-
-        struct {
-            expr_ty left;
-            operator_ty op;
-            expr_ty right;
-        } BinOp;
-
-        struct {
-            unaryop_ty op;
-            expr_ty operand;
-        } UnaryOp;
-
-        struct {
-            arguments_ty args;
-            expr_ty body;
-        } Lambda;
-
-        struct {
-            expr_ty test;
-            expr_ty body;
-            expr_ty orelse;
-        } IfExp;
-
-        struct {
-            asdl_seq *keys;
-            asdl_seq *values;
-        } Dict;
-
-        struct {
-            asdl_seq *elts;
-        } Set;
-
-        struct {
-            expr_ty elt;
-            asdl_seq *generators;
-        } ListComp;
-
-        struct {
-            expr_ty elt;
-            asdl_seq *generators;
-        } SetComp;
-
-        struct {
-            expr_ty key;
-            expr_ty value;
-            asdl_seq *generators;
-        } DictComp;
-
-        struct {
-            expr_ty elt;
-            asdl_seq *generators;
-        } GeneratorExp;
-
-        struct {
-            expr_ty value;
-        } Await;
-
-        struct {
-            expr_ty value;
-        } Yield;
-
-        struct {
-            expr_ty value;
-        } YieldFrom;
-
-        struct {
-            expr_ty left;
-            asdl_int_seq *ops;
-            asdl_seq *comparators;
-        } Compare;
-
-        struct {
-            expr_ty func;
-            asdl_seq *args;
-            asdl_seq *keywords;
-        } Call;
-
-        struct {
-            object n;
-        } Num;
-
-        struct {
-            string s;
-        } Str;
-
-        struct {
-            expr_ty value;
-            int conversion;
-            expr_ty format_spec;
-        } FormattedValue;
-
-        struct {
-            asdl_seq *values;
-        } JoinedStr;
-
-        struct {
-            bytes s;
-        } Bytes;
-
-        struct {
-            singleton value;
-        } NameConstant;
-
-        struct {
-            constant value;
-        } Constant;
-
-        struct {
-            expr_ty value;
-            identifier attr;
-            expr_context_ty ctx;
-        } Attribute;
-
-        struct {
-            expr_ty value;
-            slice_ty slice;
-            expr_context_ty ctx;
-        } Subscript;
-
-        struct {
-            expr_ty value;
-            expr_context_ty ctx;
-        } Starred;
-
-        struct {
-            identifier id;
-            expr_context_ty ctx;
-        } Name;
-
-        struct {
-            asdl_seq *elts;
-            expr_context_ty ctx;
-        } List;
-
-        struct {
-            asdl_seq *elts;
-            expr_context_ty ctx;
-        } Tuple;
-
-    } v;
-    int lineno;
-    int col_offset;
-};
-
-enum _slice_kind {Slice_kind=1, ExtSlice_kind=2, Index_kind=3};
-struct _slice {
-    enum _slice_kind kind;
-    union {
-        struct {
-            expr_ty lower;
-            expr_ty upper;
-            expr_ty step;
-        } Slice;
-
-        struct {
-            asdl_seq *dims;
-        } ExtSlice;
-
-        struct {
-            expr_ty value;
-        } Index;
-
-    } v;
-};
-
-struct _comprehension {
-    expr_ty target;
-    expr_ty iter;
-    asdl_seq *ifs;
-    int is_async;
-};
-
-enum _excepthandler_kind {ExceptHandler_kind=1};
-struct _excepthandler {
-    enum _excepthandler_kind kind;
-    union {
-        struct {
-            expr_ty type;
-            identifier name;
-            asdl_seq *body;
-        } ExceptHandler;
-
-    } v;
-    int lineno;
-    int col_offset;
-};
-
-struct _arguments {
-    asdl_seq *args;
-    arg_ty vararg;
-    asdl_seq *kwonlyargs;
-    asdl_seq *kw_defaults;
-    arg_ty kwarg;
-    asdl_seq *defaults;
-};
-
-struct _arg {
-    identifier arg;
-    expr_ty annotation;
-    int lineno;
-    int col_offset;
-};
-
-struct _keyword {
-    identifier arg;
-    expr_ty value;
-};
-
-struct _alias {
-    identifier name;
-    identifier asname;
-};
-
-struct _withitem {
-    expr_ty context_expr;
-    expr_ty optional_vars;
-};
-
-
-#define Module(a0, a1) _Py_Module(a0, a1)
-mod_ty _Py_Module(asdl_seq * body, PyArena *arena);
-#define Interactive(a0, a1) _Py_Interactive(a0, a1)
-mod_ty _Py_Interactive(asdl_seq * body, PyArena *arena);
-#define Expression(a0, a1) _Py_Expression(a0, a1)
-mod_ty _Py_Expression(expr_ty body, PyArena *arena);
-#define Suite(a0, a1) _Py_Suite(a0, a1)
-mod_ty _Py_Suite(asdl_seq * body, PyArena *arena);
-#define FunctionDef(a0, a1, a2, a3, a4, a5, a6, a7) _Py_FunctionDef(a0, a1, a2, a3, a4, a5, a6, a7)
-stmt_ty _Py_FunctionDef(identifier name, arguments_ty args, asdl_seq * body,
-                        asdl_seq * decorator_list, expr_ty returns, int lineno,
-                        int col_offset, PyArena *arena);
-#define AsyncFunctionDef(a0, a1, a2, a3, a4, a5, a6, a7) _Py_AsyncFunctionDef(a0, a1, a2, a3, a4, a5, a6, a7)
-stmt_ty _Py_AsyncFunctionDef(identifier name, arguments_ty args, asdl_seq *
-                             body, asdl_seq * decorator_list, expr_ty returns,
-                             int lineno, int col_offset, PyArena *arena);
-#define ClassDef(a0, a1, a2, a3, a4, a5, a6, a7) _Py_ClassDef(a0, a1, a2, a3, a4, a5, a6, a7)
-stmt_ty _Py_ClassDef(identifier name, asdl_seq * bases, asdl_seq * keywords,
-                     asdl_seq * body, asdl_seq * decorator_list, int lineno,
-                     int col_offset, PyArena *arena);
-#define Return(a0, a1, a2, a3) _Py_Return(a0, a1, a2, a3)
-stmt_ty _Py_Return(expr_ty value, int lineno, int col_offset, PyArena *arena);
-#define Delete(a0, a1, a2, a3) _Py_Delete(a0, a1, a2, a3)
-stmt_ty _Py_Delete(asdl_seq * targets, int lineno, int col_offset, PyArena
-                   *arena);
-#define Assign(a0, a1, a2, a3, a4) _Py_Assign(a0, a1, a2, a3, a4)
-stmt_ty _Py_Assign(asdl_seq * targets, expr_ty value, int lineno, int
-                   col_offset, PyArena *arena);
-#define AugAssign(a0, a1, a2, a3, a4, a5) _Py_AugAssign(a0, a1, a2, a3, a4, a5)
-stmt_ty _Py_AugAssign(expr_ty target, operator_ty op, expr_ty value, int
-                      lineno, int col_offset, PyArena *arena);
-#define AnnAssign(a0, a1, a2, a3, a4, a5, a6) _Py_AnnAssign(a0, a1, a2, a3, a4, a5, a6)
-stmt_ty _Py_AnnAssign(expr_ty target, expr_ty annotation, expr_ty value, int
-                      simple, int lineno, int col_offset, PyArena *arena);
-#define For(a0, a1, a2, a3, a4, a5, a6) _Py_For(a0, a1, a2, a3, a4, a5, a6)
-stmt_ty _Py_For(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq *
-                orelse, int lineno, int col_offset, PyArena *arena);
-#define AsyncFor(a0, a1, a2, a3, a4, a5, a6) _Py_AsyncFor(a0, a1, a2, a3, a4, a5, a6)
-stmt_ty _Py_AsyncFor(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq *
-                     orelse, int lineno, int col_offset, PyArena *arena);
-#define While(a0, a1, a2, a3, a4, a5) _Py_While(a0, a1, a2, a3, a4, a5)
-stmt_ty _Py_While(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno,
-                  int col_offset, PyArena *arena);
-#define If(a0, a1, a2, a3, a4, a5) _Py_If(a0, a1, a2, a3, a4, a5)
-stmt_ty _Py_If(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno,
-               int col_offset, PyArena *arena);
-#define With(a0, a1, a2, a3, a4) _Py_With(a0, a1, a2, a3, a4)
-stmt_ty _Py_With(asdl_seq * items, asdl_seq * body, int lineno, int col_offset,
-                 PyArena *arena);
-#define AsyncWith(a0, a1, a2, a3, a4) _Py_AsyncWith(a0, a1, a2, a3, a4)
-stmt_ty _Py_AsyncWith(asdl_seq * items, asdl_seq * body, int lineno, int
-                      col_offset, PyArena *arena);
-#define Raise(a0, a1, a2, a3, a4) _Py_Raise(a0, a1, a2, a3, a4)
-stmt_ty _Py_Raise(expr_ty exc, expr_ty cause, int lineno, int col_offset,
-                  PyArena *arena);
-#define Try(a0, a1, a2, a3, a4, a5, a6) _Py_Try(a0, a1, a2, a3, a4, a5, a6)
-stmt_ty _Py_Try(asdl_seq * body, asdl_seq * handlers, asdl_seq * orelse,
-                asdl_seq * finalbody, int lineno, int col_offset, PyArena
-                *arena);
-#define Assert(a0, a1, a2, a3, a4) _Py_Assert(a0, a1, a2, a3, a4)
-stmt_ty _Py_Assert(expr_ty test, expr_ty msg, int lineno, int col_offset,
-                   PyArena *arena);
-#define Import(a0, a1, a2, a3) _Py_Import(a0, a1, a2, a3)
-stmt_ty _Py_Import(asdl_seq * names, int lineno, int col_offset, PyArena
-                   *arena);
-#define ImportFrom(a0, a1, a2, a3, a4, a5) _Py_ImportFrom(a0, a1, a2, a3, a4, a5)
-stmt_ty _Py_ImportFrom(identifier module, asdl_seq * names, int level, int
-                       lineno, int col_offset, PyArena *arena);
-#define Global(a0, a1, a2, a3) _Py_Global(a0, a1, a2, a3)
-stmt_ty _Py_Global(asdl_seq * names, int lineno, int col_offset, PyArena
-                   *arena);
-#define Nonlocal(a0, a1, a2, a3) _Py_Nonlocal(a0, a1, a2, a3)
-stmt_ty _Py_Nonlocal(asdl_seq * names, int lineno, int col_offset, PyArena
-                     *arena);
-#define Expr(a0, a1, a2, a3) _Py_Expr(a0, a1, a2, a3)
-stmt_ty _Py_Expr(expr_ty value, int lineno, int col_offset, PyArena *arena);
-#define Pass(a0, a1, a2) _Py_Pass(a0, a1, a2)
-stmt_ty _Py_Pass(int lineno, int col_offset, PyArena *arena);
-#define Break(a0, a1, a2) _Py_Break(a0, a1, a2)
-stmt_ty _Py_Break(int lineno, int col_offset, PyArena *arena);
-#define Continue(a0, a1, a2) _Py_Continue(a0, a1, a2)
-stmt_ty _Py_Continue(int lineno, int col_offset, PyArena *arena);
-#define BoolOp(a0, a1, a2, a3, a4) _Py_BoolOp(a0, a1, a2, a3, a4)
-expr_ty _Py_BoolOp(boolop_ty op, asdl_seq * values, int lineno, int col_offset,
-                   PyArena *arena);
-#define BinOp(a0, a1, a2, a3, a4, a5) _Py_BinOp(a0, a1, a2, a3, a4, a5)
-expr_ty _Py_BinOp(expr_ty left, operator_ty op, expr_ty right, int lineno, int
-                  col_offset, PyArena *arena);
-#define UnaryOp(a0, a1, a2, a3, a4) _Py_UnaryOp(a0, a1, a2, a3, a4)
-expr_ty _Py_UnaryOp(unaryop_ty op, expr_ty operand, int lineno, int col_offset,
-                    PyArena *arena);
-#define Lambda(a0, a1, a2, a3, a4) _Py_Lambda(a0, a1, a2, a3, a4)
-expr_ty _Py_Lambda(arguments_ty args, expr_ty body, int lineno, int col_offset,
-                   PyArena *arena);
-#define IfExp(a0, a1, a2, a3, a4, a5) _Py_IfExp(a0, a1, a2, a3, a4, a5)
-expr_ty _Py_IfExp(expr_ty test, expr_ty body, expr_ty orelse, int lineno, int
-                  col_offset, PyArena *arena);
-#define Dict(a0, a1, a2, a3, a4) _Py_Dict(a0, a1, a2, a3, a4)
-expr_ty _Py_Dict(asdl_seq * keys, asdl_seq * values, int lineno, int
-                 col_offset, PyArena *arena);
-#define Set(a0, a1, a2, a3) _Py_Set(a0, a1, a2, a3)
-expr_ty _Py_Set(asdl_seq * elts, int lineno, int col_offset, PyArena *arena);
-#define ListComp(a0, a1, a2, a3, a4) _Py_ListComp(a0, a1, a2, a3, a4)
-expr_ty _Py_ListComp(expr_ty elt, asdl_seq * generators, int lineno, int
-                     col_offset, PyArena *arena);
-#define SetComp(a0, a1, a2, a3, a4) _Py_SetComp(a0, a1, a2, a3, a4)
-expr_ty _Py_SetComp(expr_ty elt, asdl_seq * generators, int lineno, int
-                    col_offset, PyArena *arena);
-#define DictComp(a0, a1, a2, a3, a4, a5) _Py_DictComp(a0, a1, a2, a3, a4, a5)
-expr_ty _Py_DictComp(expr_ty key, expr_ty value, asdl_seq * generators, int
-                     lineno, int col_offset, PyArena *arena);
-#define GeneratorExp(a0, a1, a2, a3, a4) _Py_GeneratorExp(a0, a1, a2, a3, a4)
-expr_ty _Py_GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int
-                         col_offset, PyArena *arena);
-#define Await(a0, a1, a2, a3) _Py_Await(a0, a1, a2, a3)
-expr_ty _Py_Await(expr_ty value, int lineno, int col_offset, PyArena *arena);
-#define Yield(a0, a1, a2, a3) _Py_Yield(a0, a1, a2, a3)
-expr_ty _Py_Yield(expr_ty value, int lineno, int col_offset, PyArena *arena);
-#define YieldFrom(a0, a1, a2, a3) _Py_YieldFrom(a0, a1, a2, a3)
-expr_ty _Py_YieldFrom(expr_ty value, int lineno, int col_offset, PyArena
-                      *arena);
-#define Compare(a0, a1, a2, a3, a4, a5) _Py_Compare(a0, a1, a2, a3, a4, a5)
-expr_ty _Py_Compare(expr_ty left, asdl_int_seq * ops, asdl_seq * comparators,
-                    int lineno, int col_offset, PyArena *arena);
-#define Call(a0, a1, a2, a3, a4, a5) _Py_Call(a0, a1, a2, a3, a4, a5)
-expr_ty _Py_Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, int
-                 lineno, int col_offset, PyArena *arena);
-#define Num(a0, a1, a2, a3) _Py_Num(a0, a1, a2, a3)
-expr_ty _Py_Num(object n, int lineno, int col_offset, PyArena *arena);
-#define Str(a0, a1, a2, a3) _Py_Str(a0, a1, a2, a3)
-expr_ty _Py_Str(string s, int lineno, int col_offset, PyArena *arena);
-#define FormattedValue(a0, a1, a2, a3, a4, a5) _Py_FormattedValue(a0, a1, a2, a3, a4, a5)
-expr_ty _Py_FormattedValue(expr_ty value, int conversion, expr_ty format_spec,
-                           int lineno, int col_offset, PyArena *arena);
-#define JoinedStr(a0, a1, a2, a3) _Py_JoinedStr(a0, a1, a2, a3)
-expr_ty _Py_JoinedStr(asdl_seq * values, int lineno, int col_offset, PyArena
-                      *arena);
-#define Bytes(a0, a1, a2, a3) _Py_Bytes(a0, a1, a2, a3)
-expr_ty _Py_Bytes(bytes s, int lineno, int col_offset, PyArena *arena);
-#define NameConstant(a0, a1, a2, a3) _Py_NameConstant(a0, a1, a2, a3)
-expr_ty _Py_NameConstant(singleton value, int lineno, int col_offset, PyArena
-                         *arena);
-#define Ellipsis(a0, a1, a2) _Py_Ellipsis(a0, a1, a2)
-expr_ty _Py_Ellipsis(int lineno, int col_offset, PyArena *arena);
-#define Constant(a0, a1, a2, a3) _Py_Constant(a0, a1, a2, a3)
-expr_ty _Py_Constant(constant value, int lineno, int col_offset, PyArena
-                     *arena);
-#define Attribute(a0, a1, a2, a3, a4, a5) _Py_Attribute(a0, a1, a2, a3, a4, a5)
-expr_ty _Py_Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int
-                      lineno, int col_offset, PyArena *arena);
-#define Subscript(a0, a1, a2, a3, a4, a5) _Py_Subscript(a0, a1, a2, a3, a4, a5)
-expr_ty _Py_Subscript(expr_ty value, slice_ty slice, expr_context_ty ctx, int
-                      lineno, int col_offset, PyArena *arena);
-#define Starred(a0, a1, a2, a3, a4) _Py_Starred(a0, a1, a2, a3, a4)
-expr_ty _Py_Starred(expr_ty value, expr_context_ty ctx, int lineno, int
-                    col_offset, PyArena *arena);
-#define Name(a0, a1, a2, a3, a4) _Py_Name(a0, a1, a2, a3, a4)
-expr_ty _Py_Name(identifier id, expr_context_ty ctx, int lineno, int
-                 col_offset, PyArena *arena);
-#define List(a0, a1, a2, a3, a4) _Py_List(a0, a1, a2, a3, a4)
-expr_ty _Py_List(asdl_seq * elts, expr_context_ty ctx, int lineno, int
-                 col_offset, PyArena *arena);
-#define Tuple(a0, a1, a2, a3, a4) _Py_Tuple(a0, a1, a2, a3, a4)
-expr_ty _Py_Tuple(asdl_seq * elts, expr_context_ty ctx, int lineno, int
-                  col_offset, PyArena *arena);
-#define Slice(a0, a1, a2, a3) _Py_Slice(a0, a1, a2, a3)
-slice_ty _Py_Slice(expr_ty lower, expr_ty upper, expr_ty step, PyArena *arena);
-#define ExtSlice(a0, a1) _Py_ExtSlice(a0, a1)
-slice_ty _Py_ExtSlice(asdl_seq * dims, PyArena *arena);
-#define Index(a0, a1) _Py_Index(a0, a1)
-slice_ty _Py_Index(expr_ty value, PyArena *arena);
-#define comprehension(a0, a1, a2, a3, a4) _Py_comprehension(a0, a1, a2, a3, a4)
-comprehension_ty _Py_comprehension(expr_ty target, expr_ty iter, asdl_seq *
-                                   ifs, int is_async, PyArena *arena);
-#define ExceptHandler(a0, a1, a2, a3, a4, a5) _Py_ExceptHandler(a0, a1, a2, a3, a4, a5)
-excepthandler_ty _Py_ExceptHandler(expr_ty type, identifier name, asdl_seq *
-                                   body, int lineno, int col_offset, PyArena
-                                   *arena);
-#define arguments(a0, a1, a2, a3, a4, a5, a6) _Py_arguments(a0, a1, a2, a3, a4, a5, a6)
-arguments_ty _Py_arguments(asdl_seq * args, arg_ty vararg, asdl_seq *
-                           kwonlyargs, asdl_seq * kw_defaults, arg_ty kwarg,
-                           asdl_seq * defaults, PyArena *arena);
-#define arg(a0, a1, a2, a3, a4) _Py_arg(a0, a1, a2, a3, a4)
-arg_ty _Py_arg(identifier arg, expr_ty annotation, int lineno, int col_offset,
-               PyArena *arena);
-#define keyword(a0, a1, a2) _Py_keyword(a0, a1, a2)
-keyword_ty _Py_keyword(identifier arg, expr_ty value, PyArena *arena);
-#define alias(a0, a1, a2) _Py_alias(a0, a1, a2)
-alias_ty _Py_alias(identifier name, identifier asname, PyArena *arena);
-#define withitem(a0, a1, a2) _Py_withitem(a0, a1, a2)
-withitem_ty _Py_withitem(expr_ty context_expr, expr_ty optional_vars, PyArena
-                         *arena);
-
-PyObject* PyAST_mod2obj(mod_ty t);
-mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode);
-int PyAST_Check(PyObject* obj);
diff --git a/pythonsdk/include/Python.h b/pythonsdk/include/Python.h
deleted file mode 100644
index b68de5f..0000000
--- a/pythonsdk/include/Python.h
+++ /dev/null
@@ -1,159 +0,0 @@
-#ifndef Py_PYTHON_H
-#define Py_PYTHON_H
-/* Since this is a "meta-include" file, no #ifdef __cplusplus / extern "C" { */
-
-/* Include nearly all Python header files */
-
-#include "patchlevel.h"
-#include "pyconfig.h"
-#include "pymacconfig.h"
-
-#include <limits.h>
-
-#ifndef UCHAR_MAX
-#error "Something's broken.  UCHAR_MAX should be defined in limits.h."
-#endif
-
-#if UCHAR_MAX != 255
-#error "Python's source code assumes C's unsigned char is an 8-bit type."
-#endif
-
-#if defined(__sgi) && !defined(_SGI_MP_SOURCE)
-#define _SGI_MP_SOURCE
-#endif
-
-#include <stdio.h>
-#ifndef NULL
-#   error "Python.h requires that stdio.h define NULL."
-#endif
-
-#include <string.h>
-#ifdef HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_CRYPT_H
-#if defined(HAVE_CRYPT_R) && !defined(_GNU_SOURCE)
-/* Required for glibc to expose the crypt_r() function prototype. */
-#  define _GNU_SOURCE
-#  define _Py_GNU_SOURCE_FOR_CRYPT
-#endif
-#include <crypt.h>
-#ifdef _Py_GNU_SOURCE_FOR_CRYPT
-/* Don't leak the _GNU_SOURCE define to other headers. */
-#  undef _GNU_SOURCE
-#  undef _Py_GNU_SOURCE_FOR_CRYPT
-#endif
-#endif
-
-/* For size_t? */
-#ifdef HAVE_STDDEF_H
-#include <stddef.h>
-#endif
-
-/* CAUTION:  Build setups should ensure that NDEBUG is defined on the
- * compiler command line when building Python in release mode; else
- * assert() calls won't be removed.
- */
-#include <assert.h>
-
-#include "pyport.h"
-#include "pymacro.h"
-
-/* A convenient way for code to know if clang's memory sanitizer is enabled. */
-#if defined(__has_feature)
-#  if __has_feature(memory_sanitizer)
-#    if !defined(_Py_MEMORY_SANITIZER)
-#      define _Py_MEMORY_SANITIZER
-#    endif
-#  endif
-#endif
-
-#include "pyatomic.h"
-
-/* Debug-mode build with pymalloc implies PYMALLOC_DEBUG.
- *  PYMALLOC_DEBUG is in error if pymalloc is not in use.
- */
-#if defined(Py_DEBUG) && defined(WITH_PYMALLOC) && !defined(PYMALLOC_DEBUG)
-#define PYMALLOC_DEBUG
-#endif
-#if defined(PYMALLOC_DEBUG) && !defined(WITH_PYMALLOC)
-#error "PYMALLOC_DEBUG requires WITH_PYMALLOC"
-#endif
-#include "pymath.h"
-#include "pytime.h"
-#include "pymem.h"
-
-#include "object.h"
-#include "objimpl.h"
-#include "typeslots.h"
-#include "pyhash.h"
-
-#include "pydebug.h"
-
-#include "bytearrayobject.h"
-#include "bytesobject.h"
-#include "unicodeobject.h"
-#include "longobject.h"
-#include "longintrepr.h"
-#include "boolobject.h"
-#include "floatobject.h"
-#include "complexobject.h"
-#include "rangeobject.h"
-#include "memoryobject.h"
-#include "tupleobject.h"
-#include "listobject.h"
-#include "dictobject.h"
-#include "odictobject.h"
-#include "enumobject.h"
-#include "setobject.h"
-#include "methodobject.h"
-#include "moduleobject.h"
-#include "funcobject.h"
-#include "classobject.h"
-#include "fileobject.h"
-#include "pycapsule.h"
-#include "traceback.h"
-#include "sliceobject.h"
-#include "cellobject.h"
-#include "iterobject.h"
-#include "genobject.h"
-#include "descrobject.h"
-#include "warnings.h"
-#include "weakrefobject.h"
-#include "structseq.h"
-#include "namespaceobject.h"
-
-#include "codecs.h"
-#include "pyerrors.h"
-
-#include "pystate.h"
-#include "context.h"
-
-#include "pyarena.h"
-#include "modsupport.h"
-#include "compile.h"
-#include "pythonrun.h"
-#include "pylifecycle.h"
-#include "ceval.h"
-#include "sysmodule.h"
-#include "osmodule.h"
-#include "intrcheck.h"
-#include "import.h"
-
-#include "abstract.h"
-#include "bltinmodule.h"
-
-#include "eval.h"
-
-#include "pyctype.h"
-#include "pystrtod.h"
-#include "pystrcmp.h"
-#include "dtoa.h"
-#include "fileutils.h"
-#include "pyfpe.h"
-
-#endif /* !Py_PYTHON_H */
diff --git a/pythonsdk/include/abstract.h b/pythonsdk/include/abstract.h
deleted file mode 100644
index 6e88c2a..0000000
--- a/pythonsdk/include/abstract.h
+++ /dev/null
@@ -1,1109 +0,0 @@
-/* Abstract Object Interface (many thanks to Jim Fulton) */
-
-#ifndef Py_ABSTRACTOBJECT_H
-#define Py_ABSTRACTOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* === Object Protocol ================================================== */
-
-/* Implemented elsewhere:
-
-   int PyObject_Print(PyObject *o, FILE *fp, int flags);
-
-   Print an object 'o' on file 'fp'.  Returns -1 on error. The flags argument
-   is used to enable certain printing options. The only option currently
-   supported is Py_Print_RAW.
-
-   (What should be said about Py_Print_RAW?). */
-
-
-/* Implemented elsewhere:
-
-   int PyObject_HasAttrString(PyObject *o, const char *attr_name);
-
-   Returns 1 if object 'o' has the attribute attr_name, and 0 otherwise.
-
-   This is equivalent to the Python expression: hasattr(o,attr_name).
-
-   This function always succeeds. */
-
-
-/* Implemented elsewhere:
-
-   PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name);
-
-   Retrieve an attributed named attr_name form object o.
-   Returns the attribute value on success, or NULL on failure.
-
-   This is the equivalent of the Python expression: o.attr_name. */
-
-
-/* Implemented elsewhere:
-
-   int PyObject_HasAttr(PyObject *o, PyObject *attr_name);
-
-   Returns 1 if o has the attribute attr_name, and 0 otherwise.
-
-   This is equivalent to the Python expression: hasattr(o,attr_name).
-
-   This function always succeeds. */
-
-/* Implemented elsewhere:
-
-   PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name);
-
-   Retrieve an attributed named 'attr_name' form object 'o'.
-   Returns the attribute value on success, or NULL on failure.
-
-   This is the equivalent of the Python expression: o.attr_name. */
-
-
-/* Implemented elsewhere:
-
-   int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v);
-
-   Set the value of the attribute named attr_name, for object 'o',
-   to the value 'v'. Raise an exception and return -1 on failure; return 0 on
-   success.
-
-   This is the equivalent of the Python statement o.attr_name=v. */
-
-
-/* Implemented elsewhere:
-
-   int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v);
-
-   Set the value of the attribute named attr_name, for object 'o', to the value
-   'v'. an exception and return -1 on failure; return 0 on success.
-
-   This is the equivalent of the Python statement o.attr_name=v. */
-
-/* Implemented as a macro:
-
-   int PyObject_DelAttrString(PyObject *o, const char *attr_name);
-
-   Delete attribute named attr_name, for object o. Returns
-   -1 on failure.
-
-   This is the equivalent of the Python statement: del o.attr_name. */
-#define PyObject_DelAttrString(O,A) PyObject_SetAttrString((O),(A), NULL)
-
-
-/* Implemented as a macro:
-
-   int PyObject_DelAttr(PyObject *o, PyObject *attr_name);
-
-   Delete attribute named attr_name, for object o. Returns -1
-   on failure.  This is the equivalent of the Python
-   statement: del o.attr_name. */
-#define  PyObject_DelAttr(O,A) PyObject_SetAttr((O),(A), NULL)
-
-
-/* Implemented elsewhere:
-
-   PyObject *PyObject_Repr(PyObject *o);
-
-   Compute the string representation of object 'o'.  Returns the
-   string representation on success, NULL on failure.
-
-   This is the equivalent of the Python expression: repr(o).
-
-   Called by the repr() built-in function. */
-
-
-/* Implemented elsewhere:
-
-   PyObject *PyObject_Str(PyObject *o);
-
-   Compute the string representation of object, o.  Returns the
-   string representation on success, NULL on failure.
-
-   This is the equivalent of the Python expression: str(o).
-
-   Called by the str() and print() built-in functions. */
-
-
-/* Declared elsewhere
-
-   PyAPI_FUNC(int) PyCallable_Check(PyObject *o);
-
-   Determine if the object, o, is callable.  Return 1 if the object is callable
-   and 0 otherwise.
-
-   This function always succeeds. */
-
-
-#ifdef PY_SSIZE_T_CLEAN
-#  define PyObject_CallFunction _PyObject_CallFunction_SizeT
-#  define PyObject_CallMethod _PyObject_CallMethod_SizeT
-#  ifndef Py_LIMITED_API
-#    define _PyObject_CallMethodId _PyObject_CallMethodId_SizeT
-#  endif /* !Py_LIMITED_API */
-#endif
-
-
-/* Call a callable Python object 'callable' with arguments given by the
-   tuple 'args' and keywords arguments given by the dictionary 'kwargs'.
-
-   'args' must not be NULL, use an empty tuple if no arguments are
-   needed. If no named arguments are needed, 'kwargs' can be NULL.
-
-   This is the equivalent of the Python expression:
-   callable(*args, **kwargs). */
-PyAPI_FUNC(PyObject *) PyObject_Call(PyObject *callable,
-                                     PyObject *args, PyObject *kwargs);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) _PyStack_AsTuple(
-    PyObject *const *stack,
-    Py_ssize_t nargs);
-
-PyAPI_FUNC(PyObject*) _PyStack_AsTupleSlice(
-    PyObject *const *stack,
-    Py_ssize_t nargs,
-    Py_ssize_t start,
-    Py_ssize_t end);
-
-/* Convert keyword arguments from the FASTCALL (stack: C array, kwnames: tuple)
-   format to a Python dictionary ("kwargs" dict).
-
-   The type of kwnames keys is not checked. The final function getting
-   arguments is responsible to check if all keys are strings, for example using
-   PyArg_ParseTupleAndKeywords() or PyArg_ValidateKeywordArguments().
-
-   Duplicate keys are merged using the last value. If duplicate keys must raise
-   an exception, the caller is responsible to implement an explicit keys on
-   kwnames. */
-PyAPI_FUNC(PyObject *) _PyStack_AsDict(
-    PyObject *const *values,
-    PyObject *kwnames);
-
-/* Convert (args, nargs, kwargs: dict) into a (stack, nargs, kwnames: tuple).
-
-   Return 0 on success, raise an exception and return -1 on error.
-
-   Write the new stack into *p_stack. If *p_stack is differen than args, it
-   must be released by PyMem_Free().
-
-   The stack uses borrowed references.
-
-   The type of keyword keys is not checked, these checks should be done
-   later (ex: _PyArg_ParseStackAndKeywords). */
-PyAPI_FUNC(int) _PyStack_UnpackDict(
-    PyObject *const *args,
-    Py_ssize_t nargs,
-    PyObject *kwargs,
-    PyObject *const **p_stack,
-    PyObject **p_kwnames);
-
-/* Suggested size (number of positional arguments) for arrays of PyObject*
-   allocated on a C stack to avoid allocating memory on the heap memory. Such
-   array is used to pass positional arguments to call functions of the
-   _PyObject_FastCall() family.
-
-   The size is chosen to not abuse the C stack and so limit the risk of stack
-   overflow. The size is also chosen to allow using the small stack for most
-   function calls of the Python standard library. On 64-bit CPU, it allocates
-   40 bytes on the stack. */
-#define _PY_FASTCALL_SMALL_STACK 5
-
-/* Return 1 if callable supports FASTCALL calling convention for positional
-   arguments: see _PyObject_FastCallDict() and _PyObject_FastCallKeywords() */
-PyAPI_FUNC(int) _PyObject_HasFastCall(PyObject *callable);
-
-/* Call the callable object 'callable' with the "fast call" calling convention:
-   args is a C array for positional arguments (nargs is the number of
-   positional arguments), kwargs is a dictionary for keyword arguments.
-
-   If nargs is equal to zero, args can be NULL. kwargs can be NULL.
-   nargs must be greater or equal to zero.
-
-   Return the result on success. Raise an exception and return NULL on
-   error. */
-PyAPI_FUNC(PyObject *) _PyObject_FastCallDict(
-    PyObject *callable,
-    PyObject *const *args,
-    Py_ssize_t nargs,
-    PyObject *kwargs);
-
-/* Call the callable object 'callable' with the "fast call" calling convention:
-   args is a C array for positional arguments followed by values of
-   keyword arguments. Keys of keyword arguments are stored as a tuple
-   of strings in kwnames. nargs is the number of positional parameters at
-   the beginning of stack. The size of kwnames gives the number of keyword
-   values in the stack after positional arguments.
-
-   kwnames must only contains str strings, no subclass, and all keys must
-   be unique.
-
-   If nargs is equal to zero and there is no keyword argument (kwnames is
-   NULL or its size is zero), args can be NULL.
-
-   Return the result on success. Raise an exception and return NULL on
-   error. */
-PyAPI_FUNC(PyObject *) _PyObject_FastCallKeywords(
-    PyObject *callable,
-    PyObject *const *args,
-    Py_ssize_t nargs,
-    PyObject *kwnames);
-
-#define _PyObject_FastCall(func, args, nargs) \
-    _PyObject_FastCallDict((func), (args), (nargs), NULL)
-
-#define _PyObject_CallNoArg(func) \
-    _PyObject_FastCallDict((func), NULL, 0, NULL)
-
-PyAPI_FUNC(PyObject *) _PyObject_Call_Prepend(
-    PyObject *callable,
-    PyObject *obj,
-    PyObject *args,
-    PyObject *kwargs);
-
-PyAPI_FUNC(PyObject *) _PyObject_FastCall_Prepend(
-    PyObject *callable,
-    PyObject *obj,
-    PyObject *const *args,
-    Py_ssize_t nargs);
-
-PyAPI_FUNC(PyObject *) _Py_CheckFunctionResult(PyObject *callable,
-                                               PyObject *result,
-                                               const char *where);
-#endif   /* Py_LIMITED_API */
-
-
-/* Call a callable Python object 'callable', with arguments given by the
-   tuple 'args'.  If no arguments are needed, then 'args' can be NULL.
-
-   Returns the result of the call on success, or NULL on failure.
-
-   This is the equivalent of the Python expression:
-   callable(*args). */
-PyAPI_FUNC(PyObject *) PyObject_CallObject(PyObject *callable,
-                                           PyObject *args);
-
-/* Call a callable Python object, callable, with a variable number of C
-   arguments. The C arguments are described using a mkvalue-style format
-   string.
-
-   The format may be NULL, indicating that no arguments are provided.
-
-   Returns the result of the call on success, or NULL on failure.
-
-   This is the equivalent of the Python expression:
-   callable(arg1, arg2, ...). */
-PyAPI_FUNC(PyObject *) PyObject_CallFunction(PyObject *callable,
-                                             const char *format, ...);
-
-/* Call the method named 'name' of object 'obj' with a variable number of
-   C arguments.  The C arguments are described by a mkvalue format string.
-
-   The format can be NULL, indicating that no arguments are provided.
-
-   Returns the result of the call on success, or NULL on failure.
-
-   This is the equivalent of the Python expression:
-   obj.name(arg1, arg2, ...). */
-PyAPI_FUNC(PyObject *) PyObject_CallMethod(PyObject *obj,
-                                           const char *name,
-                                           const char *format, ...);
-
-#ifndef Py_LIMITED_API
-/* Like PyObject_CallMethod(), but expect a _Py_Identifier*
-   as the method name. */
-PyAPI_FUNC(PyObject *) _PyObject_CallMethodId(PyObject *obj,
-                                              _Py_Identifier *name,
-                                              const char *format, ...);
-#endif /* !Py_LIMITED_API */
-
-PyAPI_FUNC(PyObject *) _PyObject_CallFunction_SizeT(PyObject *callable,
-                                                    const char *format,
-                                                    ...);
-
-PyAPI_FUNC(PyObject *) _PyObject_CallMethod_SizeT(PyObject *obj,
-                                                  const char *name,
-                                                  const char *format,
-                                                  ...);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyObject_CallMethodId_SizeT(PyObject *obj,
-                                                    _Py_Identifier *name,
-                                                    const char *format,
-                                                    ...);
-#endif /* !Py_LIMITED_API */
-
-/* Call a callable Python object 'callable' with a variable number of C
-   arguments. The C arguments are provided as PyObject* values, terminated
-   by a NULL.
-
-   Returns the result of the call on success, or NULL on failure.
-
-   This is the equivalent of the Python expression:
-   callable(arg1, arg2, ...). */
-PyAPI_FUNC(PyObject *) PyObject_CallFunctionObjArgs(PyObject *callable,
-                                                    ...);
-
-/* Call the method named 'name' of object 'obj' with a variable number of
-   C arguments.  The C arguments are provided as PyObject* values, terminated
-   by NULL.
-
-   Returns the result of the call on success, or NULL on failure.
-
-   This is the equivalent of the Python expression: obj.name(*args). */
-
-PyAPI_FUNC(PyObject *) PyObject_CallMethodObjArgs(
-    PyObject *obj,
-    PyObject *name,
-    ...);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyObject_CallMethodIdObjArgs(
-    PyObject *obj,
-    struct _Py_Identifier *name,
-    ...);
-#endif /* !Py_LIMITED_API */
-
-
-/* Implemented elsewhere:
-
-   Py_hash_t PyObject_Hash(PyObject *o);
-
-   Compute and return the hash, hash_value, of an object, o.  On
-   failure, return -1.
-
-   This is the equivalent of the Python expression: hash(o). */
-
-
-/* Implemented elsewhere:
-
-   int PyObject_IsTrue(PyObject *o);
-
-   Returns 1 if the object, o, is considered to be true, 0 if o is
-   considered to be false and -1 on failure.
-
-   This is equivalent to the Python expression: not not o. */
-
-
-/* Implemented elsewhere:
-
-   int PyObject_Not(PyObject *o);
-
-   Returns 0 if the object, o, is considered to be true, 1 if o is
-   considered to be false and -1 on failure.
-
-   This is equivalent to the Python expression: not o. */
-
-
-/* Get the type of an object.
-
-   On success, returns a type object corresponding to the object type of object
-   'o'. On failure, returns NULL.
-
-   This is equivalent to the Python expression: type(o) */
-PyAPI_FUNC(PyObject *) PyObject_Type(PyObject *o);
-
-
-/* Return the size of object 'o'.  If the object 'o' provides both sequence and
-   mapping protocols, the sequence size is returned.
-
-   On error, -1 is returned.
-
-   This is the equivalent to the Python expression: len(o) */
-PyAPI_FUNC(Py_ssize_t) PyObject_Size(PyObject *o);
-
-
-/* For DLL compatibility */
-#undef PyObject_Length
-PyAPI_FUNC(Py_ssize_t) PyObject_Length(PyObject *o);
-#define PyObject_Length PyObject_Size
-
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyObject_HasLen(PyObject *o);
-
-/* Guess the size of object 'o' using len(o) or o.__length_hint__().
-   If neither of those return a non-negative value, then return the default
-   value.  If one of the calls fails, this function returns -1. */
-PyAPI_FUNC(Py_ssize_t) PyObject_LengthHint(PyObject *o, Py_ssize_t);
-#endif
-
-/* Return element of 'o' corresponding to the object 'key'. Return NULL
-  on failure.
-
-  This is the equivalent of the Python expression: o[key] */
-PyAPI_FUNC(PyObject *) PyObject_GetItem(PyObject *o, PyObject *key);
-
-
-/* Map the object 'key' to the value 'v' into 'o'.
-
-   Raise an exception and return -1 on failure; return 0 on success.
-
-   This is the equivalent of the Python statement: o[key]=v. */
-PyAPI_FUNC(int) PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v);
-
-/* Remove the mapping for the string 'key' from the object 'o'.
-   Returns -1 on failure.
-
-   This is equivalent to the Python statement: del o[key]. */
-PyAPI_FUNC(int) PyObject_DelItemString(PyObject *o, const char *key);
-
-/* Delete the mapping for the object 'key' from the object 'o'.
-   Returns -1 on failure.
-
-   This is the equivalent of the Python statement: del o[key]. */
-PyAPI_FUNC(int) PyObject_DelItem(PyObject *o, PyObject *key);
-
-
-/* === Old Buffer API ============================================ */
-
-/* FIXME:  usage of these should all be replaced in Python itself
-   but for backwards compatibility we will implement them.
-   Their usage without a corresponding "unlock" mechanism
-   may create issues (but they would already be there). */
-
-/* Takes an arbitrary object which must support the (character, single segment)
-   buffer interface and returns a pointer to a read-only memory location
-   useable as character based input for subsequent processing.
-
-   Return 0 on success.  buffer and buffer_len are only set in case no error
-   occurs. Otherwise, -1 is returned and an exception set. */
-PyAPI_FUNC(int) PyObject_AsCharBuffer(PyObject *obj,
-                                      const char **buffer,
-                                      Py_ssize_t *buffer_len)
-                                      Py_DEPRECATED(3.0);
-
-/* Checks whether an arbitrary object supports the (character, single segment)
-   buffer interface.
-
-   Returns 1 on success, 0 on failure. */
-PyAPI_FUNC(int) PyObject_CheckReadBuffer(PyObject *obj)
-                                         Py_DEPRECATED(3.0);
-
-/* Same as PyObject_AsCharBuffer() except that this API expects (readable,
-   single segment) buffer interface and returns a pointer to a read-only memory
-   location which can contain arbitrary data.
-
-   0 is returned on success.  buffer and buffer_len are only set in case no
-   error occurs.  Otherwise, -1 is returned and an exception set. */
-PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj,
-                                      const void **buffer,
-                                      Py_ssize_t *buffer_len)
-                                      Py_DEPRECATED(3.0);
-
-/* Takes an arbitrary object which must support the (writable, single segment)
-   buffer interface and returns a pointer to a writable memory location in
-   buffer of size 'buffer_len'.
-
-   Return 0 on success.  buffer and buffer_len are only set in case no error
-   occurs. Otherwise, -1 is returned and an exception set. */
-PyAPI_FUNC(int) PyObject_AsWriteBuffer(PyObject *obj,
-                                       void **buffer,
-                                       Py_ssize_t *buffer_len)
-                                       Py_DEPRECATED(3.0);
-
-
-/* === New Buffer API ============================================ */
-
-#ifndef Py_LIMITED_API
-
-/* Return 1 if the getbuffer function is available, otherwise return 0. */
-#define PyObject_CheckBuffer(obj) \
-    (((obj)->ob_type->tp_as_buffer != NULL) &&  \
-     ((obj)->ob_type->tp_as_buffer->bf_getbuffer != NULL))
-
-/* This is a C-API version of the getbuffer function call.  It checks
-   to make sure object has the required function pointer and issues the
-   call.
-
-   Returns -1 and raises an error on failure and returns 0 on success. */
-PyAPI_FUNC(int) PyObject_GetBuffer(PyObject *obj, Py_buffer *view,
-                                   int flags);
-
-/* Get the memory area pointed to by the indices for the buffer given.
-   Note that view->ndim is the assumed size of indices. */
-PyAPI_FUNC(void *) PyBuffer_GetPointer(Py_buffer *view, Py_ssize_t *indices);
-
-/* Return the implied itemsize of the data-format area from a
-   struct-style description. */
-PyAPI_FUNC(int) PyBuffer_SizeFromFormat(const char *);
-
-/* Implementation in memoryobject.c */
-PyAPI_FUNC(int) PyBuffer_ToContiguous(void *buf, Py_buffer *view,
-                                      Py_ssize_t len, char order);
-
-PyAPI_FUNC(int) PyBuffer_FromContiguous(Py_buffer *view, void *buf,
-                                        Py_ssize_t len, char order);
-
-/* Copy len bytes of data from the contiguous chunk of memory
-   pointed to by buf into the buffer exported by obj.  Return
-   0 on success and return -1 and raise a PyBuffer_Error on
-   error (i.e. the object does not have a buffer interface or
-   it is not working).
-
-   If fort is 'F', then if the object is multi-dimensional,
-   then the data will be copied into the array in
-   Fortran-style (first dimension varies the fastest).  If
-   fort is 'C', then the data will be copied into the array
-   in C-style (last dimension varies the fastest).  If fort
-   is 'A', then it does not matter and the copy will be made
-   in whatever way is more efficient. */
-PyAPI_FUNC(int) PyObject_CopyData(PyObject *dest, PyObject *src);
-
-/* Copy the data from the src buffer to the buffer of destination. */
-PyAPI_FUNC(int) PyBuffer_IsContiguous(const Py_buffer *view, char fort);
-
-/*Fill the strides array with byte-strides of a contiguous
-  (Fortran-style if fort is 'F' or C-style otherwise)
-  array of the given shape with the given number of bytes
-  per element. */
-PyAPI_FUNC(void) PyBuffer_FillContiguousStrides(int ndims,
-                                               Py_ssize_t *shape,
-                                               Py_ssize_t *strides,
-                                               int itemsize,
-                                               char fort);
-
-/* Fills in a buffer-info structure correctly for an exporter
-   that can only share a contiguous chunk of memory of
-   "unsigned bytes" of the given length.
-
-   Returns 0 on success and -1 (with raising an error) on error. */
-PyAPI_FUNC(int) PyBuffer_FillInfo(Py_buffer *view, PyObject *o, void *buf,
-                                  Py_ssize_t len, int readonly,
-                                  int flags);
-
-/* Releases a Py_buffer obtained from getbuffer ParseTuple's "s*". */
-PyAPI_FUNC(void) PyBuffer_Release(Py_buffer *view);
-
-#endif /* Py_LIMITED_API */
-
-/* Takes an arbitrary object and returns the result of calling
-   obj.__format__(format_spec). */
-PyAPI_FUNC(PyObject *) PyObject_Format(PyObject *obj,
-                                       PyObject *format_spec);
-
-
-/* ==== Iterators ================================================ */
-
-/* Takes an object and returns an iterator for it.
-   This is typically a new iterator but if the argument is an iterator, this
-   returns itself. */
-PyAPI_FUNC(PyObject *) PyObject_GetIter(PyObject *);
-
-#define PyIter_Check(obj) \
-    ((obj)->ob_type->tp_iternext != NULL && \
-     (obj)->ob_type->tp_iternext != &_PyObject_NextNotImplemented)
-
-/* Takes an iterator object and calls its tp_iternext slot,
-   returning the next value.
-
-   If the iterator is exhausted, this returns NULL without setting an
-   exception.
-
-   NULL with an exception means an error occurred. */
-PyAPI_FUNC(PyObject *) PyIter_Next(PyObject *);
-
-
-/* === Number Protocol ================================================== */
-
-/* Returns 1 if the object 'o' provides numeric protocols, and 0 otherwise.
-
-   This function always succeeds. */
-PyAPI_FUNC(int) PyNumber_Check(PyObject *o);
-
-/* Returns the result of adding o1 and o2, or NULL on failure.
-
-   This is the equivalent of the Python expression: o1 + o2. */
-PyAPI_FUNC(PyObject *) PyNumber_Add(PyObject *o1, PyObject *o2);
-
-/* Returns the result of subtracting o2 from o1, or NULL on failure.
-
-   This is the equivalent of the Python expression: o1 - o2. */
-PyAPI_FUNC(PyObject *) PyNumber_Subtract(PyObject *o1, PyObject *o2);
-
-/* Returns the result of multiplying o1 and o2, or NULL on failure.
-
-   This is the equivalent of the Python expression: o1 * o2. */
-PyAPI_FUNC(PyObject *) PyNumber_Multiply(PyObject *o1, PyObject *o2);
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-/* This is the equivalent of the Python expression: o1 @ o2. */
-PyAPI_FUNC(PyObject *) PyNumber_MatrixMultiply(PyObject *o1, PyObject *o2);
-#endif
-
-/* Returns the result of dividing o1 by o2 giving an integral result,
-   or NULL on failure.
-
-   This is the equivalent of the Python expression: o1 // o2. */
-PyAPI_FUNC(PyObject *) PyNumber_FloorDivide(PyObject *o1, PyObject *o2);
-
-/* Returns the result of dividing o1 by o2 giving a float result, or NULL on
-   failure.
-
-   This is the equivalent of the Python expression: o1 / o2. */
-PyAPI_FUNC(PyObject *) PyNumber_TrueDivide(PyObject *o1, PyObject *o2);
-
-/* Returns the remainder of dividing o1 by o2, or NULL on failure.
-
-   This is the equivalent of the Python expression: o1 % o2. */
-PyAPI_FUNC(PyObject *) PyNumber_Remainder(PyObject *o1, PyObject *o2);
-
-/* See the built-in function divmod.
-
-   Returns NULL on failure.
-
-   This is the equivalent of the Python expression: divmod(o1, o2). */
-PyAPI_FUNC(PyObject *) PyNumber_Divmod(PyObject *o1, PyObject *o2);
-
-/* See the built-in function pow. Returns NULL on failure.
-
-   This is the equivalent of the Python expression: pow(o1, o2, o3),
-   where o3 is optional. */
-PyAPI_FUNC(PyObject *) PyNumber_Power(PyObject *o1, PyObject *o2,
-                                      PyObject *o3);
-
-/* Returns the negation of o on success, or NULL on failure.
-
- This is the equivalent of the Python expression: -o. */
-PyAPI_FUNC(PyObject *) PyNumber_Negative(PyObject *o);
-
-/* Returns the positive of o on success, or NULL on failure.
-
-   This is the equivalent of the Python expression: +o. */
-PyAPI_FUNC(PyObject *) PyNumber_Positive(PyObject *o);
-
-/* Returns the absolute value of 'o', or NULL on failure.
-
-   This is the equivalent of the Python expression: abs(o). */
-PyAPI_FUNC(PyObject *) PyNumber_Absolute(PyObject *o);
-
-/* Returns the bitwise negation of 'o' on success, or NULL on failure.
-
-   This is the equivalent of the Python expression: ~o. */
-PyAPI_FUNC(PyObject *) PyNumber_Invert(PyObject *o);
-
-/* Returns the result of left shifting o1 by o2 on success, or NULL on failure.
-
-   This is the equivalent of the Python expression: o1 << o2. */
-PyAPI_FUNC(PyObject *) PyNumber_Lshift(PyObject *o1, PyObject *o2);
-
-/* Returns the result of right shifting o1 by o2 on success, or NULL on
-   failure.
-
-   This is the equivalent of the Python expression: o1 >> o2. */
-PyAPI_FUNC(PyObject *) PyNumber_Rshift(PyObject *o1, PyObject *o2);
-
-/* Returns the result of bitwise and of o1 and o2 on success, or NULL on
-   failure.
-
-   This is the equivalent of the Python expression: o1 & o2. */
-PyAPI_FUNC(PyObject *) PyNumber_And(PyObject *o1, PyObject *o2);
-
-/* Returns the bitwise exclusive or of o1 by o2 on success, or NULL on failure.
-
-   This is the equivalent of the Python expression: o1 ^ o2. */
-PyAPI_FUNC(PyObject *) PyNumber_Xor(PyObject *o1, PyObject *o2);
-
-/* Returns the result of bitwise or on o1 and o2 on success, or NULL on
-   failure.
-
-   This is the equivalent of the Python expression: o1 | o2. */
-PyAPI_FUNC(PyObject *) PyNumber_Or(PyObject *o1, PyObject *o2);
-
-#define PyIndex_Check(obj)                              \
-    ((obj)->ob_type->tp_as_number != NULL &&            \
-     (obj)->ob_type->tp_as_number->nb_index != NULL)
-
-/* Returns the object 'o' converted to a Python int, or NULL with an exception
-   raised on failure. */
-PyAPI_FUNC(PyObject *) PyNumber_Index(PyObject *o);
-
-/* Returns the object 'o' converted to Py_ssize_t by going through
-   PyNumber_Index() first.
-
-   If an overflow error occurs while converting the int to Py_ssize_t, then the
-   second argument 'exc' is the error-type to return.  If it is NULL, then the
-   overflow error is cleared and the value is clipped. */
-PyAPI_FUNC(Py_ssize_t) PyNumber_AsSsize_t(PyObject *o, PyObject *exc);
-
-/* Returns the object 'o' converted to an integer object on success, or NULL
-   on failure.
-
-   This is the equivalent of the Python expression: int(o). */
-PyAPI_FUNC(PyObject *) PyNumber_Long(PyObject *o);
-
-/* Returns the object 'o' converted to a float object on success, or NULL
-  on failure.
-
-  This is the equivalent of the Python expression: float(o). */
-PyAPI_FUNC(PyObject *) PyNumber_Float(PyObject *o);
-
-
-/* --- In-place variants of (some of) the above number protocol functions -- */
-
-/* Returns the result of adding o2 to o1, possibly in-place, or NULL
-   on failure.
-
-   This is the equivalent of the Python expression: o1 += o2. */
-PyAPI_FUNC(PyObject *) PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2);
-
-/* Returns the result of subtracting o2 from o1, possibly in-place or
-   NULL on failure.
-
-   This is the equivalent of the Python expression: o1 -= o2. */
-PyAPI_FUNC(PyObject *) PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2);
-
-/* Returns the result of multiplying o1 by o2, possibly in-place, or NULL on
-   failure.
-
-   This is the equivalent of the Python expression: o1 *= o2. */
-PyAPI_FUNC(PyObject *) PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2);
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-/* This is the equivalent of the Python expression: o1 @= o2. */
-PyAPI_FUNC(PyObject *) PyNumber_InPlaceMatrixMultiply(PyObject *o1, PyObject *o2);
-#endif
-
-/* Returns the result of dividing o1 by o2 giving an integral result, possibly
-   in-place, or NULL on failure.
-
-   This is the equivalent of the Python expression: o1 /= o2. */
-PyAPI_FUNC(PyObject *) PyNumber_InPlaceFloorDivide(PyObject *o1,
-                                                   PyObject *o2);
-
-/* Returns the result of dividing o1 by o2 giving a float result, possibly
-   in-place, or null on failure.
-
-   This is the equivalent of the Python expression: o1 /= o2. */
-PyAPI_FUNC(PyObject *) PyNumber_InPlaceTrueDivide(PyObject *o1,
-                                                  PyObject *o2);
-
-/* Returns the remainder of dividing o1 by o2, possibly in-place, or NULL on
-   failure.
-
-   This is the equivalent of the Python expression: o1 %= o2. */
-PyAPI_FUNC(PyObject *) PyNumber_InPlaceRemainder(PyObject *o1, PyObject *o2);
-
-/* Returns the result of raising o1 to the power of o2, possibly in-place,
-   or NULL on failure.
-
-   This is the equivalent of the Python expression: o1 **= o2,
-   or o1 = pow(o1, o2, o3) if o3 is present. */
-PyAPI_FUNC(PyObject *) PyNumber_InPlacePower(PyObject *o1, PyObject *o2,
-                                             PyObject *o3);
-
-/* Returns the result of left shifting o1 by o2, possibly in-place, or NULL
-   on failure.
-
-   This is the equivalent of the Python expression: o1 <<= o2. */
-PyAPI_FUNC(PyObject *) PyNumber_InPlaceLshift(PyObject *o1, PyObject *o2);
-
-/* Returns the result of right shifting o1 by o2, possibly in-place or NULL
-   on failure.
-
-   This is the equivalent of the Python expression: o1 >>= o2. */
-PyAPI_FUNC(PyObject *) PyNumber_InPlaceRshift(PyObject *o1, PyObject *o2);
-
-/* Returns the result of bitwise and of o1 and o2, possibly in-place, or NULL
-   on failure.
-
-   This is the equivalent of the Python expression: o1 &= o2. */
-PyAPI_FUNC(PyObject *) PyNumber_InPlaceAnd(PyObject *o1, PyObject *o2);
-
-/* Returns the bitwise exclusive or of o1 by o2, possibly in-place, or NULL
-   on failure.
-
-   This is the equivalent of the Python expression: o1 ^= o2. */
-PyAPI_FUNC(PyObject *) PyNumber_InPlaceXor(PyObject *o1, PyObject *o2);
-
-/* Returns the result of bitwise or of o1 and o2, possibly in-place,
-   or NULL on failure.
-
-   This is the equivalent of the Python expression: o1 |= o2. */
-PyAPI_FUNC(PyObject *) PyNumber_InPlaceOr(PyObject *o1, PyObject *o2);
-
-/* Returns the integer n converted to a string with a base, with a base
-   marker of 0b, 0o or 0x prefixed if applicable.
-
-   If n is not an int object, it is converted with PyNumber_Index first. */
-PyAPI_FUNC(PyObject *) PyNumber_ToBase(PyObject *n, int base);
-
-
-/* === Sequence protocol ================================================ */
-
-/* Return 1 if the object provides sequence protocol, and zero
-   otherwise.
-
-   This function always succeeds. */
-PyAPI_FUNC(int) PySequence_Check(PyObject *o);
-
-/* Return the size of sequence object o, or -1 on failure. */
-PyAPI_FUNC(Py_ssize_t) PySequence_Size(PyObject *o);
-
-/* For DLL compatibility */
-#undef PySequence_Length
-PyAPI_FUNC(Py_ssize_t) PySequence_Length(PyObject *o);
-#define PySequence_Length PySequence_Size
-
-
-/* Return the concatenation of o1 and o2 on success, and NULL on failure.
-
-   This is the equivalent of the Python expression: o1 + o2. */
-PyAPI_FUNC(PyObject *) PySequence_Concat(PyObject *o1, PyObject *o2);
-
-/* Return the result of repeating sequence object 'o' 'count' times,
-  or NULL on failure.
-
-  This is the equivalent of the Python expression: o * count. */
-PyAPI_FUNC(PyObject *) PySequence_Repeat(PyObject *o, Py_ssize_t count);
-
-/* Return the ith element of o, or NULL on failure.
-
-   This is the equivalent of the Python expression: o[i]. */
-PyAPI_FUNC(PyObject *) PySequence_GetItem(PyObject *o, Py_ssize_t i);
-
-/* Return the slice of sequence object o between i1 and i2, or NULL on failure.
-
-   This is the equivalent of the Python expression: o[i1:i2]. */
-PyAPI_FUNC(PyObject *) PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2);
-
-/* Assign object 'v' to the ith element of the sequence 'o'. Raise an exception
-   and return -1 on failure; return 0 on success.
-
-   This is the equivalent of the Python statement o[i] = v. */
-PyAPI_FUNC(int) PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v);
-
-/* Delete the 'i'-th element of the sequence 'v'. Returns -1 on failure.
-
-   This is the equivalent of the Python statement: del o[i]. */
-PyAPI_FUNC(int) PySequence_DelItem(PyObject *o, Py_ssize_t i);
-
-/* Assign the sequence object 'v' to the slice in sequence object 'o',
-   from 'i1' to 'i2'. Returns -1 on failure.
-
-   This is the equivalent of the Python statement: o[i1:i2] = v. */
-PyAPI_FUNC(int) PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2,
-                                    PyObject *v);
-
-/* Delete the slice in sequence object 'o' from 'i1' to 'i2'.
-   Returns -1 on failure.
-
-   This is the equivalent of the Python statement: del o[i1:i2]. */
-PyAPI_FUNC(int) PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2);
-
-/* Returns the sequence 'o' as a tuple on success, and NULL on failure.
-
-   This is equivalent to the Python expression: tuple(o). */
-PyAPI_FUNC(PyObject *) PySequence_Tuple(PyObject *o);
-
-/* Returns the sequence 'o' as a list on success, and NULL on failure.
-   This is equivalent to the Python expression: list(o) */
-PyAPI_FUNC(PyObject *) PySequence_List(PyObject *o);
-
-/* Return the sequence 'o' as a list, unless it's already a tuple or list.
-
-   Use PySequence_Fast_GET_ITEM to access the members of this list, and
-   PySequence_Fast_GET_SIZE to get its length.
-
-   Returns NULL on failure.  If the object does not support iteration, raises a
-   TypeError exception with 'm' as the message text. */
-PyAPI_FUNC(PyObject *) PySequence_Fast(PyObject *o, const char* m);
-
-/* Return the size of the sequence 'o', assuming that 'o' was returned by
-   PySequence_Fast and is not NULL. */
-#define PySequence_Fast_GET_SIZE(o) \
-    (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
-
-/* Return the 'i'-th element of the sequence 'o', assuming that o was returned
-   by PySequence_Fast, and that i is within bounds. */
-#define PySequence_Fast_GET_ITEM(o, i)\
-     (PyList_Check(o) ? PyList_GET_ITEM(o, i) : PyTuple_GET_ITEM(o, i))
-
-/* Assume tp_as_sequence and sq_item exist and that 'i' does not
-   need to be corrected for a negative index. */
-#define PySequence_ITEM(o, i)\
-    ( Py_TYPE(o)->tp_as_sequence->sq_item(o, i) )
-
-/* Return a pointer to the underlying item array for
-   an object retured by PySequence_Fast */
-#define PySequence_Fast_ITEMS(sf) \
-    (PyList_Check(sf) ? ((PyListObject *)(sf))->ob_item \
-                      : ((PyTupleObject *)(sf))->ob_item)
-
-/* Return the number of occurrences on value on 'o', that is, return
-   the number of keys for which o[key] == value.
-
-   On failure, return -1.  This is equivalent to the Python expression:
-   o.count(value). */
-PyAPI_FUNC(Py_ssize_t) PySequence_Count(PyObject *o, PyObject *value);
-
-/* Return 1 if 'ob' is in the sequence 'seq'; 0 if 'ob' is not in the sequence
-   'seq'; -1 on error.
-
-   Use __contains__ if possible, else _PySequence_IterSearch(). */
-PyAPI_FUNC(int) PySequence_Contains(PyObject *seq, PyObject *ob);
-
-#ifndef Py_LIMITED_API
-#define PY_ITERSEARCH_COUNT    1
-#define PY_ITERSEARCH_INDEX    2
-#define PY_ITERSEARCH_CONTAINS 3
-
-/* Iterate over seq.
-
-   Result depends on the operation:
-
-   PY_ITERSEARCH_COUNT:  return # of times obj appears in seq; -1 if
-     error.
-   PY_ITERSEARCH_INDEX:  return 0-based index of first occurrence of
-     obj in seq; set ValueError and return -1 if none found;
-     also return -1 on error.
-   PY_ITERSEARCH_CONTAINS:  return 1 if obj in seq, else 0; -1 on
-     error. */
-PyAPI_FUNC(Py_ssize_t) _PySequence_IterSearch(PyObject *seq,
-                                              PyObject *obj, int operation);
-#endif
-
-
-/* For DLL-level backwards compatibility */
-#undef PySequence_In
-/* Determine if the sequence 'o' contains 'value'. If an item in 'o' is equal
-   to 'value', return 1, otherwise return 0. On error, return -1.
-
-   This is equivalent to the Python expression: value in o. */
-PyAPI_FUNC(int) PySequence_In(PyObject *o, PyObject *value);
-
-/* For source-level backwards compatibility */
-#define PySequence_In PySequence_Contains
-
-
-/* Return the first index for which o[i] == value.
-   On error, return -1.
-
-   This is equivalent to the Python expression: o.index(value). */
-PyAPI_FUNC(Py_ssize_t) PySequence_Index(PyObject *o, PyObject *value);
-
-
-/* --- In-place versions of some of the above Sequence functions --- */
-
-/* Append sequence 'o2' to sequence 'o1', in-place when possible. Return the
-   resulting object, which could be 'o1', or NULL on failure.
-
-  This is the equivalent of the Python expression: o1 += o2. */
-PyAPI_FUNC(PyObject *) PySequence_InPlaceConcat(PyObject *o1, PyObject *o2);
-
-/* Repeat sequence 'o' by 'count', in-place when possible. Return the resulting
-   object, which could be 'o', or NULL on failure.
-
-   This is the equivalent of the Python expression: o1 *= count.  */
-PyAPI_FUNC(PyObject *) PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count);
-
-
-/* === Mapping protocol ================================================= */
-
-/* Return 1 if the object provides mapping protocol, and 0 otherwise.
-
-   This function always succeeds. */
-PyAPI_FUNC(int) PyMapping_Check(PyObject *o);
-
-/* Returns the number of keys in mapping object 'o' on success, and -1 on
-  failure. This is equivalent to the Python expression: len(o). */
-PyAPI_FUNC(Py_ssize_t) PyMapping_Size(PyObject *o);
-
-/* For DLL compatibility */
-#undef PyMapping_Length
-PyAPI_FUNC(Py_ssize_t) PyMapping_Length(PyObject *o);
-#define PyMapping_Length PyMapping_Size
-
-
-/* Implemented as a macro:
-
-   int PyMapping_DelItemString(PyObject *o, const char *key);
-
-   Remove the mapping for the string 'key' from the mapping 'o'. Returns -1 on
-   failure.
-
-   This is equivalent to the Python statement: del o[key]. */
-#define PyMapping_DelItemString(O,K) PyObject_DelItemString((O),(K))
-
-/* Implemented as a macro:
-
-   int PyMapping_DelItem(PyObject *o, PyObject *key);
-
-   Remove the mapping for the object 'key' from the mapping object 'o'.
-   Returns -1 on failure.
-
-   This is equivalent to the Python statement: del o[key]. */
-#define PyMapping_DelItem(O,K) PyObject_DelItem((O),(K))
-
-/* On success, return 1 if the mapping object 'o' has the key 'key',
-   and 0 otherwise.
-
-   This is equivalent to the Python expression: key in o.
-
-   This function always succeeds. */
-PyAPI_FUNC(int) PyMapping_HasKeyString(PyObject *o, const char *key);
-
-/* Return 1 if the mapping object has the key 'key', and 0 otherwise.
-
-   This is equivalent to the Python expression: key in o.
-
-   This function always succeeds. */
-PyAPI_FUNC(int) PyMapping_HasKey(PyObject *o, PyObject *key);
-
-/* On success, return a list or tuple of the keys in mapping object 'o'.
-   On failure, return NULL. */
-PyAPI_FUNC(PyObject *) PyMapping_Keys(PyObject *o);
-
-/* On success, return a list or tuple of the values in mapping object 'o'.
-   On failure, return NULL. */
-PyAPI_FUNC(PyObject *) PyMapping_Values(PyObject *o);
-
-/* On success, return a list or tuple of the items in mapping object 'o',
-   where each item is a tuple containing a key-value pair. On failure, return
-   NULL. */
-PyAPI_FUNC(PyObject *) PyMapping_Items(PyObject *o);
-
-/* Return element of 'o' corresponding to the string 'key' or NULL on failure.
-
-   This is the equivalent of the Python expression: o[key]. */
-PyAPI_FUNC(PyObject *) PyMapping_GetItemString(PyObject *o,
-                                               const char *key);
-
-/* Map the string 'key' to the value 'v' in the mapping 'o'.
-   Returns -1 on failure.
-
-   This is the equivalent of the Python statement: o[key]=v. */
-PyAPI_FUNC(int) PyMapping_SetItemString(PyObject *o, const char *key,
-                                        PyObject *value);
-
-/* isinstance(object, typeorclass) */
-PyAPI_FUNC(int) PyObject_IsInstance(PyObject *object, PyObject *typeorclass);
-
-/* issubclass(object, typeorclass) */
-PyAPI_FUNC(int) PyObject_IsSubclass(PyObject *object, PyObject *typeorclass);
-
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyObject_RealIsInstance(PyObject *inst, PyObject *cls);
-
-PyAPI_FUNC(int) _PyObject_RealIsSubclass(PyObject *derived, PyObject *cls);
-
-PyAPI_FUNC(char *const *) _PySequence_BytesToCharpArray(PyObject* self);
-
-PyAPI_FUNC(void) _Py_FreeCharPArray(char *const array[]);
-
-/* For internal use by buffer API functions */
-PyAPI_FUNC(void) _Py_add_one_to_index_F(int nd, Py_ssize_t *index,
-                                        const Py_ssize_t *shape);
-PyAPI_FUNC(void) _Py_add_one_to_index_C(int nd, Py_ssize_t *index,
-                                        const Py_ssize_t *shape);
-
-/* Convert Python int to Py_ssize_t. Do nothing if the argument is None. */
-PyAPI_FUNC(int) _Py_convert_optional_to_ssize_t(PyObject *, void *);
-#endif /* !Py_LIMITED_API */
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* Py_ABSTRACTOBJECT_H */
diff --git a/pythonsdk/include/accu.h b/pythonsdk/include/accu.h
deleted file mode 100644
index 5856f11..0000000
--- a/pythonsdk/include/accu.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef Py_LIMITED_API
-#ifndef Py_ACCU_H
-#define Py_ACCU_H
-
-/*** This is a private API for use by the interpreter and the stdlib.
- *** Its definition may be changed or removed at any moment.
- ***/
-
-/*
- * A two-level accumulator of unicode objects that avoids both the overhead
- * of keeping a huge number of small separate objects, and the quadratic
- * behaviour of using a naive repeated concatenation scheme.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#undef small /* defined by some Windows headers */
-
-typedef struct {
-    PyObject *large;  /* A list of previously accumulated large strings */
-    PyObject *small;  /* Pending small strings */
-} _PyAccu;
-
-PyAPI_FUNC(int) _PyAccu_Init(_PyAccu *acc);
-PyAPI_FUNC(int) _PyAccu_Accumulate(_PyAccu *acc, PyObject *unicode);
-PyAPI_FUNC(PyObject *) _PyAccu_FinishAsList(_PyAccu *acc);
-PyAPI_FUNC(PyObject *) _PyAccu_Finish(_PyAccu *acc);
-PyAPI_FUNC(void) _PyAccu_Destroy(_PyAccu *acc);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* Py_ACCU_H */
-#endif /* Py_LIMITED_API */
diff --git a/pythonsdk/include/asdl.h b/pythonsdk/include/asdl.h
deleted file mode 100644
index 99c5580..0000000
--- a/pythonsdk/include/asdl.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef Py_ASDL_H
-#define Py_ASDL_H
-
-typedef PyObject * identifier;
-typedef PyObject * string;
-typedef PyObject * bytes;
-typedef PyObject * object;
-typedef PyObject * singleton;
-typedef PyObject * constant;
-
-/* It would be nice if the code generated by asdl_c.py was completely
-   independent of Python, but it is a goal the requires too much work
-   at this stage.  So, for example, I'll represent identifiers as
-   interned Python strings.
-*/
-
-/* XXX A sequence should be typed so that its use can be typechecked. */
-
-typedef struct {
-    Py_ssize_t size;
-    void *elements[1];
-} asdl_seq;
-
-typedef struct {
-    Py_ssize_t size;
-    int elements[1];
-} asdl_int_seq;
-
-asdl_seq *_Py_asdl_seq_new(Py_ssize_t size, PyArena *arena);
-asdl_int_seq *_Py_asdl_int_seq_new(Py_ssize_t size, PyArena *arena);
-
-#define asdl_seq_GET(S, I) (S)->elements[(I)]
-#define asdl_seq_LEN(S) ((S) == NULL ? 0 : (S)->size)
-#ifdef Py_DEBUG
-#define asdl_seq_SET(S, I, V) \
-    do { \
-        Py_ssize_t _asdl_i = (I); \
-        assert((S) != NULL); \
-        assert(_asdl_i < (S)->size); \
-        (S)->elements[_asdl_i] = (V); \
-    } while (0)
-#else
-#define asdl_seq_SET(S, I, V) (S)->elements[I] = (V)
-#endif
-
-#endif /* !Py_ASDL_H */
diff --git a/pythonsdk/include/ast.h b/pythonsdk/include/ast.h
deleted file mode 100644
index 0c4bd7d..0000000
--- a/pythonsdk/include/ast.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef Py_AST_H
-#define Py_AST_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(int) PyAST_Validate(mod_ty);
-PyAPI_FUNC(mod_ty) PyAST_FromNode(
-    const node *n,
-    PyCompilerFlags *flags,
-    const char *filename,       /* decoded from the filesystem encoding */
-    PyArena *arena);
-PyAPI_FUNC(mod_ty) PyAST_FromNodeObject(
-    const node *n,
-    PyCompilerFlags *flags,
-    PyObject *filename,
-    PyArena *arena);
-
-#ifndef Py_LIMITED_API
-
-/* _PyAST_ExprAsUnicode is defined in ast_unparse.c */
-PyAPI_FUNC(PyObject *) _PyAST_ExprAsUnicode(expr_ty);
-
-#endif /* !Py_LIMITED_API */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_AST_H */
diff --git a/pythonsdk/include/bitset.h b/pythonsdk/include/bitset.h
deleted file mode 100644
index 005eca1..0000000
--- a/pythonsdk/include/bitset.h
+++ /dev/null
@@ -1,32 +0,0 @@
-
-#ifndef Py_BITSET_H
-#define Py_BITSET_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Bitset interface */
-
-#define BYTE            char
-
-typedef BYTE *bitset;
-
-bitset newbitset(int nbits);
-void delbitset(bitset bs);
-#define testbit(ss, ibit) (((ss)[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0)
-int addbit(bitset bs, int ibit); /* Returns 0 if already set */
-int samebitset(bitset bs1, bitset bs2, int nbits);
-void mergebitset(bitset bs1, bitset bs2, int nbits);
-
-#define BITSPERBYTE     (8*sizeof(BYTE))
-#define NBYTES(nbits)   (((nbits) + BITSPERBYTE - 1) / BITSPERBYTE)
-
-#define BIT2BYTE(ibit)  ((ibit) / BITSPERBYTE)
-#define BIT2SHIFT(ibit) ((ibit) % BITSPERBYTE)
-#define BIT2MASK(ibit)  (1 << BIT2SHIFT(ibit))
-#define BYTE2BIT(ibyte) ((ibyte) * BITSPERBYTE)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_BITSET_H */
diff --git a/pythonsdk/include/bltinmodule.h b/pythonsdk/include/bltinmodule.h
deleted file mode 100644
index c04acea..0000000
--- a/pythonsdk/include/bltinmodule.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef Py_BLTINMODULE_H
-#define Py_BLTINMODULE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_DATA(PyTypeObject) PyFilter_Type;
-PyAPI_DATA(PyTypeObject) PyMap_Type;
-PyAPI_DATA(PyTypeObject) PyZip_Type;
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_BLTINMODULE_H */
diff --git a/pythonsdk/include/boolobject.h b/pythonsdk/include/boolobject.h
deleted file mode 100644
index 79501fd..0000000
--- a/pythonsdk/include/boolobject.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Boolean object interface */
-
-#ifndef Py_BOOLOBJECT_H
-#define Py_BOOLOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-PyAPI_DATA(PyTypeObject) PyBool_Type;
-
-#define PyBool_Check(x) (Py_TYPE(x) == &PyBool_Type)
-
-/* Py_False and Py_True are the only two bools in existence.
-Don't forget to apply Py_INCREF() when returning either!!! */
-
-/* Don't use these directly */
-PyAPI_DATA(struct _longobject) _Py_FalseStruct, _Py_TrueStruct;
-
-/* Use these macros */
-#define Py_False ((PyObject *) &_Py_FalseStruct)
-#define Py_True ((PyObject *) &_Py_TrueStruct)
-
-/* Macros for returning Py_True or Py_False, respectively */
-#define Py_RETURN_TRUE return Py_INCREF(Py_True), Py_True
-#define Py_RETURN_FALSE return Py_INCREF(Py_False), Py_False
-
-/* Function to return a bool from a C long */
-PyAPI_FUNC(PyObject *) PyBool_FromLong(long);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_BOOLOBJECT_H */
diff --git a/pythonsdk/include/bytearrayobject.h b/pythonsdk/include/bytearrayobject.h
deleted file mode 100644
index 0d93e06..0000000
--- a/pythonsdk/include/bytearrayobject.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* ByteArray object interface */
-
-#ifndef Py_BYTEARRAYOBJECT_H
-#define Py_BYTEARRAYOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdarg.h>
-
-/* Type PyByteArrayObject represents a mutable array of bytes.
- * The Python API is that of a sequence;
- * the bytes are mapped to ints in [0, 256).
- * Bytes are not characters; they may be used to encode characters.
- * The only way to go between bytes and str/unicode is via encoding
- * and decoding.
- * For the convenience of C programmers, the bytes type is considered
- * to contain a char pointer, not an unsigned char pointer.
- */
-
-/* Object layout */
-#ifndef Py_LIMITED_API
-typedef struct {
-    PyObject_VAR_HEAD
-    Py_ssize_t ob_alloc; /* How many bytes allocated in ob_bytes */
-    char *ob_bytes;      /* Physical backing buffer */
-    char *ob_start;      /* Logical start inside ob_bytes */
-    /* XXX(nnorwitz): should ob_exports be Py_ssize_t? */
-    int ob_exports;      /* How many buffer exports */
-} PyByteArrayObject;
-#endif
-
-/* Type object */
-PyAPI_DATA(PyTypeObject) PyByteArray_Type;
-PyAPI_DATA(PyTypeObject) PyByteArrayIter_Type;
-
-/* Type check macros */
-#define PyByteArray_Check(self) PyObject_TypeCheck(self, &PyByteArray_Type)
-#define PyByteArray_CheckExact(self) (Py_TYPE(self) == &PyByteArray_Type)
-
-/* Direct API functions */
-PyAPI_FUNC(PyObject *) PyByteArray_FromObject(PyObject *);
-PyAPI_FUNC(PyObject *) PyByteArray_Concat(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyByteArray_FromStringAndSize(const char *, Py_ssize_t);
-PyAPI_FUNC(Py_ssize_t) PyByteArray_Size(PyObject *);
-PyAPI_FUNC(char *) PyByteArray_AsString(PyObject *);
-PyAPI_FUNC(int) PyByteArray_Resize(PyObject *, Py_ssize_t);
-
-/* Macros, trading safety for speed */
-#ifndef Py_LIMITED_API
-#define PyByteArray_AS_STRING(self) \
-    (assert(PyByteArray_Check(self)), \
-     Py_SIZE(self) ? ((PyByteArrayObject *)(self))->ob_start : _PyByteArray_empty_string)
-#define PyByteArray_GET_SIZE(self) (assert(PyByteArray_Check(self)), Py_SIZE(self))
-
-PyAPI_DATA(char) _PyByteArray_empty_string[];
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_BYTEARRAYOBJECT_H */
diff --git a/pythonsdk/include/bytes_methods.h b/pythonsdk/include/bytes_methods.h
deleted file mode 100644
index ba3d12f..0000000
--- a/pythonsdk/include/bytes_methods.h
+++ /dev/null
@@ -1,69 +0,0 @@
-#ifndef Py_LIMITED_API
-#ifndef Py_BYTES_CTYPE_H
-#define Py_BYTES_CTYPE_H
-
-/*
- * The internal implementation behind PyBytes (bytes) and PyByteArray (bytearray)
- * methods of the given names, they operate on ASCII byte strings.
- */
-extern PyObject* _Py_bytes_isspace(const char *cptr, Py_ssize_t len);
-extern PyObject* _Py_bytes_isalpha(const char *cptr, Py_ssize_t len);
-extern PyObject* _Py_bytes_isalnum(const char *cptr, Py_ssize_t len);
-extern PyObject* _Py_bytes_isascii(const char *cptr, Py_ssize_t len);
-extern PyObject* _Py_bytes_isdigit(const char *cptr, Py_ssize_t len);
-extern PyObject* _Py_bytes_islower(const char *cptr, Py_ssize_t len);
-extern PyObject* _Py_bytes_isupper(const char *cptr, Py_ssize_t len);
-extern PyObject* _Py_bytes_istitle(const char *cptr, Py_ssize_t len);
-
-/* These store their len sized answer in the given preallocated *result arg. */
-extern void _Py_bytes_lower(char *result, const char *cptr, Py_ssize_t len);
-extern void _Py_bytes_upper(char *result, const char *cptr, Py_ssize_t len);
-extern void _Py_bytes_title(char *result, const char *s, Py_ssize_t len);
-extern void _Py_bytes_capitalize(char *result, const char *s, Py_ssize_t len);
-extern void _Py_bytes_swapcase(char *result, const char *s, Py_ssize_t len);
-
-extern PyObject *_Py_bytes_find(const char *str, Py_ssize_t len, PyObject *args);
-extern PyObject *_Py_bytes_index(const char *str, Py_ssize_t len, PyObject *args);
-extern PyObject *_Py_bytes_rfind(const char *str, Py_ssize_t len, PyObject *args);
-extern PyObject *_Py_bytes_rindex(const char *str, Py_ssize_t len, PyObject *args);
-extern PyObject *_Py_bytes_count(const char *str, Py_ssize_t len, PyObject *args);
-extern int _Py_bytes_contains(const char *str, Py_ssize_t len, PyObject *arg);
-extern PyObject *_Py_bytes_startswith(const char *str, Py_ssize_t len, PyObject *args);
-extern PyObject *_Py_bytes_endswith(const char *str, Py_ssize_t len, PyObject *args);
-
-/* The maketrans() static method. */
-extern PyObject* _Py_bytes_maketrans(Py_buffer *frm, Py_buffer *to);
-
-/* Shared __doc__ strings. */
-extern const char _Py_isspace__doc__[];
-extern const char _Py_isalpha__doc__[];
-extern const char _Py_isalnum__doc__[];
-extern const char _Py_isascii__doc__[];
-extern const char _Py_isdigit__doc__[];
-extern const char _Py_islower__doc__[];
-extern const char _Py_isupper__doc__[];
-extern const char _Py_istitle__doc__[];
-extern const char _Py_lower__doc__[];
-extern const char _Py_upper__doc__[];
-extern const char _Py_title__doc__[];
-extern const char _Py_capitalize__doc__[];
-extern const char _Py_swapcase__doc__[];
-extern const char _Py_count__doc__[];
-extern const char _Py_find__doc__[];
-extern const char _Py_index__doc__[];
-extern const char _Py_rfind__doc__[];
-extern const char _Py_rindex__doc__[];
-extern const char _Py_startswith__doc__[];
-extern const char _Py_endswith__doc__[];
-extern const char _Py_maketrans__doc__[];
-extern const char _Py_expandtabs__doc__[];
-extern const char _Py_ljust__doc__[];
-extern const char _Py_rjust__doc__[];
-extern const char _Py_center__doc__[];
-extern const char _Py_zfill__doc__[];
-
-/* this is needed because some docs are shared from the .o, not static */
-#define PyDoc_STRVAR_shared(name,str) const char name[] = PyDoc_STR(str)
-
-#endif /* !Py_BYTES_CTYPE_H */
-#endif /* !Py_LIMITED_API */
diff --git a/pythonsdk/include/bytesobject.h b/pythonsdk/include/bytesobject.h
deleted file mode 100644
index fd08ba6..0000000
--- a/pythonsdk/include/bytesobject.h
+++ /dev/null
@@ -1,224 +0,0 @@
-
-/* Bytes (String) object interface */
-
-#ifndef Py_BYTESOBJECT_H
-#define Py_BYTESOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdarg.h>
-
-/*
-Type PyBytesObject represents a character string.  An extra zero byte is
-reserved at the end to ensure it is zero-terminated, but a size is
-present so strings with null bytes in them can be represented.  This
-is an immutable object type.
-
-There are functions to create new string objects, to test
-an object for string-ness, and to get the
-string value.  The latter function returns a null pointer
-if the object is not of the proper type.
-There is a variant that takes an explicit size as well as a
-variant that assumes a zero-terminated string.  Note that none of the
-functions should be applied to nil objects.
-*/
-
-/* Caching the hash (ob_shash) saves recalculation of a string's hash value.
-   This significantly speeds up dict lookups. */
-
-#ifndef Py_LIMITED_API
-typedef struct {
-    PyObject_VAR_HEAD
-    Py_hash_t ob_shash;
-    char ob_sval[1];
-
-    /* Invariants:
-     *     ob_sval contains space for 'ob_size+1' elements.
-     *     ob_sval[ob_size] == 0.
-     *     ob_shash is the hash of the string or -1 if not computed yet.
-     */
-} PyBytesObject;
-#endif
-
-PyAPI_DATA(PyTypeObject) PyBytes_Type;
-PyAPI_DATA(PyTypeObject) PyBytesIter_Type;
-
-#define PyBytes_Check(op) \
-                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
-#define PyBytes_CheckExact(op) (Py_TYPE(op) == &PyBytes_Type)
-
-PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t);
-PyAPI_FUNC(PyObject *) PyBytes_FromString(const char *);
-PyAPI_FUNC(PyObject *) PyBytes_FromObject(PyObject *);
-PyAPI_FUNC(PyObject *) PyBytes_FromFormatV(const char*, va_list)
-                                Py_GCC_ATTRIBUTE((format(printf, 1, 0)));
-PyAPI_FUNC(PyObject *) PyBytes_FromFormat(const char*, ...)
-                                Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
-PyAPI_FUNC(Py_ssize_t) PyBytes_Size(PyObject *);
-PyAPI_FUNC(char *) PyBytes_AsString(PyObject *);
-PyAPI_FUNC(PyObject *) PyBytes_Repr(PyObject *, int);
-PyAPI_FUNC(void) PyBytes_Concat(PyObject **, PyObject *);
-PyAPI_FUNC(void) PyBytes_ConcatAndDel(PyObject **, PyObject *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyBytes_Resize(PyObject **, Py_ssize_t);
-PyAPI_FUNC(PyObject*) _PyBytes_FormatEx(
-    const char *format,
-    Py_ssize_t format_len,
-    PyObject *args,
-    int use_bytearray);
-PyAPI_FUNC(PyObject*) _PyBytes_FromHex(
-    PyObject *string,
-    int use_bytearray);
-#endif
-PyAPI_FUNC(PyObject *) PyBytes_DecodeEscape(const char *, Py_ssize_t,
-                                            const char *, Py_ssize_t,
-                                            const char *);
-#ifndef Py_LIMITED_API
-/* Helper for PyBytes_DecodeEscape that detects invalid escape chars. */
-PyAPI_FUNC(PyObject *) _PyBytes_DecodeEscape(const char *, Py_ssize_t,
-                                             const char *, Py_ssize_t,
-                                             const char *,
-                                             const char **);
-#endif
-
-/* Macro, trading safety for speed */
-#ifndef Py_LIMITED_API
-#define PyBytes_AS_STRING(op) (assert(PyBytes_Check(op)), \
-                                (((PyBytesObject *)(op))->ob_sval))
-#define PyBytes_GET_SIZE(op)  (assert(PyBytes_Check(op)),Py_SIZE(op))
-#endif
-
-/* _PyBytes_Join(sep, x) is like sep.join(x).  sep must be PyBytesObject*,
-   x must be an iterable object. */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyBytes_Join(PyObject *sep, PyObject *x);
-#endif
-
-/* Provides access to the internal data buffer and size of a string
-   object or the default encoded version of a Unicode object. Passing
-   NULL as *len parameter will force the string buffer to be
-   0-terminated (passing a string with embedded NULL characters will
-   cause an exception).  */
-PyAPI_FUNC(int) PyBytes_AsStringAndSize(
-    PyObject *obj,      /* string or Unicode object */
-    char **s,           /* pointer to buffer variable */
-    Py_ssize_t *len     /* pointer to length variable or NULL
-                           (only possible for 0-terminated
-                           strings) */
-    );
-
-/* Using the current locale, insert the thousands grouping
-   into the string pointed to by buffer.  For the argument descriptions,
-   see Objects/stringlib/localeutil.h */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(Py_ssize_t) _PyBytes_InsertThousandsGroupingLocale(char *buffer,
-                                                   Py_ssize_t n_buffer,
-                                                   char *digits,
-                                                   Py_ssize_t n_digits,
-                                                   Py_ssize_t min_width);
-
-/* Using explicit passed-in values, insert the thousands grouping
-   into the string pointed to by buffer.  For the argument descriptions,
-   see Objects/stringlib/localeutil.h */
-PyAPI_FUNC(Py_ssize_t) _PyBytes_InsertThousandsGrouping(char *buffer,
-                                                   Py_ssize_t n_buffer,
-                                                   char *digits,
-                                                   Py_ssize_t n_digits,
-                                                   Py_ssize_t min_width,
-                                                   const char *grouping,
-                                                   const char *thousands_sep);
-#endif
-
-/* Flags used by string formatting */
-#define F_LJUST (1<<0)
-#define F_SIGN  (1<<1)
-#define F_BLANK (1<<2)
-#define F_ALT   (1<<3)
-#define F_ZERO  (1<<4)
-
-#ifndef Py_LIMITED_API
-/* The _PyBytesWriter structure is big: it contains an embedded "stack buffer".
-   A _PyBytesWriter variable must be declared at the end of variables in a
-   function to optimize the memory allocation on the stack. */
-typedef struct {
-    /* bytes, bytearray or NULL (when the small buffer is used) */
-    PyObject *buffer;
-
-    /* Number of allocated size. */
-    Py_ssize_t allocated;
-
-    /* Minimum number of allocated bytes,
-       incremented by _PyBytesWriter_Prepare() */
-    Py_ssize_t min_size;
-
-    /* If non-zero, use a bytearray instead of a bytes object for buffer. */
-    int use_bytearray;
-
-    /* If non-zero, overallocate the buffer (default: 0).
-       This flag must be zero if use_bytearray is non-zero. */
-    int overallocate;
-
-    /* Stack buffer */
-    int use_small_buffer;
-    char small_buffer[512];
-} _PyBytesWriter;
-
-/* Initialize a bytes writer
-
-   By default, the overallocation is disabled. Set the overallocate attribute
-   to control the allocation of the buffer. */
-PyAPI_FUNC(void) _PyBytesWriter_Init(_PyBytesWriter *writer);
-
-/* Get the buffer content and reset the writer.
-   Return a bytes object, or a bytearray object if use_bytearray is non-zero.
-   Raise an exception and return NULL on error. */
-PyAPI_FUNC(PyObject *) _PyBytesWriter_Finish(_PyBytesWriter *writer,
-    void *str);
-
-/* Deallocate memory of a writer (clear its internal buffer). */
-PyAPI_FUNC(void) _PyBytesWriter_Dealloc(_PyBytesWriter *writer);
-
-/* Allocate the buffer to write size bytes.
-   Return the pointer to the beginning of buffer data.
-   Raise an exception and return NULL on error. */
-PyAPI_FUNC(void*) _PyBytesWriter_Alloc(_PyBytesWriter *writer,
-    Py_ssize_t size);
-
-/* Ensure that the buffer is large enough to write *size* bytes.
-   Add size to the writer minimum size (min_size attribute).
-
-   str is the current pointer inside the buffer.
-   Return the updated current pointer inside the buffer.
-   Raise an exception and return NULL on error. */
-PyAPI_FUNC(void*) _PyBytesWriter_Prepare(_PyBytesWriter *writer,
-    void *str,
-    Py_ssize_t size);
-
-/* Resize the buffer to make it larger.
-   The new buffer may be larger than size bytes because of overallocation.
-   Return the updated current pointer inside the buffer.
-   Raise an exception and return NULL on error.
-
-   Note: size must be greater than the number of allocated bytes in the writer.
-
-   This function doesn't use the writer minimum size (min_size attribute).
-
-   See also _PyBytesWriter_Prepare().
-   */
-PyAPI_FUNC(void*) _PyBytesWriter_Resize(_PyBytesWriter *writer,
-    void *str,
-    Py_ssize_t size);
-
-/* Write bytes.
-   Raise an exception and return NULL on error. */
-PyAPI_FUNC(void*) _PyBytesWriter_WriteBytes(_PyBytesWriter *writer,
-    void *str,
-    const void *bytes,
-    Py_ssize_t size);
-#endif   /* Py_LIMITED_API */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_BYTESOBJECT_H */
diff --git a/pythonsdk/include/cellobject.h b/pythonsdk/include/cellobject.h
deleted file mode 100644
index d38bf13..0000000
--- a/pythonsdk/include/cellobject.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Cell object interface */
-#ifndef Py_LIMITED_API
-#ifndef Py_CELLOBJECT_H
-#define Py_CELLOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *ob_ref;       /* Content of the cell or NULL when empty */
-} PyCellObject;
-
-PyAPI_DATA(PyTypeObject) PyCell_Type;
-
-#define PyCell_Check(op) (Py_TYPE(op) == &PyCell_Type)
-
-PyAPI_FUNC(PyObject *) PyCell_New(PyObject *);
-PyAPI_FUNC(PyObject *) PyCell_Get(PyObject *);
-PyAPI_FUNC(int) PyCell_Set(PyObject *, PyObject *);
-
-#define PyCell_GET(op) (((PyCellObject *)(op))->ob_ref)
-#define PyCell_SET(op, v) (((PyCellObject *)(op))->ob_ref = v)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_TUPLEOBJECT_H */
-#endif /* Py_LIMITED_API */
diff --git a/pythonsdk/include/ceval.h b/pythonsdk/include/ceval.h
deleted file mode 100644
index 819bccf..0000000
--- a/pythonsdk/include/ceval.h
+++ /dev/null
@@ -1,239 +0,0 @@
-#ifndef Py_CEVAL_H
-#define Py_CEVAL_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Interface to random parts in ceval.c */
-
-/* PyEval_CallObjectWithKeywords(), PyEval_CallObject(), PyEval_CallFunction
- * and PyEval_CallMethod are kept for backward compatibility: PyObject_Call(),
- * PyObject_CallFunction() and PyObject_CallMethod() are recommended to call
- * a callable object.
- */
-
-PyAPI_FUNC(PyObject *) PyEval_CallObjectWithKeywords(
-    PyObject *callable,
-    PyObject *args,
-    PyObject *kwargs);
-
-/* Inline this */
-#define PyEval_CallObject(callable, arg) \
-    PyEval_CallObjectWithKeywords(callable, arg, (PyObject *)NULL)
-
-PyAPI_FUNC(PyObject *) PyEval_CallFunction(PyObject *callable,
-                                           const char *format, ...);
-PyAPI_FUNC(PyObject *) PyEval_CallMethod(PyObject *obj,
-                                         const char *name,
-                                         const char *format, ...);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) PyEval_SetProfile(Py_tracefunc, PyObject *);
-PyAPI_FUNC(void) PyEval_SetTrace(Py_tracefunc, PyObject *);
-PyAPI_FUNC(void) _PyEval_SetCoroutineOriginTrackingDepth(int new_depth);
-PyAPI_FUNC(int) _PyEval_GetCoroutineOriginTrackingDepth(void);
-PyAPI_FUNC(void) _PyEval_SetCoroutineWrapper(PyObject *);
-PyAPI_FUNC(PyObject *) _PyEval_GetCoroutineWrapper(void);
-PyAPI_FUNC(void) _PyEval_SetAsyncGenFirstiter(PyObject *);
-PyAPI_FUNC(PyObject *) _PyEval_GetAsyncGenFirstiter(void);
-PyAPI_FUNC(void) _PyEval_SetAsyncGenFinalizer(PyObject *);
-PyAPI_FUNC(PyObject *) _PyEval_GetAsyncGenFinalizer(void);
-#endif
-
-struct _frame; /* Avoid including frameobject.h */
-
-PyAPI_FUNC(PyObject *) PyEval_GetBuiltins(void);
-PyAPI_FUNC(PyObject *) PyEval_GetGlobals(void);
-PyAPI_FUNC(PyObject *) PyEval_GetLocals(void);
-PyAPI_FUNC(struct _frame *) PyEval_GetFrame(void);
-
-#ifndef Py_LIMITED_API
-/* Helper to look up a builtin object */
-PyAPI_FUNC(PyObject *) _PyEval_GetBuiltinId(_Py_Identifier *);
-/* Look at the current frame's (if any) code's co_flags, and turn on
-   the corresponding compiler flags in cf->cf_flags.  Return 1 if any
-   flag was set, else return 0. */
-PyAPI_FUNC(int) PyEval_MergeCompilerFlags(PyCompilerFlags *cf);
-#endif
-
-PyAPI_FUNC(int) Py_AddPendingCall(int (*func)(void *), void *arg);
-PyAPI_FUNC(void) _PyEval_SignalReceived(void);
-PyAPI_FUNC(int) Py_MakePendingCalls(void);
-
-/* Protection against deeply nested recursive calls
-
-   In Python 3.0, this protection has two levels:
-   * normal anti-recursion protection is triggered when the recursion level
-     exceeds the current recursion limit. It raises a RecursionError, and sets
-     the "overflowed" flag in the thread state structure. This flag
-     temporarily *disables* the normal protection; this allows cleanup code
-     to potentially outgrow the recursion limit while processing the
-     RecursionError.
-   * "last chance" anti-recursion protection is triggered when the recursion
-     level exceeds "current recursion limit + 50". By construction, this
-     protection can only be triggered when the "overflowed" flag is set. It
-     means the cleanup code has itself gone into an infinite loop, or the
-     RecursionError has been mistakingly ignored. When this protection is
-     triggered, the interpreter aborts with a Fatal Error.
-
-   In addition, the "overflowed" flag is automatically reset when the
-   recursion level drops below "current recursion limit - 50". This heuristic
-   is meant to ensure that the normal anti-recursion protection doesn't get
-   disabled too long.
-
-   Please note: this scheme has its own limitations. See:
-   http://mail.python.org/pipermail/python-dev/2008-August/082106.html
-   for some observations.
-*/
-PyAPI_FUNC(void) Py_SetRecursionLimit(int);
-PyAPI_FUNC(int) Py_GetRecursionLimit(void);
-
-#define Py_EnterRecursiveCall(where)  \
-            (_Py_MakeRecCheck(PyThreadState_GET()->recursion_depth) &&  \
-             _Py_CheckRecursiveCall(where))
-#define Py_LeaveRecursiveCall()                         \
-    do{ if(_Py_MakeEndRecCheck(PyThreadState_GET()->recursion_depth))  \
-      PyThreadState_GET()->overflowed = 0;  \
-    } while(0)
-PyAPI_FUNC(int) _Py_CheckRecursiveCall(const char *where);
-
-/* Due to the macros in which it's used, _Py_CheckRecursionLimit is in
-   the stable ABI.  It should be removed therefrom when possible.
-*/
-PyAPI_DATA(int) _Py_CheckRecursionLimit;
-
-#ifdef USE_STACKCHECK
-/* With USE_STACKCHECK, trigger stack checks in _Py_CheckRecursiveCall()
-   on every 64th call to Py_EnterRecursiveCall.
-*/
-#  define _Py_MakeRecCheck(x)  \
-    (++(x) > _Py_CheckRecursionLimit || \
-     ++(PyThreadState_GET()->stackcheck_counter) > 64)
-#else
-#  define _Py_MakeRecCheck(x)  (++(x) > _Py_CheckRecursionLimit)
-#endif
-
-/* Compute the "lower-water mark" for a recursion limit. When
- * Py_LeaveRecursiveCall() is called with a recursion depth below this mark,
- * the overflowed flag is reset to 0. */
-#define _Py_RecursionLimitLowerWaterMark(limit) \
-    (((limit) > 200) \
-        ? ((limit) - 50) \
-        : (3 * ((limit) >> 2)))
-
-#define _Py_MakeEndRecCheck(x) \
-    (--(x) < _Py_RecursionLimitLowerWaterMark(_Py_CheckRecursionLimit))
-
-#define Py_ALLOW_RECURSION \
-  do { unsigned char _old = PyThreadState_GET()->recursion_critical;\
-    PyThreadState_GET()->recursion_critical = 1;
-
-#define Py_END_ALLOW_RECURSION \
-    PyThreadState_GET()->recursion_critical = _old; \
-  } while(0);
-
-PyAPI_FUNC(const char *) PyEval_GetFuncName(PyObject *);
-PyAPI_FUNC(const char *) PyEval_GetFuncDesc(PyObject *);
-
-PyAPI_FUNC(PyObject *) PyEval_EvalFrame(struct _frame *);
-PyAPI_FUNC(PyObject *) PyEval_EvalFrameEx(struct _frame *f, int exc);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyEval_EvalFrameDefault(struct _frame *f, int exc);
-#endif
-
-/* Interface for threads.
-
-   A module that plans to do a blocking system call (or something else
-   that lasts a long time and doesn't touch Python data) can allow other
-   threads to run as follows:
-
-    ...preparations here...
-    Py_BEGIN_ALLOW_THREADS
-    ...blocking system call here...
-    Py_END_ALLOW_THREADS
-    ...interpret result here...
-
-   The Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS pair expands to a
-   {}-surrounded block.
-   To leave the block in the middle (e.g., with return), you must insert
-   a line containing Py_BLOCK_THREADS before the return, e.g.
-
-    if (...premature_exit...) {
-        Py_BLOCK_THREADS
-        PyErr_SetFromErrno(PyExc_OSError);
-        return NULL;
-    }
-
-   An alternative is:
-
-    Py_BLOCK_THREADS
-    if (...premature_exit...) {
-        PyErr_SetFromErrno(PyExc_OSError);
-        return NULL;
-    }
-    Py_UNBLOCK_THREADS
-
-   For convenience, that the value of 'errno' is restored across
-   Py_END_ALLOW_THREADS and Py_BLOCK_THREADS.
-
-   WARNING: NEVER NEST CALLS TO Py_BEGIN_ALLOW_THREADS AND
-   Py_END_ALLOW_THREADS!!!
-
-   The function PyEval_InitThreads() should be called only from
-   init_thread() in "_threadmodule.c".
-
-   Note that not yet all candidates have been converted to use this
-   mechanism!
-*/
-
-PyAPI_FUNC(PyThreadState *) PyEval_SaveThread(void);
-PyAPI_FUNC(void) PyEval_RestoreThread(PyThreadState *);
-
-PyAPI_FUNC(int)  PyEval_ThreadsInitialized(void);
-PyAPI_FUNC(void) PyEval_InitThreads(void);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _PyEval_FiniThreads(void);
-#endif /* !Py_LIMITED_API */
-PyAPI_FUNC(void) PyEval_AcquireLock(void) Py_DEPRECATED(3.2);
-PyAPI_FUNC(void) PyEval_ReleaseLock(void) /* Py_DEPRECATED(3.2) */;
-PyAPI_FUNC(void) PyEval_AcquireThread(PyThreadState *tstate);
-PyAPI_FUNC(void) PyEval_ReleaseThread(PyThreadState *tstate);
-PyAPI_FUNC(void) PyEval_ReInitThreads(void);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _PyEval_SetSwitchInterval(unsigned long microseconds);
-PyAPI_FUNC(unsigned long) _PyEval_GetSwitchInterval(void);
-#endif
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(Py_ssize_t) _PyEval_RequestCodeExtraIndex(freefunc);
-#endif
-
-#define Py_BEGIN_ALLOW_THREADS { \
-                        PyThreadState *_save; \
-                        _save = PyEval_SaveThread();
-#define Py_BLOCK_THREADS        PyEval_RestoreThread(_save);
-#define Py_UNBLOCK_THREADS      _save = PyEval_SaveThread();
-#define Py_END_ALLOW_THREADS    PyEval_RestoreThread(_save); \
-                 }
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyEval_SliceIndex(PyObject *, Py_ssize_t *);
-PyAPI_FUNC(int) _PyEval_SliceIndexNotNone(PyObject *, Py_ssize_t *);
-PyAPI_FUNC(void) _PyEval_SignalAsyncExc(void);
-#endif
-
-/* Masks and values used by FORMAT_VALUE opcode. */
-#define FVC_MASK      0x3
-#define FVC_NONE      0x0
-#define FVC_STR       0x1
-#define FVC_REPR      0x2
-#define FVC_ASCII     0x3
-#define FVS_MASK      0x4
-#define FVS_HAVE_SPEC 0x4
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_CEVAL_H */
diff --git a/pythonsdk/include/classobject.h b/pythonsdk/include/classobject.h
deleted file mode 100644
index f0a0255..0000000
--- a/pythonsdk/include/classobject.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Former class object interface -- now only bound methods are here  */
-
-/* Revealing some structures (not for general use) */
-
-#ifndef Py_LIMITED_API
-#ifndef Py_CLASSOBJECT_H
-#define Py_CLASSOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *im_func;   /* The callable object implementing the method */
-    PyObject *im_self;   /* The instance it is bound to */
-    PyObject *im_weakreflist; /* List of weak references */
-} PyMethodObject;
-
-PyAPI_DATA(PyTypeObject) PyMethod_Type;
-
-#define PyMethod_Check(op) ((op)->ob_type == &PyMethod_Type)
-
-PyAPI_FUNC(PyObject *) PyMethod_New(PyObject *, PyObject *);
-
-PyAPI_FUNC(PyObject *) PyMethod_Function(PyObject *);
-PyAPI_FUNC(PyObject *) PyMethod_Self(PyObject *);
-
-/* Macros for direct access to these values. Type checks are *not*
-   done, so use with care. */
-#define PyMethod_GET_FUNCTION(meth) \
-        (((PyMethodObject *)meth) -> im_func)
-#define PyMethod_GET_SELF(meth) \
-        (((PyMethodObject *)meth) -> im_self)
-
-PyAPI_FUNC(int) PyMethod_ClearFreeList(void);
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *func;
-} PyInstanceMethodObject;
-
-PyAPI_DATA(PyTypeObject) PyInstanceMethod_Type;
-
-#define PyInstanceMethod_Check(op) ((op)->ob_type == &PyInstanceMethod_Type)
-
-PyAPI_FUNC(PyObject *) PyInstanceMethod_New(PyObject *);
-PyAPI_FUNC(PyObject *) PyInstanceMethod_Function(PyObject *);
-
-/* Macros for direct access to these values. Type checks are *not*
-   done, so use with care. */
-#define PyInstanceMethod_GET_FUNCTION(meth) \
-        (((PyInstanceMethodObject *)meth) -> func)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_CLASSOBJECT_H */
-#endif /* Py_LIMITED_API */
diff --git a/pythonsdk/include/code.h b/pythonsdk/include/code.h
deleted file mode 100644
index 811a9d3..0000000
--- a/pythonsdk/include/code.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/* Definitions for bytecode */
-
-#ifndef Py_LIMITED_API
-#ifndef Py_CODE_H
-#define Py_CODE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef uint16_t _Py_CODEUNIT;
-
-#ifdef WORDS_BIGENDIAN
-#  define _Py_OPCODE(word) ((word) >> 8)
-#  define _Py_OPARG(word) ((word) & 255)
-#else
-#  define _Py_OPCODE(word) ((word) & 255)
-#  define _Py_OPARG(word) ((word) >> 8)
-#endif
-
-/* Bytecode object */
-typedef struct {
-    PyObject_HEAD
-    int co_argcount;            /* #arguments, except *args */
-    int co_kwonlyargcount;      /* #keyword only arguments */
-    int co_nlocals;             /* #local variables */
-    int co_stacksize;           /* #entries needed for evaluation stack */
-    int co_flags;               /* CO_..., see below */
-    int co_firstlineno;         /* first source line number */
-    PyObject *co_code;          /* instruction opcodes */
-    PyObject *co_consts;        /* list (constants used) */
-    PyObject *co_names;         /* list of strings (names used) */
-    PyObject *co_varnames;      /* tuple of strings (local variable names) */
-    PyObject *co_freevars;      /* tuple of strings (free variable names) */
-    PyObject *co_cellvars;      /* tuple of strings (cell variable names) */
-    /* The rest aren't used in either hash or comparisons, except for co_name,
-       used in both. This is done to preserve the name and line number
-       for tracebacks and debuggers; otherwise, constant de-duplication
-       would collapse identical functions/lambdas defined on different lines.
-    */
-    Py_ssize_t *co_cell2arg;    /* Maps cell vars which are arguments. */
-    PyObject *co_filename;      /* unicode (where it was loaded from) */
-    PyObject *co_name;          /* unicode (name, for reference) */
-    PyObject *co_lnotab;        /* string (encoding addr<->lineno mapping) See
-                                   Objects/lnotab_notes.txt for details. */
-    void *co_zombieframe;       /* for optimization only (see frameobject.c) */
-    PyObject *co_weakreflist;   /* to support weakrefs to code objects */
-    /* Scratch space for extra data relating to the code object.
-       Type is a void* to keep the format private in codeobject.c to force
-       people to go through the proper APIs. */
-    void *co_extra;
-} PyCodeObject;
-
-/* Masks for co_flags above */
-#define CO_OPTIMIZED    0x0001
-#define CO_NEWLOCALS    0x0002
-#define CO_VARARGS      0x0004
-#define CO_VARKEYWORDS  0x0008
-#define CO_NESTED       0x0010
-#define CO_GENERATOR    0x0020
-/* The CO_NOFREE flag is set if there are no free or cell variables.
-   This information is redundant, but it allows a single flag test
-   to determine whether there is any extra work to be done when the
-   call frame it setup.
-*/
-#define CO_NOFREE       0x0040
-
-/* The CO_COROUTINE flag is set for coroutine functions (defined with
-   ``async def`` keywords) */
-#define CO_COROUTINE            0x0080
-#define CO_ITERABLE_COROUTINE   0x0100
-#define CO_ASYNC_GENERATOR      0x0200
-
-/* These are no longer used. */
-#if 0
-#define CO_GENERATOR_ALLOWED    0x1000
-#endif
-#define CO_FUTURE_DIVISION      0x2000
-#define CO_FUTURE_ABSOLUTE_IMPORT 0x4000 /* do absolute imports by default */
-#define CO_FUTURE_WITH_STATEMENT  0x8000
-#define CO_FUTURE_PRINT_FUNCTION  0x10000
-#define CO_FUTURE_UNICODE_LITERALS 0x20000
-
-#define CO_FUTURE_BARRY_AS_BDFL  0x40000
-#define CO_FUTURE_GENERATOR_STOP  0x80000
-#define CO_FUTURE_ANNOTATIONS    0x100000
-
-/* This value is found in the co_cell2arg array when the associated cell
-   variable does not correspond to an argument. */
-#define CO_CELL_NOT_AN_ARG (-1)
-
-/* This should be defined if a future statement modifies the syntax.
-   For example, when a keyword is added.
-*/
-#define PY_PARSER_REQUIRES_FUTURE_KEYWORD
-
-#define CO_MAXBLOCKS 20 /* Max static block nesting within a function */
-
-PyAPI_DATA(PyTypeObject) PyCode_Type;
-
-#define PyCode_Check(op) (Py_TYPE(op) == &PyCode_Type)
-#define PyCode_GetNumFree(op) (PyTuple_GET_SIZE((op)->co_freevars))
-
-/* Public interface */
-PyAPI_FUNC(PyCodeObject *) PyCode_New(
-        int, int, int, int, int, PyObject *, PyObject *,
-        PyObject *, PyObject *, PyObject *, PyObject *,
-        PyObject *, PyObject *, int, PyObject *);
-        /* same as struct above */
-
-/* Creates a new empty code object with the specified source location. */
-PyAPI_FUNC(PyCodeObject *)
-PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno);
-
-/* Return the line number associated with the specified bytecode index
-   in this code object.  If you just need the line number of a frame,
-   use PyFrame_GetLineNumber() instead. */
-PyAPI_FUNC(int) PyCode_Addr2Line(PyCodeObject *, int);
-
-/* for internal use only */
-typedef struct _addr_pair {
-        int ap_lower;
-        int ap_upper;
-} PyAddrPair;
-
-#ifndef Py_LIMITED_API
-/* Update *bounds to describe the first and one-past-the-last instructions in the
-   same line as lasti.  Return the number of that line.
-*/
-PyAPI_FUNC(int) _PyCode_CheckLineNumber(PyCodeObject* co,
-                                        int lasti, PyAddrPair *bounds);
-
-/* Create a comparable key used to compare constants taking in account the
- * object type. It is used to make sure types are not coerced (e.g., float and
- * complex) _and_ to distinguish 0.0 from -0.0 e.g. on IEEE platforms
- *
- * Return (type(obj), obj, ...): a tuple with variable size (at least 2 items)
- * depending on the type and the value. The type is the first item to not
- * compare bytes and str which can raise a BytesWarning exception. */
-PyAPI_FUNC(PyObject*) _PyCode_ConstantKey(PyObject *obj);
-#endif
-
-PyAPI_FUNC(PyObject*) PyCode_Optimize(PyObject *code, PyObject* consts,
-                                      PyObject *names, PyObject *lnotab);
-
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyCode_GetExtra(PyObject *code, Py_ssize_t index,
-                                 void **extra);
-PyAPI_FUNC(int) _PyCode_SetExtra(PyObject *code, Py_ssize_t index,
-                                 void *extra);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_CODE_H */
-#endif /* Py_LIMITED_API */
diff --git a/pythonsdk/include/codecs.h b/pythonsdk/include/codecs.h
deleted file mode 100644
index a269f18..0000000
--- a/pythonsdk/include/codecs.h
+++ /dev/null
@@ -1,240 +0,0 @@
-#ifndef Py_CODECREGISTRY_H
-#define Py_CODECREGISTRY_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* ------------------------------------------------------------------------
-
-   Python Codec Registry and support functions
-
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-Copyright (c) Corporation for National Research Initiatives.
-
-   ------------------------------------------------------------------------ */
-
-/* Register a new codec search function.
-
-   As side effect, this tries to load the encodings package, if not
-   yet done, to make sure that it is always first in the list of
-   search functions.
-
-   The search_function's refcount is incremented by this function. */
-
-PyAPI_FUNC(int) PyCodec_Register(
-       PyObject *search_function
-       );
-
-/* Codec registry lookup API.
-
-   Looks up the given encoding and returns a CodecInfo object with
-   function attributes which implement the different aspects of
-   processing the encoding.
-
-   The encoding string is looked up converted to all lower-case
-   characters. This makes encodings looked up through this mechanism
-   effectively case-insensitive.
-
-   If no codec is found, a KeyError is set and NULL returned.
-
-   As side effect, this tries to load the encodings package, if not
-   yet done. This is part of the lazy load strategy for the encodings
-   package.
-
- */
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyCodec_Lookup(
-       const char *encoding
-       );
-
-PyAPI_FUNC(int) _PyCodec_Forget(
-       const char *encoding
-       );
-#endif
-
-/* Codec registry encoding check API.
-
-   Returns 1/0 depending on whether there is a registered codec for
-   the given encoding.
-
-*/
-
-PyAPI_FUNC(int) PyCodec_KnownEncoding(
-       const char *encoding
-       );
-
-/* Generic codec based encoding API.
-
-   object is passed through the encoder function found for the given
-   encoding using the error handling method defined by errors. errors
-   may be NULL to use the default method defined for the codec.
-
-   Raises a LookupError in case no encoder can be found.
-
- */
-
-PyAPI_FUNC(PyObject *) PyCodec_Encode(
-       PyObject *object,
-       const char *encoding,
-       const char *errors
-       );
-
-/* Generic codec based decoding API.
-
-   object is passed through the decoder function found for the given
-   encoding using the error handling method defined by errors. errors
-   may be NULL to use the default method defined for the codec.
-
-   Raises a LookupError in case no encoder can be found.
-
- */
-
-PyAPI_FUNC(PyObject *) PyCodec_Decode(
-       PyObject *object,
-       const char *encoding,
-       const char *errors
-       );
-
-#ifndef Py_LIMITED_API
-/* Text codec specific encoding and decoding API.
-
-   Checks the encoding against a list of codecs which do not
-   implement a str<->bytes encoding before attempting the
-   operation.
-
-   Please note that these APIs are internal and should not
-   be used in Python C extensions.
-
-   XXX (ncoghlan): should we make these, or something like them, public
-   in Python 3.5+?
-
- */
-PyAPI_FUNC(PyObject *) _PyCodec_LookupTextEncoding(
-       const char *encoding,
-       const char *alternate_command
-       );
-
-PyAPI_FUNC(PyObject *) _PyCodec_EncodeText(
-       PyObject *object,
-       const char *encoding,
-       const char *errors
-       );
-
-PyAPI_FUNC(PyObject *) _PyCodec_DecodeText(
-       PyObject *object,
-       const char *encoding,
-       const char *errors
-       );
-
-/* These two aren't actually text encoding specific, but _io.TextIOWrapper
- * is the only current API consumer.
- */
-PyAPI_FUNC(PyObject *) _PyCodecInfo_GetIncrementalDecoder(
-       PyObject *codec_info,
-       const char *errors
-       );
-
-PyAPI_FUNC(PyObject *) _PyCodecInfo_GetIncrementalEncoder(
-       PyObject *codec_info,
-       const char *errors
-       );
-#endif
-
-
-
-/* --- Codec Lookup APIs --------------------------------------------------
-
-   All APIs return a codec object with incremented refcount and are
-   based on _PyCodec_Lookup().  The same comments w/r to the encoding
-   name also apply to these APIs.
-
-*/
-
-/* Get an encoder function for the given encoding. */
-
-PyAPI_FUNC(PyObject *) PyCodec_Encoder(
-       const char *encoding
-       );
-
-/* Get a decoder function for the given encoding. */
-
-PyAPI_FUNC(PyObject *) PyCodec_Decoder(
-       const char *encoding
-       );
-
-/* Get an IncrementalEncoder object for the given encoding. */
-
-PyAPI_FUNC(PyObject *) PyCodec_IncrementalEncoder(
-       const char *encoding,
-       const char *errors
-       );
-
-/* Get an IncrementalDecoder object function for the given encoding. */
-
-PyAPI_FUNC(PyObject *) PyCodec_IncrementalDecoder(
-       const char *encoding,
-       const char *errors
-       );
-
-/* Get a StreamReader factory function for the given encoding. */
-
-PyAPI_FUNC(PyObject *) PyCodec_StreamReader(
-       const char *encoding,
-       PyObject *stream,
-       const char *errors
-       );
-
-/* Get a StreamWriter factory function for the given encoding. */
-
-PyAPI_FUNC(PyObject *) PyCodec_StreamWriter(
-       const char *encoding,
-       PyObject *stream,
-       const char *errors
-       );
-
-/* Unicode encoding error handling callback registry API */
-
-/* Register the error handling callback function error under the given
-   name. This function will be called by the codec when it encounters
-   unencodable characters/undecodable bytes and doesn't know the
-   callback name, when name is specified as the error parameter
-   in the call to the encode/decode function.
-   Return 0 on success, -1 on error */
-PyAPI_FUNC(int) PyCodec_RegisterError(const char *name, PyObject *error);
-
-/* Lookup the error handling callback function registered under the given
-   name. As a special case NULL can be passed, in which case
-   the error handling callback for "strict" will be returned. */
-PyAPI_FUNC(PyObject *) PyCodec_LookupError(const char *name);
-
-/* raise exc as an exception */
-PyAPI_FUNC(PyObject *) PyCodec_StrictErrors(PyObject *exc);
-
-/* ignore the unicode error, skipping the faulty input */
-PyAPI_FUNC(PyObject *) PyCodec_IgnoreErrors(PyObject *exc);
-
-/* replace the unicode encode error with ? or U+FFFD */
-PyAPI_FUNC(PyObject *) PyCodec_ReplaceErrors(PyObject *exc);
-
-/* replace the unicode encode error with XML character references */
-PyAPI_FUNC(PyObject *) PyCodec_XMLCharRefReplaceErrors(PyObject *exc);
-
-/* replace the unicode encode error with backslash escapes (\x, \u and \U) */
-PyAPI_FUNC(PyObject *) PyCodec_BackslashReplaceErrors(PyObject *exc);
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-/* replace the unicode encode error with backslash escapes (\N, \x, \u and \U) */
-PyAPI_FUNC(PyObject *) PyCodec_NameReplaceErrors(PyObject *exc);
-#endif
-
-#ifndef Py_LIMITED_API
-PyAPI_DATA(const char *) Py_hexdigits;
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_CODECREGISTRY_H */
diff --git a/pythonsdk/include/compile.h b/pythonsdk/include/compile.h
deleted file mode 100644
index 1dbf032..0000000
--- a/pythonsdk/include/compile.h
+++ /dev/null
@@ -1,93 +0,0 @@
-#ifndef Py_COMPILE_H
-#define Py_COMPILE_H
-
-#ifndef Py_LIMITED_API
-#include "code.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Public interface */
-struct _node; /* Declare the existence of this type */
-PyAPI_FUNC(PyCodeObject *) PyNode_Compile(struct _node *, const char *);
-/* XXX (ncoghlan): Unprefixed type name in a public API! */
-
-#define PyCF_MASK (CO_FUTURE_DIVISION | CO_FUTURE_ABSOLUTE_IMPORT | \
-                   CO_FUTURE_WITH_STATEMENT | CO_FUTURE_PRINT_FUNCTION | \
-                   CO_FUTURE_UNICODE_LITERALS | CO_FUTURE_BARRY_AS_BDFL | \
-                   CO_FUTURE_GENERATOR_STOP | CO_FUTURE_ANNOTATIONS)
-#define PyCF_MASK_OBSOLETE (CO_NESTED)
-#define PyCF_SOURCE_IS_UTF8  0x0100
-#define PyCF_DONT_IMPLY_DEDENT 0x0200
-#define PyCF_ONLY_AST 0x0400
-#define PyCF_IGNORE_COOKIE 0x0800
-
-#ifndef Py_LIMITED_API
-typedef struct {
-    int cf_flags;  /* bitmask of CO_xxx flags relevant to future */
-} PyCompilerFlags;
-#endif
-
-/* Future feature support */
-
-typedef struct {
-    int ff_features;      /* flags set by future statements */
-    int ff_lineno;        /* line number of last future statement */
-} PyFutureFeatures;
-
-#define FUTURE_NESTED_SCOPES "nested_scopes"
-#define FUTURE_GENERATORS "generators"
-#define FUTURE_DIVISION "division"
-#define FUTURE_ABSOLUTE_IMPORT "absolute_import"
-#define FUTURE_WITH_STATEMENT "with_statement"
-#define FUTURE_PRINT_FUNCTION "print_function"
-#define FUTURE_UNICODE_LITERALS "unicode_literals"
-#define FUTURE_BARRY_AS_BDFL "barry_as_FLUFL"
-#define FUTURE_GENERATOR_STOP "generator_stop"
-#define FUTURE_ANNOTATIONS "annotations"
-
-struct _mod; /* Declare the existence of this type */
-#define PyAST_Compile(mod, s, f, ar) PyAST_CompileEx(mod, s, f, -1, ar)
-PyAPI_FUNC(PyCodeObject *) PyAST_CompileEx(
-    struct _mod *mod,
-    const char *filename,       /* decoded from the filesystem encoding */
-    PyCompilerFlags *flags,
-    int optimize,
-    PyArena *arena);
-PyAPI_FUNC(PyCodeObject *) PyAST_CompileObject(
-    struct _mod *mod,
-    PyObject *filename,
-    PyCompilerFlags *flags,
-    int optimize,
-    PyArena *arena);
-PyAPI_FUNC(PyFutureFeatures *) PyFuture_FromAST(
-    struct _mod * mod,
-    const char *filename        /* decoded from the filesystem encoding */
-    );
-PyAPI_FUNC(PyFutureFeatures *) PyFuture_FromASTObject(
-    struct _mod * mod,
-    PyObject *filename
-    );
-
-/* _Py_Mangle is defined in compile.c */
-PyAPI_FUNC(PyObject*) _Py_Mangle(PyObject *p, PyObject *name);
-
-#define PY_INVALID_STACK_EFFECT INT_MAX
-PyAPI_FUNC(int) PyCompile_OpcodeStackEffect(int opcode, int oparg);
-
-PyAPI_FUNC(int) _PyAST_Optimize(struct _mod *, PyArena *arena, int optimize);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_LIMITED_API */
-
-/* These definitions must match corresponding definitions in graminit.h.
-   There's code in compile.c that checks that they are the same. */
-#define Py_single_input 256
-#define Py_file_input 257
-#define Py_eval_input 258
-
-#endif /* !Py_COMPILE_H */
diff --git a/pythonsdk/include/complexobject.h b/pythonsdk/include/complexobject.h
deleted file mode 100644
index a189212..0000000
--- a/pythonsdk/include/complexobject.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Complex number structure */
-
-#ifndef Py_COMPLEXOBJECT_H
-#define Py_COMPLEXOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef Py_LIMITED_API
-typedef struct {
-    double real;
-    double imag;
-} Py_complex;
-
-/* Operations on complex numbers from complexmodule.c */
-
-PyAPI_FUNC(Py_complex) _Py_c_sum(Py_complex, Py_complex);
-PyAPI_FUNC(Py_complex) _Py_c_diff(Py_complex, Py_complex);
-PyAPI_FUNC(Py_complex) _Py_c_neg(Py_complex);
-PyAPI_FUNC(Py_complex) _Py_c_prod(Py_complex, Py_complex);
-PyAPI_FUNC(Py_complex) _Py_c_quot(Py_complex, Py_complex);
-PyAPI_FUNC(Py_complex) _Py_c_pow(Py_complex, Py_complex);
-PyAPI_FUNC(double) _Py_c_abs(Py_complex);
-#endif
-
-/* Complex object interface */
-
-/*
-PyComplexObject represents a complex number with double-precision
-real and imaginary parts.
-*/
-#ifndef Py_LIMITED_API
-typedef struct {
-    PyObject_HEAD
-    Py_complex cval;
-} PyComplexObject;
-#endif
-
-PyAPI_DATA(PyTypeObject) PyComplex_Type;
-
-#define PyComplex_Check(op) PyObject_TypeCheck(op, &PyComplex_Type)
-#define PyComplex_CheckExact(op) (Py_TYPE(op) == &PyComplex_Type)
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) PyComplex_FromCComplex(Py_complex);
-#endif
-PyAPI_FUNC(PyObject *) PyComplex_FromDoubles(double real, double imag);
-
-PyAPI_FUNC(double) PyComplex_RealAsDouble(PyObject *op);
-PyAPI_FUNC(double) PyComplex_ImagAsDouble(PyObject *op);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(Py_complex) PyComplex_AsCComplex(PyObject *op);
-#endif
-
-/* Format the object based on the format_spec, as defined in PEP 3101
-   (Advanced String Formatting). */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyComplex_FormatAdvancedWriter(
-    _PyUnicodeWriter *writer,
-    PyObject *obj,
-    PyObject *format_spec,
-    Py_ssize_t start,
-    Py_ssize_t end);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_COMPLEXOBJECT_H */
diff --git a/pythonsdk/include/context.h b/pythonsdk/include/context.h
deleted file mode 100644
index cb21c42..0000000
--- a/pythonsdk/include/context.h
+++ /dev/null
@@ -1,84 +0,0 @@
-#ifndef Py_CONTEXT_H
-#define Py_CONTEXT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef Py_LIMITED_API
-
-
-PyAPI_DATA(PyTypeObject) PyContext_Type;
-typedef struct _pycontextobject PyContext;
-
-PyAPI_DATA(PyTypeObject) PyContextVar_Type;
-typedef struct _pycontextvarobject PyContextVar;
-
-PyAPI_DATA(PyTypeObject) PyContextToken_Type;
-typedef struct _pycontexttokenobject PyContextToken;
-
-
-#define PyContext_CheckExact(o) (Py_TYPE(o) == &PyContext_Type)
-#define PyContextVar_CheckExact(o) (Py_TYPE(o) == &PyContextVar_Type)
-#define PyContextToken_CheckExact(o) (Py_TYPE(o) == &PyContextToken_Type)
-
-
-PyAPI_FUNC(PyObject *) PyContext_New(void);
-PyAPI_FUNC(PyObject *) PyContext_Copy(PyObject *);
-PyAPI_FUNC(PyObject *) PyContext_CopyCurrent(void);
-
-PyAPI_FUNC(int) PyContext_Enter(PyObject *);
-PyAPI_FUNC(int) PyContext_Exit(PyObject *);
-
-
-/* Create a new context variable.
-
-   default_value can be NULL.
-*/
-PyAPI_FUNC(PyObject *) PyContextVar_New(
-    const char *name, PyObject *default_value);
-
-
-/* Get a value for the variable.
-
-   Returns -1 if an error occurred during lookup.
-
-   Returns 0 if value either was or was not found.
-
-   If value was found, *value will point to it.
-   If not, it will point to:
-
-   - default_value, if not NULL;
-   - the default value of "var", if not NULL;
-   - NULL.
-
-   '*value' will be a new ref, if not NULL.
-*/
-PyAPI_FUNC(int) PyContextVar_Get(
-    PyObject *var, PyObject *default_value, PyObject **value);
-
-
-/* Set a new value for the variable.
-   Returns NULL if an error occurs.
-*/
-PyAPI_FUNC(PyObject *) PyContextVar_Set(PyObject *var, PyObject *value);
-
-
-/* Reset a variable to its previous value.
-   Returns 0 on success, -1 on error.
-*/
-PyAPI_FUNC(int) PyContextVar_Reset(PyObject *var, PyObject *token);
-
-
-/* This method is exposed only for CPython tests. Don not use it. */
-PyAPI_FUNC(PyObject *) _PyContext_NewHamtForTests(void);
-
-
-PyAPI_FUNC(int) PyContext_ClearFreeList(void);
-
-
-#endif /* !Py_LIMITED_API */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_CONTEXT_H */
diff --git a/pythonsdk/include/datetime.h b/pythonsdk/include/datetime.h
deleted file mode 100644
index 792c00f..0000000
--- a/pythonsdk/include/datetime.h
+++ /dev/null
@@ -1,273 +0,0 @@
-/*  datetime.h
- */
-#ifndef Py_LIMITED_API
-#ifndef DATETIME_H
-#define DATETIME_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Fields are packed into successive bytes, each viewed as unsigned and
- * big-endian, unless otherwise noted:
- *
- * byte offset
- *  0           year     2 bytes, 1-9999
- *  2           month    1 byte, 1-12
- *  3           day      1 byte, 1-31
- *  4           hour     1 byte, 0-23
- *  5           minute   1 byte, 0-59
- *  6           second   1 byte, 0-59
- *  7           usecond  3 bytes, 0-999999
- * 10
- */
-
-/* # of bytes for year, month, and day. */
-#define _PyDateTime_DATE_DATASIZE 4
-
-/* # of bytes for hour, minute, second, and usecond. */
-#define _PyDateTime_TIME_DATASIZE 6
-
-/* # of bytes for year, month, day, hour, minute, second, and usecond. */
-#define _PyDateTime_DATETIME_DATASIZE 10
-
-
-typedef struct
-{
-    PyObject_HEAD
-    Py_hash_t hashcode;         /* -1 when unknown */
-    int days;                   /* -MAX_DELTA_DAYS <= days <= MAX_DELTA_DAYS */
-    int seconds;                /* 0 <= seconds < 24*3600 is invariant */
-    int microseconds;           /* 0 <= microseconds < 1000000 is invariant */
-} PyDateTime_Delta;
-
-typedef struct
-{
-    PyObject_HEAD               /* a pure abstract base class */
-} PyDateTime_TZInfo;
-
-
-/* The datetime and time types have hashcodes, and an optional tzinfo member,
- * present if and only if hastzinfo is true.
- */
-#define _PyTZINFO_HEAD          \
-    PyObject_HEAD               \
-    Py_hash_t hashcode;         \
-    char hastzinfo;             /* boolean flag */
-
-/* No _PyDateTime_BaseTZInfo is allocated; it's just to have something
- * convenient to cast to, when getting at the hastzinfo member of objects
- * starting with _PyTZINFO_HEAD.
- */
-typedef struct
-{
-    _PyTZINFO_HEAD
-} _PyDateTime_BaseTZInfo;
-
-/* All time objects are of PyDateTime_TimeType, but that can be allocated
- * in two ways, with or without a tzinfo member.  Without is the same as
- * tzinfo == None, but consumes less memory.  _PyDateTime_BaseTime is an
- * internal struct used to allocate the right amount of space for the
- * "without" case.
- */
-#define _PyDateTime_TIMEHEAD    \
-    _PyTZINFO_HEAD              \
-    unsigned char data[_PyDateTime_TIME_DATASIZE];
-
-typedef struct
-{
-    _PyDateTime_TIMEHEAD
-} _PyDateTime_BaseTime;         /* hastzinfo false */
-
-typedef struct
-{
-    _PyDateTime_TIMEHEAD
-    unsigned char fold;
-    PyObject *tzinfo;
-} PyDateTime_Time;              /* hastzinfo true */
-
-
-/* All datetime objects are of PyDateTime_DateTimeType, but that can be
- * allocated in two ways too, just like for time objects above.  In addition,
- * the plain date type is a base class for datetime, so it must also have
- * a hastzinfo member (although it's unused there).
- */
-typedef struct
-{
-    _PyTZINFO_HEAD
-    unsigned char data[_PyDateTime_DATE_DATASIZE];
-} PyDateTime_Date;
-
-#define _PyDateTime_DATETIMEHEAD        \
-    _PyTZINFO_HEAD                      \
-    unsigned char data[_PyDateTime_DATETIME_DATASIZE];
-
-typedef struct
-{
-    _PyDateTime_DATETIMEHEAD
-} _PyDateTime_BaseDateTime;     /* hastzinfo false */
-
-typedef struct
-{
-    _PyDateTime_DATETIMEHEAD
-    unsigned char fold;
-    PyObject *tzinfo;
-} PyDateTime_DateTime;          /* hastzinfo true */
-
-
-/* Apply for date and datetime instances. */
-#define PyDateTime_GET_YEAR(o)     ((((PyDateTime_Date*)o)->data[0] << 8) | \
-                     ((PyDateTime_Date*)o)->data[1])
-#define PyDateTime_GET_MONTH(o)    (((PyDateTime_Date*)o)->data[2])
-#define PyDateTime_GET_DAY(o)      (((PyDateTime_Date*)o)->data[3])
-
-#define PyDateTime_DATE_GET_HOUR(o)        (((PyDateTime_DateTime*)o)->data[4])
-#define PyDateTime_DATE_GET_MINUTE(o)      (((PyDateTime_DateTime*)o)->data[5])
-#define PyDateTime_DATE_GET_SECOND(o)      (((PyDateTime_DateTime*)o)->data[6])
-#define PyDateTime_DATE_GET_MICROSECOND(o)              \
-    ((((PyDateTime_DateTime*)o)->data[7] << 16) |       \
-     (((PyDateTime_DateTime*)o)->data[8] << 8)  |       \
-      ((PyDateTime_DateTime*)o)->data[9])
-#define PyDateTime_DATE_GET_FOLD(o)        (((PyDateTime_DateTime*)o)->fold)
-
-/* Apply for time instances. */
-#define PyDateTime_TIME_GET_HOUR(o)        (((PyDateTime_Time*)o)->data[0])
-#define PyDateTime_TIME_GET_MINUTE(o)      (((PyDateTime_Time*)o)->data[1])
-#define PyDateTime_TIME_GET_SECOND(o)      (((PyDateTime_Time*)o)->data[2])
-#define PyDateTime_TIME_GET_MICROSECOND(o)              \
-    ((((PyDateTime_Time*)o)->data[3] << 16) |           \
-     (((PyDateTime_Time*)o)->data[4] << 8)  |           \
-      ((PyDateTime_Time*)o)->data[5])
-#define PyDateTime_TIME_GET_FOLD(o)        (((PyDateTime_Time*)o)->fold)
-
-/* Apply for time delta instances */
-#define PyDateTime_DELTA_GET_DAYS(o)         (((PyDateTime_Delta*)o)->days)
-#define PyDateTime_DELTA_GET_SECONDS(o)      (((PyDateTime_Delta*)o)->seconds)
-#define PyDateTime_DELTA_GET_MICROSECONDS(o)            \
-    (((PyDateTime_Delta*)o)->microseconds)
-
-
-/* Define structure for C API. */
-typedef struct {
-    /* type objects */
-    PyTypeObject *DateType;
-    PyTypeObject *DateTimeType;
-    PyTypeObject *TimeType;
-    PyTypeObject *DeltaType;
-    PyTypeObject *TZInfoType;
-
-    /* singletons */
-    PyObject *TimeZone_UTC;
-
-    /* constructors */
-    PyObject *(*Date_FromDate)(int, int, int, PyTypeObject*);
-    PyObject *(*DateTime_FromDateAndTime)(int, int, int, int, int, int, int,
-        PyObject*, PyTypeObject*);
-    PyObject *(*Time_FromTime)(int, int, int, int, PyObject*, PyTypeObject*);
-    PyObject *(*Delta_FromDelta)(int, int, int, int, PyTypeObject*);
-    PyObject *(*TimeZone_FromTimeZone)(PyObject *offset, PyObject *name);
-
-    /* constructors for the DB API */
-    PyObject *(*DateTime_FromTimestamp)(PyObject*, PyObject*, PyObject*);
-    PyObject *(*Date_FromTimestamp)(PyObject*, PyObject*);
-
-    /* PEP 495 constructors */
-    PyObject *(*DateTime_FromDateAndTimeAndFold)(int, int, int, int, int, int, int,
-        PyObject*, int, PyTypeObject*);
-    PyObject *(*Time_FromTimeAndFold)(int, int, int, int, PyObject*, int, PyTypeObject*);
-
-} PyDateTime_CAPI;
-
-#define PyDateTime_CAPSULE_NAME "datetime.datetime_CAPI"
-
-
-#ifdef Py_BUILD_CORE
-
-/* Macros for type checking when building the Python core. */
-#define PyDate_Check(op) PyObject_TypeCheck(op, &PyDateTime_DateType)
-#define PyDate_CheckExact(op) (Py_TYPE(op) == &PyDateTime_DateType)
-
-#define PyDateTime_Check(op) PyObject_TypeCheck(op, &PyDateTime_DateTimeType)
-#define PyDateTime_CheckExact(op) (Py_TYPE(op) == &PyDateTime_DateTimeType)
-
-#define PyTime_Check(op) PyObject_TypeCheck(op, &PyDateTime_TimeType)
-#define PyTime_CheckExact(op) (Py_TYPE(op) == &PyDateTime_TimeType)
-
-#define PyDelta_Check(op) PyObject_TypeCheck(op, &PyDateTime_DeltaType)
-#define PyDelta_CheckExact(op) (Py_TYPE(op) == &PyDateTime_DeltaType)
-
-#define PyTZInfo_Check(op) PyObject_TypeCheck(op, &PyDateTime_TZInfoType)
-#define PyTZInfo_CheckExact(op) (Py_TYPE(op) == &PyDateTime_TZInfoType)
-
-#else
-
-/* Define global variable for the C API and a macro for setting it. */
-static PyDateTime_CAPI *PyDateTimeAPI = NULL;
-
-#define PyDateTime_IMPORT \
-    PyDateTimeAPI = (PyDateTime_CAPI *)PyCapsule_Import(PyDateTime_CAPSULE_NAME, 0)
-
-/* Macro for access to the UTC singleton */
-#define PyDateTime_TimeZone_UTC PyDateTimeAPI->TimeZone_UTC
-
-/* Macros for type checking when not building the Python core. */
-#define PyDate_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DateType)
-#define PyDate_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->DateType)
-
-#define PyDateTime_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DateTimeType)
-#define PyDateTime_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->DateTimeType)
-
-#define PyTime_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->TimeType)
-#define PyTime_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->TimeType)
-
-#define PyDelta_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DeltaType)
-#define PyDelta_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->DeltaType)
-
-#define PyTZInfo_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->TZInfoType)
-#define PyTZInfo_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->TZInfoType)
-
-/* Macros for accessing constructors in a simplified fashion. */
-#define PyDate_FromDate(year, month, day) \
-    PyDateTimeAPI->Date_FromDate(year, month, day, PyDateTimeAPI->DateType)
-
-#define PyDateTime_FromDateAndTime(year, month, day, hour, min, sec, usec) \
-    PyDateTimeAPI->DateTime_FromDateAndTime(year, month, day, hour, \
-        min, sec, usec, Py_None, PyDateTimeAPI->DateTimeType)
-
-#define PyDateTime_FromDateAndTimeAndFold(year, month, day, hour, min, sec, usec, fold) \
-    PyDateTimeAPI->DateTime_FromDateAndTimeAndFold(year, month, day, hour, \
-        min, sec, usec, Py_None, fold, PyDateTimeAPI->DateTimeType)
-
-#define PyTime_FromTime(hour, minute, second, usecond) \
-    PyDateTimeAPI->Time_FromTime(hour, minute, second, usecond, \
-        Py_None, PyDateTimeAPI->TimeType)
-
-#define PyTime_FromTimeAndFold(hour, minute, second, usecond, fold) \
-    PyDateTimeAPI->Time_FromTimeAndFold(hour, minute, second, usecond, \
-        Py_None, fold, PyDateTimeAPI->TimeType)
-
-#define PyDelta_FromDSU(days, seconds, useconds) \
-    PyDateTimeAPI->Delta_FromDelta(days, seconds, useconds, 1, \
-        PyDateTimeAPI->DeltaType)
-
-#define PyTimeZone_FromOffset(offset) \
-    PyDateTimeAPI->TimeZone_FromTimeZone(offset, NULL)
-
-#define PyTimeZone_FromOffsetAndName(offset, name) \
-    PyDateTimeAPI->TimeZone_FromTimeZone(offset, name)
-
-/* Macros supporting the DB API. */
-#define PyDateTime_FromTimestamp(args) \
-    PyDateTimeAPI->DateTime_FromTimestamp( \
-        (PyObject*) (PyDateTimeAPI->DateTimeType), args, NULL)
-
-#define PyDate_FromTimestamp(args) \
-    PyDateTimeAPI->Date_FromTimestamp( \
-        (PyObject*) (PyDateTimeAPI->DateType), args)
-
-#endif  /* Py_BUILD_CORE */
-
-#ifdef __cplusplus
-}
-#endif
-#endif
-#endif /* !Py_LIMITED_API */
diff --git a/pythonsdk/include/descrobject.h b/pythonsdk/include/descrobject.h
deleted file mode 100644
index a75536f..0000000
--- a/pythonsdk/include/descrobject.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/* Descriptors */
-#ifndef Py_DESCROBJECT_H
-#define Py_DESCROBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef PyObject *(*getter)(PyObject *, void *);
-typedef int (*setter)(PyObject *, PyObject *, void *);
-
-typedef struct PyGetSetDef {
-    const char *name;
-    getter get;
-    setter set;
-    const char *doc;
-    void *closure;
-} PyGetSetDef;
-
-#ifndef Py_LIMITED_API
-typedef PyObject *(*wrapperfunc)(PyObject *self, PyObject *args,
-                                 void *wrapped);
-
-typedef PyObject *(*wrapperfunc_kwds)(PyObject *self, PyObject *args,
-                                      void *wrapped, PyObject *kwds);
-
-struct wrapperbase {
-    const char *name;
-    int offset;
-    void *function;
-    wrapperfunc wrapper;
-    const char *doc;
-    int flags;
-    PyObject *name_strobj;
-};
-
-/* Flags for above struct */
-#define PyWrapperFlag_KEYWORDS 1 /* wrapper function takes keyword args */
-
-/* Various kinds of descriptor objects */
-
-typedef struct {
-    PyObject_HEAD
-    PyTypeObject *d_type;
-    PyObject *d_name;
-    PyObject *d_qualname;
-} PyDescrObject;
-
-#define PyDescr_COMMON PyDescrObject d_common
-
-#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
-#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
-
-typedef struct {
-    PyDescr_COMMON;
-    PyMethodDef *d_method;
-} PyMethodDescrObject;
-
-typedef struct {
-    PyDescr_COMMON;
-    struct PyMemberDef *d_member;
-} PyMemberDescrObject;
-
-typedef struct {
-    PyDescr_COMMON;
-    PyGetSetDef *d_getset;
-} PyGetSetDescrObject;
-
-typedef struct {
-    PyDescr_COMMON;
-    struct wrapperbase *d_base;
-    void *d_wrapped; /* This can be any function pointer */
-} PyWrapperDescrObject;
-#endif /* Py_LIMITED_API */
-
-PyAPI_DATA(PyTypeObject) PyClassMethodDescr_Type;
-PyAPI_DATA(PyTypeObject) PyGetSetDescr_Type;
-PyAPI_DATA(PyTypeObject) PyMemberDescr_Type;
-PyAPI_DATA(PyTypeObject) PyMethodDescr_Type;
-PyAPI_DATA(PyTypeObject) PyWrapperDescr_Type;
-PyAPI_DATA(PyTypeObject) PyDictProxy_Type;
-#ifndef Py_LIMITED_API
-PyAPI_DATA(PyTypeObject) _PyMethodWrapper_Type;
-#endif /* Py_LIMITED_API */
-
-PyAPI_FUNC(PyObject *) PyDescr_NewMethod(PyTypeObject *, PyMethodDef *);
-PyAPI_FUNC(PyObject *) PyDescr_NewClassMethod(PyTypeObject *, PyMethodDef *);
-struct PyMemberDef; /* forward declaration for following prototype */
-PyAPI_FUNC(PyObject *) PyDescr_NewMember(PyTypeObject *,
-                                               struct PyMemberDef *);
-PyAPI_FUNC(PyObject *) PyDescr_NewGetSet(PyTypeObject *,
-                                               struct PyGetSetDef *);
-#ifndef Py_LIMITED_API
-
-PyAPI_FUNC(PyObject *) _PyMethodDescr_FastCallKeywords(
-        PyObject *descrobj, PyObject *const *stack, Py_ssize_t nargs, PyObject *kwnames);
-PyAPI_FUNC(PyObject *) PyDescr_NewWrapper(PyTypeObject *,
-                                                struct wrapperbase *, void *);
-#define PyDescr_IsData(d) (Py_TYPE(d)->tp_descr_set != NULL)
-#endif
-
-PyAPI_FUNC(PyObject *) PyDictProxy_New(PyObject *);
-PyAPI_FUNC(PyObject *) PyWrapper_New(PyObject *, PyObject *);
-
-
-PyAPI_DATA(PyTypeObject) PyProperty_Type;
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_DESCROBJECT_H */
-
diff --git a/pythonsdk/include/dictobject.h b/pythonsdk/include/dictobject.h
deleted file mode 100644
index ee728ec..0000000
--- a/pythonsdk/include/dictobject.h
+++ /dev/null
@@ -1,179 +0,0 @@
-#ifndef Py_DICTOBJECT_H
-#define Py_DICTOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Dictionary object type -- mapping from hashable object to object */
-
-/* The distribution includes a separate file, Objects/dictnotes.txt,
-   describing explorations into dictionary design and optimization.
-   It covers typical dictionary use patterns, the parameters for
-   tuning dictionaries, and several ideas for possible optimizations.
-*/
-
-#ifndef Py_LIMITED_API
-
-typedef struct _dictkeysobject PyDictKeysObject;
-
-/* The ma_values pointer is NULL for a combined table
- * or points to an array of PyObject* for a split table
- */
-typedef struct {
-    PyObject_HEAD
-
-    /* Number of items in the dictionary */
-    Py_ssize_t ma_used;
-
-    /* Dictionary version: globally unique, value change each time
-       the dictionary is modified */
-    uint64_t ma_version_tag;
-
-    PyDictKeysObject *ma_keys;
-
-    /* If ma_values is NULL, the table is "combined": keys and values
-       are stored in ma_keys.
-
-       If ma_values is not NULL, the table is splitted:
-       keys are stored in ma_keys and values are stored in ma_values */
-    PyObject **ma_values;
-} PyDictObject;
-
-typedef struct {
-    PyObject_HEAD
-    PyDictObject *dv_dict;
-} _PyDictViewObject;
-
-#endif /* Py_LIMITED_API */
-
-PyAPI_DATA(PyTypeObject) PyDict_Type;
-PyAPI_DATA(PyTypeObject) PyDictIterKey_Type;
-PyAPI_DATA(PyTypeObject) PyDictIterValue_Type;
-PyAPI_DATA(PyTypeObject) PyDictIterItem_Type;
-PyAPI_DATA(PyTypeObject) PyDictKeys_Type;
-PyAPI_DATA(PyTypeObject) PyDictItems_Type;
-PyAPI_DATA(PyTypeObject) PyDictValues_Type;
-
-#define PyDict_Check(op) \
-                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
-#define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type)
-#define PyDictKeys_Check(op) PyObject_TypeCheck(op, &PyDictKeys_Type)
-#define PyDictItems_Check(op) PyObject_TypeCheck(op, &PyDictItems_Type)
-#define PyDictValues_Check(op) PyObject_TypeCheck(op, &PyDictValues_Type)
-/* This excludes Values, since they are not sets. */
-# define PyDictViewSet_Check(op) \
-    (PyDictKeys_Check(op) || PyDictItems_Check(op))
-
-
-PyAPI_FUNC(PyObject *) PyDict_New(void);
-PyAPI_FUNC(PyObject *) PyDict_GetItem(PyObject *mp, PyObject *key);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyDict_GetItem_KnownHash(PyObject *mp, PyObject *key,
-                                       Py_hash_t hash);
-#endif
-PyAPI_FUNC(PyObject *) PyDict_GetItemWithError(PyObject *mp, PyObject *key);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyDict_GetItemIdWithError(PyObject *dp,
-                                                  struct _Py_Identifier *key);
-PyAPI_FUNC(PyObject *) PyDict_SetDefault(
-    PyObject *mp, PyObject *key, PyObject *defaultobj);
-#endif
-PyAPI_FUNC(int) PyDict_SetItem(PyObject *mp, PyObject *key, PyObject *item);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyDict_SetItem_KnownHash(PyObject *mp, PyObject *key,
-                                          PyObject *item, Py_hash_t hash);
-#endif
-PyAPI_FUNC(int) PyDict_DelItem(PyObject *mp, PyObject *key);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyDict_DelItem_KnownHash(PyObject *mp, PyObject *key,
-                                          Py_hash_t hash);
-PyAPI_FUNC(int) _PyDict_DelItemIf(PyObject *mp, PyObject *key,
-                                  int (*predicate)(PyObject *value));
-#endif
-PyAPI_FUNC(void) PyDict_Clear(PyObject *mp);
-PyAPI_FUNC(int) PyDict_Next(
-    PyObject *mp, Py_ssize_t *pos, PyObject **key, PyObject **value);
-#ifndef Py_LIMITED_API
-PyDictKeysObject *_PyDict_NewKeysForClass(void);
-PyAPI_FUNC(PyObject *) PyObject_GenericGetDict(PyObject *, void *);
-PyAPI_FUNC(int) _PyDict_Next(
-    PyObject *mp, Py_ssize_t *pos, PyObject **key, PyObject **value, Py_hash_t *hash);
-PyObject *_PyDictView_New(PyObject *, PyTypeObject *);
-#endif
-PyAPI_FUNC(PyObject *) PyDict_Keys(PyObject *mp);
-PyAPI_FUNC(PyObject *) PyDict_Values(PyObject *mp);
-PyAPI_FUNC(PyObject *) PyDict_Items(PyObject *mp);
-PyAPI_FUNC(Py_ssize_t) PyDict_Size(PyObject *mp);
-PyAPI_FUNC(PyObject *) PyDict_Copy(PyObject *mp);
-PyAPI_FUNC(int) PyDict_Contains(PyObject *mp, PyObject *key);
-#ifndef Py_LIMITED_API
-/* Get the number of items of a dictionary. */
-#define PyDict_GET_SIZE(mp)  (assert(PyDict_Check(mp)),((PyDictObject *)mp)->ma_used)
-PyAPI_FUNC(int) _PyDict_Contains(PyObject *mp, PyObject *key, Py_hash_t hash);
-PyAPI_FUNC(PyObject *) _PyDict_NewPresized(Py_ssize_t minused);
-PyAPI_FUNC(void) _PyDict_MaybeUntrack(PyObject *mp);
-PyAPI_FUNC(int) _PyDict_HasOnlyStringKeys(PyObject *mp);
-Py_ssize_t _PyDict_KeysSize(PyDictKeysObject *keys);
-PyAPI_FUNC(Py_ssize_t) _PyDict_SizeOf(PyDictObject *);
-PyAPI_FUNC(PyObject *) _PyDict_Pop(PyObject *, PyObject *, PyObject *);
-PyObject *_PyDict_Pop_KnownHash(PyObject *, PyObject *, Py_hash_t, PyObject *);
-PyObject *_PyDict_FromKeys(PyObject *, PyObject *, PyObject *);
-#define _PyDict_HasSplitTable(d) ((d)->ma_values != NULL)
-
-PyAPI_FUNC(int) PyDict_ClearFreeList(void);
-#endif
-
-/* PyDict_Update(mp, other) is equivalent to PyDict_Merge(mp, other, 1). */
-PyAPI_FUNC(int) PyDict_Update(PyObject *mp, PyObject *other);
-
-/* PyDict_Merge updates/merges from a mapping object (an object that
-   supports PyMapping_Keys() and PyObject_GetItem()).  If override is true,
-   the last occurrence of a key wins, else the first.  The Python
-   dict.update(other) is equivalent to PyDict_Merge(dict, other, 1).
-*/
-PyAPI_FUNC(int) PyDict_Merge(PyObject *mp,
-                                   PyObject *other,
-                                   int override);
-
-#ifndef Py_LIMITED_API
-/* Like PyDict_Merge, but override can be 0, 1 or 2.  If override is 0,
-   the first occurrence of a key wins, if override is 1, the last occurrence
-   of a key wins, if override is 2, a KeyError with conflicting key as
-   argument is raised.
-*/
-PyAPI_FUNC(int) _PyDict_MergeEx(PyObject *mp, PyObject *other, int override);
-PyAPI_FUNC(PyObject *) _PyDictView_Intersect(PyObject* self, PyObject *other);
-#endif
-
-/* PyDict_MergeFromSeq2 updates/merges from an iterable object producing
-   iterable objects of length 2.  If override is true, the last occurrence
-   of a key wins, else the first.  The Python dict constructor dict(seq2)
-   is equivalent to dict={}; PyDict_MergeFromSeq(dict, seq2, 1).
-*/
-PyAPI_FUNC(int) PyDict_MergeFromSeq2(PyObject *d,
-                                           PyObject *seq2,
-                                           int override);
-
-PyAPI_FUNC(PyObject *) PyDict_GetItemString(PyObject *dp, const char *key);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyDict_GetItemId(PyObject *dp, struct _Py_Identifier *key);
-#endif /* !Py_LIMITED_API */
-PyAPI_FUNC(int) PyDict_SetItemString(PyObject *dp, const char *key, PyObject *item);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyDict_SetItemId(PyObject *dp, struct _Py_Identifier *key, PyObject *item);
-#endif /* !Py_LIMITED_API */
-PyAPI_FUNC(int) PyDict_DelItemString(PyObject *dp, const char *key);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyDict_DelItemId(PyObject *mp, struct _Py_Identifier *key);
-PyAPI_FUNC(void) _PyDict_DebugMallocStats(FILE *out);
-
-int _PyObjectDict_SetItem(PyTypeObject *tp, PyObject **dictptr, PyObject *name, PyObject *value);
-PyObject *_PyDict_LoadGlobal(PyDictObject *, PyDictObject *, PyObject *);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_DICTOBJECT_H */
diff --git a/pythonsdk/include/dtoa.h b/pythonsdk/include/dtoa.h
deleted file mode 100644
index 0901d8f..0000000
--- a/pythonsdk/include/dtoa.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef Py_LIMITED_API
-#ifndef PY_NO_SHORT_FLOAT_REPR
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(double) _Py_dg_strtod(const char *str, char **ptr);
-PyAPI_FUNC(char *) _Py_dg_dtoa(double d, int mode, int ndigits,
-                        int *decpt, int *sign, char **rve);
-PyAPI_FUNC(void) _Py_dg_freedtoa(char *s);
-PyAPI_FUNC(double) _Py_dg_stdnan(int sign);
-PyAPI_FUNC(double) _Py_dg_infinity(int sign);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif
-#endif
diff --git a/pythonsdk/include/dynamic_annotations.h b/pythonsdk/include/dynamic_annotations.h
deleted file mode 100644
index 03448a2..0000000
--- a/pythonsdk/include/dynamic_annotations.h
+++ /dev/null
@@ -1,499 +0,0 @@
-/* Copyright (c) 2008-2009, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ---
- * Author: Kostya Serebryany
- * Copied to CPython by Jeffrey Yasskin, with all macros renamed to
- * start with _Py_ to avoid colliding with users embedding Python, and
- * with deprecated macros removed.
- */
-
-/* This file defines dynamic annotations for use with dynamic analysis
-   tool such as valgrind, PIN, etc.
-
-   Dynamic annotation is a source code annotation that affects
-   the generated code (that is, the annotation is not a comment).
-   Each such annotation is attached to a particular
-   instruction and/or to a particular object (address) in the program.
-
-   The annotations that should be used by users are macros in all upper-case
-   (e.g., _Py_ANNOTATE_NEW_MEMORY).
-
-   Actual implementation of these macros may differ depending on the
-   dynamic analysis tool being used.
-
-   See http://code.google.com/p/data-race-test/  for more information.
-
-   This file supports the following dynamic analysis tools:
-   - None (DYNAMIC_ANNOTATIONS_ENABLED is not defined or zero).
-      Macros are defined empty.
-   - ThreadSanitizer, Helgrind, DRD (DYNAMIC_ANNOTATIONS_ENABLED is 1).
-      Macros are defined as calls to non-inlinable empty functions
-      that are intercepted by Valgrind. */
-
-#ifndef __DYNAMIC_ANNOTATIONS_H__
-#define __DYNAMIC_ANNOTATIONS_H__
-
-#ifndef DYNAMIC_ANNOTATIONS_ENABLED
-# define DYNAMIC_ANNOTATIONS_ENABLED 0
-#endif
-
-#if DYNAMIC_ANNOTATIONS_ENABLED != 0
-
-  /* -------------------------------------------------------------
-     Annotations useful when implementing condition variables such as CondVar,
-     using conditional critical sections (Await/LockWhen) and when constructing
-     user-defined synchronization mechanisms.
-
-     The annotations _Py_ANNOTATE_HAPPENS_BEFORE() and
-     _Py_ANNOTATE_HAPPENS_AFTER() can be used to define happens-before arcs in
-     user-defined synchronization mechanisms: the race detector will infer an
-     arc from the former to the latter when they share the same argument
-     pointer.
-
-     Example 1 (reference counting):
-
-     void Unref() {
-       _Py_ANNOTATE_HAPPENS_BEFORE(&refcount_);
-       if (AtomicDecrementByOne(&refcount_) == 0) {
-         _Py_ANNOTATE_HAPPENS_AFTER(&refcount_);
-         delete this;
-       }
-     }
-
-     Example 2 (message queue):
-
-     void MyQueue::Put(Type *e) {
-       MutexLock lock(&mu_);
-       _Py_ANNOTATE_HAPPENS_BEFORE(e);
-       PutElementIntoMyQueue(e);
-     }
-
-     Type *MyQueue::Get() {
-       MutexLock lock(&mu_);
-       Type *e = GetElementFromMyQueue();
-       _Py_ANNOTATE_HAPPENS_AFTER(e);
-       return e;
-     }
-
-     Note: when possible, please use the existing reference counting and message
-     queue implementations instead of inventing new ones. */
-
-  /* Report that wait on the condition variable at address "cv" has succeeded
-     and the lock at address "lock" is held. */
-#define _Py_ANNOTATE_CONDVAR_LOCK_WAIT(cv, lock) \
-    AnnotateCondVarWait(__FILE__, __LINE__, cv, lock)
-
-  /* Report that wait on the condition variable at "cv" has succeeded.  Variant
-     w/o lock. */
-#define _Py_ANNOTATE_CONDVAR_WAIT(cv) \
-    AnnotateCondVarWait(__FILE__, __LINE__, cv, NULL)
-
-  /* Report that we are about to signal on the condition variable at address
-     "cv". */
-#define _Py_ANNOTATE_CONDVAR_SIGNAL(cv) \
-    AnnotateCondVarSignal(__FILE__, __LINE__, cv)
-
-  /* Report that we are about to signal_all on the condition variable at "cv". */
-#define _Py_ANNOTATE_CONDVAR_SIGNAL_ALL(cv) \
-    AnnotateCondVarSignalAll(__FILE__, __LINE__, cv)
-
-  /* Annotations for user-defined synchronization mechanisms. */
-#define _Py_ANNOTATE_HAPPENS_BEFORE(obj) _Py_ANNOTATE_CONDVAR_SIGNAL(obj)
-#define _Py_ANNOTATE_HAPPENS_AFTER(obj)  _Py_ANNOTATE_CONDVAR_WAIT(obj)
-
-  /* Report that the bytes in the range [pointer, pointer+size) are about
-     to be published safely. The race checker will create a happens-before
-     arc from the call _Py_ANNOTATE_PUBLISH_MEMORY_RANGE(pointer, size) to
-     subsequent accesses to this memory.
-     Note: this annotation may not work properly if the race detector uses
-     sampling, i.e. does not observe all memory accesses.
-     */
-#define _Py_ANNOTATE_PUBLISH_MEMORY_RANGE(pointer, size) \
-    AnnotatePublishMemoryRange(__FILE__, __LINE__, pointer, size)
-
-  /* Instruct the tool to create a happens-before arc between mu->Unlock() and
-     mu->Lock(). This annotation may slow down the race detector and hide real
-     races. Normally it is used only when it would be difficult to annotate each
-     of the mutex's critical sections individually using the annotations above.
-     This annotation makes sense only for hybrid race detectors. For pure
-     happens-before detectors this is a no-op. For more details see
-     http://code.google.com/p/data-race-test/wiki/PureHappensBeforeVsHybrid . */
-#define _Py_ANNOTATE_PURE_HAPPENS_BEFORE_MUTEX(mu) \
-    AnnotateMutexIsUsedAsCondVar(__FILE__, __LINE__, mu)
-
-  /* -------------------------------------------------------------
-     Annotations useful when defining memory allocators, or when memory that
-     was protected in one way starts to be protected in another. */
-
-  /* Report that a new memory at "address" of size "size" has been allocated.
-     This might be used when the memory has been retrieved from a free list and
-     is about to be reused, or when the locking discipline for a variable
-     changes. */
-#define _Py_ANNOTATE_NEW_MEMORY(address, size) \
-    AnnotateNewMemory(__FILE__, __LINE__, address, size)
-
-  /* -------------------------------------------------------------
-     Annotations useful when defining FIFO queues that transfer data between
-     threads. */
-
-  /* Report that the producer-consumer queue (such as ProducerConsumerQueue) at
-     address "pcq" has been created.  The _Py_ANNOTATE_PCQ_* annotations should
-     be used only for FIFO queues.  For non-FIFO queues use
-     _Py_ANNOTATE_HAPPENS_BEFORE (for put) and _Py_ANNOTATE_HAPPENS_AFTER (for
-     get). */
-#define _Py_ANNOTATE_PCQ_CREATE(pcq) \
-    AnnotatePCQCreate(__FILE__, __LINE__, pcq)
-
-  /* Report that the queue at address "pcq" is about to be destroyed. */
-#define _Py_ANNOTATE_PCQ_DESTROY(pcq) \
-    AnnotatePCQDestroy(__FILE__, __LINE__, pcq)
-
-  /* Report that we are about to put an element into a FIFO queue at address
-     "pcq". */
-#define _Py_ANNOTATE_PCQ_PUT(pcq) \
-    AnnotatePCQPut(__FILE__, __LINE__, pcq)
-
-  /* Report that we've just got an element from a FIFO queue at address "pcq". */
-#define _Py_ANNOTATE_PCQ_GET(pcq) \
-    AnnotatePCQGet(__FILE__, __LINE__, pcq)
-
-  /* -------------------------------------------------------------
-     Annotations that suppress errors.  It is usually better to express the
-     program's synchronization using the other annotations, but these can
-     be used when all else fails. */
-
-  /* Report that we may have a benign race at "pointer", with size
-     "sizeof(*(pointer))". "pointer" must be a non-void* pointer.  Insert at the
-     point where "pointer" has been allocated, preferably close to the point
-     where the race happens.  See also _Py_ANNOTATE_BENIGN_RACE_STATIC. */
-#define _Py_ANNOTATE_BENIGN_RACE(pointer, description) \
-    AnnotateBenignRaceSized(__FILE__, __LINE__, pointer, \
-                            sizeof(*(pointer)), description)
-
-  /* Same as _Py_ANNOTATE_BENIGN_RACE(address, description), but applies to
-     the memory range [address, address+size). */
-#define _Py_ANNOTATE_BENIGN_RACE_SIZED(address, size, description) \
-    AnnotateBenignRaceSized(__FILE__, __LINE__, address, size, description)
-
-  /* Request the analysis tool to ignore all reads in the current thread
-     until _Py_ANNOTATE_IGNORE_READS_END is called.
-     Useful to ignore intentional racey reads, while still checking
-     other reads and all writes.
-     See also _Py_ANNOTATE_UNPROTECTED_READ. */
-#define _Py_ANNOTATE_IGNORE_READS_BEGIN() \
-    AnnotateIgnoreReadsBegin(__FILE__, __LINE__)
-
-  /* Stop ignoring reads. */
-#define _Py_ANNOTATE_IGNORE_READS_END() \
-    AnnotateIgnoreReadsEnd(__FILE__, __LINE__)
-
-  /* Similar to _Py_ANNOTATE_IGNORE_READS_BEGIN, but ignore writes. */
-#define _Py_ANNOTATE_IGNORE_WRITES_BEGIN() \
-    AnnotateIgnoreWritesBegin(__FILE__, __LINE__)
-
-  /* Stop ignoring writes. */
-#define _Py_ANNOTATE_IGNORE_WRITES_END() \
-    AnnotateIgnoreWritesEnd(__FILE__, __LINE__)
-
-  /* Start ignoring all memory accesses (reads and writes). */
-#define _Py_ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN() \
-    do {\
-      _Py_ANNOTATE_IGNORE_READS_BEGIN();\
-      _Py_ANNOTATE_IGNORE_WRITES_BEGIN();\
-    }while(0)\
-
-  /* Stop ignoring all memory accesses. */
-#define _Py_ANNOTATE_IGNORE_READS_AND_WRITES_END() \
-    do {\
-      _Py_ANNOTATE_IGNORE_WRITES_END();\
-      _Py_ANNOTATE_IGNORE_READS_END();\
-    }while(0)\
-
-  /* Similar to _Py_ANNOTATE_IGNORE_READS_BEGIN, but ignore synchronization events:
-     RWLOCK* and CONDVAR*. */
-#define _Py_ANNOTATE_IGNORE_SYNC_BEGIN() \
-    AnnotateIgnoreSyncBegin(__FILE__, __LINE__)
-
-  /* Stop ignoring sync events. */
-#define _Py_ANNOTATE_IGNORE_SYNC_END() \
-    AnnotateIgnoreSyncEnd(__FILE__, __LINE__)
-
-
-  /* Enable (enable!=0) or disable (enable==0) race detection for all threads.
-     This annotation could be useful if you want to skip expensive race analysis
-     during some period of program execution, e.g. during initialization. */
-#define _Py_ANNOTATE_ENABLE_RACE_DETECTION(enable) \
-    AnnotateEnableRaceDetection(__FILE__, __LINE__, enable)
-
-  /* -------------------------------------------------------------
-     Annotations useful for debugging. */
-
-  /* Request to trace every access to "address". */
-#define _Py_ANNOTATE_TRACE_MEMORY(address) \
-    AnnotateTraceMemory(__FILE__, __LINE__, address)
-
-  /* Report the current thread name to a race detector. */
-#define _Py_ANNOTATE_THREAD_NAME(name) \
-    AnnotateThreadName(__FILE__, __LINE__, name)
-
-  /* -------------------------------------------------------------
-     Annotations useful when implementing locks.  They are not
-     normally needed by modules that merely use locks.
-     The "lock" argument is a pointer to the lock object. */
-
-  /* Report that a lock has been created at address "lock". */
-#define _Py_ANNOTATE_RWLOCK_CREATE(lock) \
-    AnnotateRWLockCreate(__FILE__, __LINE__, lock)
-
-  /* Report that the lock at address "lock" is about to be destroyed. */
-#define _Py_ANNOTATE_RWLOCK_DESTROY(lock) \
-    AnnotateRWLockDestroy(__FILE__, __LINE__, lock)
-
-  /* Report that the lock at address "lock" has been acquired.
-     is_w=1 for writer lock, is_w=0 for reader lock. */
-#define _Py_ANNOTATE_RWLOCK_ACQUIRED(lock, is_w) \
-    AnnotateRWLockAcquired(__FILE__, __LINE__, lock, is_w)
-
-  /* Report that the lock at address "lock" is about to be released. */
-#define _Py_ANNOTATE_RWLOCK_RELEASED(lock, is_w) \
-    AnnotateRWLockReleased(__FILE__, __LINE__, lock, is_w)
-
-  /* -------------------------------------------------------------
-     Annotations useful when implementing barriers.  They are not
-     normally needed by modules that merely use barriers.
-     The "barrier" argument is a pointer to the barrier object. */
-
-  /* Report that the "barrier" has been initialized with initial "count".
-   If 'reinitialization_allowed' is true, initialization is allowed to happen
-   multiple times w/o calling barrier_destroy() */
-#define _Py_ANNOTATE_BARRIER_INIT(barrier, count, reinitialization_allowed) \
-    AnnotateBarrierInit(__FILE__, __LINE__, barrier, count, \
-                        reinitialization_allowed)
-
-  /* Report that we are about to enter barrier_wait("barrier"). */
-#define _Py_ANNOTATE_BARRIER_WAIT_BEFORE(barrier) \
-    AnnotateBarrierWaitBefore(__FILE__, __LINE__, barrier)
-
-  /* Report that we just exited barrier_wait("barrier"). */
-#define _Py_ANNOTATE_BARRIER_WAIT_AFTER(barrier) \
-    AnnotateBarrierWaitAfter(__FILE__, __LINE__, barrier)
-
-  /* Report that the "barrier" has been destroyed. */
-#define _Py_ANNOTATE_BARRIER_DESTROY(barrier) \
-    AnnotateBarrierDestroy(__FILE__, __LINE__, barrier)
-
-  /* -------------------------------------------------------------
-     Annotations useful for testing race detectors. */
-
-  /* Report that we expect a race on the variable at "address".
-     Use only in unit tests for a race detector. */
-#define _Py_ANNOTATE_EXPECT_RACE(address, description) \
-    AnnotateExpectRace(__FILE__, __LINE__, address, description)
-
-  /* A no-op. Insert where you like to test the interceptors. */
-#define _Py_ANNOTATE_NO_OP(arg) \
-    AnnotateNoOp(__FILE__, __LINE__, arg)
-
-  /* Force the race detector to flush its state. The actual effect depends on
-   * the implementation of the detector. */
-#define _Py_ANNOTATE_FLUSH_STATE() \
-    AnnotateFlushState(__FILE__, __LINE__)
-
-
-#else  /* DYNAMIC_ANNOTATIONS_ENABLED == 0 */
-
-#define _Py_ANNOTATE_RWLOCK_CREATE(lock) /* empty */
-#define _Py_ANNOTATE_RWLOCK_DESTROY(lock) /* empty */
-#define _Py_ANNOTATE_RWLOCK_ACQUIRED(lock, is_w) /* empty */
-#define _Py_ANNOTATE_RWLOCK_RELEASED(lock, is_w) /* empty */
-#define _Py_ANNOTATE_BARRIER_INIT(barrier, count, reinitialization_allowed) /* */
-#define _Py_ANNOTATE_BARRIER_WAIT_BEFORE(barrier) /* empty */
-#define _Py_ANNOTATE_BARRIER_WAIT_AFTER(barrier) /* empty */
-#define _Py_ANNOTATE_BARRIER_DESTROY(barrier) /* empty */
-#define _Py_ANNOTATE_CONDVAR_LOCK_WAIT(cv, lock) /* empty */
-#define _Py_ANNOTATE_CONDVAR_WAIT(cv) /* empty */
-#define _Py_ANNOTATE_CONDVAR_SIGNAL(cv) /* empty */
-#define _Py_ANNOTATE_CONDVAR_SIGNAL_ALL(cv) /* empty */
-#define _Py_ANNOTATE_HAPPENS_BEFORE(obj) /* empty */
-#define _Py_ANNOTATE_HAPPENS_AFTER(obj) /* empty */
-#define _Py_ANNOTATE_PUBLISH_MEMORY_RANGE(address, size) /* empty */
-#define _Py_ANNOTATE_UNPUBLISH_MEMORY_RANGE(address, size)  /* empty */
-#define _Py_ANNOTATE_SWAP_MEMORY_RANGE(address, size)  /* empty */
-#define _Py_ANNOTATE_PCQ_CREATE(pcq) /* empty */
-#define _Py_ANNOTATE_PCQ_DESTROY(pcq) /* empty */
-#define _Py_ANNOTATE_PCQ_PUT(pcq) /* empty */
-#define _Py_ANNOTATE_PCQ_GET(pcq) /* empty */
-#define _Py_ANNOTATE_NEW_MEMORY(address, size) /* empty */
-#define _Py_ANNOTATE_EXPECT_RACE(address, description) /* empty */
-#define _Py_ANNOTATE_BENIGN_RACE(address, description) /* empty */
-#define _Py_ANNOTATE_BENIGN_RACE_SIZED(address, size, description) /* empty */
-#define _Py_ANNOTATE_PURE_HAPPENS_BEFORE_MUTEX(mu) /* empty */
-#define _Py_ANNOTATE_MUTEX_IS_USED_AS_CONDVAR(mu) /* empty */
-#define _Py_ANNOTATE_TRACE_MEMORY(arg) /* empty */
-#define _Py_ANNOTATE_THREAD_NAME(name) /* empty */
-#define _Py_ANNOTATE_IGNORE_READS_BEGIN() /* empty */
-#define _Py_ANNOTATE_IGNORE_READS_END() /* empty */
-#define _Py_ANNOTATE_IGNORE_WRITES_BEGIN() /* empty */
-#define _Py_ANNOTATE_IGNORE_WRITES_END() /* empty */
-#define _Py_ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN() /* empty */
-#define _Py_ANNOTATE_IGNORE_READS_AND_WRITES_END() /* empty */
-#define _Py_ANNOTATE_IGNORE_SYNC_BEGIN() /* empty */
-#define _Py_ANNOTATE_IGNORE_SYNC_END() /* empty */
-#define _Py_ANNOTATE_ENABLE_RACE_DETECTION(enable) /* empty */
-#define _Py_ANNOTATE_NO_OP(arg) /* empty */
-#define _Py_ANNOTATE_FLUSH_STATE() /* empty */
-
-#endif  /* DYNAMIC_ANNOTATIONS_ENABLED */
-
-/* Use the macros above rather than using these functions directly. */
-#ifdef __cplusplus
-extern "C" {
-#endif
-void AnnotateRWLockCreate(const char *file, int line,
-                          const volatile void *lock);
-void AnnotateRWLockDestroy(const char *file, int line,
-                           const volatile void *lock);
-void AnnotateRWLockAcquired(const char *file, int line,
-                            const volatile void *lock, long is_w);
-void AnnotateRWLockReleased(const char *file, int line,
-                            const volatile void *lock, long is_w);
-void AnnotateBarrierInit(const char *file, int line,
-                         const volatile void *barrier, long count,
-                         long reinitialization_allowed);
-void AnnotateBarrierWaitBefore(const char *file, int line,
-                               const volatile void *barrier);
-void AnnotateBarrierWaitAfter(const char *file, int line,
-                              const volatile void *barrier);
-void AnnotateBarrierDestroy(const char *file, int line,
-                            const volatile void *barrier);
-void AnnotateCondVarWait(const char *file, int line,
-                         const volatile void *cv,
-                         const volatile void *lock);
-void AnnotateCondVarSignal(const char *file, int line,
-                           const volatile void *cv);
-void AnnotateCondVarSignalAll(const char *file, int line,
-                              const volatile void *cv);
-void AnnotatePublishMemoryRange(const char *file, int line,
-                                const volatile void *address,
-                                long size);
-void AnnotateUnpublishMemoryRange(const char *file, int line,
-                                  const volatile void *address,
-                                  long size);
-void AnnotatePCQCreate(const char *file, int line,
-                       const volatile void *pcq);
-void AnnotatePCQDestroy(const char *file, int line,
-                        const volatile void *pcq);
-void AnnotatePCQPut(const char *file, int line,
-                    const volatile void *pcq);
-void AnnotatePCQGet(const char *file, int line,
-                    const volatile void *pcq);
-void AnnotateNewMemory(const char *file, int line,
-                       const volatile void *address,
-                       long size);
-void AnnotateExpectRace(const char *file, int line,
-                        const volatile void *address,
-                        const char *description);
-void AnnotateBenignRace(const char *file, int line,
-                        const volatile void *address,
-                        const char *description);
-void AnnotateBenignRaceSized(const char *file, int line,
-                        const volatile void *address,
-                        long size,
-                        const char *description);
-void AnnotateMutexIsUsedAsCondVar(const char *file, int line,
-                                  const volatile void *mu);
-void AnnotateTraceMemory(const char *file, int line,
-                         const volatile void *arg);
-void AnnotateThreadName(const char *file, int line,
-                        const char *name);
-void AnnotateIgnoreReadsBegin(const char *file, int line);
-void AnnotateIgnoreReadsEnd(const char *file, int line);
-void AnnotateIgnoreWritesBegin(const char *file, int line);
-void AnnotateIgnoreWritesEnd(const char *file, int line);
-void AnnotateEnableRaceDetection(const char *file, int line, int enable);
-void AnnotateNoOp(const char *file, int line,
-                  const volatile void *arg);
-void AnnotateFlushState(const char *file, int line);
-
-/* Return non-zero value if running under valgrind.
-
-  If "valgrind.h" is included into dynamic_annotations.c,
-  the regular valgrind mechanism will be used.
-  See http://valgrind.org/docs/manual/manual-core-adv.html about
-  RUNNING_ON_VALGRIND and other valgrind "client requests".
-  The file "valgrind.h" may be obtained by doing
-     svn co svn://svn.valgrind.org/valgrind/trunk/include
-
-  If for some reason you can't use "valgrind.h" or want to fake valgrind,
-  there are two ways to make this function return non-zero:
-    - Use environment variable: export RUNNING_ON_VALGRIND=1
-    - Make your tool intercept the function RunningOnValgrind() and
-      change its return value.
- */
-int RunningOnValgrind(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#if DYNAMIC_ANNOTATIONS_ENABLED != 0 && defined(__cplusplus)
-
-  /* _Py_ANNOTATE_UNPROTECTED_READ is the preferred way to annotate racey reads.
-
-     Instead of doing
-        _Py_ANNOTATE_IGNORE_READS_BEGIN();
-        ... = x;
-        _Py_ANNOTATE_IGNORE_READS_END();
-     one can use
-        ... = _Py_ANNOTATE_UNPROTECTED_READ(x); */
-  template <class T>
-  inline T _Py_ANNOTATE_UNPROTECTED_READ(const volatile T &x) {
-    _Py_ANNOTATE_IGNORE_READS_BEGIN();
-    T res = x;
-    _Py_ANNOTATE_IGNORE_READS_END();
-    return res;
-  }
-  /* Apply _Py_ANNOTATE_BENIGN_RACE_SIZED to a static variable. */
-#define _Py_ANNOTATE_BENIGN_RACE_STATIC(static_var, description)        \
-    namespace {                                                       \
-      class static_var ## _annotator {                                \
-       public:                                                        \
-        static_var ## _annotator() {                                  \
-          _Py_ANNOTATE_BENIGN_RACE_SIZED(&static_var,                     \
-                                      sizeof(static_var),             \
-            # static_var ": " description);                           \
-        }                                                             \
-      };                                                              \
-      static static_var ## _annotator the ## static_var ## _annotator;\
-    }
-#else /* DYNAMIC_ANNOTATIONS_ENABLED == 0 */
-
-#define _Py_ANNOTATE_UNPROTECTED_READ(x) (x)
-#define _Py_ANNOTATE_BENIGN_RACE_STATIC(static_var, description)  /* empty */
-
-#endif /* DYNAMIC_ANNOTATIONS_ENABLED */
-
-#endif  /* __DYNAMIC_ANNOTATIONS_H__ */
diff --git a/pythonsdk/include/enumobject.h b/pythonsdk/include/enumobject.h
deleted file mode 100644
index 42dc2d2..0000000
--- a/pythonsdk/include/enumobject.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef Py_ENUMOBJECT_H
-#define Py_ENUMOBJECT_H
-
-/* Enumerate Object */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_DATA(PyTypeObject) PyEnum_Type;
-PyAPI_DATA(PyTypeObject) PyReversed_Type;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_ENUMOBJECT_H */
diff --git a/pythonsdk/include/errcode.h b/pythonsdk/include/errcode.h
deleted file mode 100644
index 68104c1..0000000
--- a/pythonsdk/include/errcode.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef Py_ERRCODE_H
-#define Py_ERRCODE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Error codes passed around between file input, tokenizer, parser and
-   interpreter.  This is necessary so we can turn them into Python
-   exceptions at a higher level.  Note that some errors have a
-   slightly different meaning when passed from the tokenizer to the
-   parser than when passed from the parser to the interpreter; e.g.
-   the parser only returns E_EOF when it hits EOF immediately, and it
-   never returns E_OK. */
-
-#define E_OK            10      /* No error */
-#define E_EOF           11      /* End Of File */
-#define E_INTR          12      /* Interrupted */
-#define E_TOKEN         13      /* Bad token */
-#define E_SYNTAX        14      /* Syntax error */
-#define E_NOMEM         15      /* Ran out of memory */
-#define E_DONE          16      /* Parsing complete */
-#define E_ERROR         17      /* Execution error */
-#define E_TABSPACE      18      /* Inconsistent mixing of tabs and spaces */
-#define E_OVERFLOW      19      /* Node had too many children */
-#define E_TOODEEP       20      /* Too many indentation levels */
-#define E_DEDENT        21      /* No matching outer block for dedent */
-#define E_DECODE        22      /* Error in decoding into Unicode */
-#define E_EOFS          23      /* EOF in triple-quoted string */
-#define E_EOLS          24      /* EOL in single-quoted string */
-#define E_LINECONT      25      /* Unexpected characters after a line continuation */
-#define E_IDENTIFIER    26      /* Invalid characters in identifier */
-#define E_BADSINGLE     27      /* Ill-formed single statement input */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_ERRCODE_H */
diff --git a/pythonsdk/include/eval.h b/pythonsdk/include/eval.h
deleted file mode 100644
index 06dd988..0000000
--- a/pythonsdk/include/eval.h
+++ /dev/null
@@ -1,37 +0,0 @@
-
-/* Interface to execute compiled code */
-
-#ifndef Py_EVAL_H
-#define Py_EVAL_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(PyObject *) PyEval_EvalCode(PyObject *, PyObject *, PyObject *);
-
-PyAPI_FUNC(PyObject *) PyEval_EvalCodeEx(PyObject *co,
-                                         PyObject *globals,
-                                         PyObject *locals,
-                                         PyObject *const *args, int argc,
-                                         PyObject *const *kwds, int kwdc,
-                                         PyObject *const *defs, int defc,
-                                         PyObject *kwdefs, PyObject *closure);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyEval_EvalCodeWithName(
-    PyObject *co,
-    PyObject *globals, PyObject *locals,
-    PyObject *const *args, Py_ssize_t argcount,
-    PyObject *const *kwnames, PyObject *const *kwargs,
-    Py_ssize_t kwcount, int kwstep,
-    PyObject *const *defs, Py_ssize_t defcount,
-    PyObject *kwdefs, PyObject *closure,
-    PyObject *name, PyObject *qualname);
-
-PyAPI_FUNC(PyObject *) _PyEval_CallTracing(PyObject *func, PyObject *args);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_EVAL_H */
diff --git a/pythonsdk/include/fileobject.h b/pythonsdk/include/fileobject.h
deleted file mode 100644
index 520d3bc..0000000
--- a/pythonsdk/include/fileobject.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* File object interface (what's left of it -- see io.py) */
-
-#ifndef Py_FILEOBJECT_H
-#define Py_FILEOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define PY_STDIOTEXTMODE "b"
-
-PyAPI_FUNC(PyObject *) PyFile_FromFd(int, const char *, const char *, int,
-                                     const char *, const char *,
-                                     const char *, int);
-PyAPI_FUNC(PyObject *) PyFile_GetLine(PyObject *, int);
-PyAPI_FUNC(int) PyFile_WriteObject(PyObject *, PyObject *, int);
-PyAPI_FUNC(int) PyFile_WriteString(const char *, PyObject *);
-PyAPI_FUNC(int) PyObject_AsFileDescriptor(PyObject *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(char *) Py_UniversalNewlineFgets(char *, int, FILE*, PyObject *);
-#endif
-
-/* The default encoding used by the platform file system APIs
-   If non-NULL, this is different than the default encoding for strings
-*/
-PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding;
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000
-PyAPI_DATA(const char *) Py_FileSystemDefaultEncodeErrors;
-#endif
-PyAPI_DATA(int) Py_HasFileSystemDefaultEncoding;
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03070000
-PyAPI_DATA(int) Py_UTF8Mode;
-#endif
-
-/* Internal API
-
-   The std printer acts as a preliminary sys.stderr until the new io
-   infrastructure is in place. */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) PyFile_NewStdPrinter(int);
-PyAPI_DATA(PyTypeObject) PyStdPrinter_Type;
-#endif /* Py_LIMITED_API */
-
-/* A routine to check if a file descriptor can be select()-ed. */
-#ifdef _MSC_VER
-    /* On Windows, any socket fd can be select()-ed, no matter how high */
-    #define _PyIsSelectable_fd(FD) (1)
-#else
-    #define _PyIsSelectable_fd(FD) ((unsigned int)(FD) < (unsigned int)FD_SETSIZE)
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_FILEOBJECT_H */
diff --git a/pythonsdk/include/fileutils.h b/pythonsdk/include/fileutils.h
deleted file mode 100644
index 415b5b3..0000000
--- a/pythonsdk/include/fileutils.h
+++ /dev/null
@@ -1,201 +0,0 @@
-#ifndef Py_FILEUTILS_H
-#define Py_FILEUTILS_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-PyAPI_FUNC(wchar_t *) Py_DecodeLocale(
-    const char *arg,
-    size_t *size);
-
-PyAPI_FUNC(char*) Py_EncodeLocale(
-    const wchar_t *text,
-    size_t *error_pos);
-
-PyAPI_FUNC(char*) _Py_EncodeLocaleRaw(
-    const wchar_t *text,
-    size_t *error_pos);
-#endif
-
-#ifdef Py_BUILD_CORE
-PyAPI_FUNC(int) _Py_DecodeUTF8Ex(
-    const char *arg,
-    Py_ssize_t arglen,
-    wchar_t **wstr,
-    size_t *wlen,
-    const char **reason,
-    int surrogateescape);
-
-PyAPI_FUNC(int) _Py_EncodeUTF8Ex(
-    const wchar_t *text,
-    char **str,
-    size_t *error_pos,
-    const char **reason,
-    int raw_malloc,
-    int surrogateescape);
-
-PyAPI_FUNC(wchar_t*) _Py_DecodeUTF8_surrogateescape(
-    const char *arg,
-    Py_ssize_t arglen);
-
-PyAPI_FUNC(int) _Py_DecodeLocaleEx(
-    const char *arg,
-    wchar_t **wstr,
-    size_t *wlen,
-    const char **reason,
-    int current_locale,
-    int surrogateescape);
-
-PyAPI_FUNC(int) _Py_EncodeLocaleEx(
-    const wchar_t *text,
-    char **str,
-    size_t *error_pos,
-    const char **reason,
-    int current_locale,
-    int surrogateescape);
-#endif
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _Py_device_encoding(int);
-
-#if defined(MS_WINDOWS) || defined(__APPLE__)
-    /* On Windows, the count parameter of read() is an int (bpo-9015, bpo-9611).
-       On macOS 10.13, read() and write() with more than INT_MAX bytes
-       fail with EINVAL (bpo-24658). */
-#   define _PY_READ_MAX  INT_MAX
-#   define _PY_WRITE_MAX INT_MAX
-#else
-    /* write() should truncate the input to PY_SSIZE_T_MAX bytes,
-       but it's safer to do it ourself to have a portable behaviour */
-#   define _PY_READ_MAX  PY_SSIZE_T_MAX
-#   define _PY_WRITE_MAX PY_SSIZE_T_MAX
-#endif
-
-#ifdef MS_WINDOWS
-struct _Py_stat_struct {
-    unsigned long st_dev;
-    uint64_t st_ino;
-    unsigned short st_mode;
-    int st_nlink;
-    int st_uid;
-    int st_gid;
-    unsigned long st_rdev;
-    __int64 st_size;
-    time_t st_atime;
-    int st_atime_nsec;
-    time_t st_mtime;
-    int st_mtime_nsec;
-    time_t st_ctime;
-    int st_ctime_nsec;
-    unsigned long st_file_attributes;
-};
-#else
-#  define _Py_stat_struct stat
-#endif
-
-PyAPI_FUNC(int) _Py_fstat(
-    int fd,
-    struct _Py_stat_struct *status);
-
-PyAPI_FUNC(int) _Py_fstat_noraise(
-    int fd,
-    struct _Py_stat_struct *status);
-
-PyAPI_FUNC(int) _Py_stat(
-    PyObject *path,
-    struct stat *status);
-
-PyAPI_FUNC(int) _Py_open(
-    const char *pathname,
-    int flags);
-
-PyAPI_FUNC(int) _Py_open_noraise(
-    const char *pathname,
-    int flags);
-
-PyAPI_FUNC(FILE *) _Py_wfopen(
-    const wchar_t *path,
-    const wchar_t *mode);
-
-PyAPI_FUNC(FILE*) _Py_fopen(
-    const char *pathname,
-    const char *mode);
-
-PyAPI_FUNC(FILE*) _Py_fopen_obj(
-    PyObject *path,
-    const char *mode);
-
-PyAPI_FUNC(Py_ssize_t) _Py_read(
-    int fd,
-    void *buf,
-    size_t count);
-
-PyAPI_FUNC(Py_ssize_t) _Py_write(
-    int fd,
-    const void *buf,
-    size_t count);
-
-PyAPI_FUNC(Py_ssize_t) _Py_write_noraise(
-    int fd,
-    const void *buf,
-    size_t count);
-
-#ifdef HAVE_READLINK
-PyAPI_FUNC(int) _Py_wreadlink(
-    const wchar_t *path,
-    wchar_t *buf,
-    size_t bufsiz);
-#endif
-
-#ifdef HAVE_REALPATH
-PyAPI_FUNC(wchar_t*) _Py_wrealpath(
-    const wchar_t *path,
-    wchar_t *resolved_path,
-    size_t resolved_path_size);
-#endif
-
-PyAPI_FUNC(wchar_t*) _Py_wgetcwd(
-    wchar_t *buf,
-    size_t size);
-
-PyAPI_FUNC(int) _Py_get_inheritable(int fd);
-
-PyAPI_FUNC(int) _Py_set_inheritable(int fd, int inheritable,
-                                    int *atomic_flag_works);
-
-PyAPI_FUNC(int) _Py_set_inheritable_async_safe(int fd, int inheritable,
-                                               int *atomic_flag_works);
-
-PyAPI_FUNC(int) _Py_dup(int fd);
-
-#ifndef MS_WINDOWS
-PyAPI_FUNC(int) _Py_get_blocking(int fd);
-
-PyAPI_FUNC(int) _Py_set_blocking(int fd, int blocking);
-#endif   /* !MS_WINDOWS */
-
-PyAPI_FUNC(int) _Py_GetLocaleconvNumeric(
-    PyObject **decimal_point,
-    PyObject **thousands_sep,
-    const char **grouping);
-
-#endif   /* Py_LIMITED_API */
-
-#ifdef Py_BUILD_CORE
-PyAPI_FUNC(int) _Py_GetForceASCII(void);
-
-/* Reset "force ASCII" mode (if it was initialized).
-
-   This function should be called when Python changes the LC_CTYPE locale,
-   so the "force ASCII" mode can be detected again on the new locale
-   encoding. */
-PyAPI_FUNC(void) _Py_ResetForceASCII(void);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_FILEUTILS_H */
diff --git a/pythonsdk/include/floatobject.h b/pythonsdk/include/floatobject.h
deleted file mode 100644
index cc906f1..0000000
--- a/pythonsdk/include/floatobject.h
+++ /dev/null
@@ -1,130 +0,0 @@
-
-/* Float object interface */
-
-/*
-PyFloatObject represents a (double precision) floating point number.
-*/
-
-#ifndef Py_FLOATOBJECT_H
-#define Py_FLOATOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef Py_LIMITED_API
-typedef struct {
-    PyObject_HEAD
-    double ob_fval;
-} PyFloatObject;
-#endif
-
-PyAPI_DATA(PyTypeObject) PyFloat_Type;
-
-#define PyFloat_Check(op) PyObject_TypeCheck(op, &PyFloat_Type)
-#define PyFloat_CheckExact(op) (Py_TYPE(op) == &PyFloat_Type)
-
-#ifdef Py_NAN
-#define Py_RETURN_NAN return PyFloat_FromDouble(Py_NAN)
-#endif
-
-#define Py_RETURN_INF(sign) do                     \
-    if (copysign(1., sign) == 1.) {                \
-        return PyFloat_FromDouble(Py_HUGE_VAL);    \
-    } else {                        \
-        return PyFloat_FromDouble(-Py_HUGE_VAL);   \
-    } while(0)
-
-PyAPI_FUNC(double) PyFloat_GetMax(void);
-PyAPI_FUNC(double) PyFloat_GetMin(void);
-PyAPI_FUNC(PyObject *) PyFloat_GetInfo(void);
-
-/* Return Python float from string PyObject. */
-PyAPI_FUNC(PyObject *) PyFloat_FromString(PyObject*);
-
-/* Return Python float from C double. */
-PyAPI_FUNC(PyObject *) PyFloat_FromDouble(double);
-
-/* Extract C double from Python float.  The macro version trades safety for
-   speed. */
-PyAPI_FUNC(double) PyFloat_AsDouble(PyObject *);
-#ifndef Py_LIMITED_API
-#define PyFloat_AS_DOUBLE(op) (((PyFloatObject *)(op))->ob_fval)
-#endif
-
-#ifndef Py_LIMITED_API
-/* _PyFloat_{Pack,Unpack}{4,8}
- *
- * The struct and pickle (at least) modules need an efficient platform-
- * independent way to store floating-point values as byte strings.
- * The Pack routines produce a string from a C double, and the Unpack
- * routines produce a C double from such a string.  The suffix (4 or 8)
- * specifies the number of bytes in the string.
- *
- * On platforms that appear to use (see _PyFloat_Init()) IEEE-754 formats
- * these functions work by copying bits.  On other platforms, the formats the
- * 4- byte format is identical to the IEEE-754 single precision format, and
- * the 8-byte format to the IEEE-754 double precision format, although the
- * packing of INFs and NaNs (if such things exist on the platform) isn't
- * handled correctly, and attempting to unpack a string containing an IEEE
- * INF or NaN will raise an exception.
- *
- * On non-IEEE platforms with more precision, or larger dynamic range, than
- * 754 supports, not all values can be packed; on non-IEEE platforms with less
- * precision, or smaller dynamic range, not all values can be unpacked.  What
- * happens in such cases is partly accidental (alas).
- */
-
-/* The pack routines write 2, 4 or 8 bytes, starting at p.  le is a bool
- * argument, true if you want the string in little-endian format (exponent
- * last, at p+1, p+3 or p+7), false if you want big-endian format (exponent
- * first, at p).
- * Return value:  0 if all is OK, -1 if error (and an exception is
- * set, most likely OverflowError).
- * There are two problems on non-IEEE platforms:
- * 1):  What this does is undefined if x is a NaN or infinity.
- * 2):  -0.0 and +0.0 produce the same string.
- */
-PyAPI_FUNC(int) _PyFloat_Pack2(double x, unsigned char *p, int le);
-PyAPI_FUNC(int) _PyFloat_Pack4(double x, unsigned char *p, int le);
-PyAPI_FUNC(int) _PyFloat_Pack8(double x, unsigned char *p, int le);
-
-/* Needed for the old way for marshal to store a floating point number.
-   Returns the string length copied into p, -1 on error.
- */
-PyAPI_FUNC(int) _PyFloat_Repr(double x, char *p, size_t len);
-
-/* Used to get the important decimal digits of a double */
-PyAPI_FUNC(int) _PyFloat_Digits(char *buf, double v, int *signum);
-PyAPI_FUNC(void) _PyFloat_DigitsInit(void);
-
-/* The unpack routines read 2, 4 or 8 bytes, starting at p.  le is a bool
- * argument, true if the string is in little-endian format (exponent
- * last, at p+1, p+3 or p+7), false if big-endian (exponent first, at p).
- * Return value:  The unpacked double.  On error, this is -1.0 and
- * PyErr_Occurred() is true (and an exception is set, most likely
- * OverflowError).  Note that on a non-IEEE platform this will refuse
- * to unpack a string that represents a NaN or infinity.
- */
-PyAPI_FUNC(double) _PyFloat_Unpack2(const unsigned char *p, int le);
-PyAPI_FUNC(double) _PyFloat_Unpack4(const unsigned char *p, int le);
-PyAPI_FUNC(double) _PyFloat_Unpack8(const unsigned char *p, int le);
-
-/* free list api */
-PyAPI_FUNC(int) PyFloat_ClearFreeList(void);
-
-PyAPI_FUNC(void) _PyFloat_DebugMallocStats(FILE* out);
-
-/* Format the object based on the format_spec, as defined in PEP 3101
-   (Advanced String Formatting). */
-PyAPI_FUNC(int) _PyFloat_FormatAdvancedWriter(
-    _PyUnicodeWriter *writer,
-    PyObject *obj,
-    PyObject *format_spec,
-    Py_ssize_t start,
-    Py_ssize_t end);
-#endif /* Py_LIMITED_API */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_FLOATOBJECT_H */
diff --git a/pythonsdk/include/frameobject.h b/pythonsdk/include/frameobject.h
deleted file mode 100644
index 60f0ae1..0000000
--- a/pythonsdk/include/frameobject.h
+++ /dev/null
@@ -1,93 +0,0 @@
-
-/* Frame object interface */
-
-#ifndef Py_LIMITED_API
-#ifndef Py_FRAMEOBJECT_H
-#define Py_FRAMEOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-    int b_type;                 /* what kind of block this is */
-    int b_handler;              /* where to jump to find handler */
-    int b_level;                /* value stack level to pop to */
-} PyTryBlock;
-
-typedef struct _frame {
-    PyObject_VAR_HEAD
-    struct _frame *f_back;      /* previous frame, or NULL */
-    PyCodeObject *f_code;       /* code segment */
-    PyObject *f_builtins;       /* builtin symbol table (PyDictObject) */
-    PyObject *f_globals;        /* global symbol table (PyDictObject) */
-    PyObject *f_locals;         /* local symbol table (any mapping) */
-    PyObject **f_valuestack;    /* points after the last local */
-    /* Next free slot in f_valuestack.  Frame creation sets to f_valuestack.
-       Frame evaluation usually NULLs it, but a frame that yields sets it
-       to the current stack top. */
-    PyObject **f_stacktop;
-    PyObject *f_trace;          /* Trace function */
-    char f_trace_lines;         /* Emit per-line trace events? */
-    char f_trace_opcodes;       /* Emit per-opcode trace events? */
-
-    /* Borrowed reference to a generator, or NULL */
-    PyObject *f_gen;
-
-    int f_lasti;                /* Last instruction if called */
-    /* Call PyFrame_GetLineNumber() instead of reading this field
-       directly.  As of 2.3 f_lineno is only valid when tracing is
-       active (i.e. when f_trace is set).  At other times we use
-       PyCode_Addr2Line to calculate the line from the current
-       bytecode index. */
-    int f_lineno;               /* Current line number */
-    int f_iblock;               /* index in f_blockstack */
-    char f_executing;           /* whether the frame is still executing */
-    PyTryBlock f_blockstack[CO_MAXBLOCKS]; /* for try and loop blocks */
-    PyObject *f_localsplus[1];  /* locals+stack, dynamically sized */
-} PyFrameObject;
-
-
-/* Standard object interface */
-
-PyAPI_DATA(PyTypeObject) PyFrame_Type;
-
-#define PyFrame_Check(op) (Py_TYPE(op) == &PyFrame_Type)
-
-PyAPI_FUNC(PyFrameObject *) PyFrame_New(PyThreadState *, PyCodeObject *,
-                                        PyObject *, PyObject *);
-
-/* only internal use */
-PyFrameObject* _PyFrame_New_NoTrack(PyThreadState *, PyCodeObject *,
-                                    PyObject *, PyObject *);
-
-
-/* The rest of the interface is specific for frame objects */
-
-/* Block management functions */
-
-PyAPI_FUNC(void) PyFrame_BlockSetup(PyFrameObject *, int, int, int);
-PyAPI_FUNC(PyTryBlock *) PyFrame_BlockPop(PyFrameObject *);
-
-/* Extend the value stack */
-
-PyAPI_FUNC(PyObject **) PyFrame_ExtendStack(PyFrameObject *, int, int);
-
-/* Conversions between "fast locals" and locals in dictionary */
-
-PyAPI_FUNC(void) PyFrame_LocalsToFast(PyFrameObject *, int);
-
-PyAPI_FUNC(int) PyFrame_FastToLocalsWithError(PyFrameObject *f);
-PyAPI_FUNC(void) PyFrame_FastToLocals(PyFrameObject *);
-
-PyAPI_FUNC(int) PyFrame_ClearFreeList(void);
-
-PyAPI_FUNC(void) _PyFrame_DebugMallocStats(FILE *out);
-
-/* Return the line of code the frame is currently executing. */
-PyAPI_FUNC(int) PyFrame_GetLineNumber(PyFrameObject *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_FRAMEOBJECT_H */
-#endif /* Py_LIMITED_API */
diff --git a/pythonsdk/include/funcobject.h b/pythonsdk/include/funcobject.h
deleted file mode 100644
index 05254a8..0000000
--- a/pythonsdk/include/funcobject.h
+++ /dev/null
@@ -1,103 +0,0 @@
-
-/* Function object interface */
-#ifndef Py_LIMITED_API
-#ifndef Py_FUNCOBJECT_H
-#define Py_FUNCOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Function objects and code objects should not be confused with each other:
- *
- * Function objects are created by the execution of the 'def' statement.
- * They reference a code object in their __code__ attribute, which is a
- * purely syntactic object, i.e. nothing more than a compiled version of some
- * source code lines.  There is one code object per source code "fragment",
- * but each code object can be referenced by zero or many function objects
- * depending only on how many times the 'def' statement in the source was
- * executed so far.
- */
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *func_code;        /* A code object, the __code__ attribute */
-    PyObject *func_globals;     /* A dictionary (other mappings won't do) */
-    PyObject *func_defaults;    /* NULL or a tuple */
-    PyObject *func_kwdefaults;  /* NULL or a dict */
-    PyObject *func_closure;     /* NULL or a tuple of cell objects */
-    PyObject *func_doc;         /* The __doc__ attribute, can be anything */
-    PyObject *func_name;        /* The __name__ attribute, a string object */
-    PyObject *func_dict;        /* The __dict__ attribute, a dict or NULL */
-    PyObject *func_weakreflist; /* List of weak references */
-    PyObject *func_module;      /* The __module__ attribute, can be anything */
-    PyObject *func_annotations; /* Annotations, a dict or NULL */
-    PyObject *func_qualname;    /* The qualified name */
-
-    /* Invariant:
-     *     func_closure contains the bindings for func_code->co_freevars, so
-     *     PyTuple_Size(func_closure) == PyCode_GetNumFree(func_code)
-     *     (func_closure may be NULL if PyCode_GetNumFree(func_code) == 0).
-     */
-} PyFunctionObject;
-
-PyAPI_DATA(PyTypeObject) PyFunction_Type;
-
-#define PyFunction_Check(op) (Py_TYPE(op) == &PyFunction_Type)
-
-PyAPI_FUNC(PyObject *) PyFunction_New(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyFunction_NewWithQualName(PyObject *, PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyFunction_GetCode(PyObject *);
-PyAPI_FUNC(PyObject *) PyFunction_GetGlobals(PyObject *);
-PyAPI_FUNC(PyObject *) PyFunction_GetModule(PyObject *);
-PyAPI_FUNC(PyObject *) PyFunction_GetDefaults(PyObject *);
-PyAPI_FUNC(int) PyFunction_SetDefaults(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyFunction_GetKwDefaults(PyObject *);
-PyAPI_FUNC(int) PyFunction_SetKwDefaults(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyFunction_GetClosure(PyObject *);
-PyAPI_FUNC(int) PyFunction_SetClosure(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyFunction_GetAnnotations(PyObject *);
-PyAPI_FUNC(int) PyFunction_SetAnnotations(PyObject *, PyObject *);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyFunction_FastCallDict(
-    PyObject *func,
-    PyObject *const *args,
-    Py_ssize_t nargs,
-    PyObject *kwargs);
-
-PyAPI_FUNC(PyObject *) _PyFunction_FastCallKeywords(
-    PyObject *func,
-    PyObject *const *stack,
-    Py_ssize_t nargs,
-    PyObject *kwnames);
-#endif
-
-/* Macros for direct access to these values. Type checks are *not*
-   done, so use with care. */
-#define PyFunction_GET_CODE(func) \
-        (((PyFunctionObject *)func) -> func_code)
-#define PyFunction_GET_GLOBALS(func) \
-        (((PyFunctionObject *)func) -> func_globals)
-#define PyFunction_GET_MODULE(func) \
-        (((PyFunctionObject *)func) -> func_module)
-#define PyFunction_GET_DEFAULTS(func) \
-        (((PyFunctionObject *)func) -> func_defaults)
-#define PyFunction_GET_KW_DEFAULTS(func) \
-        (((PyFunctionObject *)func) -> func_kwdefaults)
-#define PyFunction_GET_CLOSURE(func) \
-        (((PyFunctionObject *)func) -> func_closure)
-#define PyFunction_GET_ANNOTATIONS(func) \
-        (((PyFunctionObject *)func) -> func_annotations)
-
-/* The classmethod and staticmethod types lives here, too */
-PyAPI_DATA(PyTypeObject) PyClassMethod_Type;
-PyAPI_DATA(PyTypeObject) PyStaticMethod_Type;
-
-PyAPI_FUNC(PyObject *) PyClassMethod_New(PyObject *);
-PyAPI_FUNC(PyObject *) PyStaticMethod_New(PyObject *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_FUNCOBJECT_H */
-#endif /* Py_LIMITED_API */
diff --git a/pythonsdk/include/genobject.h b/pythonsdk/include/genobject.h
deleted file mode 100644
index 709ff2a..0000000
--- a/pythonsdk/include/genobject.h
+++ /dev/null
@@ -1,105 +0,0 @@
-
-/* Generator object interface */
-
-#ifndef Py_LIMITED_API
-#ifndef Py_GENOBJECT_H
-#define Py_GENOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct _frame; /* Avoid including frameobject.h */
-
-/* _PyGenObject_HEAD defines the initial segment of generator
-   and coroutine objects. */
-#define _PyGenObject_HEAD(prefix)                                           \
-    PyObject_HEAD                                                           \
-    /* Note: gi_frame can be NULL if the generator is "finished" */         \
-    struct _frame *prefix##_frame;                                          \
-    /* True if generator is being executed. */                              \
-    char prefix##_running;                                                  \
-    /* The code object backing the generator */                             \
-    PyObject *prefix##_code;                                                \
-    /* List of weak reference. */                                           \
-    PyObject *prefix##_weakreflist;                                         \
-    /* Name of the generator. */                                            \
-    PyObject *prefix##_name;                                                \
-    /* Qualified name of the generator. */                                  \
-    PyObject *prefix##_qualname;                                            \
-    _PyErr_StackItem prefix##_exc_state;
-
-typedef struct {
-    /* The gi_ prefix is intended to remind of generator-iterator. */
-    _PyGenObject_HEAD(gi)
-} PyGenObject;
-
-PyAPI_DATA(PyTypeObject) PyGen_Type;
-
-#define PyGen_Check(op) PyObject_TypeCheck(op, &PyGen_Type)
-#define PyGen_CheckExact(op) (Py_TYPE(op) == &PyGen_Type)
-
-PyAPI_FUNC(PyObject *) PyGen_New(struct _frame *);
-PyAPI_FUNC(PyObject *) PyGen_NewWithQualName(struct _frame *,
-    PyObject *name, PyObject *qualname);
-PyAPI_FUNC(int) PyGen_NeedsFinalizing(PyGenObject *);
-PyAPI_FUNC(int) _PyGen_SetStopIterationValue(PyObject *);
-PyAPI_FUNC(int) _PyGen_FetchStopIterationValue(PyObject **);
-PyAPI_FUNC(PyObject *) _PyGen_Send(PyGenObject *, PyObject *);
-PyObject *_PyGen_yf(PyGenObject *);
-PyAPI_FUNC(void) _PyGen_Finalize(PyObject *self);
-
-#ifndef Py_LIMITED_API
-typedef struct {
-    _PyGenObject_HEAD(cr)
-    PyObject *cr_origin;
-} PyCoroObject;
-
-PyAPI_DATA(PyTypeObject) PyCoro_Type;
-PyAPI_DATA(PyTypeObject) _PyCoroWrapper_Type;
-
-PyAPI_DATA(PyTypeObject) _PyAIterWrapper_Type;
-
-#define PyCoro_CheckExact(op) (Py_TYPE(op) == &PyCoro_Type)
-PyObject *_PyCoro_GetAwaitableIter(PyObject *o);
-PyAPI_FUNC(PyObject *) PyCoro_New(struct _frame *,
-    PyObject *name, PyObject *qualname);
-
-/* Asynchronous Generators */
-
-typedef struct {
-    _PyGenObject_HEAD(ag)
-    PyObject *ag_finalizer;
-
-    /* Flag is set to 1 when hooks set up by sys.set_asyncgen_hooks
-       were called on the generator, to avoid calling them more
-       than once. */
-    int ag_hooks_inited;
-
-    /* Flag is set to 1 when aclose() is called for the first time, or
-       when a StopAsyncIteration exception is raised. */
-    int ag_closed;
-} PyAsyncGenObject;
-
-PyAPI_DATA(PyTypeObject) PyAsyncGen_Type;
-PyAPI_DATA(PyTypeObject) _PyAsyncGenASend_Type;
-PyAPI_DATA(PyTypeObject) _PyAsyncGenWrappedValue_Type;
-PyAPI_DATA(PyTypeObject) _PyAsyncGenAThrow_Type;
-
-PyAPI_FUNC(PyObject *) PyAsyncGen_New(struct _frame *,
-    PyObject *name, PyObject *qualname);
-
-#define PyAsyncGen_CheckExact(op) (Py_TYPE(op) == &PyAsyncGen_Type)
-
-PyObject *_PyAsyncGenValueWrapperNew(PyObject *);
-
-int PyAsyncGen_ClearFreeLists(void);
-
-#endif
-
-#undef _PyGenObject_HEAD
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_GENOBJECT_H */
-#endif /* Py_LIMITED_API */
diff --git a/pythonsdk/include/graminit.h b/pythonsdk/include/graminit.h
deleted file mode 100644
index a8bc18a..0000000
--- a/pythonsdk/include/graminit.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Generated by Parser/pgen */
-
-#define single_input 256
-#define file_input 257
-#define eval_input 258
-#define decorator 259
-#define decorators 260
-#define decorated 261
-#define async_funcdef 262
-#define funcdef 263
-#define parameters 264
-#define typedargslist 265
-#define tfpdef 266
-#define varargslist 267
-#define vfpdef 268
-#define stmt 269
-#define simple_stmt 270
-#define small_stmt 271
-#define expr_stmt 272
-#define annassign 273
-#define testlist_star_expr 274
-#define augassign 275
-#define del_stmt 276
-#define pass_stmt 277
-#define flow_stmt 278
-#define break_stmt 279
-#define continue_stmt 280
-#define return_stmt 281
-#define yield_stmt 282
-#define raise_stmt 283
-#define import_stmt 284
-#define import_name 285
-#define import_from 286
-#define import_as_name 287
-#define dotted_as_name 288
-#define import_as_names 289
-#define dotted_as_names 290
-#define dotted_name 291
-#define global_stmt 292
-#define nonlocal_stmt 293
-#define assert_stmt 294
-#define compound_stmt 295
-#define async_stmt 296
-#define if_stmt 297
-#define while_stmt 298
-#define for_stmt 299
-#define try_stmt 300
-#define with_stmt 301
-#define with_item 302
-#define except_clause 303
-#define suite 304
-#define test 305
-#define test_nocond 306
-#define lambdef 307
-#define lambdef_nocond 308
-#define or_test 309
-#define and_test 310
-#define not_test 311
-#define comparison 312
-#define comp_op 313
-#define star_expr 314
-#define expr 315
-#define xor_expr 316
-#define and_expr 317
-#define shift_expr 318
-#define arith_expr 319
-#define term 320
-#define factor 321
-#define power 322
-#define atom_expr 323
-#define atom 324
-#define testlist_comp 325
-#define trailer 326
-#define subscriptlist 327
-#define subscript 328
-#define sliceop 329
-#define exprlist 330
-#define testlist 331
-#define dictorsetmaker 332
-#define classdef 333
-#define arglist 334
-#define argument 335
-#define comp_iter 336
-#define sync_comp_for 337
-#define comp_for 338
-#define comp_if 339
-#define encoding_decl 340
-#define yield_expr 341
-#define yield_arg 342
diff --git a/pythonsdk/include/grammar.h b/pythonsdk/include/grammar.h
deleted file mode 100644
index ec8781b..0000000
--- a/pythonsdk/include/grammar.h
+++ /dev/null
@@ -1,94 +0,0 @@
-
-/* Grammar interface */
-
-#ifndef Py_GRAMMAR_H
-#define Py_GRAMMAR_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "bitset.h" /* Sigh... */
-
-/* A label of an arc */
-
-typedef struct {
-    int          lb_type;
-    char        *lb_str;
-} label;
-
-#define EMPTY 0         /* Label number 0 is by definition the empty label */
-
-/* A list of labels */
-
-typedef struct {
-    int          ll_nlabels;
-    label       *ll_label;
-} labellist;
-
-/* An arc from one state to another */
-
-typedef struct {
-    short       a_lbl;          /* Label of this arc */
-    short       a_arrow;        /* State where this arc goes to */
-} arc;
-
-/* A state in a DFA */
-
-typedef struct {
-    int          s_narcs;
-    arc         *s_arc;         /* Array of arcs */
-
-    /* Optional accelerators */
-    int          s_lower;       /* Lowest label index */
-    int          s_upper;       /* Highest label index */
-    int         *s_accel;       /* Accelerator */
-    int          s_accept;      /* Nonzero for accepting state */
-} state;
-
-/* A DFA */
-
-typedef struct {
-    int          d_type;        /* Non-terminal this represents */
-    char        *d_name;        /* For printing */
-    int          d_initial;     /* Initial state */
-    int          d_nstates;
-    state       *d_state;       /* Array of states */
-    bitset       d_first;
-} dfa;
-
-/* A grammar */
-
-typedef struct {
-    int          g_ndfas;
-    dfa         *g_dfa;         /* Array of DFAs */
-    labellist    g_ll;
-    int          g_start;       /* Start symbol of the grammar */
-    int          g_accel;       /* Set if accelerators present */
-} grammar;
-
-/* FUNCTIONS */
-
-grammar *newgrammar(int start);
-void freegrammar(grammar *g);
-dfa *adddfa(grammar *g, int type, const char *name);
-int addstate(dfa *d);
-void addarc(dfa *d, int from, int to, int lbl);
-dfa *PyGrammar_FindDFA(grammar *g, int type);
-
-int addlabel(labellist *ll, int type, const char *str);
-int findlabel(labellist *ll, int type, const char *str);
-const char *PyGrammar_LabelRepr(label *lb);
-void translatelabels(grammar *g);
-
-void addfirstsets(grammar *g);
-
-void PyGrammar_AddAccelerators(grammar *g);
-void PyGrammar_RemoveAccelerators(grammar *);
-
-void printgrammar(grammar *g, FILE *fp);
-void printnonterminals(grammar *g, FILE *fp);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_GRAMMAR_H */
diff --git a/pythonsdk/include/import.h b/pythonsdk/include/import.h
deleted file mode 100644
index 1bb108a..0000000
--- a/pythonsdk/include/import.h
+++ /dev/null
@@ -1,151 +0,0 @@
-
-/* Module definition and import interface */
-
-#ifndef Py_IMPORT_H
-#define Py_IMPORT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(_PyInitError) _PyImportZip_Init(void);
-
-PyMODINIT_FUNC PyInit__imp(void);
-#endif /* !Py_LIMITED_API */
-PyAPI_FUNC(long) PyImport_GetMagicNumber(void);
-PyAPI_FUNC(const char *) PyImport_GetMagicTag(void);
-PyAPI_FUNC(PyObject *) PyImport_ExecCodeModule(
-    const char *name,           /* UTF-8 encoded string */
-    PyObject *co
-    );
-PyAPI_FUNC(PyObject *) PyImport_ExecCodeModuleEx(
-    const char *name,           /* UTF-8 encoded string */
-    PyObject *co,
-    const char *pathname        /* decoded from the filesystem encoding */
-    );
-PyAPI_FUNC(PyObject *) PyImport_ExecCodeModuleWithPathnames(
-    const char *name,           /* UTF-8 encoded string */
-    PyObject *co,
-    const char *pathname,       /* decoded from the filesystem encoding */
-    const char *cpathname       /* decoded from the filesystem encoding */
-    );
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(PyObject *) PyImport_ExecCodeModuleObject(
-    PyObject *name,
-    PyObject *co,
-    PyObject *pathname,
-    PyObject *cpathname
-    );
-#endif
-PyAPI_FUNC(PyObject *) PyImport_GetModuleDict(void);
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03070000
-PyAPI_FUNC(PyObject *) PyImport_GetModule(PyObject *name);
-#endif
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyImport_IsInitialized(PyInterpreterState *);
-PyAPI_FUNC(PyObject *) _PyImport_GetModuleId(struct _Py_Identifier *name);
-PyAPI_FUNC(PyObject *) _PyImport_AddModuleObject(PyObject *name,
-                                                 PyObject *modules);
-PyAPI_FUNC(int) _PyImport_SetModule(PyObject *name, PyObject *module);
-PyAPI_FUNC(int) _PyImport_SetModuleString(const char *name, PyObject* module);
-#endif
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(PyObject *) PyImport_AddModuleObject(
-    PyObject *name
-    );
-#endif
-PyAPI_FUNC(PyObject *) PyImport_AddModule(
-    const char *name            /* UTF-8 encoded string */
-    );
-PyAPI_FUNC(PyObject *) PyImport_ImportModule(
-    const char *name            /* UTF-8 encoded string */
-    );
-PyAPI_FUNC(PyObject *) PyImport_ImportModuleNoBlock(
-    const char *name            /* UTF-8 encoded string */
-    );
-PyAPI_FUNC(PyObject *) PyImport_ImportModuleLevel(
-    const char *name,           /* UTF-8 encoded string */
-    PyObject *globals,
-    PyObject *locals,
-    PyObject *fromlist,
-    int level
-    );
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-PyAPI_FUNC(PyObject *) PyImport_ImportModuleLevelObject(
-    PyObject *name,
-    PyObject *globals,
-    PyObject *locals,
-    PyObject *fromlist,
-    int level
-    );
-#endif
-
-#define PyImport_ImportModuleEx(n, g, l, f) \
-    PyImport_ImportModuleLevel(n, g, l, f, 0)
-
-PyAPI_FUNC(PyObject *) PyImport_GetImporter(PyObject *path);
-PyAPI_FUNC(PyObject *) PyImport_Import(PyObject *name);
-PyAPI_FUNC(PyObject *) PyImport_ReloadModule(PyObject *m);
-PyAPI_FUNC(void) PyImport_Cleanup(void);
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(int) PyImport_ImportFrozenModuleObject(
-    PyObject *name
-    );
-#endif
-PyAPI_FUNC(int) PyImport_ImportFrozenModule(
-    const char *name            /* UTF-8 encoded string */
-    );
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _PyImport_AcquireLock(void);
-PyAPI_FUNC(int) _PyImport_ReleaseLock(void);
-
-PyAPI_FUNC(void) _PyImport_ReInitLock(void);
-
-PyAPI_FUNC(PyObject *) _PyImport_FindBuiltin(
-    const char *name,            /* UTF-8 encoded string */
-    PyObject *modules
-    );
-PyAPI_FUNC(PyObject *) _PyImport_FindExtensionObject(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) _PyImport_FindExtensionObjectEx(PyObject *, PyObject *,
-                                                       PyObject *);
-PyAPI_FUNC(int) _PyImport_FixupBuiltin(
-    PyObject *mod,
-    const char *name,            /* UTF-8 encoded string */
-    PyObject *modules
-    );
-PyAPI_FUNC(int) _PyImport_FixupExtensionObject(PyObject*, PyObject *,
-                                               PyObject *, PyObject *);
-
-struct _inittab {
-    const char *name;           /* ASCII encoded string */
-    PyObject* (*initfunc)(void);
-};
-PyAPI_DATA(struct _inittab *) PyImport_Inittab;
-PyAPI_FUNC(int) PyImport_ExtendInittab(struct _inittab *newtab);
-#endif /* Py_LIMITED_API */
-
-PyAPI_DATA(PyTypeObject) PyNullImporter_Type;
-
-PyAPI_FUNC(int) PyImport_AppendInittab(
-    const char *name,           /* ASCII encoded string */
-    PyObject* (*initfunc)(void)
-    );
-
-#ifndef Py_LIMITED_API
-struct _frozen {
-    const char *name;                 /* ASCII encoded string */
-    const unsigned char *code;
-    int size;
-};
-
-/* Embedding apps may change this pointer to point to their favorite
-   collection of frozen modules: */
-
-PyAPI_DATA(const struct _frozen *) PyImport_FrozenModules;
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_IMPORT_H */
diff --git a/pythonsdk/include/internal/ceval.h b/pythonsdk/include/internal/ceval.h
deleted file mode 100644
index b47b998..0000000
--- a/pythonsdk/include/internal/ceval.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef Py_INTERNAL_CEVAL_H
-#define Py_INTERNAL_CEVAL_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "pyatomic.h"
-#include "pythread.h"
-
-struct _pending_calls {
-    unsigned long main_thread;
-    PyThread_type_lock lock;
-    /* Request for running pending calls. */
-    _Py_atomic_int calls_to_do;
-    /* Request for looking at the `async_exc` field of the current
-       thread state.
-       Guarded by the GIL. */
-    int async_exc;
-#define NPENDINGCALLS 32
-    struct {
-        int (*func)(void *);
-        void *arg;
-    } calls[NPENDINGCALLS];
-    int first;
-    int last;
-};
-
-#include "internal/gil.h"
-
-struct _ceval_runtime_state {
-    int recursion_limit;
-    /* Records whether tracing is on for any thread.  Counts the number
-       of threads for which tstate->c_tracefunc is non-NULL, so if the
-       value is 0, we know we don't have to check this thread's
-       c_tracefunc.  This speeds up the if statement in
-       PyEval_EvalFrameEx() after fast_next_opcode. */
-    int tracing_possible;
-    /* This single variable consolidates all requests to break out of
-       the fast path in the eval loop. */
-    _Py_atomic_int eval_breaker;
-    /* Request for dropping the GIL */
-    _Py_atomic_int gil_drop_request;
-    struct _pending_calls pending;
-    struct _gil_runtime_state gil;
-};
-
-PyAPI_FUNC(void) _PyEval_Initialize(struct _ceval_runtime_state *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_INTERNAL_CEVAL_H */
diff --git a/pythonsdk/include/internal/condvar.h b/pythonsdk/include/internal/condvar.h
deleted file mode 100644
index ba6daaa..0000000
--- a/pythonsdk/include/internal/condvar.h
+++ /dev/null
@@ -1,91 +0,0 @@
-#ifndef Py_INTERNAL_CONDVAR_H
-#define Py_INTERNAL_CONDVAR_H
-
-#ifndef _POSIX_THREADS
-/* This means pthreads are not implemented in libc headers, hence the macro
-   not present in unistd.h. But they still can be implemented as an external
-   library (e.g. gnu pth in pthread emulation) */
-# ifdef HAVE_PTHREAD_H
-#  include <pthread.h> /* _POSIX_THREADS */
-# endif
-#endif
-
-#ifdef _POSIX_THREADS
-/*
- * POSIX support
- */
-#define Py_HAVE_CONDVAR
-
-#include <pthread.h>
-
-#define PyMUTEX_T pthread_mutex_t
-#define PyCOND_T pthread_cond_t
-
-#elif defined(NT_THREADS)
-/*
- * Windows (XP, 2003 server and later, as well as (hopefully) CE) support
- *
- * Emulated condition variables ones that work with XP and later, plus
- * example native support on VISTA and onwards.
- */
-#define Py_HAVE_CONDVAR
-
-/* include windows if it hasn't been done before */
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
-/* options */
-/* non-emulated condition variables are provided for those that want
- * to target Windows Vista.  Modify this macro to enable them.
- */
-#ifndef _PY_EMULATED_WIN_CV
-#define _PY_EMULATED_WIN_CV 1  /* use emulated condition variables */
-#endif
-
-/* fall back to emulation if not targeting Vista */
-#if !defined NTDDI_VISTA || NTDDI_VERSION < NTDDI_VISTA
-#undef _PY_EMULATED_WIN_CV
-#define _PY_EMULATED_WIN_CV 1
-#endif
-
-#if _PY_EMULATED_WIN_CV
-
-typedef CRITICAL_SECTION PyMUTEX_T;
-
-/* The ConditionVariable object.  From XP onwards it is easily emulated
-   with a Semaphore.
-   Semaphores are available on Windows XP (2003 server) and later.
-   We use a Semaphore rather than an auto-reset event, because although
-   an auto-resent event might appear to solve the lost-wakeup bug (race
-   condition between releasing the outer lock and waiting) because it
-   maintains state even though a wait hasn't happened, there is still
-   a lost wakeup problem if more than one thread are interrupted in the
-   critical place.  A semaphore solves that, because its state is
-   counted, not Boolean.
-   Because it is ok to signal a condition variable with no one
-   waiting, we need to keep track of the number of
-   waiting threads.  Otherwise, the semaphore's state could rise
-   without bound.  This also helps reduce the number of "spurious wakeups"
-   that would otherwise happen.
- */
-
-typedef struct _PyCOND_T
-{
-    HANDLE sem;
-    int waiting; /* to allow PyCOND_SIGNAL to be a no-op */
-} PyCOND_T;
-
-#else /* !_PY_EMULATED_WIN_CV */
-
-/* Use native Win7 primitives if build target is Win7 or higher */
-
-/* SRWLOCK is faster and better than CriticalSection */
-typedef SRWLOCK PyMUTEX_T;
-
-typedef CONDITION_VARIABLE  PyCOND_T;
-
-#endif /* _PY_EMULATED_WIN_CV */
-
-#endif /* _POSIX_THREADS, NT_THREADS */
-
-#endif /* Py_INTERNAL_CONDVAR_H */
diff --git a/pythonsdk/include/internal/context.h b/pythonsdk/include/internal/context.h
deleted file mode 100644
index dd87f0b..0000000
--- a/pythonsdk/include/internal/context.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef Py_INTERNAL_CONTEXT_H
-#define Py_INTERNAL_CONTEXT_H
-
-
-#include "internal/hamt.h"
-
-
-struct _pycontextobject {
-    PyObject_HEAD
-    PyContext *ctx_prev;
-    PyHamtObject *ctx_vars;
-    PyObject *ctx_weakreflist;
-    int ctx_entered;
-};
-
-
-struct _pycontextvarobject {
-    PyObject_HEAD
-    PyObject *var_name;
-    PyObject *var_default;
-    PyObject *var_cached;
-    uint64_t var_cached_tsid;
-    uint64_t var_cached_tsver;
-    Py_hash_t var_hash;
-};
-
-
-struct _pycontexttokenobject {
-    PyObject_HEAD
-    PyContext *tok_ctx;
-    PyContextVar *tok_var;
-    PyObject *tok_oldval;
-    int tok_used;
-};
-
-
-int _PyContext_Init(void);
-void _PyContext_Fini(void);
-
-
-#endif /* !Py_INTERNAL_CONTEXT_H */
diff --git a/pythonsdk/include/internal/gil.h b/pythonsdk/include/internal/gil.h
deleted file mode 100644
index aacebfd..0000000
--- a/pythonsdk/include/internal/gil.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef Py_INTERNAL_GIL_H
-#define Py_INTERNAL_GIL_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "pyatomic.h"
-
-#include "internal/condvar.h"
-#ifndef Py_HAVE_CONDVAR
-#error You need either a POSIX-compatible or a Windows system!
-#endif
-
-/* Enable if you want to force the switching of threads at least
-   every `interval`. */
-#undef FORCE_SWITCHING
-#define FORCE_SWITCHING
-
-struct _gil_runtime_state {
-    /* microseconds (the Python API uses seconds, though) */
-    unsigned long interval;
-    /* Last PyThreadState holding / having held the GIL. This helps us
-       know whether anyone else was scheduled after we dropped the GIL. */
-    _Py_atomic_address last_holder;
-    /* Whether the GIL is already taken (-1 if uninitialized). This is
-       atomic because it can be read without any lock taken in ceval.c. */
-    _Py_atomic_int locked;
-    /* Number of GIL switches since the beginning. */
-    unsigned long switch_number;
-    /* This condition variable allows one or several threads to wait
-       until the GIL is released. In addition, the mutex also protects
-       the above variables. */
-    PyCOND_T cond;
-    PyMUTEX_T mutex;
-#ifdef FORCE_SWITCHING
-    /* This condition variable helps the GIL-releasing thread wait for
-       a GIL-awaiting thread to be scheduled and take the GIL. */
-    PyCOND_T switch_cond;
-    PyMUTEX_T switch_mutex;
-#endif
-};
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_INTERNAL_GIL_H */
diff --git a/pythonsdk/include/internal/hamt.h b/pythonsdk/include/internal/hamt.h
deleted file mode 100644
index 2606ddb..0000000
--- a/pythonsdk/include/internal/hamt.h
+++ /dev/null
@@ -1,113 +0,0 @@
-#ifndef Py_INTERNAL_HAMT_H
-#define Py_INTERNAL_HAMT_H
-
-
-#define _Py_HAMT_MAX_TREE_DEPTH 7
-
-
-#define PyHamt_Check(o) (Py_TYPE(o) == &_PyHamt_Type)
-
-
-/* Abstract tree node. */
-typedef struct {
-    PyObject_HEAD
-} PyHamtNode;
-
-
-/* An HAMT immutable mapping collection. */
-typedef struct {
-    PyObject_HEAD
-    PyHamtNode *h_root;
-    PyObject *h_weakreflist;
-    Py_ssize_t h_count;
-} PyHamtObject;
-
-
-/* A struct to hold the state of depth-first traverse of the tree.
-
-   HAMT is an immutable collection.  Iterators will hold a strong reference
-   to it, and every node in the HAMT has strong references to its children.
-
-   So for iterators, we can implement zero allocations and zero reference
-   inc/dec depth-first iteration.
-
-   - i_nodes: an array of seven pointers to tree nodes
-   - i_level: the current node in i_nodes
-   - i_pos: an array of positions within nodes in i_nodes.
-*/
-typedef struct {
-    PyHamtNode *i_nodes[_Py_HAMT_MAX_TREE_DEPTH];
-    Py_ssize_t i_pos[_Py_HAMT_MAX_TREE_DEPTH];
-    int8_t i_level;
-} PyHamtIteratorState;
-
-
-/* Base iterator object.
-
-   Contains the iteration state, a pointer to the HAMT tree,
-   and a pointer to the 'yield function'.  The latter is a simple
-   function that returns a key/value tuple for the 'Items' iterator,
-   just a key for the 'Keys' iterator, and a value for the 'Values'
-   iterator.
-*/
-typedef struct {
-    PyObject_HEAD
-    PyHamtObject *hi_obj;
-    PyHamtIteratorState hi_iter;
-    binaryfunc hi_yield;
-} PyHamtIterator;
-
-
-PyAPI_DATA(PyTypeObject) _PyHamt_Type;
-PyAPI_DATA(PyTypeObject) _PyHamt_ArrayNode_Type;
-PyAPI_DATA(PyTypeObject) _PyHamt_BitmapNode_Type;
-PyAPI_DATA(PyTypeObject) _PyHamt_CollisionNode_Type;
-PyAPI_DATA(PyTypeObject) _PyHamtKeys_Type;
-PyAPI_DATA(PyTypeObject) _PyHamtValues_Type;
-PyAPI_DATA(PyTypeObject) _PyHamtItems_Type;
-
-
-/* Create a new HAMT immutable mapping. */
-PyHamtObject * _PyHamt_New(void);
-
-/* Return a new collection based on "o", but with an additional
-   key/val pair. */
-PyHamtObject * _PyHamt_Assoc(PyHamtObject *o, PyObject *key, PyObject *val);
-
-/* Return a new collection based on "o", but without "key". */
-PyHamtObject * _PyHamt_Without(PyHamtObject *o, PyObject *key);
-
-/* Find "key" in the "o" collection.
-
-   Return:
-   - -1: An error occurred.
-   - 0: "key" wasn't found in "o".
-   - 1: "key" is in "o"; "*val" is set to its value (a borrowed ref).
-*/
-int _PyHamt_Find(PyHamtObject *o, PyObject *key, PyObject **val);
-
-/* Check if "v" is equal to "w".
-
-   Return:
-   - 0: v != w
-   - 1: v == w
-   - -1: An error occurred.
-*/
-int _PyHamt_Eq(PyHamtObject *v, PyHamtObject *w);
-
-/* Return the size of "o"; equivalent of "len(o)". */
-Py_ssize_t _PyHamt_Len(PyHamtObject *o);
-
-/* Return a Keys iterator over "o". */
-PyObject * _PyHamt_NewIterKeys(PyHamtObject *o);
-
-/* Return a Values iterator over "o". */
-PyObject * _PyHamt_NewIterValues(PyHamtObject *o);
-
-/* Return a Items iterator over "o". */
-PyObject * _PyHamt_NewIterItems(PyHamtObject *o);
-
-int _PyHamt_Init(void);
-void _PyHamt_Fini(void);
-
-#endif /* !Py_INTERNAL_HAMT_H */
diff --git a/pythonsdk/include/internal/hash.h b/pythonsdk/include/internal/hash.h
deleted file mode 100644
index cfea96f..0000000
--- a/pythonsdk/include/internal/hash.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef Py_INTERNAL_HASH_H
-#define Py_INTERNAL_HASH_H
-
-uint64_t _Py_KeyedHash(uint64_t, const char *, Py_ssize_t);
-
-#endif
diff --git a/pythonsdk/include/internal/import.h b/pythonsdk/include/internal/import.h
deleted file mode 100644
index 9aba6fe..0000000
--- a/pythonsdk/include/internal/import.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef Py_INTERNAL_IMPORT_H
-#define Py_INTERNAL_IMPORT_H
-
-extern const char *_Py_CheckHashBasedPycsMode;
-
-#endif
diff --git a/pythonsdk/include/internal/mem.h b/pythonsdk/include/internal/mem.h
deleted file mode 100644
index 7b0b489..0000000
--- a/pythonsdk/include/internal/mem.h
+++ /dev/null
@@ -1,175 +0,0 @@
-#ifndef Py_INTERNAL_MEM_H
-#define Py_INTERNAL_MEM_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "objimpl.h"
-#include "pymem.h"
-
-
-/* GC runtime state */
-
-/* If we change this, we need to change the default value in the
-   signature of gc.collect. */
-#define NUM_GENERATIONS 3
-
-/*
-   NOTE: about the counting of long-lived objects.
-
-   To limit the cost of garbage collection, there are two strategies;
-     - make each collection faster, e.g. by scanning fewer objects
-     - do less collections
-   This heuristic is about the latter strategy.
-
-   In addition to the various configurable thresholds, we only trigger a
-   full collection if the ratio
-    long_lived_pending / long_lived_total
-   is above a given value (hardwired to 25%).
-
-   The reason is that, while "non-full" collections (i.e., collections of
-   the young and middle generations) will always examine roughly the same
-   number of objects -- determined by the aforementioned thresholds --,
-   the cost of a full collection is proportional to the total number of
-   long-lived objects, which is virtually unbounded.
-
-   Indeed, it has been remarked that doing a full collection every
-   <constant number> of object creations entails a dramatic performance
-   degradation in workloads which consist in creating and storing lots of
-   long-lived objects (e.g. building a large list of GC-tracked objects would
-   show quadratic performance, instead of linear as expected: see issue #4074).
-
-   Using the above ratio, instead, yields amortized linear performance in
-   the total number of objects (the effect of which can be summarized
-   thusly: "each full garbage collection is more and more costly as the
-   number of objects grows, but we do fewer and fewer of them").
-
-   This heuristic was suggested by Martin von Löwis on python-dev in
-   June 2008. His original analysis and proposal can be found at:
-    http://mail.python.org/pipermail/python-dev/2008-June/080579.html
-*/
-
-/*
-   NOTE: about untracking of mutable objects.
-
-   Certain types of container cannot participate in a reference cycle, and
-   so do not need to be tracked by the garbage collector. Untracking these
-   objects reduces the cost of garbage collections. However, determining
-   which objects may be untracked is not free, and the costs must be
-   weighed against the benefits for garbage collection.
-
-   There are two possible strategies for when to untrack a container:
-
-   i) When the container is created.
-   ii) When the container is examined by the garbage collector.
-
-   Tuples containing only immutable objects (integers, strings etc, and
-   recursively, tuples of immutable objects) do not need to be tracked.
-   The interpreter creates a large number of tuples, many of which will
-   not survive until garbage collection. It is therefore not worthwhile
-   to untrack eligible tuples at creation time.
-
-   Instead, all tuples except the empty tuple are tracked when created.
-   During garbage collection it is determined whether any surviving tuples
-   can be untracked. A tuple can be untracked if all of its contents are
-   already not tracked. Tuples are examined for untracking in all garbage
-   collection cycles. It may take more than one cycle to untrack a tuple.
-
-   Dictionaries containing only immutable objects also do not need to be
-   tracked. Dictionaries are untracked when created. If a tracked item is
-   inserted into a dictionary (either as a key or value), the dictionary
-   becomes tracked. During a full garbage collection (all generations),
-   the collector will untrack any dictionaries whose contents are not
-   tracked.
-
-   The module provides the python function is_tracked(obj), which returns
-   the CURRENT tracking status of the object. Subsequent garbage
-   collections may change the tracking status of the object.
-
-   Untracking of certain containers was introduced in issue #4688, and
-   the algorithm was refined in response to issue #14775.
-*/
-
-struct gc_generation {
-    PyGC_Head head;
-    int threshold; /* collection threshold */
-    int count; /* count of allocations or collections of younger
-                  generations */
-};
-
-/* Running stats per generation */
-struct gc_generation_stats {
-    /* total number of collections */
-    Py_ssize_t collections;
-    /* total number of collected objects */
-    Py_ssize_t collected;
-    /* total number of uncollectable objects (put into gc.garbage) */
-    Py_ssize_t uncollectable;
-};
-
-struct _gc_runtime_state {
-    /* List of objects that still need to be cleaned up, singly linked
-     * via their gc headers' gc_prev pointers.  */
-    PyObject *trash_delete_later;
-    /* Current call-stack depth of tp_dealloc calls. */
-    int trash_delete_nesting;
-
-    int enabled;
-    int debug;
-    /* linked lists of container objects */
-    struct gc_generation generations[NUM_GENERATIONS];
-    PyGC_Head *generation0;
-    /* a permanent generation which won't be collected */
-    struct gc_generation permanent_generation;
-    struct gc_generation_stats generation_stats[NUM_GENERATIONS];
-    /* true if we are currently running the collector */
-    int collecting;
-    /* list of uncollectable objects */
-    PyObject *garbage;
-    /* a list of callbacks to be invoked when collection is performed */
-    PyObject *callbacks;
-    /* This is the number of objects that survived the last full
-       collection. It approximates the number of long lived objects
-       tracked by the GC.
-
-       (by "full collection", we mean a collection of the oldest
-       generation). */
-    Py_ssize_t long_lived_total;
-    /* This is the number of objects that survived all "non-full"
-       collections, and are awaiting to undergo a full collection for
-       the first time. */
-    Py_ssize_t long_lived_pending;
-};
-
-PyAPI_FUNC(void) _PyGC_Initialize(struct _gc_runtime_state *);
-
-#define _PyGC_generation0 _PyRuntime.gc.generation0
-
-/* Heuristic checking if a pointer value is newly allocated
-   (uninitialized) or newly freed. The pointer is not dereferenced, only the
-   pointer value is checked.
-
-   The heuristic relies on the debug hooks on Python memory allocators which
-   fills newly allocated memory with CLEANBYTE (0xCD) and newly freed memory
-   with DEADBYTE (0xDD). Detect also "untouchable bytes" marked
-   with FORBIDDENBYTE (0xFD). */
-static inline int _PyMem_IsPtrFreed(void *ptr)
-{
-    uintptr_t value = (uintptr_t)ptr;
-#if SIZEOF_VOID_P == 8
-    return (value == (uintptr_t)0xCDCDCDCDCDCDCDCD
-            || value == (uintptr_t)0xDDDDDDDDDDDDDDDD
-            || value == (uintptr_t)0xFDFDFDFDFDFDFDFD);
-#elif SIZEOF_VOID_P == 4
-    return (value == (uintptr_t)0xCDCDCDCD
-            || value == (uintptr_t)0xDDDDDDDD
-            || value == (uintptr_t)0xFDFDFDFD);
-#else
-#  error "unknown pointer size"
-#endif
-}
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_INTERNAL_MEM_H */
diff --git a/pythonsdk/include/internal/pygetopt.h b/pythonsdk/include/internal/pygetopt.h
deleted file mode 100644
index d222831..0000000
--- a/pythonsdk/include/internal/pygetopt.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef Py_INTERNAL_PYGETOPT_H
-#define Py_INTERNAL_PYGETOPT_H
-
-extern int _PyOS_opterr;
-extern int _PyOS_optind;
-extern wchar_t *_PyOS_optarg;
-
-extern void _PyOS_ResetGetOpt(void);
-
-typedef struct {
-    const wchar_t *name;
-    int has_arg;
-    int val;
-} _PyOS_LongOption;
-
-extern int _PyOS_GetOpt(int argc, wchar_t **argv, wchar_t *optstring,
-                        const _PyOS_LongOption *longopts, int *longindex);
-
-#endif /* !Py_INTERNAL_PYGETOPT_H */
diff --git a/pythonsdk/include/internal/pystate.h b/pythonsdk/include/internal/pystate.h
deleted file mode 100644
index 91b6aaa..0000000
--- a/pythonsdk/include/internal/pystate.h
+++ /dev/null
@@ -1,135 +0,0 @@
-#ifndef Py_INTERNAL_PYSTATE_H
-#define Py_INTERNAL_PYSTATE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "pystate.h"
-#include "pyatomic.h"
-#include "pythread.h"
-
-#include "internal/mem.h"
-#include "internal/ceval.h"
-#include "internal/warnings.h"
-
-
-/* GIL state */
-
-struct _gilstate_runtime_state {
-    int check_enabled;
-    /* Assuming the current thread holds the GIL, this is the
-       PyThreadState for the current thread. */
-    _Py_atomic_address tstate_current;
-    PyThreadFrameGetter getframe;
-    /* The single PyInterpreterState used by this process'
-       GILState implementation
-    */
-    /* TODO: Given interp_main, it may be possible to kill this ref */
-    PyInterpreterState *autoInterpreterState;
-    Py_tss_t autoTSSkey;
-};
-
-/* hook for PyEval_GetFrame(), requested for Psyco */
-#define _PyThreadState_GetFrame _PyRuntime.gilstate.getframe
-
-/* Issue #26558: Flag to disable PyGILState_Check().
-   If set to non-zero, PyGILState_Check() always return 1. */
-#define _PyGILState_check_enabled _PyRuntime.gilstate.check_enabled
-
-
-typedef struct {
-    /* Full path to the Python program */
-    wchar_t *program_full_path;
-    wchar_t *prefix;
-#ifdef MS_WINDOWS
-    wchar_t *dll_path;
-#else
-    wchar_t *exec_prefix;
-#endif
-    /* Set by Py_SetPath(), or computed by _PyPathConfig_Init() */
-    wchar_t *module_search_path;
-    /* Python program name */
-    wchar_t *program_name;
-    /* Set by Py_SetPythonHome() or PYTHONHOME environment variable */
-    wchar_t *home;
-} _PyPathConfig;
-
-#define _PyPathConfig_INIT {.module_search_path = NULL}
-/* Note: _PyPathConfig_INIT sets other fields to 0/NULL */
-
-PyAPI_DATA(_PyPathConfig) _Py_path_config;
-
-PyAPI_FUNC(_PyInitError) _PyPathConfig_Calculate(
-    _PyPathConfig *config,
-    const _PyCoreConfig *core_config);
-PyAPI_FUNC(void) _PyPathConfig_Clear(_PyPathConfig *config);
-
-
-/* interpreter state */
-
-PyAPI_FUNC(PyInterpreterState *) _PyInterpreterState_LookUpID(PY_INT64_T);
-
-PyAPI_FUNC(int) _PyInterpreterState_IDInitref(PyInterpreterState *);
-PyAPI_FUNC(void) _PyInterpreterState_IDIncref(PyInterpreterState *);
-PyAPI_FUNC(void) _PyInterpreterState_IDDecref(PyInterpreterState *);
-
-/* Full Python runtime state */
-
-typedef struct pyruntimestate {
-    int initialized;
-    int core_initialized;
-    PyThreadState *finalizing;
-
-    struct pyinterpreters {
-        PyThread_type_lock mutex;
-        PyInterpreterState *head;
-        PyInterpreterState *main;
-        /* _next_interp_id is an auto-numbered sequence of small
-           integers.  It gets initialized in _PyInterpreterState_Init(),
-           which is called in Py_Initialize(), and used in
-           PyInterpreterState_New().  A negative interpreter ID
-           indicates an error occurred.  The main interpreter will
-           always have an ID of 0.  Overflow results in a RuntimeError.
-           If that becomes a problem later then we can adjust, e.g. by
-           using a Python int. */
-        int64_t next_id;
-    } interpreters;
-
-#define NEXITFUNCS 32
-    void (*exitfuncs[NEXITFUNCS])(void);
-    int nexitfuncs;
-
-    struct _gc_runtime_state gc;
-    struct _warnings_runtime_state warnings;
-    struct _ceval_runtime_state ceval;
-    struct _gilstate_runtime_state gilstate;
-
-    // XXX Consolidate globals found via the check-c-globals script.
-} _PyRuntimeState;
-
-#define _PyRuntimeState_INIT {.initialized = 0, .core_initialized = 0}
-/* Note: _PyRuntimeState_INIT sets other fields to 0/NULL */
-
-PyAPI_DATA(_PyRuntimeState) _PyRuntime;
-PyAPI_FUNC(_PyInitError) _PyRuntimeState_Init(_PyRuntimeState *);
-PyAPI_FUNC(void) _PyRuntimeState_Fini(_PyRuntimeState *);
-
-/* Initialize _PyRuntimeState.
-   Return NULL on success, or return an error message on failure. */
-PyAPI_FUNC(_PyInitError) _PyRuntime_Initialize(void);
-
-PyAPI_FUNC(void) _PyRuntime_Finalize(void);
-
-
-#define _Py_CURRENTLY_FINALIZING(tstate) \
-    (_PyRuntime.finalizing == tstate)
-
-
-/* Other */
-
-PyAPI_FUNC(_PyInitError) _PyInterpreterState_Enable(_PyRuntimeState *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_INTERNAL_PYSTATE_H */
diff --git a/pythonsdk/include/internal/warnings.h b/pythonsdk/include/internal/warnings.h
deleted file mode 100644
index 5a0559f..0000000
--- a/pythonsdk/include/internal/warnings.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef Py_INTERNAL_WARNINGS_H
-#define Py_INTERNAL_WARNINGS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "object.h"
-
-struct _warnings_runtime_state {
-    /* Both 'filters' and 'onceregistry' can be set in warnings.py;
-       get_warnings_attr() will reset these variables accordingly. */
-    PyObject *filters;  /* List */
-    PyObject *once_registry;  /* Dict */
-    PyObject *default_action; /* String */
-    long filters_version;
-};
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_INTERNAL_WARNINGS_H */
diff --git a/pythonsdk/include/intrcheck.h b/pythonsdk/include/intrcheck.h
deleted file mode 100644
index 0fcb231..0000000
--- a/pythonsdk/include/intrcheck.h
+++ /dev/null
@@ -1,33 +0,0 @@
-
-#ifndef Py_INTRCHECK_H
-#define Py_INTRCHECK_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(int) PyOS_InterruptOccurred(void);
-PyAPI_FUNC(void) PyOS_InitInterrupts(void);
-#ifdef HAVE_FORK
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03070000
-PyAPI_FUNC(void) PyOS_BeforeFork(void);
-PyAPI_FUNC(void) PyOS_AfterFork_Parent(void);
-PyAPI_FUNC(void) PyOS_AfterFork_Child(void);
-#endif
-#endif
-/* Deprecated, please use PyOS_AfterFork_Child() instead */
-PyAPI_FUNC(void) PyOS_AfterFork(void) Py_DEPRECATED(3.7);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyOS_IsMainThread(void);
-PyAPI_FUNC(void) _PySignal_AfterFork(void);
-
-#ifdef MS_WINDOWS
-/* windows.h is not included by Python.h so use void* instead of HANDLE */
-PyAPI_FUNC(void*) _PyOS_SigintEvent(void);
-#endif
-#endif /* !Py_LIMITED_API */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_INTRCHECK_H */
diff --git a/pythonsdk/include/iterobject.h b/pythonsdk/include/iterobject.h
deleted file mode 100644
index 610362a..0000000
--- a/pythonsdk/include/iterobject.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef Py_ITEROBJECT_H
-#define Py_ITEROBJECT_H
-/* Iterators (the basic kind, over a sequence) */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_DATA(PyTypeObject) PySeqIter_Type;
-PyAPI_DATA(PyTypeObject) PyCallIter_Type;
-PyAPI_DATA(PyTypeObject) PyCmpWrapper_Type;
-
-#define PySeqIter_Check(op) (Py_TYPE(op) == &PySeqIter_Type)
-
-PyAPI_FUNC(PyObject *) PySeqIter_New(PyObject *);
-
-
-#define PyCallIter_Check(op) (Py_TYPE(op) == &PyCallIter_Type)
-
-PyAPI_FUNC(PyObject *) PyCallIter_New(PyObject *, PyObject *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_ITEROBJECT_H */
-
diff --git a/pythonsdk/include/listobject.h b/pythonsdk/include/listobject.h
deleted file mode 100644
index 867f179..0000000
--- a/pythonsdk/include/listobject.h
+++ /dev/null
@@ -1,81 +0,0 @@
-
-/* List object interface */
-
-/*
-Another generally useful object type is a list of object pointers.
-This is a mutable type: the list items can be changed, and items can be
-added or removed.  Out-of-range indices or non-list objects are ignored.
-
-*** WARNING *** PyList_SetItem does not increment the new item's reference
-count, but does decrement the reference count of the item it replaces,
-if not nil.  It does *decrement* the reference count if it is *not*
-inserted in the list.  Similarly, PyList_GetItem does not increment the
-returned item's reference count.
-*/
-
-#ifndef Py_LISTOBJECT_H
-#define Py_LISTOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef Py_LIMITED_API
-typedef struct {
-    PyObject_VAR_HEAD
-    /* Vector of pointers to list elements.  list[0] is ob_item[0], etc. */
-    PyObject **ob_item;
-
-    /* ob_item contains space for 'allocated' elements.  The number
-     * currently in use is ob_size.
-     * Invariants:
-     *     0 <= ob_size <= allocated
-     *     len(list) == ob_size
-     *     ob_item == NULL implies ob_size == allocated == 0
-     * list.sort() temporarily sets allocated to -1 to detect mutations.
-     *
-     * Items must normally not be NULL, except during construction when
-     * the list is not yet visible outside the function that builds it.
-     */
-    Py_ssize_t allocated;
-} PyListObject;
-#endif
-
-PyAPI_DATA(PyTypeObject) PyList_Type;
-PyAPI_DATA(PyTypeObject) PyListIter_Type;
-PyAPI_DATA(PyTypeObject) PyListRevIter_Type;
-PyAPI_DATA(PyTypeObject) PySortWrapper_Type;
-
-#define PyList_Check(op) \
-    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
-#define PyList_CheckExact(op) (Py_TYPE(op) == &PyList_Type)
-
-PyAPI_FUNC(PyObject *) PyList_New(Py_ssize_t size);
-PyAPI_FUNC(Py_ssize_t) PyList_Size(PyObject *);
-PyAPI_FUNC(PyObject *) PyList_GetItem(PyObject *, Py_ssize_t);
-PyAPI_FUNC(int) PyList_SetItem(PyObject *, Py_ssize_t, PyObject *);
-PyAPI_FUNC(int) PyList_Insert(PyObject *, Py_ssize_t, PyObject *);
-PyAPI_FUNC(int) PyList_Append(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyList_GetSlice(PyObject *, Py_ssize_t, Py_ssize_t);
-PyAPI_FUNC(int) PyList_SetSlice(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *);
-PyAPI_FUNC(int) PyList_Sort(PyObject *);
-PyAPI_FUNC(int) PyList_Reverse(PyObject *);
-PyAPI_FUNC(PyObject *) PyList_AsTuple(PyObject *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyList_Extend(PyListObject *, PyObject *);
-
-PyAPI_FUNC(int) PyList_ClearFreeList(void);
-PyAPI_FUNC(void) _PyList_DebugMallocStats(FILE *out);
-#endif
-
-/* Macro, trading safety for speed */
-#ifndef Py_LIMITED_API
-#define PyList_GET_ITEM(op, i) (((PyListObject *)(op))->ob_item[i])
-#define PyList_SET_ITEM(op, i, v) (((PyListObject *)(op))->ob_item[i] = (v))
-#define PyList_GET_SIZE(op)    (assert(PyList_Check(op)),Py_SIZE(op))
-#define _PyList_ITEMS(op)      (((PyListObject *)(op))->ob_item)
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_LISTOBJECT_H */
diff --git a/pythonsdk/include/longintrepr.h b/pythonsdk/include/longintrepr.h
deleted file mode 100644
index cc02f2b..0000000
--- a/pythonsdk/include/longintrepr.h
+++ /dev/null
@@ -1,99 +0,0 @@
-#ifndef Py_LIMITED_API
-#ifndef Py_LONGINTREPR_H
-#define Py_LONGINTREPR_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* This is published for the benefit of "friends" marshal.c and _decimal.c. */
-
-/* Parameters of the integer representation.  There are two different
-   sets of parameters: one set for 30-bit digits, stored in an unsigned 32-bit
-   integer type, and one set for 15-bit digits with each digit stored in an
-   unsigned short.  The value of PYLONG_BITS_IN_DIGIT, defined either at
-   configure time or in pyport.h, is used to decide which digit size to use.
-
-   Type 'digit' should be able to hold 2*PyLong_BASE-1, and type 'twodigits'
-   should be an unsigned integer type able to hold all integers up to
-   PyLong_BASE*PyLong_BASE-1.  x_sub assumes that 'digit' is an unsigned type,
-   and that overflow is handled by taking the result modulo 2**N for some N >
-   PyLong_SHIFT.  The majority of the code doesn't care about the precise
-   value of PyLong_SHIFT, but there are some notable exceptions:
-
-   - long_pow() requires that PyLong_SHIFT be divisible by 5
-
-   - PyLong_{As,From}ByteArray require that PyLong_SHIFT be at least 8
-
-   - long_hash() requires that PyLong_SHIFT is *strictly* less than the number
-     of bits in an unsigned long, as do the PyLong <-> long (or unsigned long)
-     conversion functions
-
-   - the Python int <-> size_t/Py_ssize_t conversion functions expect that
-     PyLong_SHIFT is strictly less than the number of bits in a size_t
-
-   - the marshal code currently expects that PyLong_SHIFT is a multiple of 15
-
-   - NSMALLNEGINTS and NSMALLPOSINTS should be small enough to fit in a single
-     digit; with the current values this forces PyLong_SHIFT >= 9
-
-  The values 15 and 30 should fit all of the above requirements, on any
-  platform.
-*/
-
-#if PYLONG_BITS_IN_DIGIT == 30
-typedef uint32_t digit;
-typedef int32_t sdigit; /* signed variant of digit */
-typedef uint64_t twodigits;
-typedef int64_t stwodigits; /* signed variant of twodigits */
-#define PyLong_SHIFT    30
-#define _PyLong_DECIMAL_SHIFT   9 /* max(e such that 10**e fits in a digit) */
-#define _PyLong_DECIMAL_BASE    ((digit)1000000000) /* 10 ** DECIMAL_SHIFT */
-#elif PYLONG_BITS_IN_DIGIT == 15
-typedef unsigned short digit;
-typedef short sdigit; /* signed variant of digit */
-typedef unsigned long twodigits;
-typedef long stwodigits; /* signed variant of twodigits */
-#define PyLong_SHIFT    15
-#define _PyLong_DECIMAL_SHIFT   4 /* max(e such that 10**e fits in a digit) */
-#define _PyLong_DECIMAL_BASE    ((digit)10000) /* 10 ** DECIMAL_SHIFT */
-#else
-#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
-#endif
-#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
-#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
-
-#if PyLong_SHIFT % 5 != 0
-#error "longobject.c requires that PyLong_SHIFT be divisible by 5"
-#endif
-
-/* Long integer representation.
-   The absolute value of a number is equal to
-        SUM(for i=0 through abs(ob_size)-1) ob_digit[i] * 2**(SHIFT*i)
-   Negative numbers are represented with ob_size < 0;
-   zero is represented by ob_size == 0.
-   In a normalized number, ob_digit[abs(ob_size)-1] (the most significant
-   digit) is never zero.  Also, in all cases, for all valid i,
-        0 <= ob_digit[i] <= MASK.
-   The allocation function takes care of allocating extra memory
-   so that ob_digit[0] ... ob_digit[abs(ob_size)-1] are actually available.
-
-   CAUTION:  Generic code manipulating subtypes of PyVarObject has to
-   aware that ints abuse  ob_size's sign bit.
-*/
-
-struct _longobject {
-    PyObject_VAR_HEAD
-    digit ob_digit[1];
-};
-
-PyAPI_FUNC(PyLongObject *) _PyLong_New(Py_ssize_t);
-
-/* Return a copy of src. */
-PyAPI_FUNC(PyObject *) _PyLong_Copy(PyLongObject *src);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_LONGINTREPR_H */
-#endif /* Py_LIMITED_API */
diff --git a/pythonsdk/include/longobject.h b/pythonsdk/include/longobject.h
deleted file mode 100644
index 2f79798..0000000
--- a/pythonsdk/include/longobject.h
+++ /dev/null
@@ -1,220 +0,0 @@
-#ifndef Py_LONGOBJECT_H
-#define Py_LONGOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Long (arbitrary precision) integer object interface */
-
-typedef struct _longobject PyLongObject; /* Revealed in longintrepr.h */
-
-PyAPI_DATA(PyTypeObject) PyLong_Type;
-
-#define PyLong_Check(op) \
-        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
-#define PyLong_CheckExact(op) (Py_TYPE(op) == &PyLong_Type)
-
-PyAPI_FUNC(PyObject *) PyLong_FromLong(long);
-PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLong(unsigned long);
-PyAPI_FUNC(PyObject *) PyLong_FromSize_t(size_t);
-PyAPI_FUNC(PyObject *) PyLong_FromSsize_t(Py_ssize_t);
-PyAPI_FUNC(PyObject *) PyLong_FromDouble(double);
-PyAPI_FUNC(long) PyLong_AsLong(PyObject *);
-PyAPI_FUNC(long) PyLong_AsLongAndOverflow(PyObject *, int *);
-PyAPI_FUNC(Py_ssize_t) PyLong_AsSsize_t(PyObject *);
-PyAPI_FUNC(size_t) PyLong_AsSize_t(PyObject *);
-PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLong(PyObject *);
-PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLongMask(PyObject *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyLong_AsInt(PyObject *);
-#endif
-PyAPI_FUNC(PyObject *) PyLong_GetInfo(void);
-
-/* It may be useful in the future. I've added it in the PyInt -> PyLong
-   cleanup to keep the extra information. [CH] */
-#define PyLong_AS_LONG(op) PyLong_AsLong(op)
-
-/* Issue #1983: pid_t can be longer than a C long on some systems */
-#if !defined(SIZEOF_PID_T) || SIZEOF_PID_T == SIZEOF_INT
-#define _Py_PARSE_PID "i"
-#define PyLong_FromPid PyLong_FromLong
-#define PyLong_AsPid PyLong_AsLong
-#elif SIZEOF_PID_T == SIZEOF_LONG
-#define _Py_PARSE_PID "l"
-#define PyLong_FromPid PyLong_FromLong
-#define PyLong_AsPid PyLong_AsLong
-#elif defined(SIZEOF_LONG_LONG) && SIZEOF_PID_T == SIZEOF_LONG_LONG
-#define _Py_PARSE_PID "L"
-#define PyLong_FromPid PyLong_FromLongLong
-#define PyLong_AsPid PyLong_AsLongLong
-#else
-#error "sizeof(pid_t) is neither sizeof(int), sizeof(long) or sizeof(long long)"
-#endif /* SIZEOF_PID_T */
-
-#if SIZEOF_VOID_P == SIZEOF_INT
-#  define _Py_PARSE_INTPTR "i"
-#  define _Py_PARSE_UINTPTR "I"
-#elif SIZEOF_VOID_P == SIZEOF_LONG
-#  define _Py_PARSE_INTPTR "l"
-#  define _Py_PARSE_UINTPTR "k"
-#elif defined(SIZEOF_LONG_LONG) && SIZEOF_VOID_P == SIZEOF_LONG_LONG
-#  define _Py_PARSE_INTPTR "L"
-#  define _Py_PARSE_UINTPTR "K"
-#else
-#  error "void* different in size from int, long and long long"
-#endif /* SIZEOF_VOID_P */
-
-/* Used by Python/mystrtoul.c, _PyBytes_FromHex(),
-   _PyBytes_DecodeEscapeRecode(), etc. */
-#ifndef Py_LIMITED_API
-PyAPI_DATA(unsigned char) _PyLong_DigitValue[256];
-#endif
-
-/* _PyLong_Frexp returns a double x and an exponent e such that the
-   true value is approximately equal to x * 2**e.  e is >= 0.  x is
-   0.0 if and only if the input is 0 (in which case, e and x are both
-   zeroes); otherwise, 0.5 <= abs(x) < 1.0.  On overflow, which is
-   possible if the number of bits doesn't fit into a Py_ssize_t, sets
-   OverflowError and returns -1.0 for x, 0 for e. */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(double) _PyLong_Frexp(PyLongObject *a, Py_ssize_t *e);
-#endif
-
-PyAPI_FUNC(double) PyLong_AsDouble(PyObject *);
-PyAPI_FUNC(PyObject *) PyLong_FromVoidPtr(void *);
-PyAPI_FUNC(void *) PyLong_AsVoidPtr(PyObject *);
-
-PyAPI_FUNC(PyObject *) PyLong_FromLongLong(long long);
-PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLongLong(unsigned long long);
-PyAPI_FUNC(long long) PyLong_AsLongLong(PyObject *);
-PyAPI_FUNC(unsigned long long) PyLong_AsUnsignedLongLong(PyObject *);
-PyAPI_FUNC(unsigned long long) PyLong_AsUnsignedLongLongMask(PyObject *);
-PyAPI_FUNC(long long) PyLong_AsLongLongAndOverflow(PyObject *, int *);
-
-PyAPI_FUNC(PyObject *) PyLong_FromString(const char *, char **, int);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) PyLong_FromUnicode(Py_UNICODE*, Py_ssize_t, int) Py_DEPRECATED(3.3);
-PyAPI_FUNC(PyObject *) PyLong_FromUnicodeObject(PyObject *u, int base);
-PyAPI_FUNC(PyObject *) _PyLong_FromBytes(const char *, Py_ssize_t, int);
-#endif
-
-#ifndef Py_LIMITED_API
-/* _PyLong_Sign.  Return 0 if v is 0, -1 if v < 0, +1 if v > 0.
-   v must not be NULL, and must be a normalized long.
-   There are no error cases.
-*/
-PyAPI_FUNC(int) _PyLong_Sign(PyObject *v);
-
-
-/* _PyLong_NumBits.  Return the number of bits needed to represent the
-   absolute value of a long.  For example, this returns 1 for 1 and -1, 2
-   for 2 and -2, and 2 for 3 and -3.  It returns 0 for 0.
-   v must not be NULL, and must be a normalized long.
-   (size_t)-1 is returned and OverflowError set if the true result doesn't
-   fit in a size_t.
-*/
-PyAPI_FUNC(size_t) _PyLong_NumBits(PyObject *v);
-
-/* _PyLong_DivmodNear.  Given integers a and b, compute the nearest
-   integer q to the exact quotient a / b, rounding to the nearest even integer
-   in the case of a tie.  Return (q, r), where r = a - q*b.  The remainder r
-   will satisfy abs(r) <= abs(b)/2, with equality possible only if q is
-   even.
-*/
-PyAPI_FUNC(PyObject *) _PyLong_DivmodNear(PyObject *, PyObject *);
-
-/* _PyLong_FromByteArray:  View the n unsigned bytes as a binary integer in
-   base 256, and return a Python int with the same numeric value.
-   If n is 0, the integer is 0.  Else:
-   If little_endian is 1/true, bytes[n-1] is the MSB and bytes[0] the LSB;
-   else (little_endian is 0/false) bytes[0] is the MSB and bytes[n-1] the
-   LSB.
-   If is_signed is 0/false, view the bytes as a non-negative integer.
-   If is_signed is 1/true, view the bytes as a 2's-complement integer,
-   non-negative if bit 0x80 of the MSB is clear, negative if set.
-   Error returns:
-   + Return NULL with the appropriate exception set if there's not
-     enough memory to create the Python int.
-*/
-PyAPI_FUNC(PyObject *) _PyLong_FromByteArray(
-    const unsigned char* bytes, size_t n,
-    int little_endian, int is_signed);
-
-/* _PyLong_AsByteArray: Convert the least-significant 8*n bits of long
-   v to a base-256 integer, stored in array bytes.  Normally return 0,
-   return -1 on error.
-   If little_endian is 1/true, store the MSB at bytes[n-1] and the LSB at
-   bytes[0]; else (little_endian is 0/false) store the MSB at bytes[0] and
-   the LSB at bytes[n-1].
-   If is_signed is 0/false, it's an error if v < 0; else (v >= 0) n bytes
-   are filled and there's nothing special about bit 0x80 of the MSB.
-   If is_signed is 1/true, bytes is filled with the 2's-complement
-   representation of v's value.  Bit 0x80 of the MSB is the sign bit.
-   Error returns (-1):
-   + is_signed is 0 and v < 0.  TypeError is set in this case, and bytes
-     isn't altered.
-   + n isn't big enough to hold the full mathematical value of v.  For
-     example, if is_signed is 0 and there are more digits in the v than
-     fit in n; or if is_signed is 1, v < 0, and n is just 1 bit shy of
-     being large enough to hold a sign bit.  OverflowError is set in this
-     case, but bytes holds the least-significant n bytes of the true value.
-*/
-PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,
-    unsigned char* bytes, size_t n,
-    int little_endian, int is_signed);
-
-/* _PyLong_FromNbInt: Convert the given object to a PyLongObject
-   using the nb_int slot, if available.  Raise TypeError if either the
-   nb_int slot is not available or the result of the call to nb_int
-   returns something not of type int.
-*/
-PyAPI_FUNC(PyLongObject *)_PyLong_FromNbInt(PyObject *);
-
-/* _PyLong_Format: Convert the long to a string object with given base,
-   appending a base prefix of 0[box] if base is 2, 8 or 16. */
-PyAPI_FUNC(PyObject *) _PyLong_Format(PyObject *obj, int base);
-
-PyAPI_FUNC(int) _PyLong_FormatWriter(
-    _PyUnicodeWriter *writer,
-    PyObject *obj,
-    int base,
-    int alternate);
-
-PyAPI_FUNC(char*) _PyLong_FormatBytesWriter(
-    _PyBytesWriter *writer,
-    char *str,
-    PyObject *obj,
-    int base,
-    int alternate);
-
-/* Format the object based on the format_spec, as defined in PEP 3101
-   (Advanced String Formatting). */
-PyAPI_FUNC(int) _PyLong_FormatAdvancedWriter(
-    _PyUnicodeWriter *writer,
-    PyObject *obj,
-    PyObject *format_spec,
-    Py_ssize_t start,
-    Py_ssize_t end);
-#endif /* Py_LIMITED_API */
-
-/* These aren't really part of the int object, but they're handy. The
-   functions are in Python/mystrtoul.c.
- */
-PyAPI_FUNC(unsigned long) PyOS_strtoul(const char *, char **, int);
-PyAPI_FUNC(long) PyOS_strtol(const char *, char **, int);
-
-#ifndef Py_LIMITED_API
-/* For use by the gcd function in mathmodule.c */
-PyAPI_FUNC(PyObject *) _PyLong_GCD(PyObject *, PyObject *);
-#endif /* !Py_LIMITED_API */
-
-#ifndef Py_LIMITED_API
-PyAPI_DATA(PyObject *) _PyLong_Zero;
-PyAPI_DATA(PyObject *) _PyLong_One;
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_LONGOBJECT_H */
diff --git a/pythonsdk/include/marshal.h b/pythonsdk/include/marshal.h
deleted file mode 100644
index de9dfbb..0000000
--- a/pythonsdk/include/marshal.h
+++ /dev/null
@@ -1,28 +0,0 @@
-
-/* Interface for marshal.c */
-
-#ifndef Py_MARSHAL_H
-#define Py_MARSHAL_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define Py_MARSHAL_VERSION 4
-
-PyAPI_FUNC(void) PyMarshal_WriteLongToFile(long, FILE *, int);
-PyAPI_FUNC(void) PyMarshal_WriteObjectToFile(PyObject *, FILE *, int);
-PyAPI_FUNC(PyObject *) PyMarshal_WriteObjectToString(PyObject *, int);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(long) PyMarshal_ReadLongFromFile(FILE *);
-PyAPI_FUNC(int) PyMarshal_ReadShortFromFile(FILE *);
-PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromFile(FILE *);
-PyAPI_FUNC(PyObject *) PyMarshal_ReadLastObjectFromFile(FILE *);
-#endif
-PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromString(const char *,
-                                                      Py_ssize_t);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_MARSHAL_H */
diff --git a/pythonsdk/include/memoryobject.h b/pythonsdk/include/memoryobject.h
deleted file mode 100644
index 82c5f5b..0000000
--- a/pythonsdk/include/memoryobject.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Memory view object. In Python this is available as "memoryview". */
-
-#ifndef Py_MEMORYOBJECT_H
-#define Py_MEMORYOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef Py_LIMITED_API
-PyAPI_DATA(PyTypeObject) _PyManagedBuffer_Type;
-#endif
-PyAPI_DATA(PyTypeObject) PyMemoryView_Type;
-
-#define PyMemoryView_Check(op) (Py_TYPE(op) == &PyMemoryView_Type)
-
-#ifndef Py_LIMITED_API
-/* Get a pointer to the memoryview's private copy of the exporter's buffer. */
-#define PyMemoryView_GET_BUFFER(op) (&((PyMemoryViewObject *)(op))->view)
-/* Get a pointer to the exporting object (this may be NULL!). */
-#define PyMemoryView_GET_BASE(op) (((PyMemoryViewObject *)(op))->view.obj)
-#endif
-
-PyAPI_FUNC(PyObject *) PyMemoryView_FromObject(PyObject *base);
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(PyObject *) PyMemoryView_FromMemory(char *mem, Py_ssize_t size,
-                                               int flags);
-#endif
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) PyMemoryView_FromBuffer(Py_buffer *info);
-#endif
-PyAPI_FUNC(PyObject *) PyMemoryView_GetContiguous(PyObject *base,
-                                                  int buffertype,
-                                                  char order);
-
-
-/* The structs are declared here so that macros can work, but they shouldn't
-   be considered public. Don't access their fields directly, use the macros
-   and functions instead! */
-#ifndef Py_LIMITED_API
-#define _Py_MANAGED_BUFFER_RELEASED    0x001  /* access to exporter blocked */
-#define _Py_MANAGED_BUFFER_FREE_FORMAT 0x002  /* free format */
-typedef struct {
-    PyObject_HEAD
-    int flags;          /* state flags */
-    Py_ssize_t exports; /* number of direct memoryview exports */
-    Py_buffer master; /* snapshot buffer obtained from the original exporter */
-} _PyManagedBufferObject;
-
-
-/* memoryview state flags */
-#define _Py_MEMORYVIEW_RELEASED    0x001  /* access to master buffer blocked */
-#define _Py_MEMORYVIEW_C           0x002  /* C-contiguous layout */
-#define _Py_MEMORYVIEW_FORTRAN     0x004  /* Fortran contiguous layout */
-#define _Py_MEMORYVIEW_SCALAR      0x008  /* scalar: ndim = 0 */
-#define _Py_MEMORYVIEW_PIL         0x010  /* PIL-style layout */
-
-typedef struct {
-    PyObject_VAR_HEAD
-    _PyManagedBufferObject *mbuf; /* managed buffer */
-    Py_hash_t hash;               /* hash value for read-only views */
-    int flags;                    /* state flags */
-    Py_ssize_t exports;           /* number of buffer re-exports */
-    Py_buffer view;               /* private copy of the exporter's view */
-    PyObject *weakreflist;
-    Py_ssize_t ob_array[1];       /* shape, strides, suboffsets */
-} PyMemoryViewObject;
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_MEMORYOBJECT_H */
diff --git a/pythonsdk/include/metagrammar.h b/pythonsdk/include/metagrammar.h
deleted file mode 100644
index 1fb471a..0000000
--- a/pythonsdk/include/metagrammar.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef Py_METAGRAMMAR_H
-#define Py_METAGRAMMAR_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#define MSTART 256
-#define RULE 257
-#define RHS 258
-#define ALT 259
-#define ITEM 260
-#define ATOM 261
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_METAGRAMMAR_H */
diff --git a/pythonsdk/include/methodobject.h b/pythonsdk/include/methodobject.h
deleted file mode 100644
index 2f60067..0000000
--- a/pythonsdk/include/methodobject.h
+++ /dev/null
@@ -1,135 +0,0 @@
-
-/* Method object interface */
-
-#ifndef Py_METHODOBJECT_H
-#define Py_METHODOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* This is about the type 'builtin_function_or_method',
-   not Python methods in user-defined classes.  See classobject.h
-   for the latter. */
-
-PyAPI_DATA(PyTypeObject) PyCFunction_Type;
-
-#define PyCFunction_Check(op) (Py_TYPE(op) == &PyCFunction_Type)
-
-typedef PyObject *(*PyCFunction)(PyObject *, PyObject *);
-typedef PyObject *(*_PyCFunctionFast) (PyObject *, PyObject *const *, Py_ssize_t);
-typedef PyObject *(*PyCFunctionWithKeywords)(PyObject *, PyObject *,
-                                             PyObject *);
-typedef PyObject *(*_PyCFunctionFastWithKeywords) (PyObject *,
-                                                   PyObject *const *, Py_ssize_t,
-                                                   PyObject *);
-typedef PyObject *(*PyNoArgsFunction)(PyObject *);
-
-PyAPI_FUNC(PyCFunction) PyCFunction_GetFunction(PyObject *);
-PyAPI_FUNC(PyObject *) PyCFunction_GetSelf(PyObject *);
-PyAPI_FUNC(int) PyCFunction_GetFlags(PyObject *);
-
-/* Macros for direct access to these values. Type checks are *not*
-   done, so use with care. */
-#ifndef Py_LIMITED_API
-#define PyCFunction_GET_FUNCTION(func) \
-        (((PyCFunctionObject *)func) -> m_ml -> ml_meth)
-#define PyCFunction_GET_SELF(func) \
-        (((PyCFunctionObject *)func) -> m_ml -> ml_flags & METH_STATIC ? \
-         NULL : ((PyCFunctionObject *)func) -> m_self)
-#define PyCFunction_GET_FLAGS(func) \
-        (((PyCFunctionObject *)func) -> m_ml -> ml_flags)
-#endif
-PyAPI_FUNC(PyObject *) PyCFunction_Call(PyObject *, PyObject *, PyObject *);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyCFunction_FastCallDict(PyObject *func,
-    PyObject *const *args,
-    Py_ssize_t nargs,
-    PyObject *kwargs);
-
-PyAPI_FUNC(PyObject *) _PyCFunction_FastCallKeywords(PyObject *func,
-    PyObject *const *stack,
-    Py_ssize_t nargs,
-    PyObject *kwnames);
-#endif
-
-struct PyMethodDef {
-    const char  *ml_name;   /* The name of the built-in function/method */
-    PyCFunction ml_meth;    /* The C function that implements it */
-    int         ml_flags;   /* Combination of METH_xxx flags, which mostly
-                               describe the args expected by the C func */
-    const char  *ml_doc;    /* The __doc__ attribute, or NULL */
-};
-typedef struct PyMethodDef PyMethodDef;
-
-#define PyCFunction_New(ML, SELF) PyCFunction_NewEx((ML), (SELF), NULL)
-PyAPI_FUNC(PyObject *) PyCFunction_NewEx(PyMethodDef *, PyObject *,
-                                         PyObject *);
-
-/* Flag passed to newmethodobject */
-/* #define METH_OLDARGS  0x0000   -- unsupported now */
-#define METH_VARARGS  0x0001
-#define METH_KEYWORDS 0x0002
-/* METH_NOARGS and METH_O must not be combined with the flags above. */
-#define METH_NOARGS   0x0004
-#define METH_O        0x0008
-
-/* METH_CLASS and METH_STATIC are a little different; these control
-   the construction of methods for a class.  These cannot be used for
-   functions in modules. */
-#define METH_CLASS    0x0010
-#define METH_STATIC   0x0020
-
-/* METH_COEXIST allows a method to be entered even though a slot has
-   already filled the entry.  When defined, the flag allows a separate
-   method, "__contains__" for example, to coexist with a defined
-   slot like sq_contains. */
-
-#define METH_COEXIST   0x0040
-
-#ifndef Py_LIMITED_API
-#define METH_FASTCALL  0x0080
-#endif
-
-/* This bit is preserved for Stackless Python */
-#ifdef STACKLESS
-#define METH_STACKLESS 0x0100
-#else
-#define METH_STACKLESS 0x0000
-#endif
-
-#ifndef Py_LIMITED_API
-typedef struct {
-    PyObject_HEAD
-    PyMethodDef *m_ml; /* Description of the C function to call */
-    PyObject    *m_self; /* Passed as 'self' arg to the C func, can be NULL */
-    PyObject    *m_module; /* The __module__ attribute, can be anything */
-    PyObject    *m_weakreflist; /* List of weak references */
-} PyCFunctionObject;
-
-PyAPI_FUNC(PyObject *) _PyMethodDef_RawFastCallDict(
-    PyMethodDef *method,
-    PyObject *self,
-    PyObject *const *args,
-    Py_ssize_t nargs,
-    PyObject *kwargs);
-
-PyAPI_FUNC(PyObject *) _PyMethodDef_RawFastCallKeywords(
-    PyMethodDef *method,
-    PyObject *self,
-    PyObject *const *args,
-    Py_ssize_t nargs,
-    PyObject *kwnames);
-#endif
-
-PyAPI_FUNC(int) PyCFunction_ClearFreeList(void);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _PyCFunction_DebugMallocStats(FILE *out);
-PyAPI_FUNC(void) _PyMethod_DebugMallocStats(FILE *out);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_METHODOBJECT_H */
diff --git a/pythonsdk/include/modsupport.h b/pythonsdk/include/modsupport.h
deleted file mode 100644
index 1d30cb4..0000000
--- a/pythonsdk/include/modsupport.h
+++ /dev/null
@@ -1,229 +0,0 @@
-
-#ifndef Py_MODSUPPORT_H
-#define Py_MODSUPPORT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Module support interface */
-
-#include <stdarg.h>
-
-/* If PY_SSIZE_T_CLEAN is defined, each functions treats #-specifier
-   to mean Py_ssize_t */
-#ifdef PY_SSIZE_T_CLEAN
-#define PyArg_Parse                     _PyArg_Parse_SizeT
-#define PyArg_ParseTuple                _PyArg_ParseTuple_SizeT
-#define PyArg_ParseTupleAndKeywords     _PyArg_ParseTupleAndKeywords_SizeT
-#define PyArg_VaParse                   _PyArg_VaParse_SizeT
-#define PyArg_VaParseTupleAndKeywords   _PyArg_VaParseTupleAndKeywords_SizeT
-#define Py_BuildValue                   _Py_BuildValue_SizeT
-#define Py_VaBuildValue                 _Py_VaBuildValue_SizeT
-#ifndef Py_LIMITED_API
-#define _Py_VaBuildStack                _Py_VaBuildStack_SizeT
-#endif
-#else
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _Py_VaBuildValue_SizeT(const char *, va_list);
-PyAPI_FUNC(PyObject **) _Py_VaBuildStack_SizeT(
-    PyObject **small_stack,
-    Py_ssize_t small_stack_len,
-    const char *format,
-    va_list va,
-    Py_ssize_t *p_nargs);
-#endif /* !Py_LIMITED_API */
-#endif
-
-/* Due to a glitch in 3.2, the _SizeT versions weren't exported from the DLL. */
-#if !defined(PY_SSIZE_T_CLEAN) || !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(int) PyArg_Parse(PyObject *, const char *, ...);
-PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, ...);
-PyAPI_FUNC(int) PyArg_ParseTupleAndKeywords(PyObject *, PyObject *,
-                                                  const char *, char **, ...);
-PyAPI_FUNC(int) PyArg_VaParse(PyObject *, const char *, va_list);
-PyAPI_FUNC(int) PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *,
-                                                  const char *, char **, va_list);
-#endif
-PyAPI_FUNC(int) PyArg_ValidateKeywordArguments(PyObject *);
-PyAPI_FUNC(int) PyArg_UnpackTuple(PyObject *, const char *, Py_ssize_t, Py_ssize_t, ...);
-PyAPI_FUNC(PyObject *) Py_BuildValue(const char *, ...);
-PyAPI_FUNC(PyObject *) _Py_BuildValue_SizeT(const char *, ...);
-
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyArg_UnpackStack(
-    PyObject *const *args,
-    Py_ssize_t nargs,
-    const char *name,
-    Py_ssize_t min,
-    Py_ssize_t max,
-    ...);
-
-PyAPI_FUNC(int) _PyArg_NoKeywords(const char *funcname, PyObject *kwargs);
-PyAPI_FUNC(int) _PyArg_NoPositional(const char *funcname, PyObject *args);
-#define _PyArg_NoKeywords(funcname, kwargs) \
-    ((kwargs) == NULL || _PyArg_NoKeywords((funcname), (kwargs)))
-#define _PyArg_NoPositional(funcname, args) \
-    ((args) == NULL || _PyArg_NoPositional((funcname), (args)))
-
-#endif
-
-PyAPI_FUNC(PyObject *) Py_VaBuildValue(const char *, va_list);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject **) _Py_VaBuildStack(
-    PyObject **small_stack,
-    Py_ssize_t small_stack_len,
-    const char *format,
-    va_list va,
-    Py_ssize_t *p_nargs);
-#endif
-
-#ifndef Py_LIMITED_API
-typedef struct _PyArg_Parser {
-    const char *format;
-    const char * const *keywords;
-    const char *fname;
-    const char *custom_msg;
-    int pos;            /* number of positional-only arguments */
-    int min;            /* minimal number of arguments */
-    int max;            /* maximal number of positional arguments */
-    PyObject *kwtuple;  /* tuple of keyword parameter names */
-    struct _PyArg_Parser *next;
-} _PyArg_Parser;
-#ifdef PY_SSIZE_T_CLEAN
-#define _PyArg_ParseTupleAndKeywordsFast  _PyArg_ParseTupleAndKeywordsFast_SizeT
-#define _PyArg_ParseStack  _PyArg_ParseStack_SizeT
-#define _PyArg_ParseStackAndKeywords  _PyArg_ParseStackAndKeywords_SizeT
-#define _PyArg_VaParseTupleAndKeywordsFast  _PyArg_VaParseTupleAndKeywordsFast_SizeT
-#endif
-PyAPI_FUNC(int) _PyArg_ParseTupleAndKeywordsFast(PyObject *, PyObject *,
-                                                 struct _PyArg_Parser *, ...);
-PyAPI_FUNC(int) _PyArg_ParseStack(
-    PyObject *const *args,
-    Py_ssize_t nargs,
-    const char *format,
-    ...);
-PyAPI_FUNC(int) _PyArg_ParseStackAndKeywords(
-    PyObject *const *args,
-    Py_ssize_t nargs,
-    PyObject *kwnames,
-    struct _PyArg_Parser *,
-    ...);
-PyAPI_FUNC(int) _PyArg_VaParseTupleAndKeywordsFast(PyObject *, PyObject *,
-                                                   struct _PyArg_Parser *, va_list);
-void _PyArg_Fini(void);
-#endif   /* Py_LIMITED_API */
-
-PyAPI_FUNC(int) PyModule_AddObject(PyObject *, const char *, PyObject *);
-PyAPI_FUNC(int) PyModule_AddIntConstant(PyObject *, const char *, long);
-PyAPI_FUNC(int) PyModule_AddStringConstant(PyObject *, const char *, const char *);
-#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
-#define PyModule_AddStringMacro(m, c) PyModule_AddStringConstant(m, #c, c)
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-/* New in 3.5 */
-PyAPI_FUNC(int) PyModule_SetDocString(PyObject *, const char *);
-PyAPI_FUNC(int) PyModule_AddFunctions(PyObject *, PyMethodDef *);
-PyAPI_FUNC(int) PyModule_ExecDef(PyObject *module, PyModuleDef *def);
-#endif
-
-#define Py_CLEANUP_SUPPORTED 0x20000
-
-#define PYTHON_API_VERSION 1013
-#define PYTHON_API_STRING "1013"
-/* The API version is maintained (independently from the Python version)
-   so we can detect mismatches between the interpreter and dynamically
-   loaded modules.  These are diagnosed by an error message but
-   the module is still loaded (because the mismatch can only be tested
-   after loading the module).  The error message is intended to
-   explain the core dump a few seconds later.
-
-   The symbol PYTHON_API_STRING defines the same value as a string
-   literal.  *** PLEASE MAKE SURE THE DEFINITIONS MATCH. ***
-
-   Please add a line or two to the top of this log for each API
-   version change:
-
-   22-Feb-2006  MvL     1013    PEP 353 - long indices for sequence lengths
-
-   19-Aug-2002  GvR     1012    Changes to string object struct for
-                                interning changes, saving 3 bytes.
-
-   17-Jul-2001  GvR     1011    Descr-branch, just to be on the safe side
-
-   25-Jan-2001  FLD     1010    Parameters added to PyCode_New() and
-                                PyFrame_New(); Python 2.1a2
-
-   14-Mar-2000  GvR     1009    Unicode API added
-
-   3-Jan-1999   GvR     1007    Decided to change back!  (Don't reuse 1008!)
-
-   3-Dec-1998   GvR     1008    Python 1.5.2b1
-
-   18-Jan-1997  GvR     1007    string interning and other speedups
-
-   11-Oct-1996  GvR     renamed Py_Ellipses to Py_Ellipsis :-(
-
-   30-Jul-1996  GvR     Slice and ellipses syntax added
-
-   23-Jul-1996  GvR     For 1.4 -- better safe than sorry this time :-)
-
-   7-Nov-1995   GvR     Keyword arguments (should've been done at 1.3 :-( )
-
-   10-Jan-1995  GvR     Renamed globals to new naming scheme
-
-   9-Jan-1995   GvR     Initial version (incompatible with older API)
-*/
-
-/* The PYTHON_ABI_VERSION is introduced in PEP 384. For the lifetime of
-   Python 3, it will stay at the value of 3; changes to the limited API
-   must be performed in a strictly backwards-compatible manner. */
-#define PYTHON_ABI_VERSION 3
-#define PYTHON_ABI_STRING "3"
-
-#ifdef Py_TRACE_REFS
- /* When we are tracing reference counts, rename module creation functions so
-    modules compiled with incompatible settings will generate a
-    link-time error. */
- #define PyModule_Create2 PyModule_Create2TraceRefs
- #define PyModule_FromDefAndSpec2 PyModule_FromDefAndSpec2TraceRefs
-#endif
-
-PyAPI_FUNC(PyObject *) PyModule_Create2(struct PyModuleDef*,
-                                     int apiver);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyModule_CreateInitialized(struct PyModuleDef*,
-                                                   int apiver);
-#endif
-
-#ifdef Py_LIMITED_API
-#define PyModule_Create(module) \
-        PyModule_Create2(module, PYTHON_ABI_VERSION)
-#else
-#define PyModule_Create(module) \
-        PyModule_Create2(module, PYTHON_API_VERSION)
-#endif
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-/* New in 3.5 */
-PyAPI_FUNC(PyObject *) PyModule_FromDefAndSpec2(PyModuleDef *def,
-                                                PyObject *spec,
-                                                int module_api_version);
-
-#ifdef Py_LIMITED_API
-#define PyModule_FromDefAndSpec(module, spec) \
-    PyModule_FromDefAndSpec2(module, spec, PYTHON_ABI_VERSION)
-#else
-#define PyModule_FromDefAndSpec(module, spec) \
-    PyModule_FromDefAndSpec2(module, spec, PYTHON_API_VERSION)
-#endif /* Py_LIMITED_API */
-#endif /* New in 3.5 */
-
-#ifndef Py_LIMITED_API
-PyAPI_DATA(const char *) _Py_PackageContext;
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_MODSUPPORT_H */
diff --git a/pythonsdk/include/moduleobject.h b/pythonsdk/include/moduleobject.h
deleted file mode 100644
index c134437..0000000
--- a/pythonsdk/include/moduleobject.h
+++ /dev/null
@@ -1,89 +0,0 @@
-
-/* Module object interface */
-
-#ifndef Py_MODULEOBJECT_H
-#define Py_MODULEOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_DATA(PyTypeObject) PyModule_Type;
-
-#define PyModule_Check(op) PyObject_TypeCheck(op, &PyModule_Type)
-#define PyModule_CheckExact(op) (Py_TYPE(op) == &PyModule_Type)
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(PyObject *) PyModule_NewObject(
-    PyObject *name
-    );
-#endif
-PyAPI_FUNC(PyObject *) PyModule_New(
-    const char *name            /* UTF-8 encoded string */
-    );
-PyAPI_FUNC(PyObject *) PyModule_GetDict(PyObject *);
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(PyObject *) PyModule_GetNameObject(PyObject *);
-#endif
-PyAPI_FUNC(const char *) PyModule_GetName(PyObject *);
-PyAPI_FUNC(const char *) PyModule_GetFilename(PyObject *) Py_DEPRECATED(3.2);
-PyAPI_FUNC(PyObject *) PyModule_GetFilenameObject(PyObject *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _PyModule_Clear(PyObject *);
-PyAPI_FUNC(void) _PyModule_ClearDict(PyObject *);
-#endif
-PyAPI_FUNC(struct PyModuleDef*) PyModule_GetDef(PyObject*);
-PyAPI_FUNC(void*) PyModule_GetState(PyObject*);
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-/* New in 3.5 */
-PyAPI_FUNC(PyObject *) PyModuleDef_Init(struct PyModuleDef*);
-PyAPI_DATA(PyTypeObject) PyModuleDef_Type;
-#endif
-
-typedef struct PyModuleDef_Base {
-  PyObject_HEAD
-  PyObject* (*m_init)(void);
-  Py_ssize_t m_index;
-  PyObject* m_copy;
-} PyModuleDef_Base;
-
-#define PyModuleDef_HEAD_INIT { \
-    PyObject_HEAD_INIT(NULL)    \
-    NULL, /* m_init */          \
-    0,    /* m_index */         \
-    NULL, /* m_copy */          \
-  }
-
-struct PyModuleDef_Slot;
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-/* New in 3.5 */
-typedef struct PyModuleDef_Slot{
-    int slot;
-    void *value;
-} PyModuleDef_Slot;
-
-#define Py_mod_create 1
-#define Py_mod_exec 2
-
-#ifndef Py_LIMITED_API
-#define _Py_mod_LAST_SLOT 2
-#endif
-
-#endif /* New in 3.5 */
-
-typedef struct PyModuleDef{
-  PyModuleDef_Base m_base;
-  const char* m_name;
-  const char* m_doc;
-  Py_ssize_t m_size;
-  PyMethodDef *m_methods;
-  struct PyModuleDef_Slot* m_slots;
-  traverseproc m_traverse;
-  inquiry m_clear;
-  freefunc m_free;
-} PyModuleDef;
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_MODULEOBJECT_H */
diff --git a/pythonsdk/include/namespaceobject.h b/pythonsdk/include/namespaceobject.h
deleted file mode 100644
index 35146e5..0000000
--- a/pythonsdk/include/namespaceobject.h
+++ /dev/null
@@ -1,19 +0,0 @@
-
-/* simple namespace object interface */
-
-#ifndef NAMESPACEOBJECT_H
-#define NAMESPACEOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef Py_LIMITED_API
-PyAPI_DATA(PyTypeObject) _PyNamespace_Type;
-
-PyAPI_FUNC(PyObject *) _PyNamespace_New(PyObject *kwds);
-#endif /* !Py_LIMITED_API */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !NAMESPACEOBJECT_H */
diff --git a/pythonsdk/include/node.h b/pythonsdk/include/node.h
deleted file mode 100644
index cd6f163..0000000
--- a/pythonsdk/include/node.h
+++ /dev/null
@@ -1,44 +0,0 @@
-
-/* Parse tree node interface */
-
-#ifndef Py_NODE_H
-#define Py_NODE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct _node {
-    short               n_type;
-    char                *n_str;
-    int                 n_lineno;
-    int                 n_col_offset;
-    int                 n_nchildren;
-    struct _node        *n_child;
-} node;
-
-PyAPI_FUNC(node *) PyNode_New(int type);
-PyAPI_FUNC(int) PyNode_AddChild(node *n, int type,
-                                      char *str, int lineno, int col_offset);
-PyAPI_FUNC(void) PyNode_Free(node *n);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(Py_ssize_t) _PyNode_SizeOf(node *n);
-#endif
-
-/* Node access functions */
-#define NCH(n)          ((n)->n_nchildren)
-
-#define CHILD(n, i)     (&(n)->n_child[i])
-#define RCHILD(n, i)    (CHILD(n, NCH(n) + i))
-#define TYPE(n)         ((n)->n_type)
-#define STR(n)          ((n)->n_str)
-#define LINENO(n)       ((n)->n_lineno)
-
-/* Assert that the type of a node is what we expect */
-#define REQ(n, type) assert(TYPE(n) == (type))
-
-PyAPI_FUNC(void) PyNode_ListTree(node *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_NODE_H */
diff --git a/pythonsdk/include/object.h b/pythonsdk/include/object.h
deleted file mode 100644
index b3107ab..0000000
--- a/pythonsdk/include/object.h
+++ /dev/null
@@ -1,1105 +0,0 @@
-#ifndef Py_OBJECT_H
-#define Py_OBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Object and type object interface */
-
-/*
-Objects are structures allocated on the heap.  Special rules apply to
-the use of objects to ensure they are properly garbage-collected.
-Objects are never allocated statically or on the stack; they must be
-accessed through special macros and functions only.  (Type objects are
-exceptions to the first rule; the standard types are represented by
-statically initialized type objects, although work on type/class unification
-for Python 2.2 made it possible to have heap-allocated type objects too).
-
-An object has a 'reference count' that is increased or decreased when a
-pointer to the object is copied or deleted; when the reference count
-reaches zero there are no references to the object left and it can be
-removed from the heap.
-
-An object has a 'type' that determines what it represents and what kind
-of data it contains.  An object's type is fixed when it is created.
-Types themselves are represented as objects; an object contains a
-pointer to the corresponding type object.  The type itself has a type
-pointer pointing to the object representing the type 'type', which
-contains a pointer to itself!.
-
-Objects do not float around in memory; once allocated an object keeps
-the same size and address.  Objects that must hold variable-size data
-can contain pointers to variable-size parts of the object.  Not all
-objects of the same type have the same size; but the size cannot change
-after allocation.  (These restrictions are made so a reference to an
-object can be simply a pointer -- moving an object would require
-updating all the pointers, and changing an object's size would require
-moving it if there was another object right next to it.)
-
-Objects are always accessed through pointers of the type 'PyObject *'.
-The type 'PyObject' is a structure that only contains the reference count
-and the type pointer.  The actual memory allocated for an object
-contains other data that can only be accessed after casting the pointer
-to a pointer to a longer structure type.  This longer type must start
-with the reference count and type fields; the macro PyObject_HEAD should be
-used for this (to accommodate for future changes).  The implementation
-of a particular object type can cast the object pointer to the proper
-type and back.
-
-A standard interface exists for objects that contain an array of items
-whose size is determined when the object is allocated.
-*/
-
-/* Py_DEBUG implies Py_TRACE_REFS. */
-#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
-#define Py_TRACE_REFS
-#endif
-
-/* Py_TRACE_REFS implies Py_REF_DEBUG. */
-#if defined(Py_TRACE_REFS) && !defined(Py_REF_DEBUG)
-#define Py_REF_DEBUG
-#endif
-
-#if defined(Py_LIMITED_API) && defined(Py_REF_DEBUG)
-#error Py_LIMITED_API is incompatible with Py_DEBUG, Py_TRACE_REFS, and Py_REF_DEBUG
-#endif
-
-
-#ifdef Py_TRACE_REFS
-/* Define pointers to support a doubly-linked list of all live heap objects. */
-#define _PyObject_HEAD_EXTRA            \
-    struct _object *_ob_next;           \
-    struct _object *_ob_prev;
-
-#define _PyObject_EXTRA_INIT 0, 0,
-
-#else
-#define _PyObject_HEAD_EXTRA
-#define _PyObject_EXTRA_INIT
-#endif
-
-/* PyObject_HEAD defines the initial segment of every PyObject. */
-#define PyObject_HEAD                   PyObject ob_base;
-
-#define PyObject_HEAD_INIT(type)        \
-    { _PyObject_EXTRA_INIT              \
-    1, type },
-
-#define PyVarObject_HEAD_INIT(type, size)       \
-    { PyObject_HEAD_INIT(type) size },
-
-/* PyObject_VAR_HEAD defines the initial segment of all variable-size
- * container objects.  These end with a declaration of an array with 1
- * element, but enough space is malloc'ed so that the array actually
- * has room for ob_size elements.  Note that ob_size is an element count,
- * not necessarily a byte count.
- */
-#define PyObject_VAR_HEAD      PyVarObject ob_base;
-#define Py_INVALID_SIZE (Py_ssize_t)-1
-
-/* Nothing is actually declared to be a PyObject, but every pointer to
- * a Python object can be cast to a PyObject*.  This is inheritance built
- * by hand.  Similarly every pointer to a variable-size Python object can,
- * in addition, be cast to PyVarObject*.
- */
-typedef struct _object {
-    _PyObject_HEAD_EXTRA
-    Py_ssize_t ob_refcnt;
-    struct _typeobject *ob_type;
-} PyObject;
-
-typedef struct {
-    PyObject ob_base;
-    Py_ssize_t ob_size; /* Number of items in variable part */
-} PyVarObject;
-
-#define Py_REFCNT(ob)           (((PyObject*)(ob))->ob_refcnt)
-#define Py_TYPE(ob)             (((PyObject*)(ob))->ob_type)
-#define Py_SIZE(ob)             (((PyVarObject*)(ob))->ob_size)
-
-#ifndef Py_LIMITED_API
-/********************* String Literals ****************************************/
-/* This structure helps managing static strings. The basic usage goes like this:
-   Instead of doing
-
-       r = PyObject_CallMethod(o, "foo", "args", ...);
-
-   do
-
-       _Py_IDENTIFIER(foo);
-       ...
-       r = _PyObject_CallMethodId(o, &PyId_foo, "args", ...);
-
-   PyId_foo is a static variable, either on block level or file level. On first
-   usage, the string "foo" is interned, and the structures are linked. On interpreter
-   shutdown, all strings are released (through _PyUnicode_ClearStaticStrings).
-
-   Alternatively, _Py_static_string allows choosing the variable name.
-   _PyUnicode_FromId returns a borrowed reference to the interned string.
-   _PyObject_{Get,Set,Has}AttrId are __getattr__ versions using _Py_Identifier*.
-*/
-typedef struct _Py_Identifier {
-    struct _Py_Identifier *next;
-    const char* string;
-    PyObject *object;
-} _Py_Identifier;
-
-#define _Py_static_string_init(value) { .next = NULL, .string = value, .object = NULL }
-#define _Py_static_string(varname, value)  static _Py_Identifier varname = _Py_static_string_init(value)
-#define _Py_IDENTIFIER(varname) _Py_static_string(PyId_##varname, #varname)
-
-#endif /* !Py_LIMITED_API */
-
-/*
-Type objects contain a string containing the type name (to help somewhat
-in debugging), the allocation parameters (see PyObject_New() and
-PyObject_NewVar()),
-and methods for accessing objects of the type.  Methods are optional, a
-nil pointer meaning that particular kind of access is not available for
-this type.  The Py_DECREF() macro uses the tp_dealloc method without
-checking for a nil pointer; it should always be implemented except if
-the implementation can guarantee that the reference count will never
-reach zero (e.g., for statically allocated type objects).
-
-NB: the methods for certain type groups are now contained in separate
-method blocks.
-*/
-
-typedef PyObject * (*unaryfunc)(PyObject *);
-typedef PyObject * (*binaryfunc)(PyObject *, PyObject *);
-typedef PyObject * (*ternaryfunc)(PyObject *, PyObject *, PyObject *);
-typedef int (*inquiry)(PyObject *);
-typedef Py_ssize_t (*lenfunc)(PyObject *);
-typedef PyObject *(*ssizeargfunc)(PyObject *, Py_ssize_t);
-typedef PyObject *(*ssizessizeargfunc)(PyObject *, Py_ssize_t, Py_ssize_t);
-typedef int(*ssizeobjargproc)(PyObject *, Py_ssize_t, PyObject *);
-typedef int(*ssizessizeobjargproc)(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *);
-typedef int(*objobjargproc)(PyObject *, PyObject *, PyObject *);
-
-#ifndef Py_LIMITED_API
-/* buffer interface */
-typedef struct bufferinfo {
-    void *buf;
-    PyObject *obj;        /* owned reference */
-    Py_ssize_t len;
-    Py_ssize_t itemsize;  /* This is Py_ssize_t so it can be
-                             pointed to by strides in simple case.*/
-    int readonly;
-    int ndim;
-    char *format;
-    Py_ssize_t *shape;
-    Py_ssize_t *strides;
-    Py_ssize_t *suboffsets;
-    void *internal;
-} Py_buffer;
-
-typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
-typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
-
-/* Maximum number of dimensions */
-#define PyBUF_MAX_NDIM 64
-
-/* Flags for getting buffers */
-#define PyBUF_SIMPLE 0
-#define PyBUF_WRITABLE 0x0001
-/*  we used to include an E, backwards compatible alias  */
-#define PyBUF_WRITEABLE PyBUF_WRITABLE
-#define PyBUF_FORMAT 0x0004
-#define PyBUF_ND 0x0008
-#define PyBUF_STRIDES (0x0010 | PyBUF_ND)
-#define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
-#define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
-#define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
-#define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
-
-#define PyBUF_CONTIG (PyBUF_ND | PyBUF_WRITABLE)
-#define PyBUF_CONTIG_RO (PyBUF_ND)
-
-#define PyBUF_STRIDED (PyBUF_STRIDES | PyBUF_WRITABLE)
-#define PyBUF_STRIDED_RO (PyBUF_STRIDES)
-
-#define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_WRITABLE | PyBUF_FORMAT)
-#define PyBUF_RECORDS_RO (PyBUF_STRIDES | PyBUF_FORMAT)
-
-#define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_WRITABLE | PyBUF_FORMAT)
-#define PyBUF_FULL_RO (PyBUF_INDIRECT | PyBUF_FORMAT)
-
-
-#define PyBUF_READ  0x100
-#define PyBUF_WRITE 0x200
-
-/* End buffer interface */
-#endif /* Py_LIMITED_API */
-
-typedef int (*objobjproc)(PyObject *, PyObject *);
-typedef int (*visitproc)(PyObject *, void *);
-typedef int (*traverseproc)(PyObject *, visitproc, void *);
-
-#ifndef Py_LIMITED_API
-typedef struct {
-    /* Number implementations must check *both*
-       arguments for proper type and implement the necessary conversions
-       in the slot functions themselves. */
-
-    binaryfunc nb_add;
-    binaryfunc nb_subtract;
-    binaryfunc nb_multiply;
-    binaryfunc nb_remainder;
-    binaryfunc nb_divmod;
-    ternaryfunc nb_power;
-    unaryfunc nb_negative;
-    unaryfunc nb_positive;
-    unaryfunc nb_absolute;
-    inquiry nb_bool;
-    unaryfunc nb_invert;
-    binaryfunc nb_lshift;
-    binaryfunc nb_rshift;
-    binaryfunc nb_and;
-    binaryfunc nb_xor;
-    binaryfunc nb_or;
-    unaryfunc nb_int;
-    void *nb_reserved;  /* the slot formerly known as nb_long */
-    unaryfunc nb_float;
-
-    binaryfunc nb_inplace_add;
-    binaryfunc nb_inplace_subtract;
-    binaryfunc nb_inplace_multiply;
-    binaryfunc nb_inplace_remainder;
-    ternaryfunc nb_inplace_power;
-    binaryfunc nb_inplace_lshift;
-    binaryfunc nb_inplace_rshift;
-    binaryfunc nb_inplace_and;
-    binaryfunc nb_inplace_xor;
-    binaryfunc nb_inplace_or;
-
-    binaryfunc nb_floor_divide;
-    binaryfunc nb_true_divide;
-    binaryfunc nb_inplace_floor_divide;
-    binaryfunc nb_inplace_true_divide;
-
-    unaryfunc nb_index;
-
-    binaryfunc nb_matrix_multiply;
-    binaryfunc nb_inplace_matrix_multiply;
-} PyNumberMethods;
-
-typedef struct {
-    lenfunc sq_length;
-    binaryfunc sq_concat;
-    ssizeargfunc sq_repeat;
-    ssizeargfunc sq_item;
-    void *was_sq_slice;
-    ssizeobjargproc sq_ass_item;
-    void *was_sq_ass_slice;
-    objobjproc sq_contains;
-
-    binaryfunc sq_inplace_concat;
-    ssizeargfunc sq_inplace_repeat;
-} PySequenceMethods;
-
-typedef struct {
-    lenfunc mp_length;
-    binaryfunc mp_subscript;
-    objobjargproc mp_ass_subscript;
-} PyMappingMethods;
-
-typedef struct {
-    unaryfunc am_await;
-    unaryfunc am_aiter;
-    unaryfunc am_anext;
-} PyAsyncMethods;
-
-typedef struct {
-     getbufferproc bf_getbuffer;
-     releasebufferproc bf_releasebuffer;
-} PyBufferProcs;
-#endif /* Py_LIMITED_API */
-
-typedef void (*freefunc)(void *);
-typedef void (*destructor)(PyObject *);
-#ifndef Py_LIMITED_API
-/* We can't provide a full compile-time check that limited-API
-   users won't implement tp_print. However, not defining printfunc
-   and making tp_print of a different function pointer type
-   should at least cause a warning in most cases. */
-typedef int (*printfunc)(PyObject *, FILE *, int);
-#endif
-typedef PyObject *(*getattrfunc)(PyObject *, char *);
-typedef PyObject *(*getattrofunc)(PyObject *, PyObject *);
-typedef int (*setattrfunc)(PyObject *, char *, PyObject *);
-typedef int (*setattrofunc)(PyObject *, PyObject *, PyObject *);
-typedef PyObject *(*reprfunc)(PyObject *);
-typedef Py_hash_t (*hashfunc)(PyObject *);
-typedef PyObject *(*richcmpfunc) (PyObject *, PyObject *, int);
-typedef PyObject *(*getiterfunc) (PyObject *);
-typedef PyObject *(*iternextfunc) (PyObject *);
-typedef PyObject *(*descrgetfunc) (PyObject *, PyObject *, PyObject *);
-typedef int (*descrsetfunc) (PyObject *, PyObject *, PyObject *);
-typedef int (*initproc)(PyObject *, PyObject *, PyObject *);
-typedef PyObject *(*newfunc)(struct _typeobject *, PyObject *, PyObject *);
-typedef PyObject *(*allocfunc)(struct _typeobject *, Py_ssize_t);
-
-#ifdef Py_LIMITED_API
-typedef struct _typeobject PyTypeObject; /* opaque */
-#else
-typedef struct _typeobject {
-    PyObject_VAR_HEAD
-    const char *tp_name; /* For printing, in format "<module>.<name>" */
-    Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */
-
-    /* Methods to implement standard operations */
-
-    destructor tp_dealloc;
-    printfunc tp_print;
-    getattrfunc tp_getattr;
-    setattrfunc tp_setattr;
-    PyAsyncMethods *tp_as_async; /* formerly known as tp_compare (Python 2)
-                                    or tp_reserved (Python 3) */
-    reprfunc tp_repr;
-
-    /* Method suites for standard classes */
-
-    PyNumberMethods *tp_as_number;
-    PySequenceMethods *tp_as_sequence;
-    PyMappingMethods *tp_as_mapping;
-
-    /* More standard operations (here for binary compatibility) */
-
-    hashfunc tp_hash;
-    ternaryfunc tp_call;
-    reprfunc tp_str;
-    getattrofunc tp_getattro;
-    setattrofunc tp_setattro;
-
-    /* Functions to access object as input/output buffer */
-    PyBufferProcs *tp_as_buffer;
-
-    /* Flags to define presence of optional/expanded features */
-    unsigned long tp_flags;
-
-    const char *tp_doc; /* Documentation string */
-
-    /* Assigned meaning in release 2.0 */
-    /* call function for all accessible objects */
-    traverseproc tp_traverse;
-
-    /* delete references to contained objects */
-    inquiry tp_clear;
-
-    /* Assigned meaning in release 2.1 */
-    /* rich comparisons */
-    richcmpfunc tp_richcompare;
-
-    /* weak reference enabler */
-    Py_ssize_t tp_weaklistoffset;
-
-    /* Iterators */
-    getiterfunc tp_iter;
-    iternextfunc tp_iternext;
-
-    /* Attribute descriptor and subclassing stuff */
-    struct PyMethodDef *tp_methods;
-    struct PyMemberDef *tp_members;
-    struct PyGetSetDef *tp_getset;
-    struct _typeobject *tp_base;
-    PyObject *tp_dict;
-    descrgetfunc tp_descr_get;
-    descrsetfunc tp_descr_set;
-    Py_ssize_t tp_dictoffset;
-    initproc tp_init;
-    allocfunc tp_alloc;
-    newfunc tp_new;
-    freefunc tp_free; /* Low-level free-memory routine */
-    inquiry tp_is_gc; /* For PyObject_IS_GC */
-    PyObject *tp_bases;
-    PyObject *tp_mro; /* method resolution order */
-    PyObject *tp_cache;
-    PyObject *tp_subclasses;
-    PyObject *tp_weaklist;
-    destructor tp_del;
-
-    /* Type attribute cache version tag. Added in version 2.6 */
-    unsigned int tp_version_tag;
-
-    destructor tp_finalize;
-
-#ifdef COUNT_ALLOCS
-    /* these must be last and never explicitly initialized */
-    Py_ssize_t tp_allocs;
-    Py_ssize_t tp_frees;
-    Py_ssize_t tp_maxalloc;
-    struct _typeobject *tp_prev;
-    struct _typeobject *tp_next;
-#endif
-} PyTypeObject;
-#endif
-
-typedef struct{
-    int slot;    /* slot id, see below */
-    void *pfunc; /* function pointer */
-} PyType_Slot;
-
-typedef struct{
-    const char* name;
-    int basicsize;
-    int itemsize;
-    unsigned int flags;
-    PyType_Slot *slots; /* terminated by slot==0. */
-} PyType_Spec;
-
-PyAPI_FUNC(PyObject*) PyType_FromSpec(PyType_Spec*);
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(PyObject*) PyType_FromSpecWithBases(PyType_Spec*, PyObject*);
-#endif
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03040000
-PyAPI_FUNC(void*) PyType_GetSlot(PyTypeObject*, int);
-#endif
-
-#ifndef Py_LIMITED_API
-/* The *real* layout of a type object when allocated on the heap */
-typedef struct _heaptypeobject {
-    /* Note: there's a dependency on the order of these members
-       in slotptr() in typeobject.c . */
-    PyTypeObject ht_type;
-    PyAsyncMethods as_async;
-    PyNumberMethods as_number;
-    PyMappingMethods as_mapping;
-    PySequenceMethods as_sequence; /* as_sequence comes after as_mapping,
-                                      so that the mapping wins when both
-                                      the mapping and the sequence define
-                                      a given operator (e.g. __getitem__).
-                                      see add_operators() in typeobject.c . */
-    PyBufferProcs as_buffer;
-    PyObject *ht_name, *ht_slots, *ht_qualname;
-    struct _dictkeysobject *ht_cached_keys;
-    /* here are optional user slots, followed by the members. */
-} PyHeapTypeObject;
-
-/* access macro to the members which are floating "behind" the object */
-#define PyHeapType_GET_MEMBERS(etype) \
-    ((PyMemberDef *)(((char *)etype) + Py_TYPE(etype)->tp_basicsize))
-#endif
-
-/* Generic type check */
-PyAPI_FUNC(int) PyType_IsSubtype(PyTypeObject *, PyTypeObject *);
-#define PyObject_TypeCheck(ob, tp) \
-    (Py_TYPE(ob) == (tp) || PyType_IsSubtype(Py_TYPE(ob), (tp)))
-
-PyAPI_DATA(PyTypeObject) PyType_Type; /* built-in 'type' */
-PyAPI_DATA(PyTypeObject) PyBaseObject_Type; /* built-in 'object' */
-PyAPI_DATA(PyTypeObject) PySuper_Type; /* built-in 'super' */
-
-PyAPI_FUNC(unsigned long) PyType_GetFlags(PyTypeObject*);
-
-#define PyType_Check(op) \
-    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS)
-#define PyType_CheckExact(op) (Py_TYPE(op) == &PyType_Type)
-
-PyAPI_FUNC(int) PyType_Ready(PyTypeObject *);
-PyAPI_FUNC(PyObject *) PyType_GenericAlloc(PyTypeObject *, Py_ssize_t);
-PyAPI_FUNC(PyObject *) PyType_GenericNew(PyTypeObject *,
-                                               PyObject *, PyObject *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(const char *) _PyType_Name(PyTypeObject *);
-PyAPI_FUNC(PyObject *) _PyType_Lookup(PyTypeObject *, PyObject *);
-PyAPI_FUNC(PyObject *) _PyType_LookupId(PyTypeObject *, _Py_Identifier *);
-PyAPI_FUNC(PyObject *) _PyObject_LookupSpecial(PyObject *, _Py_Identifier *);
-PyAPI_FUNC(PyTypeObject *) _PyType_CalculateMetaclass(PyTypeObject *, PyObject *);
-#endif
-PyAPI_FUNC(unsigned int) PyType_ClearCache(void);
-PyAPI_FUNC(void) PyType_Modified(PyTypeObject *);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyType_GetDocFromInternalDoc(const char *, const char *);
-PyAPI_FUNC(PyObject *) _PyType_GetTextSignatureFromInternalDoc(const char *, const char *);
-#endif
-
-/* Generic operations on objects */
-#ifndef Py_LIMITED_API
-struct _Py_Identifier;
-PyAPI_FUNC(int) PyObject_Print(PyObject *, FILE *, int);
-PyAPI_FUNC(void) _Py_BreakPoint(void);
-PyAPI_FUNC(void) _PyObject_Dump(PyObject *);
-PyAPI_FUNC(int) _PyObject_IsFreed(PyObject *);
-#endif
-PyAPI_FUNC(PyObject *) PyObject_Repr(PyObject *);
-PyAPI_FUNC(PyObject *) PyObject_Str(PyObject *);
-PyAPI_FUNC(PyObject *) PyObject_ASCII(PyObject *);
-PyAPI_FUNC(PyObject *) PyObject_Bytes(PyObject *);
-PyAPI_FUNC(PyObject *) PyObject_RichCompare(PyObject *, PyObject *, int);
-PyAPI_FUNC(int) PyObject_RichCompareBool(PyObject *, PyObject *, int);
-PyAPI_FUNC(PyObject *) PyObject_GetAttrString(PyObject *, const char *);
-PyAPI_FUNC(int) PyObject_SetAttrString(PyObject *, const char *, PyObject *);
-PyAPI_FUNC(int) PyObject_HasAttrString(PyObject *, const char *);
-PyAPI_FUNC(PyObject *) PyObject_GetAttr(PyObject *, PyObject *);
-PyAPI_FUNC(int) PyObject_SetAttr(PyObject *, PyObject *, PyObject *);
-PyAPI_FUNC(int) PyObject_HasAttr(PyObject *, PyObject *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyObject_IsAbstract(PyObject *);
-PyAPI_FUNC(PyObject *) _PyObject_GetAttrId(PyObject *, struct _Py_Identifier *);
-PyAPI_FUNC(int) _PyObject_SetAttrId(PyObject *, struct _Py_Identifier *, PyObject *);
-PyAPI_FUNC(int) _PyObject_HasAttrId(PyObject *, struct _Py_Identifier *);
-/* Replacements of PyObject_GetAttr() and _PyObject_GetAttrId() which
-   don't raise AttributeError.
-
-   Return 1 and set *result != NULL if an attribute is found.
-   Return 0 and set *result == NULL if an attribute is not found;
-   an AttributeError is silenced.
-   Return -1 and set *result == NULL if an error other than AttributeError
-   is raised.
-*/
-PyAPI_FUNC(int) _PyObject_LookupAttr(PyObject *, PyObject *, PyObject **);
-PyAPI_FUNC(int) _PyObject_LookupAttrId(PyObject *, struct _Py_Identifier *, PyObject **);
-PyAPI_FUNC(PyObject **) _PyObject_GetDictPtr(PyObject *);
-#endif
-PyAPI_FUNC(PyObject *) PyObject_SelfIter(PyObject *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyObject_NextNotImplemented(PyObject *);
-#endif
-PyAPI_FUNC(PyObject *) PyObject_GenericGetAttr(PyObject *, PyObject *);
-PyAPI_FUNC(int) PyObject_GenericSetAttr(PyObject *,
-                                              PyObject *, PyObject *);
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(int) PyObject_GenericSetDict(PyObject *, PyObject *, void *);
-#endif
-PyAPI_FUNC(Py_hash_t) PyObject_Hash(PyObject *);
-PyAPI_FUNC(Py_hash_t) PyObject_HashNotImplemented(PyObject *);
-PyAPI_FUNC(int) PyObject_IsTrue(PyObject *);
-PyAPI_FUNC(int) PyObject_Not(PyObject *);
-PyAPI_FUNC(int) PyCallable_Check(PyObject *);
-
-PyAPI_FUNC(void) PyObject_ClearWeakRefs(PyObject *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) PyObject_CallFinalizer(PyObject *);
-PyAPI_FUNC(int) PyObject_CallFinalizerFromDealloc(PyObject *);
-#endif
-
-#ifndef Py_LIMITED_API
-/* Same as PyObject_Generic{Get,Set}Attr, but passing the attributes
-   dict as the last parameter. */
-PyAPI_FUNC(PyObject *)
-_PyObject_GenericGetAttrWithDict(PyObject *, PyObject *, PyObject *, int);
-PyAPI_FUNC(int)
-_PyObject_GenericSetAttrWithDict(PyObject *, PyObject *,
-                                 PyObject *, PyObject *);
-#endif /* !Py_LIMITED_API */
-
-/* Helper to look up a builtin object */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *)
-_PyObject_GetBuiltin(const char *name);
-#endif
-
-/* PyObject_Dir(obj) acts like Python builtins.dir(obj), returning a
-   list of strings.  PyObject_Dir(NULL) is like builtins.dir(),
-   returning the names of the current locals.  In this case, if there are
-   no current locals, NULL is returned, and PyErr_Occurred() is false.
-*/
-PyAPI_FUNC(PyObject *) PyObject_Dir(PyObject *);
-
-
-/* Helpers for printing recursive container types */
-PyAPI_FUNC(int) Py_ReprEnter(PyObject *);
-PyAPI_FUNC(void) Py_ReprLeave(PyObject *);
-
-/* Flag bits for printing: */
-#define Py_PRINT_RAW    1       /* No string quotes etc. */
-
-/*
-`Type flags (tp_flags)
-
-These flags are used to extend the type structure in a backwards-compatible
-fashion. Extensions can use the flags to indicate (and test) when a given
-type structure contains a new feature. The Python core will use these when
-introducing new functionality between major revisions (to avoid mid-version
-changes in the PYTHON_API_VERSION).
-
-Arbitration of the flag bit positions will need to be coordinated among
-all extension writers who publicly release their extensions (this will
-be fewer than you might expect!)..
-
-Most flags were removed as of Python 3.0 to make room for new flags.  (Some
-flags are not for backwards compatibility but to indicate the presence of an
-optional feature; these flags remain of course.)
-
-Type definitions should use Py_TPFLAGS_DEFAULT for their tp_flags value.
-
-Code can use PyType_HasFeature(type_ob, flag_value) to test whether the
-given type object has a specified feature.
-*/
-
-/* Set if the type object is dynamically allocated */
-#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
-
-/* Set if the type allows subclassing */
-#define Py_TPFLAGS_BASETYPE (1UL << 10)
-
-/* Set if the type is 'ready' -- fully initialized */
-#define Py_TPFLAGS_READY (1UL << 12)
-
-/* Set while the type is being 'readied', to prevent recursive ready calls */
-#define Py_TPFLAGS_READYING (1UL << 13)
-
-/* Objects support garbage collection (see objimp.h) */
-#define Py_TPFLAGS_HAVE_GC (1UL << 14)
-
-/* These two bits are preserved for Stackless Python, next after this is 17 */
-#ifdef STACKLESS
-#define Py_TPFLAGS_HAVE_STACKLESS_EXTENSION (3UL << 15)
-#else
-#define Py_TPFLAGS_HAVE_STACKLESS_EXTENSION 0
-#endif
-
-/* Objects support type attribute cache */
-#define Py_TPFLAGS_HAVE_VERSION_TAG   (1UL << 18)
-#define Py_TPFLAGS_VALID_VERSION_TAG  (1UL << 19)
-
-/* Type is abstract and cannot be instantiated */
-#define Py_TPFLAGS_IS_ABSTRACT (1UL << 20)
-
-/* These flags are used to determine if a type is a subclass. */
-#define Py_TPFLAGS_LONG_SUBCLASS        (1UL << 24)
-#define Py_TPFLAGS_LIST_SUBCLASS        (1UL << 25)
-#define Py_TPFLAGS_TUPLE_SUBCLASS       (1UL << 26)
-#define Py_TPFLAGS_BYTES_SUBCLASS       (1UL << 27)
-#define Py_TPFLAGS_UNICODE_SUBCLASS     (1UL << 28)
-#define Py_TPFLAGS_DICT_SUBCLASS        (1UL << 29)
-#define Py_TPFLAGS_BASE_EXC_SUBCLASS    (1UL << 30)
-#define Py_TPFLAGS_TYPE_SUBCLASS        (1UL << 31)
-
-#define Py_TPFLAGS_DEFAULT  ( \
-                 Py_TPFLAGS_HAVE_STACKLESS_EXTENSION | \
-                 Py_TPFLAGS_HAVE_VERSION_TAG | \
-                0)
-
-/* NOTE: The following flags reuse lower bits (removed as part of the
- * Python 3.0 transition). */
-
-/* Type structure has tp_finalize member (3.4) */
-#define Py_TPFLAGS_HAVE_FINALIZE (1UL << 0)
-
-#ifdef Py_LIMITED_API
-#define PyType_HasFeature(t,f)  ((PyType_GetFlags(t) & (f)) != 0)
-#else
-#define PyType_HasFeature(t,f)  (((t)->tp_flags & (f)) != 0)
-#endif
-#define PyType_FastSubclass(t,f)  PyType_HasFeature(t,f)
-
-
-/*
-The macros Py_INCREF(op) and Py_DECREF(op) are used to increment or decrement
-reference counts.  Py_DECREF calls the object's deallocator function when
-the refcount falls to 0; for
-objects that don't contain references to other objects or heap memory
-this can be the standard function free().  Both macros can be used
-wherever a void expression is allowed.  The argument must not be a
-NULL pointer.  If it may be NULL, use Py_XINCREF/Py_XDECREF instead.
-The macro _Py_NewReference(op) initialize reference counts to 1, and
-in special builds (Py_REF_DEBUG, Py_TRACE_REFS) performs additional
-bookkeeping appropriate to the special build.
-
-We assume that the reference count field can never overflow; this can
-be proven when the size of the field is the same as the pointer size, so
-we ignore the possibility.  Provided a C int is at least 32 bits (which
-is implicitly assumed in many parts of this code), that's enough for
-about 2**31 references to an object.
-
-XXX The following became out of date in Python 2.2, but I'm not sure
-XXX what the full truth is now.  Certainly, heap-allocated type objects
-XXX can and should be deallocated.
-Type objects should never be deallocated; the type pointer in an object
-is not considered to be a reference to the type object, to save
-complications in the deallocation function.  (This is actually a
-decision that's up to the implementer of each new type so if you want,
-you can count such references to the type object.)
-*/
-
-/* First define a pile of simple helper macros, one set per special
- * build symbol.  These either expand to the obvious things, or to
- * nothing at all when the special mode isn't in effect.  The main
- * macros can later be defined just once then, yet expand to different
- * things depending on which special build options are and aren't in effect.
- * Trust me <wink>:  while painful, this is 20x easier to understand than,
- * e.g, defining _Py_NewReference five different times in a maze of nested
- * #ifdefs (we used to do that -- it was impenetrable).
- */
-#ifdef Py_REF_DEBUG
-PyAPI_DATA(Py_ssize_t) _Py_RefTotal;
-PyAPI_FUNC(void) _Py_NegativeRefcount(const char *fname,
-                                            int lineno, PyObject *op);
-PyAPI_FUNC(Py_ssize_t) _Py_GetRefTotal(void);
-#define _Py_INC_REFTOTAL        _Py_RefTotal++
-#define _Py_DEC_REFTOTAL        _Py_RefTotal--
-#define _Py_REF_DEBUG_COMMA     ,
-#define _Py_CHECK_REFCNT(OP)                                    \
-{       if (((PyObject*)OP)->ob_refcnt < 0)                             \
-                _Py_NegativeRefcount(__FILE__, __LINE__,        \
-                                     (PyObject *)(OP));         \
-}
-/* Py_REF_DEBUG also controls the display of refcounts and memory block
- * allocations at the interactive prompt and at interpreter shutdown
- */
-PyAPI_FUNC(void) _PyDebug_PrintTotalRefs(void);
-#else
-#define _Py_INC_REFTOTAL
-#define _Py_DEC_REFTOTAL
-#define _Py_REF_DEBUG_COMMA
-#define _Py_CHECK_REFCNT(OP)    /* a semicolon */;
-#endif /* Py_REF_DEBUG */
-
-#ifdef COUNT_ALLOCS
-PyAPI_FUNC(void) inc_count(PyTypeObject *);
-PyAPI_FUNC(void) dec_count(PyTypeObject *);
-#define _Py_INC_TPALLOCS(OP)    inc_count(Py_TYPE(OP))
-#define _Py_INC_TPFREES(OP)     dec_count(Py_TYPE(OP))
-#define _Py_DEC_TPFREES(OP)     Py_TYPE(OP)->tp_frees--
-#define _Py_COUNT_ALLOCS_COMMA  ,
-#else
-#define _Py_INC_TPALLOCS(OP)
-#define _Py_INC_TPFREES(OP)
-#define _Py_DEC_TPFREES(OP)
-#define _Py_COUNT_ALLOCS_COMMA
-#endif /* COUNT_ALLOCS */
-
-#ifdef Py_TRACE_REFS
-/* Py_TRACE_REFS is such major surgery that we call external routines. */
-PyAPI_FUNC(void) _Py_NewReference(PyObject *);
-PyAPI_FUNC(void) _Py_ForgetReference(PyObject *);
-PyAPI_FUNC(void) _Py_Dealloc(PyObject *);
-PyAPI_FUNC(void) _Py_PrintReferences(FILE *);
-PyAPI_FUNC(void) _Py_PrintReferenceAddresses(FILE *);
-PyAPI_FUNC(void) _Py_AddToAllObjects(PyObject *, int force);
-
-#else
-/* Without Py_TRACE_REFS, there's little enough to do that we expand code
- * inline.
- */
-#define _Py_NewReference(op) (                          \
-    _Py_INC_TPALLOCS(op) _Py_COUNT_ALLOCS_COMMA         \
-    _Py_INC_REFTOTAL  _Py_REF_DEBUG_COMMA               \
-    Py_REFCNT(op) = 1)
-
-#define _Py_ForgetReference(op) _Py_INC_TPFREES(op)
-
-#ifdef Py_LIMITED_API
-PyAPI_FUNC(void) _Py_Dealloc(PyObject *);
-#else
-#define _Py_Dealloc(op) (                               \
-    _Py_INC_TPFREES(op) _Py_COUNT_ALLOCS_COMMA          \
-    (*Py_TYPE(op)->tp_dealloc)((PyObject *)(op)))
-#endif
-#endif /* !Py_TRACE_REFS */
-
-#define Py_INCREF(op) (                         \
-    _Py_INC_REFTOTAL  _Py_REF_DEBUG_COMMA       \
-    ((PyObject *)(op))->ob_refcnt++)
-
-#define Py_DECREF(op)                                   \
-    do {                                                \
-        PyObject *_py_decref_tmp = (PyObject *)(op);    \
-        if (_Py_DEC_REFTOTAL  _Py_REF_DEBUG_COMMA       \
-        --(_py_decref_tmp)->ob_refcnt != 0)             \
-            _Py_CHECK_REFCNT(_py_decref_tmp)            \
-        else                                            \
-            _Py_Dealloc(_py_decref_tmp);                \
-    } while (0)
-
-/* Safely decref `op` and set `op` to NULL, especially useful in tp_clear
- * and tp_dealloc implementations.
- *
- * Note that "the obvious" code can be deadly:
- *
- *     Py_XDECREF(op);
- *     op = NULL;
- *
- * Typically, `op` is something like self->containee, and `self` is done
- * using its `containee` member.  In the code sequence above, suppose
- * `containee` is non-NULL with a refcount of 1.  Its refcount falls to
- * 0 on the first line, which can trigger an arbitrary amount of code,
- * possibly including finalizers (like __del__ methods or weakref callbacks)
- * coded in Python, which in turn can release the GIL and allow other threads
- * to run, etc.  Such code may even invoke methods of `self` again, or cause
- * cyclic gc to trigger, but-- oops! --self->containee still points to the
- * object being torn down, and it may be in an insane state while being torn
- * down.  This has in fact been a rich historic source of miserable (rare &
- * hard-to-diagnose) segfaulting (and other) bugs.
- *
- * The safe way is:
- *
- *      Py_CLEAR(op);
- *
- * That arranges to set `op` to NULL _before_ decref'ing, so that any code
- * triggered as a side-effect of `op` getting torn down no longer believes
- * `op` points to a valid object.
- *
- * There are cases where it's safe to use the naive code, but they're brittle.
- * For example, if `op` points to a Python integer, you know that destroying
- * one of those can't cause problems -- but in part that relies on that
- * Python integers aren't currently weakly referencable.  Best practice is
- * to use Py_CLEAR() even if you can't think of a reason for why you need to.
- */
-#define Py_CLEAR(op)                            \
-    do {                                        \
-        PyObject *_py_tmp = (PyObject *)(op);   \
-        if (_py_tmp != NULL) {                  \
-            (op) = NULL;                        \
-            Py_DECREF(_py_tmp);                 \
-        }                                       \
-    } while (0)
-
-/* Macros to use in case the object pointer may be NULL: */
-#define Py_XINCREF(op)                                \
-    do {                                              \
-        PyObject *_py_xincref_tmp = (PyObject *)(op); \
-        if (_py_xincref_tmp != NULL)                  \
-            Py_INCREF(_py_xincref_tmp);               \
-    } while (0)
-
-#define Py_XDECREF(op)                                \
-    do {                                              \
-        PyObject *_py_xdecref_tmp = (PyObject *)(op); \
-        if (_py_xdecref_tmp != NULL)                  \
-            Py_DECREF(_py_xdecref_tmp);               \
-    } while (0)
-
-#ifndef Py_LIMITED_API
-/* Safely decref `op` and set `op` to `op2`.
- *
- * As in case of Py_CLEAR "the obvious" code can be deadly:
- *
- *     Py_DECREF(op);
- *     op = op2;
- *
- * The safe way is:
- *
- *      Py_SETREF(op, op2);
- *
- * That arranges to set `op` to `op2` _before_ decref'ing, so that any code
- * triggered as a side-effect of `op` getting torn down no longer believes
- * `op` points to a valid object.
- *
- * Py_XSETREF is a variant of Py_SETREF that uses Py_XDECREF instead of
- * Py_DECREF.
- */
-
-#define Py_SETREF(op, op2)                      \
-    do {                                        \
-        PyObject *_py_tmp = (PyObject *)(op);   \
-        (op) = (op2);                           \
-        Py_DECREF(_py_tmp);                     \
-    } while (0)
-
-#define Py_XSETREF(op, op2)                     \
-    do {                                        \
-        PyObject *_py_tmp = (PyObject *)(op);   \
-        (op) = (op2);                           \
-        Py_XDECREF(_py_tmp);                    \
-    } while (0)
-
-#endif /* ifndef Py_LIMITED_API */
-
-/*
-These are provided as conveniences to Python runtime embedders, so that
-they can have object code that is not dependent on Python compilation flags.
-*/
-PyAPI_FUNC(void) Py_IncRef(PyObject *);
-PyAPI_FUNC(void) Py_DecRef(PyObject *);
-
-#ifndef Py_LIMITED_API
-PyAPI_DATA(PyTypeObject) _PyNone_Type;
-PyAPI_DATA(PyTypeObject) _PyNotImplemented_Type;
-#endif /* !Py_LIMITED_API */
-
-/*
-_Py_NoneStruct is an object of undefined type which can be used in contexts
-where NULL (nil) is not suitable (since NULL often means 'error').
-
-Don't forget to apply Py_INCREF() when returning this value!!!
-*/
-PyAPI_DATA(PyObject) _Py_NoneStruct; /* Don't use this directly */
-#define Py_None (&_Py_NoneStruct)
-
-/* Macro for returning Py_None from a function */
-#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None
-
-/*
-Py_NotImplemented is a singleton used to signal that an operation is
-not implemented for a given type combination.
-*/
-PyAPI_DATA(PyObject) _Py_NotImplementedStruct; /* Don't use this directly */
-#define Py_NotImplemented (&_Py_NotImplementedStruct)
-
-/* Macro for returning Py_NotImplemented from a function */
-#define Py_RETURN_NOTIMPLEMENTED \
-    return Py_INCREF(Py_NotImplemented), Py_NotImplemented
-
-/* Rich comparison opcodes */
-#define Py_LT 0
-#define Py_LE 1
-#define Py_EQ 2
-#define Py_NE 3
-#define Py_GT 4
-#define Py_GE 5
-
-/*
- * Macro for implementing rich comparisons
- *
- * Needs to be a macro because any C-comparable type can be used.
- */
-#define Py_RETURN_RICHCOMPARE(val1, val2, op)                               \
-    do {                                                                    \
-        switch (op) {                                                       \
-        case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
-        case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
-        case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
-        case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
-        case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
-        case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
-        default:                                                            \
-            Py_UNREACHABLE();                                               \
-        }                                                                   \
-    } while (0)
-
-#ifndef Py_LIMITED_API
-/* Maps Py_LT to Py_GT, ..., Py_GE to Py_LE.
- * Defined in object.c.
- */
-PyAPI_DATA(int) _Py_SwappedOp[];
-#endif /* !Py_LIMITED_API */
-
-
-/*
-More conventions
-================
-
-Argument Checking
------------------
-
-Functions that take objects as arguments normally don't check for nil
-arguments, but they do check the type of the argument, and return an
-error if the function doesn't apply to the type.
-
-Failure Modes
--------------
-
-Functions may fail for a variety of reasons, including running out of
-memory.  This is communicated to the caller in two ways: an error string
-is set (see errors.h), and the function result differs: functions that
-normally return a pointer return NULL for failure, functions returning
-an integer return -1 (which could be a legal return value too!), and
-other functions return 0 for success and -1 for failure.
-Callers should always check for errors before using the result.  If
-an error was set, the caller must either explicitly clear it, or pass
-the error on to its caller.
-
-Reference Counts
-----------------
-
-It takes a while to get used to the proper usage of reference counts.
-
-Functions that create an object set the reference count to 1; such new
-objects must be stored somewhere or destroyed again with Py_DECREF().
-Some functions that 'store' objects, such as PyTuple_SetItem() and
-PyList_SetItem(),
-don't increment the reference count of the object, since the most
-frequent use is to store a fresh object.  Functions that 'retrieve'
-objects, such as PyTuple_GetItem() and PyDict_GetItemString(), also
-don't increment
-the reference count, since most frequently the object is only looked at
-quickly.  Thus, to retrieve an object and store it again, the caller
-must call Py_INCREF() explicitly.
-
-NOTE: functions that 'consume' a reference count, like
-PyList_SetItem(), consume the reference even if the object wasn't
-successfully stored, to simplify error handling.
-
-It seems attractive to make other functions that take an object as
-argument consume a reference count; however, this may quickly get
-confusing (even the current practice is already confusing).  Consider
-it carefully, it may save lots of calls to Py_INCREF() and Py_DECREF() at
-times.
-*/
-
-
-/* Trashcan mechanism, thanks to Christian Tismer.
-
-When deallocating a container object, it's possible to trigger an unbounded
-chain of deallocations, as each Py_DECREF in turn drops the refcount on "the
-next" object in the chain to 0.  This can easily lead to stack faults, and
-especially in threads (which typically have less stack space to work with).
-
-A container object that participates in cyclic gc can avoid this by
-bracketing the body of its tp_dealloc function with a pair of macros:
-
-static void
-mytype_dealloc(mytype *p)
-{
-    ... declarations go here ...
-
-    PyObject_GC_UnTrack(p);        // must untrack first
-    Py_TRASHCAN_SAFE_BEGIN(p)
-    ... The body of the deallocator goes here, including all calls ...
-    ... to Py_DECREF on contained objects.                         ...
-    Py_TRASHCAN_SAFE_END(p)
-}
-
-CAUTION:  Never return from the middle of the body!  If the body needs to
-"get out early", put a label immediately before the Py_TRASHCAN_SAFE_END
-call, and goto it.  Else the call-depth counter (see below) will stay
-above 0 forever, and the trashcan will never get emptied.
-
-How it works:  The BEGIN macro increments a call-depth counter.  So long
-as this counter is small, the body of the deallocator is run directly without
-further ado.  But if the counter gets large, it instead adds p to a list of
-objects to be deallocated later, skips the body of the deallocator, and
-resumes execution after the END macro.  The tp_dealloc routine then returns
-without deallocating anything (and so unbounded call-stack depth is avoided).
-
-When the call stack finishes unwinding again, code generated by the END macro
-notices this, and calls another routine to deallocate all the objects that
-may have been added to the list of deferred deallocations.  In effect, a
-chain of N deallocations is broken into (N-1)/(PyTrash_UNWIND_LEVEL-1) pieces,
-with the call stack never exceeding a depth of PyTrash_UNWIND_LEVEL.
-*/
-
-#ifndef Py_LIMITED_API
-/* This is the old private API, invoked by the macros before 3.2.4.
-   Kept for binary compatibility of extensions using the stable ABI. */
-PyAPI_FUNC(void) _PyTrash_deposit_object(PyObject*);
-PyAPI_FUNC(void) _PyTrash_destroy_chain(void);
-#endif /* !Py_LIMITED_API */
-
-/* The new thread-safe private API, invoked by the macros below. */
-PyAPI_FUNC(void) _PyTrash_thread_deposit_object(PyObject*);
-PyAPI_FUNC(void) _PyTrash_thread_destroy_chain(void);
-
-#define PyTrash_UNWIND_LEVEL 50
-
-#define Py_TRASHCAN_SAFE_BEGIN(op) \
-    do { \
-        PyThreadState *_tstate = PyThreadState_GET(); \
-        if (_tstate->trash_delete_nesting < PyTrash_UNWIND_LEVEL) { \
-            ++_tstate->trash_delete_nesting;
-            /* The body of the deallocator is here. */
-#define Py_TRASHCAN_SAFE_END(op) \
-            --_tstate->trash_delete_nesting; \
-            if (_tstate->trash_delete_later && _tstate->trash_delete_nesting <= 0) \
-                _PyTrash_thread_destroy_chain(); \
-        } \
-        else \
-            _PyTrash_thread_deposit_object((PyObject*)op); \
-    } while (0);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void)
-_PyDebugAllocatorStats(FILE *out, const char *block_name, int num_blocks,
-                       size_t sizeof_block);
-PyAPI_FUNC(void)
-_PyObject_DebugTypeStats(FILE *out);
-#endif /* ifndef Py_LIMITED_API */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_OBJECT_H */
diff --git a/pythonsdk/include/objimpl.h b/pythonsdk/include/objimpl.h
deleted file mode 100644
index 67c1785..0000000
--- a/pythonsdk/include/objimpl.h
+++ /dev/null
@@ -1,374 +0,0 @@
-/* The PyObject_ memory family:  high-level object memory interfaces.
-   See pymem.h for the low-level PyMem_ family.
-*/
-
-#ifndef Py_OBJIMPL_H
-#define Py_OBJIMPL_H
-
-#include "pymem.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* BEWARE:
-
-   Each interface exports both functions and macros.  Extension modules should
-   use the functions, to ensure binary compatibility across Python versions.
-   Because the Python implementation is free to change internal details, and
-   the macros may (or may not) expose details for speed, if you do use the
-   macros you must recompile your extensions with each Python release.
-
-   Never mix calls to PyObject_ memory functions with calls to the platform
-   malloc/realloc/ calloc/free, or with calls to PyMem_.
-*/
-
-/*
-Functions and macros for modules that implement new object types.
-
- - PyObject_New(type, typeobj) allocates memory for a new object of the given
-   type, and initializes part of it.  'type' must be the C structure type used
-   to represent the object, and 'typeobj' the address of the corresponding
-   type object.  Reference count and type pointer are filled in; the rest of
-   the bytes of the object are *undefined*!  The resulting expression type is
-   'type *'.  The size of the object is determined by the tp_basicsize field
-   of the type object.
-
- - PyObject_NewVar(type, typeobj, n) is similar but allocates a variable-size
-   object with room for n items.  In addition to the refcount and type pointer
-   fields, this also fills in the ob_size field.
-
- - PyObject_Del(op) releases the memory allocated for an object.  It does not
-   run a destructor -- it only frees the memory.  PyObject_Free is identical.
-
- - PyObject_Init(op, typeobj) and PyObject_InitVar(op, typeobj, n) don't
-   allocate memory.  Instead of a 'type' parameter, they take a pointer to a
-   new object (allocated by an arbitrary allocator), and initialize its object
-   header fields.
-
-Note that objects created with PyObject_{New, NewVar} are allocated using the
-specialized Python allocator (implemented in obmalloc.c), if WITH_PYMALLOC is
-enabled.  In addition, a special debugging allocator is used if PYMALLOC_DEBUG
-is also #defined.
-
-In case a specific form of memory management is needed (for example, if you
-must use the platform malloc heap(s), or shared memory, or C++ local storage or
-operator new), you must first allocate the object with your custom allocator,
-then pass its pointer to PyObject_{Init, InitVar} for filling in its Python-
-specific fields:  reference count, type pointer, possibly others.  You should
-be aware that Python has no control over these objects because they don't
-cooperate with the Python memory manager.  Such objects may not be eligible
-for automatic garbage collection and you have to make sure that they are
-released accordingly whenever their destructor gets called (cf. the specific
-form of memory management you're using).
-
-Unless you have specific memory management requirements, use
-PyObject_{New, NewVar, Del}.
-*/
-
-/*
- * Raw object memory interface
- * ===========================
- */
-
-/* Functions to call the same malloc/realloc/free as used by Python's
-   object allocator.  If WITH_PYMALLOC is enabled, these may differ from
-   the platform malloc/realloc/free.  The Python object allocator is
-   designed for fast, cache-conscious allocation of many "small" objects,
-   and with low hidden memory overhead.
-
-   PyObject_Malloc(0) returns a unique non-NULL pointer if possible.
-
-   PyObject_Realloc(NULL, n) acts like PyObject_Malloc(n).
-   PyObject_Realloc(p != NULL, 0) does not return  NULL, or free the memory
-   at p.
-
-   Returned pointers must be checked for NULL explicitly; no action is
-   performed on failure other than to return NULL (no warning it printed, no
-   exception is set, etc).
-
-   For allocating objects, use PyObject_{New, NewVar} instead whenever
-   possible.  The PyObject_{Malloc, Realloc, Free} family is exposed
-   so that you can exploit Python's small-block allocator for non-object
-   uses.  If you must use these routines to allocate object memory, make sure
-   the object gets initialized via PyObject_{Init, InitVar} after obtaining
-   the raw memory.
-*/
-PyAPI_FUNC(void *) PyObject_Malloc(size_t size);
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-PyAPI_FUNC(void *) PyObject_Calloc(size_t nelem, size_t elsize);
-#endif
-PyAPI_FUNC(void *) PyObject_Realloc(void *ptr, size_t new_size);
-PyAPI_FUNC(void) PyObject_Free(void *ptr);
-
-#ifndef Py_LIMITED_API
-/* This function returns the number of allocated memory blocks, regardless of size */
-PyAPI_FUNC(Py_ssize_t) _Py_GetAllocatedBlocks(void);
-#endif /* !Py_LIMITED_API */
-
-/* Macros */
-#ifdef WITH_PYMALLOC
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyObject_DebugMallocStats(FILE *out);
-#endif /* #ifndef Py_LIMITED_API */
-#endif
-
-/* Macros */
-#define PyObject_MALLOC         PyObject_Malloc
-#define PyObject_REALLOC        PyObject_Realloc
-#define PyObject_FREE           PyObject_Free
-#define PyObject_Del            PyObject_Free
-#define PyObject_DEL            PyObject_Free
-
-
-/*
- * Generic object allocator interface
- * ==================================
- */
-
-/* Functions */
-PyAPI_FUNC(PyObject *) PyObject_Init(PyObject *, PyTypeObject *);
-PyAPI_FUNC(PyVarObject *) PyObject_InitVar(PyVarObject *,
-                                                 PyTypeObject *, Py_ssize_t);
-PyAPI_FUNC(PyObject *) _PyObject_New(PyTypeObject *);
-PyAPI_FUNC(PyVarObject *) _PyObject_NewVar(PyTypeObject *, Py_ssize_t);
-
-#define PyObject_New(type, typeobj) \
-                ( (type *) _PyObject_New(typeobj) )
-#define PyObject_NewVar(type, typeobj, n) \
-                ( (type *) _PyObject_NewVar((typeobj), (n)) )
-
-/* Macros trading binary compatibility for speed. See also pymem.h.
-   Note that these macros expect non-NULL object pointers.*/
-#define PyObject_INIT(op, typeobj) \
-    ( Py_TYPE(op) = (typeobj), _Py_NewReference((PyObject *)(op)), (op) )
-#define PyObject_INIT_VAR(op, typeobj, size) \
-    ( Py_SIZE(op) = (size), PyObject_INIT((op), (typeobj)) )
-
-#define _PyObject_SIZE(typeobj) ( (typeobj)->tp_basicsize )
-
-/* _PyObject_VAR_SIZE returns the number of bytes (as size_t) allocated for a
-   vrbl-size object with nitems items, exclusive of gc overhead (if any).  The
-   value is rounded up to the closest multiple of sizeof(void *), in order to
-   ensure that pointer fields at the end of the object are correctly aligned
-   for the platform (this is of special importance for subclasses of, e.g.,
-   str or int, so that pointers can be stored after the embedded data).
-
-   Note that there's no memory wastage in doing this, as malloc has to
-   return (at worst) pointer-aligned memory anyway.
-*/
-#if ((SIZEOF_VOID_P - 1) & SIZEOF_VOID_P) != 0
-#   error "_PyObject_VAR_SIZE requires SIZEOF_VOID_P be a power of 2"
-#endif
-
-#define _PyObject_VAR_SIZE(typeobj, nitems)     \
-    _Py_SIZE_ROUND_UP((typeobj)->tp_basicsize + \
-        (nitems)*(typeobj)->tp_itemsize,        \
-        SIZEOF_VOID_P)
-
-#define PyObject_NEW(type, typeobj) \
-( (type *) PyObject_Init( \
-    (PyObject *) PyObject_MALLOC( _PyObject_SIZE(typeobj) ), (typeobj)) )
-
-#define PyObject_NEW_VAR(type, typeobj, n) \
-( (type *) PyObject_InitVar( \
-      (PyVarObject *) PyObject_MALLOC(_PyObject_VAR_SIZE((typeobj),(n)) ),\
-      (typeobj), (n)) )
-
-/* This example code implements an object constructor with a custom
-   allocator, where PyObject_New is inlined, and shows the important
-   distinction between two steps (at least):
-       1) the actual allocation of the object storage;
-       2) the initialization of the Python specific fields
-      in this storage with PyObject_{Init, InitVar}.
-
-   PyObject *
-   YourObject_New(...)
-   {
-       PyObject *op;
-
-       op = (PyObject *) Your_Allocator(_PyObject_SIZE(YourTypeStruct));
-       if (op == NULL)
-       return PyErr_NoMemory();
-
-       PyObject_Init(op, &YourTypeStruct);
-
-       op->ob_field = value;
-       ...
-       return op;
-   }
-
-   Note that in C++, the use of the new operator usually implies that
-   the 1st step is performed automatically for you, so in a C++ class
-   constructor you would start directly with PyObject_Init/InitVar
-*/
-
-#ifndef Py_LIMITED_API
-typedef struct {
-    /* user context passed as the first argument to the 2 functions */
-    void *ctx;
-
-    /* allocate an arena of size bytes */
-    void* (*alloc) (void *ctx, size_t size);
-
-    /* free an arena */
-    void (*free) (void *ctx, void *ptr, size_t size);
-} PyObjectArenaAllocator;
-
-/* Get the arena allocator. */
-PyAPI_FUNC(void) PyObject_GetArenaAllocator(PyObjectArenaAllocator *allocator);
-
-/* Set the arena allocator. */
-PyAPI_FUNC(void) PyObject_SetArenaAllocator(PyObjectArenaAllocator *allocator);
-#endif
-
-
-/*
- * Garbage Collection Support
- * ==========================
- */
-
-/* C equivalent of gc.collect() which ignores the state of gc.enabled. */
-PyAPI_FUNC(Py_ssize_t) PyGC_Collect(void);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(Py_ssize_t) _PyGC_CollectNoFail(void);
-PyAPI_FUNC(Py_ssize_t) _PyGC_CollectIfEnabled(void);
-#endif
-
-/* Test if a type has a GC head */
-#define PyType_IS_GC(t) PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC)
-
-/* Test if an object has a GC head */
-#define PyObject_IS_GC(o) (PyType_IS_GC(Py_TYPE(o)) && \
-    (Py_TYPE(o)->tp_is_gc == NULL || Py_TYPE(o)->tp_is_gc(o)))
-
-PyAPI_FUNC(PyVarObject *) _PyObject_GC_Resize(PyVarObject *, Py_ssize_t);
-#define PyObject_GC_Resize(type, op, n) \
-                ( (type *) _PyObject_GC_Resize((PyVarObject *)(op), (n)) )
-
-/* GC information is stored BEFORE the object structure. */
-#ifndef Py_LIMITED_API
-typedef union _gc_head {
-    struct {
-        union _gc_head *gc_next;
-        union _gc_head *gc_prev;
-        Py_ssize_t gc_refs;
-    } gc;
-    long double dummy;  /* force worst-case alignment */
-    // malloc returns memory block aligned for any built-in types and
-    // long double is the largest standard C type.
-    // On amd64 linux, long double requires 16 byte alignment.
-    // See bpo-27987 for more discussion.
-} PyGC_Head;
-
-extern PyGC_Head *_PyGC_generation0;
-
-#define _Py_AS_GC(o) ((PyGC_Head *)(o)-1)
-
-/* Bit 0 is set when tp_finalize is called */
-#define _PyGC_REFS_MASK_FINALIZED  (1 << 0)
-/* The (N-1) most significant bits contain the gc state / refcount */
-#define _PyGC_REFS_SHIFT           (1)
-#define _PyGC_REFS_MASK            (((size_t) -1) << _PyGC_REFS_SHIFT)
-
-#define _PyGCHead_REFS(g) ((g)->gc.gc_refs >> _PyGC_REFS_SHIFT)
-#define _PyGCHead_SET_REFS(g, v) do { \
-    (g)->gc.gc_refs = ((g)->gc.gc_refs & ~_PyGC_REFS_MASK) \
-        | (((size_t)(v)) << _PyGC_REFS_SHIFT);             \
-    } while (0)
-#define _PyGCHead_DECREF(g) ((g)->gc.gc_refs -= 1 << _PyGC_REFS_SHIFT)
-
-#define _PyGCHead_FINALIZED(g) (((g)->gc.gc_refs & _PyGC_REFS_MASK_FINALIZED) != 0)
-#define _PyGCHead_SET_FINALIZED(g, v) do {  \
-    (g)->gc.gc_refs = ((g)->gc.gc_refs & ~_PyGC_REFS_MASK_FINALIZED) \
-        | (v != 0); \
-    } while (0)
-
-#define _PyGC_FINALIZED(o) _PyGCHead_FINALIZED(_Py_AS_GC(o))
-#define _PyGC_SET_FINALIZED(o, v) _PyGCHead_SET_FINALIZED(_Py_AS_GC(o), v)
-
-#define _PyGC_REFS(o) _PyGCHead_REFS(_Py_AS_GC(o))
-
-#define _PyGC_REFS_UNTRACKED                    (-2)
-#define _PyGC_REFS_REACHABLE                    (-3)
-#define _PyGC_REFS_TENTATIVELY_UNREACHABLE      (-4)
-
-/* Tell the GC to track this object.  NB: While the object is tracked the
- * collector it must be safe to call the ob_traverse method. */
-#define _PyObject_GC_TRACK(o) do { \
-    PyGC_Head *g = _Py_AS_GC(o); \
-    if (_PyGCHead_REFS(g) != _PyGC_REFS_UNTRACKED) \
-        Py_FatalError("GC object already tracked"); \
-    _PyGCHead_SET_REFS(g, _PyGC_REFS_REACHABLE); \
-    g->gc.gc_next = _PyGC_generation0; \
-    g->gc.gc_prev = _PyGC_generation0->gc.gc_prev; \
-    g->gc.gc_prev->gc.gc_next = g; \
-    _PyGC_generation0->gc.gc_prev = g; \
-    } while (0);
-
-/* Tell the GC to stop tracking this object.
- * gc_next doesn't need to be set to NULL, but doing so is a good
- * way to provoke memory errors if calling code is confused.
- */
-#define _PyObject_GC_UNTRACK(o) do { \
-    PyGC_Head *g = _Py_AS_GC(o); \
-    assert(_PyGCHead_REFS(g) != _PyGC_REFS_UNTRACKED); \
-    _PyGCHead_SET_REFS(g, _PyGC_REFS_UNTRACKED); \
-    g->gc.gc_prev->gc.gc_next = g->gc.gc_next; \
-    g->gc.gc_next->gc.gc_prev = g->gc.gc_prev; \
-    g->gc.gc_next = NULL; \
-    } while (0);
-
-/* True if the object is currently tracked by the GC. */
-#define _PyObject_GC_IS_TRACKED(o) \
-    (_PyGC_REFS(o) != _PyGC_REFS_UNTRACKED)
-
-/* True if the object may be tracked by the GC in the future, or already is.
-   This can be useful to implement some optimizations. */
-#define _PyObject_GC_MAY_BE_TRACKED(obj) \
-    (PyObject_IS_GC(obj) && \
-        (!PyTuple_CheckExact(obj) || _PyObject_GC_IS_TRACKED(obj)))
-#endif /* Py_LIMITED_API */
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyObject_GC_Malloc(size_t size);
-PyAPI_FUNC(PyObject *) _PyObject_GC_Calloc(size_t size);
-#endif /* !Py_LIMITED_API */
-PyAPI_FUNC(PyObject *) _PyObject_GC_New(PyTypeObject *);
-PyAPI_FUNC(PyVarObject *) _PyObject_GC_NewVar(PyTypeObject *, Py_ssize_t);
-PyAPI_FUNC(void) PyObject_GC_Track(void *);
-PyAPI_FUNC(void) PyObject_GC_UnTrack(void *);
-PyAPI_FUNC(void) PyObject_GC_Del(void *);
-
-#define PyObject_GC_New(type, typeobj) \
-                ( (type *) _PyObject_GC_New(typeobj) )
-#define PyObject_GC_NewVar(type, typeobj, n) \
-                ( (type *) _PyObject_GC_NewVar((typeobj), (n)) )
-
-
-/* Utility macro to help write tp_traverse functions.
- * To use this macro, the tp_traverse function must name its arguments
- * "visit" and "arg".  This is intended to keep tp_traverse functions
- * looking as much alike as possible.
- */
-#define Py_VISIT(op)                                                    \
-    do {                                                                \
-        if (op) {                                                       \
-            int vret = visit((PyObject *)(op), arg);                    \
-            if (vret)                                                   \
-                return vret;                                            \
-        }                                                               \
-    } while (0)
-
-
-/* Test if a type supports weak references */
-#define PyType_SUPPORTS_WEAKREFS(t) ((t)->tp_weaklistoffset > 0)
-
-#define PyObject_GET_WEAKREFS_LISTPTR(o) \
-    ((PyObject **) (((char *) (o)) + Py_TYPE(o)->tp_weaklistoffset))
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_OBJIMPL_H */
diff --git a/pythonsdk/include/odictobject.h b/pythonsdk/include/odictobject.h
deleted file mode 100644
index 8edbf22..0000000
--- a/pythonsdk/include/odictobject.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef Py_ODICTOBJECT_H
-#define Py_ODICTOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* OrderedDict */
-/* This API is optional and mostly redundant. */
-
-#ifndef Py_LIMITED_API
-
-typedef struct _odictobject PyODictObject;
-
-PyAPI_DATA(PyTypeObject) PyODict_Type;
-PyAPI_DATA(PyTypeObject) PyODictIter_Type;
-PyAPI_DATA(PyTypeObject) PyODictKeys_Type;
-PyAPI_DATA(PyTypeObject) PyODictItems_Type;
-PyAPI_DATA(PyTypeObject) PyODictValues_Type;
-
-#define PyODict_Check(op) PyObject_TypeCheck(op, &PyODict_Type)
-#define PyODict_CheckExact(op) (Py_TYPE(op) == &PyODict_Type)
-#define PyODict_SIZE(op) PyDict_GET_SIZE((op))
-
-PyAPI_FUNC(PyObject *) PyODict_New(void);
-PyAPI_FUNC(int) PyODict_SetItem(PyObject *od, PyObject *key, PyObject *item);
-PyAPI_FUNC(int) PyODict_DelItem(PyObject *od, PyObject *key);
-
-/* wrappers around PyDict* functions */
-#define PyODict_GetItem(od, key) PyDict_GetItem((PyObject *)od, key)
-#define PyODict_GetItemWithError(od, key) \
-    PyDict_GetItemWithError((PyObject *)od, key)
-#define PyODict_Contains(od, key) PyDict_Contains((PyObject *)od, key)
-#define PyODict_Size(od) PyDict_Size((PyObject *)od)
-#define PyODict_GetItemString(od, key) \
-    PyDict_GetItemString((PyObject *)od, key)
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_ODICTOBJECT_H */
diff --git a/pythonsdk/include/opcode.h b/pythonsdk/include/opcode.h
deleted file mode 100644
index e1a706a..0000000
--- a/pythonsdk/include/opcode.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/* Auto-generated by Tools/scripts/generate_opcode_h.py */
-#ifndef Py_OPCODE_H
-#define Py_OPCODE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-    /* Instruction opcodes for compiled code */
-#define POP_TOP                   1
-#define ROT_TWO                   2
-#define ROT_THREE                 3
-#define DUP_TOP                   4
-#define DUP_TOP_TWO               5
-#define NOP                       9
-#define UNARY_POSITIVE           10
-#define UNARY_NEGATIVE           11
-#define UNARY_NOT                12
-#define UNARY_INVERT             15
-#define BINARY_MATRIX_MULTIPLY   16
-#define INPLACE_MATRIX_MULTIPLY  17
-#define BINARY_POWER             19
-#define BINARY_MULTIPLY          20
-#define BINARY_MODULO            22
-#define BINARY_ADD               23
-#define BINARY_SUBTRACT          24
-#define BINARY_SUBSCR            25
-#define BINARY_FLOOR_DIVIDE      26
-#define BINARY_TRUE_DIVIDE       27
-#define INPLACE_FLOOR_DIVIDE     28
-#define INPLACE_TRUE_DIVIDE      29
-#define GET_AITER                50
-#define GET_ANEXT                51
-#define BEFORE_ASYNC_WITH        52
-#define INPLACE_ADD              55
-#define INPLACE_SUBTRACT         56
-#define INPLACE_MULTIPLY         57
-#define INPLACE_MODULO           59
-#define STORE_SUBSCR             60
-#define DELETE_SUBSCR            61
-#define BINARY_LSHIFT            62
-#define BINARY_RSHIFT            63
-#define BINARY_AND               64
-#define BINARY_XOR               65
-#define BINARY_OR                66
-#define INPLACE_POWER            67
-#define GET_ITER                 68
-#define GET_YIELD_FROM_ITER      69
-#define PRINT_EXPR               70
-#define LOAD_BUILD_CLASS         71
-#define YIELD_FROM               72
-#define GET_AWAITABLE            73
-#define INPLACE_LSHIFT           75
-#define INPLACE_RSHIFT           76
-#define INPLACE_AND              77
-#define INPLACE_XOR              78
-#define INPLACE_OR               79
-#define BREAK_LOOP               80
-#define WITH_CLEANUP_START       81
-#define WITH_CLEANUP_FINISH      82
-#define RETURN_VALUE             83
-#define IMPORT_STAR              84
-#define SETUP_ANNOTATIONS        85
-#define YIELD_VALUE              86
-#define POP_BLOCK                87
-#define END_FINALLY              88
-#define POP_EXCEPT               89
-#define HAVE_ARGUMENT            90
-#define STORE_NAME               90
-#define DELETE_NAME              91
-#define UNPACK_SEQUENCE          92
-#define FOR_ITER                 93
-#define UNPACK_EX                94
-#define STORE_ATTR               95
-#define DELETE_ATTR              96
-#define STORE_GLOBAL             97
-#define DELETE_GLOBAL            98
-#define LOAD_CONST              100
-#define LOAD_NAME               101
-#define BUILD_TUPLE             102
-#define BUILD_LIST              103
-#define BUILD_SET               104
-#define BUILD_MAP               105
-#define LOAD_ATTR               106
-#define COMPARE_OP              107
-#define IMPORT_NAME             108
-#define IMPORT_FROM             109
-#define JUMP_FORWARD            110
-#define JUMP_IF_FALSE_OR_POP    111
-#define JUMP_IF_TRUE_OR_POP     112
-#define JUMP_ABSOLUTE           113
-#define POP_JUMP_IF_FALSE       114
-#define POP_JUMP_IF_TRUE        115
-#define LOAD_GLOBAL             116
-#define CONTINUE_LOOP           119
-#define SETUP_LOOP              120
-#define SETUP_EXCEPT            121
-#define SETUP_FINALLY           122
-#define LOAD_FAST               124
-#define STORE_FAST              125
-#define DELETE_FAST             126
-#define RAISE_VARARGS           130
-#define CALL_FUNCTION           131
-#define MAKE_FUNCTION           132
-#define BUILD_SLICE             133
-#define LOAD_CLOSURE            135
-#define LOAD_DEREF              136
-#define STORE_DEREF             137
-#define DELETE_DEREF            138
-#define CALL_FUNCTION_KW        141
-#define CALL_FUNCTION_EX        142
-#define SETUP_WITH              143
-#define EXTENDED_ARG            144
-#define LIST_APPEND             145
-#define SET_ADD                 146
-#define MAP_ADD                 147
-#define LOAD_CLASSDEREF         148
-#define BUILD_LIST_UNPACK       149
-#define BUILD_MAP_UNPACK        150
-#define BUILD_MAP_UNPACK_WITH_CALL 151
-#define BUILD_TUPLE_UNPACK      152
-#define BUILD_SET_UNPACK        153
-#define SETUP_ASYNC_WITH        154
-#define FORMAT_VALUE            155
-#define BUILD_CONST_KEY_MAP     156
-#define BUILD_STRING            157
-#define BUILD_TUPLE_UNPACK_WITH_CALL 158
-#define LOAD_METHOD             160
-#define CALL_METHOD             161
-
-/* EXCEPT_HANDLER is a special, implicit block type which is created when
-   entering an except handler. It is not an opcode but we define it here
-   as we want it to be available to both frameobject.c and ceval.c, while
-   remaining private.*/
-#define EXCEPT_HANDLER 257
-
-
-enum cmp_op {PyCmp_LT=Py_LT, PyCmp_LE=Py_LE, PyCmp_EQ=Py_EQ, PyCmp_NE=Py_NE,
-                PyCmp_GT=Py_GT, PyCmp_GE=Py_GE, PyCmp_IN, PyCmp_NOT_IN,
-                PyCmp_IS, PyCmp_IS_NOT, PyCmp_EXC_MATCH, PyCmp_BAD};
-
-#define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_OPCODE_H */
diff --git a/pythonsdk/include/osdefs.h b/pythonsdk/include/osdefs.h
deleted file mode 100644
index b6a1264..0000000
--- a/pythonsdk/include/osdefs.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef Py_OSDEFS_H
-#define Py_OSDEFS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Operating system dependencies */
-
-#ifdef MS_WINDOWS
-#define SEP L'\\'
-#define ALTSEP L'/'
-#define MAXPATHLEN 256
-#define DELIM L';'
-#endif
-
-/* Filename separator */
-#ifndef SEP
-#define SEP L'/'
-#endif
-
-/* Max pathname length */
-#ifdef __hpux
-#include <sys/param.h>
-#include <limits.h>
-#ifndef PATH_MAX
-#define PATH_MAX MAXPATHLEN
-#endif
-#endif
-
-#ifndef MAXPATHLEN
-#if defined(PATH_MAX) && PATH_MAX > 1024
-#define MAXPATHLEN PATH_MAX
-#else
-#define MAXPATHLEN 1024
-#endif
-#endif
-
-/* Search path entry delimiter */
-#ifndef DELIM
-#define DELIM L':'
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_OSDEFS_H */
diff --git a/pythonsdk/include/osmodule.h b/pythonsdk/include/osmodule.h
deleted file mode 100644
index af50850..0000000
--- a/pythonsdk/include/osmodule.h
+++ /dev/null
@@ -1,17 +0,0 @@
-
-/* os module interface */
-
-#ifndef Py_OSMODULE_H
-#define Py_OSMODULE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000
-PyAPI_FUNC(PyObject *) PyOS_FSPath(PyObject *path);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_OSMODULE_H */
diff --git a/pythonsdk/include/parsetok.h b/pythonsdk/include/parsetok.h
deleted file mode 100644
index f3837a9..0000000
--- a/pythonsdk/include/parsetok.h
+++ /dev/null
@@ -1,108 +0,0 @@
-
-/* Parser-tokenizer link interface */
-#ifndef Py_LIMITED_API
-#ifndef Py_PARSETOK_H
-#define Py_PARSETOK_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-    int error;
-#ifndef PGEN
-    /* The filename is useless for pgen, see comment in tok_state structure */
-    PyObject *filename;
-#endif
-    int lineno;
-    int offset;
-    char *text;                 /* UTF-8-encoded string */
-    int token;
-    int expected;
-} perrdetail;
-
-#if 0
-#define PyPARSE_YIELD_IS_KEYWORD        0x0001
-#endif
-
-#define PyPARSE_DONT_IMPLY_DEDENT       0x0002
-
-#if 0
-#define PyPARSE_WITH_IS_KEYWORD         0x0003
-#define PyPARSE_PRINT_IS_FUNCTION       0x0004
-#define PyPARSE_UNICODE_LITERALS        0x0008
-#endif
-
-#define PyPARSE_IGNORE_COOKIE 0x0010
-#define PyPARSE_BARRY_AS_BDFL 0x0020
-
-PyAPI_FUNC(node *) PyParser_ParseString(const char *, grammar *, int,
-                                              perrdetail *);
-PyAPI_FUNC(node *) PyParser_ParseFile (FILE *, const char *, grammar *, int,
-                                             const char *, const char *,
-                                             perrdetail *);
-
-PyAPI_FUNC(node *) PyParser_ParseStringFlags(const char *, grammar *, int,
-                                              perrdetail *, int);
-PyAPI_FUNC(node *) PyParser_ParseFileFlags(
-    FILE *fp,
-    const char *filename,       /* decoded from the filesystem encoding */
-    const char *enc,
-    grammar *g,
-    int start,
-    const char *ps1,
-    const char *ps2,
-    perrdetail *err_ret,
-    int flags);
-PyAPI_FUNC(node *) PyParser_ParseFileFlagsEx(
-    FILE *fp,
-    const char *filename,       /* decoded from the filesystem encoding */
-    const char *enc,
-    grammar *g,
-    int start,
-    const char *ps1,
-    const char *ps2,
-    perrdetail *err_ret,
-    int *flags);
-PyAPI_FUNC(node *) PyParser_ParseFileObject(
-    FILE *fp,
-    PyObject *filename,
-    const char *enc,
-    grammar *g,
-    int start,
-    const char *ps1,
-    const char *ps2,
-    perrdetail *err_ret,
-    int *flags);
-
-PyAPI_FUNC(node *) PyParser_ParseStringFlagsFilename(
-    const char *s,
-    const char *filename,       /* decoded from the filesystem encoding */
-    grammar *g,
-    int start,
-    perrdetail *err_ret,
-    int flags);
-PyAPI_FUNC(node *) PyParser_ParseStringFlagsFilenameEx(
-    const char *s,
-    const char *filename,       /* decoded from the filesystem encoding */
-    grammar *g,
-    int start,
-    perrdetail *err_ret,
-    int *flags);
-PyAPI_FUNC(node *) PyParser_ParseStringObject(
-    const char *s,
-    PyObject *filename,
-    grammar *g,
-    int start,
-    perrdetail *err_ret,
-    int *flags);
-
-/* Note that the following functions are defined in pythonrun.c,
-   not in parsetok.c */
-PyAPI_FUNC(void) PyParser_SetError(perrdetail *);
-PyAPI_FUNC(void) PyParser_ClearError(perrdetail *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PARSETOK_H */
-#endif /* !Py_LIMITED_API */
diff --git a/pythonsdk/include/patchlevel.h b/pythonsdk/include/patchlevel.h
deleted file mode 100644
index c45ba7c..0000000
--- a/pythonsdk/include/patchlevel.h
+++ /dev/null
@@ -1,35 +0,0 @@
-
-/* Python version identification scheme.
-
-   When the major or minor version changes, the VERSION variable in
-   configure.ac must also be changed.
-
-   There is also (independent) API version information in modsupport.h.
-*/
-
-/* Values for PY_RELEASE_LEVEL */
-#define PY_RELEASE_LEVEL_ALPHA  0xA
-#define PY_RELEASE_LEVEL_BETA   0xB
-#define PY_RELEASE_LEVEL_GAMMA  0xC     /* For release candidates */
-#define PY_RELEASE_LEVEL_FINAL  0xF     /* Serial should be 0 here */
-                                        /* Higher for patch releases */
-
-/* Version parsed out into numeric values */
-/*--start constants--*/
-#define PY_MAJOR_VERSION        3
-#define PY_MINOR_VERSION        7
-#define PY_MICRO_VERSION        9
-#define PY_RELEASE_LEVEL        PY_RELEASE_LEVEL_FINAL
-#define PY_RELEASE_SERIAL       0
-
-/* Version as a string */
-#define PY_VERSION              "3.7.9"
-/*--end constants--*/
-
-/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.
-   Use this for numeric comparisons, e.g. #if PY_VERSION_HEX >= ... */
-#define PY_VERSION_HEX ((PY_MAJOR_VERSION << 24) | \
-                        (PY_MINOR_VERSION << 16) | \
-                        (PY_MICRO_VERSION <<  8) | \
-                        (PY_RELEASE_LEVEL <<  4) | \
-                        (PY_RELEASE_SERIAL << 0))
diff --git a/pythonsdk/include/pgen.h b/pythonsdk/include/pgen.h
deleted file mode 100644
index af84852..0000000
--- a/pythonsdk/include/pgen.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef Py_PGEN_H
-#define Py_PGEN_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Parser generator interface */
-
-extern grammar *meta_grammar(void);
-
-struct _node;
-extern grammar *pgen(struct _node *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PGEN_H */
diff --git a/pythonsdk/include/pgenheaders.h b/pythonsdk/include/pgenheaders.h
deleted file mode 100644
index 0997b0f..0000000
--- a/pythonsdk/include/pgenheaders.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef Py_PGENHEADERS_H
-#define Py_PGENHEADERS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Include files and extern declarations used by most of the parser. */
-
-#include "Python.h"
-
-PyAPI_FUNC(void) PySys_WriteStdout(const char *format, ...)
-                        Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
-PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...)
-                        Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
-
-#define addarc _Py_addarc
-#define addbit _Py_addbit
-#define adddfa _Py_adddfa
-#define addfirstsets _Py_addfirstsets
-#define addlabel _Py_addlabel
-#define addstate _Py_addstate
-#define delbitset _Py_delbitset
-#define dumptree _Py_dumptree
-#define findlabel _Py_findlabel
-#define freegrammar _Py_freegrammar
-#define mergebitset _Py_mergebitset
-#define meta_grammar _Py_meta_grammar
-#define newbitset _Py_newbitset
-#define newgrammar _Py_newgrammar
-#define pgen _Py_pgen
-#define printgrammar _Py_printgrammar
-#define printnonterminals _Py_printnonterminals
-#define printtree _Py_printtree
-#define samebitset _Py_samebitset
-#define showtree _Py_showtree
-#define tok_dump _Py_tok_dump
-#define translatelabels _Py_translatelabels
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PGENHEADERS_H */
diff --git a/pythonsdk/include/py_curses.h b/pythonsdk/include/py_curses.h
deleted file mode 100644
index 1fdb6ea..0000000
--- a/pythonsdk/include/py_curses.h
+++ /dev/null
@@ -1,159 +0,0 @@
-
-#ifndef Py_CURSES_H
-#define Py_CURSES_H
-
-#ifdef __APPLE__
-/*
-** On Mac OS X 10.2 [n]curses.h and stdlib.h use different guards
-** against multiple definition of wchar_t.
-*/
-#ifdef _BSD_WCHAR_T_DEFINED_
-#define _WCHAR_T
-#endif
-#endif /* __APPLE__ */
-
-/* On FreeBSD, [n]curses.h and stdlib.h/wchar.h use different guards
-   against multiple definition of wchar_t and wint_t. */
-#if defined(__FreeBSD__) && defined(_XOPEN_SOURCE_EXTENDED)
-# ifndef __wchar_t
-#   define __wchar_t
-# endif
-# ifndef __wint_t
-#   define __wint_t
-# endif
-#endif
-
-#if !defined(HAVE_CURSES_IS_PAD) && defined(WINDOW_HAS_FLAGS)
-/* The following definition is necessary for ncurses 5.7; without it,
-   some of [n]curses.h set NCURSES_OPAQUE to 1, and then Python
-   can't get at the WINDOW flags field. */
-#define NCURSES_OPAQUE 0
-#endif
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#else
-#include <curses.h>
-#endif
-
-#ifdef HAVE_NCURSES_H
-/* configure was checking <curses.h>, but we will
-   use <ncurses.h>, which has some or all these features. */
-#if !defined(WINDOW_HAS_FLAGS) && !(NCURSES_OPAQUE+0)
-#define WINDOW_HAS_FLAGS 1
-#endif
-#if !defined(HAVE_CURSES_IS_PAD) && NCURSES_VERSION_PATCH+0 >= 20090906
-#define HAVE_CURSES_IS_PAD 1
-#endif
-#ifndef MVWDELCH_IS_EXPRESSION
-#define MVWDELCH_IS_EXPRESSION 1
-#endif
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define PyCurses_API_pointers 4
-
-/* Type declarations */
-
-typedef struct {
-    PyObject_HEAD
-    WINDOW *win;
-    char *encoding;
-} PyCursesWindowObject;
-
-#define PyCursesWindow_Check(v)  (Py_TYPE(v) == &PyCursesWindow_Type)
-
-#define PyCurses_CAPSULE_NAME "_curses._C_API"
-
-
-#ifdef CURSES_MODULE
-/* This section is used when compiling _cursesmodule.c */
-
-#else
-/* This section is used in modules that use the _cursesmodule API */
-
-static void **PyCurses_API;
-
-#define PyCursesWindow_Type (*(PyTypeObject *) PyCurses_API[0])
-#define PyCursesSetupTermCalled  {if (! ((int (*)(void))PyCurses_API[1]) () ) return NULL;}
-#define PyCursesInitialised      {if (! ((int (*)(void))PyCurses_API[2]) () ) return NULL;}
-#define PyCursesInitialisedColor {if (! ((int (*)(void))PyCurses_API[3]) () ) return NULL;}
-
-#define import_curses() \
-    PyCurses_API = (void **)PyCapsule_Import(PyCurses_CAPSULE_NAME, 1);
-
-#endif
-
-/* general error messages */
-static const char catchall_ERR[]  = "curses function returned ERR";
-static const char catchall_NULL[] = "curses function returned NULL";
-
-/* Function Prototype Macros - They are ugly but very, very useful. ;-)
-
-   X - function name
-   TYPE - parameter Type
-   ERGSTR - format string for construction of the return value
-   PARSESTR - format string for argument parsing
-   */
-
-#define NoArgNoReturnFunction(X) \
-static PyObject *PyCurses_ ## X (PyObject *self) \
-{ \
-  PyCursesInitialised \
-  return PyCursesCheckERR(X(), # X); }
-
-#define NoArgOrFlagNoReturnFunction(X) \
-static PyObject *PyCurses_ ## X (PyObject *self, PyObject *args) \
-{ \
-  int flag = 0; \
-  PyCursesInitialised \
-  switch(PyTuple_Size(args)) { \
-  case 0: \
-    return PyCursesCheckERR(X(), # X); \
-  case 1: \
-    if (!PyArg_ParseTuple(args, "i;True(1) or False(0)", &flag)) return NULL; \
-    if (flag) return PyCursesCheckERR(X(), # X); \
-    else return PyCursesCheckERR(no ## X (), # X); \
-  default: \
-    PyErr_SetString(PyExc_TypeError, # X " requires 0 or 1 arguments"); \
-    return NULL; } }
-
-#define NoArgReturnIntFunction(X) \
-static PyObject *PyCurses_ ## X (PyObject *self) \
-{ \
- PyCursesInitialised \
- return PyLong_FromLong((long) X()); }
-
-
-#define NoArgReturnStringFunction(X) \
-static PyObject *PyCurses_ ## X (PyObject *self) \
-{ \
-  PyCursesInitialised \
-  return PyBytes_FromString(X()); }
-
-#define NoArgTrueFalseFunction(X) \
-static PyObject *PyCurses_ ## X (PyObject *self) \
-{ \
-  PyCursesInitialised \
-  if (X () == FALSE) { \
-    Py_RETURN_FALSE; \
-  } \
-  Py_RETURN_TRUE; }
-
-#define NoArgNoReturnVoidFunction(X) \
-static PyObject *PyCurses_ ## X (PyObject *self) \
-{ \
-  PyCursesInitialised \
-  X(); \
-  Py_RETURN_NONE; }
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !defined(Py_CURSES_H) */
-
-
diff --git a/pythonsdk/include/pyarena.h b/pythonsdk/include/pyarena.h
deleted file mode 100644
index 97791be..0000000
--- a/pythonsdk/include/pyarena.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* An arena-like memory interface for the compiler.
- */
-
-#ifndef Py_LIMITED_API
-#ifndef Py_PYARENA_H
-#define Py_PYARENA_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-  typedef struct _arena PyArena;
-
-  /* PyArena_New() and PyArena_Free() create a new arena and free it,
-     respectively.  Once an arena has been created, it can be used
-     to allocate memory via PyArena_Malloc().  Pointers to PyObject can
-     also be registered with the arena via PyArena_AddPyObject(), and the
-     arena will ensure that the PyObjects stay alive at least until
-     PyArena_Free() is called.  When an arena is freed, all the memory it
-     allocated is freed, the arena releases internal references to registered
-     PyObject*, and none of its pointers are valid.
-     XXX (tim) What does "none of its pointers are valid" mean?  Does it
-     XXX mean that pointers previously obtained via PyArena_Malloc() are
-     XXX no longer valid?  (That's clearly true, but not sure that's what
-     XXX the text is trying to say.)
-
-     PyArena_New() returns an arena pointer.  On error, it
-     returns a negative number and sets an exception.
-     XXX (tim):  Not true.  On error, PyArena_New() actually returns NULL,
-     XXX and looks like it may or may not set an exception (e.g., if the
-     XXX internal PyList_New(0) returns NULL, PyArena_New() passes that on
-     XXX and an exception is set; OTOH, if the internal
-     XXX block_new(DEFAULT_BLOCK_SIZE) returns NULL, that's passed on but
-     XXX an exception is not set in that case).
-  */
-  PyAPI_FUNC(PyArena *) PyArena_New(void);
-  PyAPI_FUNC(void) PyArena_Free(PyArena *);
-
-  /* Mostly like malloc(), return the address of a block of memory spanning
-   * `size` bytes, or return NULL (without setting an exception) if enough
-   * new memory can't be obtained.  Unlike malloc(0), PyArena_Malloc() with
-   * size=0 does not guarantee to return a unique pointer (the pointer
-   * returned may equal one or more other pointers obtained from
-   * PyArena_Malloc()).
-   * Note that pointers obtained via PyArena_Malloc() must never be passed to
-   * the system free() or realloc(), or to any of Python's similar memory-
-   * management functions.  PyArena_Malloc()-obtained pointers remain valid
-   * until PyArena_Free(ar) is called, at which point all pointers obtained
-   * from the arena `ar` become invalid simultaneously.
-   */
-  PyAPI_FUNC(void *) PyArena_Malloc(PyArena *, size_t size);
-
-  /* This routine isn't a proper arena allocation routine.  It takes
-   * a PyObject* and records it so that it can be DECREFed when the
-   * arena is freed.
-   */
-  PyAPI_FUNC(int) PyArena_AddPyObject(PyArena *, PyObject *);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_PYARENA_H */
-#endif /* Py_LIMITED_API */
diff --git a/pythonsdk/include/pyatomic.h b/pythonsdk/include/pyatomic.h
deleted file mode 100644
index b900852..0000000
--- a/pythonsdk/include/pyatomic.h
+++ /dev/null
@@ -1,535 +0,0 @@
-#ifndef Py_ATOMIC_H
-#define Py_ATOMIC_H
-#ifdef Py_BUILD_CORE
-
-#include "dynamic_annotations.h"
-
-#include "pyconfig.h"
-
-#if defined(HAVE_STD_ATOMIC)
-#include <stdatomic.h>
-#endif
-
-
-#if defined(_MSC_VER)
-#include <intrin.h>
-#include <immintrin.h>
-#endif
-
-/* This is modeled after the atomics interface from C1x, according to
- * the draft at
- * http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1425.pdf.
- * Operations and types are named the same except with a _Py_ prefix
- * and have the same semantics.
- *
- * Beware, the implementations here are deep magic.
- */
-
-#if defined(HAVE_STD_ATOMIC)
-
-typedef enum _Py_memory_order {
-    _Py_memory_order_relaxed = memory_order_relaxed,
-    _Py_memory_order_acquire = memory_order_acquire,
-    _Py_memory_order_release = memory_order_release,
-    _Py_memory_order_acq_rel = memory_order_acq_rel,
-    _Py_memory_order_seq_cst = memory_order_seq_cst
-} _Py_memory_order;
-
-typedef struct _Py_atomic_address {
-    atomic_uintptr_t _value;
-} _Py_atomic_address;
-
-typedef struct _Py_atomic_int {
-    atomic_int _value;
-} _Py_atomic_int;
-
-#define _Py_atomic_signal_fence(/*memory_order*/ ORDER) \
-    atomic_signal_fence(ORDER)
-
-#define _Py_atomic_thread_fence(/*memory_order*/ ORDER) \
-    atomic_thread_fence(ORDER)
-
-#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \
-    atomic_store_explicit(&(ATOMIC_VAL)->_value, NEW_VAL, ORDER)
-
-#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \
-    atomic_load_explicit(&(ATOMIC_VAL)->_value, ORDER)
-
-/* Use builtin atomic operations in GCC >= 4.7 */
-#elif defined(HAVE_BUILTIN_ATOMIC)
-
-typedef enum _Py_memory_order {
-    _Py_memory_order_relaxed = __ATOMIC_RELAXED,
-    _Py_memory_order_acquire = __ATOMIC_ACQUIRE,
-    _Py_memory_order_release = __ATOMIC_RELEASE,
-    _Py_memory_order_acq_rel = __ATOMIC_ACQ_REL,
-    _Py_memory_order_seq_cst = __ATOMIC_SEQ_CST
-} _Py_memory_order;
-
-typedef struct _Py_atomic_address {
-    uintptr_t _value;
-} _Py_atomic_address;
-
-typedef struct _Py_atomic_int {
-    int _value;
-} _Py_atomic_int;
-
-#define _Py_atomic_signal_fence(/*memory_order*/ ORDER) \
-    __atomic_signal_fence(ORDER)
-
-#define _Py_atomic_thread_fence(/*memory_order*/ ORDER) \
-    __atomic_thread_fence(ORDER)
-
-#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \
-    (assert((ORDER) == __ATOMIC_RELAXED                       \
-            || (ORDER) == __ATOMIC_SEQ_CST                    \
-            || (ORDER) == __ATOMIC_RELEASE),                  \
-     __atomic_store_n(&(ATOMIC_VAL)->_value, NEW_VAL, ORDER))
-
-#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER)           \
-    (assert((ORDER) == __ATOMIC_RELAXED                       \
-            || (ORDER) == __ATOMIC_SEQ_CST                    \
-            || (ORDER) == __ATOMIC_ACQUIRE                    \
-            || (ORDER) == __ATOMIC_CONSUME),                  \
-     __atomic_load_n(&(ATOMIC_VAL)->_value, ORDER))
-
-/* Only support GCC (for expression statements) and x86 (for simple
- * atomic semantics) and MSVC x86/x64/ARM */
-#elif defined(__GNUC__) && (defined(__i386__) || defined(__amd64))
-typedef enum _Py_memory_order {
-    _Py_memory_order_relaxed,
-    _Py_memory_order_acquire,
-    _Py_memory_order_release,
-    _Py_memory_order_acq_rel,
-    _Py_memory_order_seq_cst
-} _Py_memory_order;
-
-typedef struct _Py_atomic_address {
-    uintptr_t _value;
-} _Py_atomic_address;
-
-typedef struct _Py_atomic_int {
-    int _value;
-} _Py_atomic_int;
-
-
-static __inline__ void
-_Py_atomic_signal_fence(_Py_memory_order order)
-{
-    if (order != _Py_memory_order_relaxed)
-        __asm__ volatile("":::"memory");
-}
-
-static __inline__ void
-_Py_atomic_thread_fence(_Py_memory_order order)
-{
-    if (order != _Py_memory_order_relaxed)
-        __asm__ volatile("mfence":::"memory");
-}
-
-/* Tell the race checker about this operation's effects. */
-static __inline__ void
-_Py_ANNOTATE_MEMORY_ORDER(const volatile void *address, _Py_memory_order order)
-{
-    (void)address;              /* shut up -Wunused-parameter */
-    switch(order) {
-    case _Py_memory_order_release:
-    case _Py_memory_order_acq_rel:
-    case _Py_memory_order_seq_cst:
-        _Py_ANNOTATE_HAPPENS_BEFORE(address);
-        break;
-    case _Py_memory_order_relaxed:
-    case _Py_memory_order_acquire:
-        break;
-    }
-    switch(order) {
-    case _Py_memory_order_acquire:
-    case _Py_memory_order_acq_rel:
-    case _Py_memory_order_seq_cst:
-        _Py_ANNOTATE_HAPPENS_AFTER(address);
-        break;
-    case _Py_memory_order_relaxed:
-    case _Py_memory_order_release:
-        break;
-    }
-}
-
-#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \
-    __extension__ ({ \
-        __typeof__(ATOMIC_VAL) atomic_val = ATOMIC_VAL; \
-        __typeof__(atomic_val->_value) new_val = NEW_VAL;\
-        volatile __typeof__(new_val) *volatile_data = &atomic_val->_value; \
-        _Py_memory_order order = ORDER; \
-        _Py_ANNOTATE_MEMORY_ORDER(atomic_val, order); \
-        \
-        /* Perform the operation. */ \
-        _Py_ANNOTATE_IGNORE_WRITES_BEGIN(); \
-        switch(order) { \
-        case _Py_memory_order_release: \
-            _Py_atomic_signal_fence(_Py_memory_order_release); \
-            /* fallthrough */ \
-        case _Py_memory_order_relaxed: \
-            *volatile_data = new_val; \
-            break; \
-        \
-        case _Py_memory_order_acquire: \
-        case _Py_memory_order_acq_rel: \
-        case _Py_memory_order_seq_cst: \
-            __asm__ volatile("xchg %0, %1" \
-                         : "+r"(new_val) \
-                         : "m"(atomic_val->_value) \
-                         : "memory"); \
-            break; \
-        } \
-        _Py_ANNOTATE_IGNORE_WRITES_END(); \
-    })
-
-#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \
-    __extension__ ({  \
-        __typeof__(ATOMIC_VAL) atomic_val = ATOMIC_VAL; \
-        __typeof__(atomic_val->_value) result; \
-        volatile __typeof__(result) *volatile_data = &atomic_val->_value; \
-        _Py_memory_order order = ORDER; \
-        _Py_ANNOTATE_MEMORY_ORDER(atomic_val, order); \
-        \
-        /* Perform the operation. */ \
-        _Py_ANNOTATE_IGNORE_READS_BEGIN(); \
-        switch(order) { \
-        case _Py_memory_order_release: \
-        case _Py_memory_order_acq_rel: \
-        case _Py_memory_order_seq_cst: \
-            /* Loads on x86 are not releases by default, so need a */ \
-            /* thread fence. */ \
-            _Py_atomic_thread_fence(_Py_memory_order_release); \
-            break; \
-        default: \
-            /* No fence */ \
-            break; \
-        } \
-        result = *volatile_data; \
-        switch(order) { \
-        case _Py_memory_order_acquire: \
-        case _Py_memory_order_acq_rel: \
-        case _Py_memory_order_seq_cst: \
-            /* Loads on x86 are automatically acquire operations so */ \
-            /* can get by with just a compiler fence. */ \
-            _Py_atomic_signal_fence(_Py_memory_order_acquire); \
-            break; \
-        default: \
-            /* No fence */ \
-            break; \
-        } \
-        _Py_ANNOTATE_IGNORE_READS_END(); \
-        result; \
-    })
-
-#elif defined(_MSC_VER)
-/*  _Interlocked* functions provide a full memory barrier and are therefore
-    enough for acq_rel and seq_cst. If the HLE variants aren't available
-    in hardware they will fall back to a full memory barrier as well.
-
-    This might affect performance but likely only in some very specific and
-    hard to meassure scenario.
-*/
-#if defined(_M_IX86) || defined(_M_X64)
-typedef enum _Py_memory_order {
-    _Py_memory_order_relaxed,
-    _Py_memory_order_acquire,
-    _Py_memory_order_release,
-    _Py_memory_order_acq_rel,
-    _Py_memory_order_seq_cst
-} _Py_memory_order;
-
-typedef struct _Py_atomic_address {
-    volatile uintptr_t _value;
-} _Py_atomic_address;
-
-typedef struct _Py_atomic_int {
-    volatile int _value;
-} _Py_atomic_int;
-
-
-#if defined(_M_X64)
-#define _Py_atomic_store_64bit(ATOMIC_VAL, NEW_VAL, ORDER) \
-    switch (ORDER) { \
-    case _Py_memory_order_acquire: \
-      _InterlockedExchange64_HLEAcquire((__int64 volatile*)ATOMIC_VAL, (__int64)NEW_VAL); \
-      break; \
-    case _Py_memory_order_release: \
-      _InterlockedExchange64_HLERelease((__int64 volatile*)ATOMIC_VAL, (__int64)NEW_VAL); \
-      break; \
-    default: \
-      _InterlockedExchange64((__int64 volatile*)ATOMIC_VAL, (__int64)NEW_VAL); \
-      break; \
-  }
-#else
-#define _Py_atomic_store_64bit(ATOMIC_VAL, NEW_VAL, ORDER) ((void)0);
-#endif
-
-#define _Py_atomic_store_32bit(ATOMIC_VAL, NEW_VAL, ORDER) \
-  switch (ORDER) { \
-  case _Py_memory_order_acquire: \
-    _InterlockedExchange_HLEAcquire((volatile long*)ATOMIC_VAL, (int)NEW_VAL); \
-    break; \
-  case _Py_memory_order_release: \
-    _InterlockedExchange_HLERelease((volatile long*)ATOMIC_VAL, (int)NEW_VAL); \
-    break; \
-  default: \
-    _InterlockedExchange((volatile long*)ATOMIC_VAL, (int)NEW_VAL); \
-    break; \
-  }
-
-#if defined(_M_X64)
-/*  This has to be an intptr_t for now.
-    gil_created() uses -1 as a sentinel value, if this returns
-    a uintptr_t it will do an unsigned compare and crash
-*/
-inline intptr_t _Py_atomic_load_64bit(volatile uintptr_t* value, int order) {
-    __int64 old;
-    switch (order) {
-    case _Py_memory_order_acquire:
-    {
-      do {
-        old = *value;
-      } while(_InterlockedCompareExchange64_HLEAcquire((volatile __int64*)value, old, old) != old);
-      break;
-    }
-    case _Py_memory_order_release:
-    {
-      do {
-        old = *value;
-      } while(_InterlockedCompareExchange64_HLERelease((volatile __int64*)value, old, old) != old);
-      break;
-    }
-    case _Py_memory_order_relaxed:
-      old = *value;
-      break;
-    default:
-    {
-      do {
-        old = *value;
-      } while(_InterlockedCompareExchange64((volatile __int64*)value, old, old) != old);
-      break;
-    }
-    }
-    return old;
-}
-
-#else
-#define _Py_atomic_load_64bit(ATOMIC_VAL, ORDER) *ATOMIC_VAL
-#endif
-
-inline int _Py_atomic_load_32bit(volatile int* value, int order) {
-    long old;
-    switch (order) {
-    case _Py_memory_order_acquire:
-    {
-      do {
-        old = *value;
-      } while(_InterlockedCompareExchange_HLEAcquire((volatile long*)value, old, old) != old);
-      break;
-    }
-    case _Py_memory_order_release:
-    {
-      do {
-        old = *value;
-      } while(_InterlockedCompareExchange_HLERelease((volatile long*)value, old, old) != old);
-      break;
-    }
-    case _Py_memory_order_relaxed:
-      old = *value;
-      break;
-    default:
-    {
-      do {
-        old = *value;
-      } while(_InterlockedCompareExchange((volatile long*)value, old, old) != old);
-      break;
-    }
-    }
-    return old;
-}
-
-#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \
-  if (sizeof(*ATOMIC_VAL._value) == 8) { \
-    _Py_atomic_store_64bit((volatile long long*)ATOMIC_VAL._value, NEW_VAL, ORDER) } else { \
-    _Py_atomic_store_32bit((volatile long*)ATOMIC_VAL._value, NEW_VAL, ORDER) }
-
-#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \
-  ( \
-    sizeof(*(ATOMIC_VAL._value)) == 8 ? \
-    _Py_atomic_load_64bit((volatile long long*)ATOMIC_VAL._value, ORDER) : \
-    _Py_atomic_load_32bit((volatile long*)ATOMIC_VAL._value, ORDER) \
-  )
-#elif defined(_M_ARM) || defined(_M_ARM64)
-typedef enum _Py_memory_order {
-    _Py_memory_order_relaxed,
-    _Py_memory_order_acquire,
-    _Py_memory_order_release,
-    _Py_memory_order_acq_rel,
-    _Py_memory_order_seq_cst
-} _Py_memory_order;
-
-typedef struct _Py_atomic_address {
-    volatile uintptr_t _value;
-} _Py_atomic_address;
-
-typedef struct _Py_atomic_int {
-    volatile int _value;
-} _Py_atomic_int;
-
-
-#if defined(_M_ARM64)
-#define _Py_atomic_store_64bit(ATOMIC_VAL, NEW_VAL, ORDER) \
-    switch (ORDER) { \
-    case _Py_memory_order_acquire: \
-      _InterlockedExchange64_acq((__int64 volatile*)ATOMIC_VAL, (__int64)NEW_VAL); \
-      break; \
-    case _Py_memory_order_release: \
-      _InterlockedExchange64_rel((__int64 volatile*)ATOMIC_VAL, (__int64)NEW_VAL); \
-      break; \
-    default: \
-      _InterlockedExchange64((__int64 volatile*)ATOMIC_VAL, (__int64)NEW_VAL); \
-      break; \
-  }
-#else
-#define _Py_atomic_store_64bit(ATOMIC_VAL, NEW_VAL, ORDER) ((void)0);
-#endif
-
-#define _Py_atomic_store_32bit(ATOMIC_VAL, NEW_VAL, ORDER) \
-  switch (ORDER) { \
-  case _Py_memory_order_acquire: \
-    _InterlockedExchange_acq((volatile long*)ATOMIC_VAL, (int)NEW_VAL); \
-    break; \
-  case _Py_memory_order_release: \
-    _InterlockedExchange_rel((volatile long*)ATOMIC_VAL, (int)NEW_VAL); \
-    break; \
-  default: \
-    _InterlockedExchange((volatile long*)ATOMIC_VAL, (int)NEW_VAL); \
-    break; \
-  }
-
-#if defined(_M_ARM64)
-/*  This has to be an intptr_t for now.
-    gil_created() uses -1 as a sentinel value, if this returns
-    a uintptr_t it will do an unsigned compare and crash
-*/
-inline intptr_t _Py_atomic_load_64bit(volatile uintptr_t* value, int order) {
-    uintptr_t old;
-    switch (order) {
-    case _Py_memory_order_acquire:
-    {
-      do {
-        old = *value;
-      } while(_InterlockedCompareExchange64_acq(value, old, old) != old);
-      break;
-    }
-    case _Py_memory_order_release:
-    {
-      do {
-        old = *value;
-      } while(_InterlockedCompareExchange64_rel(value, old, old) != old);
-      break;
-    }
-    case _Py_memory_order_relaxed:
-      old = *value;
-      break;
-    default:
-    {
-      do {
-        old = *value;
-      } while(_InterlockedCompareExchange64(value, old, old) != old);
-      break;
-    }
-    }
-    return old;
-}
-
-#else
-#define _Py_atomic_load_64bit(ATOMIC_VAL, ORDER) *ATOMIC_VAL
-#endif
-
-inline int _Py_atomic_load_32bit(volatile int* value, int order) {
-    int old;
-    switch (order) {
-    case _Py_memory_order_acquire:
-    {
-      do {
-        old = *value;
-      } while(_InterlockedCompareExchange_acq(value, old, old) != old);
-      break;
-    }
-    case _Py_memory_order_release:
-    {
-      do {
-        old = *value;
-      } while(_InterlockedCompareExchange_rel(value, old, old) != old);
-      break;
-    }
-    case _Py_memory_order_relaxed:
-      old = *value;
-      break;
-    default:
-    {
-      do {
-        old = *value;
-      } while(_InterlockedCompareExchange(value, old, old) != old);
-      break;
-    }
-    }
-    return old;
-}
-
-#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \
-  if (sizeof(*ATOMIC_VAL._value) == 8) { \
-    _Py_atomic_store_64bit(ATOMIC_VAL._value, NEW_VAL, ORDER) } else { \
-    _Py_atomic_store_32bit(ATOMIC_VAL._value, NEW_VAL, ORDER) }
-
-#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \
-  ( \
-    sizeof(*(ATOMIC_VAL._value)) == 8 ? \
-    _Py_atomic_load_64bit(ATOMIC_VAL._value, ORDER) : \
-    _Py_atomic_load_32bit(ATOMIC_VAL._value, ORDER) \
-  )
-#endif
-#else  /* !gcc x86  !_msc_ver */
-typedef enum _Py_memory_order {
-    _Py_memory_order_relaxed,
-    _Py_memory_order_acquire,
-    _Py_memory_order_release,
-    _Py_memory_order_acq_rel,
-    _Py_memory_order_seq_cst
-} _Py_memory_order;
-
-typedef struct _Py_atomic_address {
-    uintptr_t _value;
-} _Py_atomic_address;
-
-typedef struct _Py_atomic_int {
-    int _value;
-} _Py_atomic_int;
-/* Fall back to other compilers and processors by assuming that simple
-   volatile accesses are atomic.  This is false, so people should port
-   this. */
-#define _Py_atomic_signal_fence(/*memory_order*/ ORDER) ((void)0)
-#define _Py_atomic_thread_fence(/*memory_order*/ ORDER) ((void)0)
-#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \
-    ((ATOMIC_VAL)->_value = NEW_VAL)
-#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \
-    ((ATOMIC_VAL)->_value)
-#endif
-
-/* Standardized shortcuts. */
-#define _Py_atomic_store(ATOMIC_VAL, NEW_VAL) \
-    _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, _Py_memory_order_seq_cst)
-#define _Py_atomic_load(ATOMIC_VAL) \
-    _Py_atomic_load_explicit(ATOMIC_VAL, _Py_memory_order_seq_cst)
-
-/* Python-local extensions */
-
-#define _Py_atomic_store_relaxed(ATOMIC_VAL, NEW_VAL) \
-    _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, _Py_memory_order_relaxed)
-#define _Py_atomic_load_relaxed(ATOMIC_VAL) \
-    _Py_atomic_load_explicit(ATOMIC_VAL, _Py_memory_order_relaxed)
-#endif  /* Py_BUILD_CORE */
-#endif  /* Py_ATOMIC_H */
diff --git a/pythonsdk/include/pycapsule.h b/pythonsdk/include/pycapsule.h
deleted file mode 100644
index 358501e..0000000
--- a/pythonsdk/include/pycapsule.h
+++ /dev/null
@@ -1,59 +0,0 @@
-
-/* Capsule objects let you wrap a C "void *" pointer in a Python
-   object.  They're a way of passing data through the Python interpreter
-   without creating your own custom type.
-
-   Capsules are used for communication between extension modules.
-   They provide a way for an extension module to export a C interface
-   to other extension modules, so that extension modules can use the
-   Python import mechanism to link to one another.
-
-   For more information, please see "c-api/capsule.html" in the
-   documentation.
-*/
-
-#ifndef Py_CAPSULE_H
-#define Py_CAPSULE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_DATA(PyTypeObject) PyCapsule_Type;
-
-typedef void (*PyCapsule_Destructor)(PyObject *);
-
-#define PyCapsule_CheckExact(op) (Py_TYPE(op) == &PyCapsule_Type)
-
-
-PyAPI_FUNC(PyObject *) PyCapsule_New(
-    void *pointer,
-    const char *name,
-    PyCapsule_Destructor destructor);
-
-PyAPI_FUNC(void *) PyCapsule_GetPointer(PyObject *capsule, const char *name);
-
-PyAPI_FUNC(PyCapsule_Destructor) PyCapsule_GetDestructor(PyObject *capsule);
-
-PyAPI_FUNC(const char *) PyCapsule_GetName(PyObject *capsule);
-
-PyAPI_FUNC(void *) PyCapsule_GetContext(PyObject *capsule);
-
-PyAPI_FUNC(int) PyCapsule_IsValid(PyObject *capsule, const char *name);
-
-PyAPI_FUNC(int) PyCapsule_SetPointer(PyObject *capsule, void *pointer);
-
-PyAPI_FUNC(int) PyCapsule_SetDestructor(PyObject *capsule, PyCapsule_Destructor destructor);
-
-PyAPI_FUNC(int) PyCapsule_SetName(PyObject *capsule, const char *name);
-
-PyAPI_FUNC(int) PyCapsule_SetContext(PyObject *capsule, void *context);
-
-PyAPI_FUNC(void *) PyCapsule_Import(
-    const char *name,           /* UTF-8 encoded string */
-    int no_block);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_CAPSULE_H */
diff --git a/pythonsdk/include/pyconfig.h b/pythonsdk/include/pyconfig.h
deleted file mode 100644
index 5d579a2..0000000
--- a/pythonsdk/include/pyconfig.h
+++ /dev/null
@@ -1,684 +0,0 @@
-#ifndef Py_CONFIG_H
-#define Py_CONFIG_H
-
-/* pyconfig.h.  NOT Generated automatically by configure.
-
-This is a manually maintained version used for the Watcom,
-Borland and Microsoft Visual C++ compilers.  It is a
-standard part of the Python distribution.
-
-WINDOWS DEFINES:
-The code specific to Windows should be wrapped around one of
-the following #defines
-
-MS_WIN64 - Code specific to the MS Win64 API
-MS_WIN32 - Code specific to the MS Win32 (and Win64) API (obsolete, this covers all supported APIs)
-MS_WINDOWS - Code specific to Windows, but all versions.
-Py_ENABLE_SHARED - Code if the Python core is built as a DLL.
-
-Also note that neither "_M_IX86" or "_MSC_VER" should be used for
-any purpose other than "Windows Intel x86 specific" and "Microsoft
-compiler specific".  Therefore, these should be very rare.
-
-
-NOTE: The following symbols are deprecated:
-NT, USE_DL_EXPORT, USE_DL_IMPORT, DL_EXPORT, DL_IMPORT
-MS_CORE_DLL.
-
-WIN32 is still required for the locale module.
-
-*/
-
-/* Deprecated USE_DL_EXPORT macro - please use Py_BUILD_CORE */
-#ifdef USE_DL_EXPORT
-#       define Py_BUILD_CORE
-#endif /* USE_DL_EXPORT */
-
-/* Visual Studio 2005 introduces deprecation warnings for
-   "insecure" and POSIX functions. The insecure functions should
-   be replaced by *_s versions (according to Microsoft); the
-   POSIX functions by _* versions (which, according to Microsoft,
-   would be ISO C conforming). Neither renaming is feasible, so
-   we just silence the warnings. */
-
-#ifndef _CRT_SECURE_NO_DEPRECATE
-#define _CRT_SECURE_NO_DEPRECATE 1
-#endif
-#ifndef _CRT_NONSTDC_NO_DEPRECATE
-#define _CRT_NONSTDC_NO_DEPRECATE 1
-#endif
-
-#define HAVE_IO_H
-#define HAVE_SYS_UTIME_H
-#define HAVE_TEMPNAM
-#define HAVE_TMPFILE
-#define HAVE_TMPNAM
-#define HAVE_CLOCK
-#define HAVE_STRERROR
-
-#include <io.h>
-
-#define HAVE_HYPOT
-#define HAVE_STRFTIME
-#define DONT_HAVE_SIG_ALARM
-#define DONT_HAVE_SIG_PAUSE
-#define LONG_BIT        32
-#define WORD_BIT 32
-
-#define MS_WIN32 /* only support win32 and greater. */
-#define MS_WINDOWS
-#ifndef PYTHONPATH
-#       define PYTHONPATH L".\\DLLs;.\\lib"
-#endif
-#define NT_THREADS
-#define WITH_THREAD
-#ifndef NETSCAPE_PI
-#define USE_SOCKET
-#endif
-
-
-/* Compiler specific defines */
-
-/* ------------------------------------------------------------------------*/
-/* Microsoft C defines _MSC_VER */
-#ifdef _MSC_VER
-
-/* We want COMPILER to expand to a string containing _MSC_VER's *value*.
- * This is horridly tricky, because the stringization operator only works
- * on macro arguments, and doesn't evaluate macros passed *as* arguments.
- * Attempts simpler than the following appear doomed to produce "_MSC_VER"
- * literally in the string.
- */
-#define _Py_PASTE_VERSION(SUFFIX) \
-        ("[MSC v." _Py_STRINGIZE(_MSC_VER) " " SUFFIX "]")
-/* e.g., this produces, after compile-time string catenation,
- *      ("[MSC v.1200 32 bit (Intel)]")
- *
- * _Py_STRINGIZE(_MSC_VER) expands to
- * _Py_STRINGIZE1((_MSC_VER)) expands to
- * _Py_STRINGIZE2(_MSC_VER) but as this call is the result of token-pasting
- *      it's scanned again for macros and so further expands to (under MSVC 6)
- * _Py_STRINGIZE2(1200) which then expands to
- * "1200"
- */
-#define _Py_STRINGIZE(X) _Py_STRINGIZE1((X))
-#define _Py_STRINGIZE1(X) _Py_STRINGIZE2 ## X
-#define _Py_STRINGIZE2(X) #X
-
-/* MSVC defines _WINxx to differentiate the windows platform types
-
-   Note that for compatibility reasons _WIN32 is defined on Win32
-   *and* on Win64. For the same reasons, in Python, MS_WIN32 is
-   defined on Win32 *and* Win64. Win32 only code must therefore be
-   guarded as follows:
-        #if defined(MS_WIN32) && !defined(MS_WIN64)
-*/
-#ifdef _WIN64
-#define MS_WIN64
-#endif
-
-/* set the COMPILER */
-#ifdef MS_WIN64
-#if defined(_M_X64) || defined(_M_AMD64)
-#if defined(__INTEL_COMPILER)
-#define COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 64 bit (amd64) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]")
-#else
-#define COMPILER _Py_PASTE_VERSION("64 bit (AMD64)")
-#endif /* __INTEL_COMPILER */
-#define PYD_PLATFORM_TAG "win_amd64"
-#else
-#define COMPILER _Py_PASTE_VERSION("64 bit (Unknown)")
-#endif
-#endif /* MS_WIN64 */
-
-/* set the version macros for the windows headers */
-/* Python 3.5+ requires Windows Vista or greater */
-#define Py_WINVER 0x0600 /* _WIN32_WINNT_VISTA */
-#define Py_NTDDI NTDDI_VISTA
-
-/* We only set these values when building Python - we don't want to force
-   these values on extensions, as that will affect the prototypes and
-   structures exposed in the Windows headers. Even when building Python, we
-   allow a single source file to override this - they may need access to
-   structures etc so it can optionally use new Windows features if it
-   determines at runtime they are available.
-*/
-#if defined(Py_BUILD_CORE) || defined(Py_BUILD_CORE_BUILTIN) || defined(Py_BUILD_CORE_MODULE)
-#ifndef NTDDI_VERSION
-#define NTDDI_VERSION Py_NTDDI
-#endif
-#ifndef WINVER
-#define WINVER Py_WINVER
-#endif
-#ifndef _WIN32_WINNT
-#define _WIN32_WINNT Py_WINVER
-#endif
-#endif
-
-/* _W64 is not defined for VC6 or eVC4 */
-#ifndef _W64
-#define _W64
-#endif
-
-/* Define like size_t, omitting the "unsigned" */
-#ifdef MS_WIN64
-typedef __int64 ssize_t;
-#else
-typedef _W64 int ssize_t;
-#endif
-#define HAVE_SSIZE_T 1
-
-#if defined(MS_WIN32) && !defined(MS_WIN64)
-#if defined(_M_IX86)
-#if defined(__INTEL_COMPILER)
-#define COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 32 bit (Intel) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]")
-#else
-#define COMPILER _Py_PASTE_VERSION("32 bit (Intel)")
-#endif /* __INTEL_COMPILER */
-#define PYD_PLATFORM_TAG "win32"
-#elif defined(_M_ARM)
-#define COMPILER _Py_PASTE_VERSION("32 bit (ARM)")
-#define PYD_PLATFORM_TAG "win_arm"
-#else
-#define COMPILER _Py_PASTE_VERSION("32 bit (Unknown)")
-#endif
-#endif /* MS_WIN32 && !MS_WIN64 */
-
-typedef int pid_t;
-
-#include <float.h>
-#define Py_IS_NAN _isnan
-#define Py_IS_INFINITY(X) (!_finite(X) && !_isnan(X))
-#define Py_IS_FINITE(X) _finite(X)
-#define copysign _copysign
-
-/* Side by Side assemblies supported in VS 2005 and VS 2008 but not 2010*/
-#if _MSC_VER >= 1400 && _MSC_VER < 1600
-#define HAVE_SXS 1
-#endif
-
-/* define some ANSI types that are not defined in earlier Win headers */
-#if _MSC_VER >= 1200
-/* This file only exists in VC 6.0 or higher */
-#include <basetsd.h>
-#endif
-
-#endif /* _MSC_VER */
-
-/* ------------------------------------------------------------------------*/
-/* egcs/gnu-win32 defines __GNUC__ and _WIN32 */
-#if defined(__GNUC__) && defined(_WIN32)
-/* XXX These defines are likely incomplete, but should be easy to fix.
-   They should be complete enough to build extension modules. */
-/* Suggested by Rene Liebscher <R.Liebscher@gmx.de> to avoid a GCC 2.91.*
-   bug that requires structure imports.  More recent versions of the
-   compiler don't exhibit this bug.
-*/
-#if (__GNUC__==2) && (__GNUC_MINOR__<=91)
-#warning "Please use an up-to-date version of gcc! (>2.91 recommended)"
-#endif
-
-#define COMPILER "[gcc]"
-#define PY_LONG_LONG long long
-#define PY_LLONG_MIN LLONG_MIN
-#define PY_LLONG_MAX LLONG_MAX
-#define PY_ULLONG_MAX ULLONG_MAX
-#endif /* GNUC */
-
-/* ------------------------------------------------------------------------*/
-/* lcc-win32 defines __LCC__ */
-#if defined(__LCC__)
-/* XXX These defines are likely incomplete, but should be easy to fix.
-   They should be complete enough to build extension modules. */
-
-#define COMPILER "[lcc-win32]"
-typedef int pid_t;
-/* __declspec() is supported here too - do nothing to get the defaults */
-
-#endif /* LCC */
-
-/* ------------------------------------------------------------------------*/
-/* End of compilers - finish up */
-
-#ifndef NO_STDIO_H
-#       include <stdio.h>
-#endif
-
-/* 64 bit ints are usually spelt __int64 unless compiler has overridden */
-#ifndef PY_LONG_LONG
-#       define PY_LONG_LONG __int64
-#       define PY_LLONG_MAX _I64_MAX
-#       define PY_LLONG_MIN _I64_MIN
-#       define PY_ULLONG_MAX _UI64_MAX
-#endif
-
-/* For Windows the Python core is in a DLL by default.  Test
-Py_NO_ENABLE_SHARED to find out.  Also support MS_NO_COREDLL for b/w compat */
-#if !defined(MS_NO_COREDLL) && !defined(Py_NO_ENABLE_SHARED)
-#       define Py_ENABLE_SHARED 1 /* standard symbol for shared library */
-#       define MS_COREDLL       /* deprecated old symbol */
-#endif /* !MS_NO_COREDLL && ... */
-
-/*  All windows compilers that use this header support __declspec */
-#define HAVE_DECLSPEC_DLL
-
-/* For an MSVC DLL, we can nominate the .lib files used by extensions */
-#ifdef MS_COREDLL
-#       if !defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_BUILTIN)
-                /* not building the core - must be an ext */
-#               if defined(_MSC_VER)
-                        /* So MSVC users need not specify the .lib
-                        file in their Makefile (other compilers are
-                        generally taken care of by distutils.) */
-#                       if defined(_DEBUG)
-#                               pragma comment(lib,"python37_d.lib")
-#                       elif defined(Py_LIMITED_API)
-#                               pragma comment(lib,"python3.lib")
-#                       else
-#                               pragma comment(lib,"python37.lib")
-#                       endif /* _DEBUG */
-#               endif /* _MSC_VER */
-#       endif /* Py_BUILD_CORE */
-#endif /* MS_COREDLL */
-
-#if defined(MS_WIN64)
-/* maintain "win32" sys.platform for backward compatibility of Python code,
-   the Win64 API should be close enough to the Win32 API to make this
-   preferable */
-#       define PLATFORM "win32"
-#       define SIZEOF_VOID_P 8
-#       define SIZEOF_TIME_T 8
-#       define SIZEOF_OFF_T 4
-#       define SIZEOF_FPOS_T 8
-#       define SIZEOF_HKEY 8
-#       define SIZEOF_SIZE_T 8
-/* configure.ac defines HAVE_LARGEFILE_SUPPORT iff
-   sizeof(off_t) > sizeof(long), and sizeof(PY_LONG_LONG) >= sizeof(off_t).
-   On Win64 the second condition is not true, but if fpos_t replaces off_t
-   then this is true. The uses of HAVE_LARGEFILE_SUPPORT imply that Win64
-   should define this. */
-#       define HAVE_LARGEFILE_SUPPORT
-#elif defined(MS_WIN32)
-#       define PLATFORM "win32"
-#       define HAVE_LARGEFILE_SUPPORT
-#       define SIZEOF_VOID_P 4
-#       define SIZEOF_OFF_T 4
-#       define SIZEOF_FPOS_T 8
-#       define SIZEOF_HKEY 4
-#       define SIZEOF_SIZE_T 4
-        /* MS VS2005 changes time_t to a 64-bit type on all platforms */
-#       if defined(_MSC_VER) && _MSC_VER >= 1400
-#       define SIZEOF_TIME_T 8
-#       else
-#       define SIZEOF_TIME_T 4
-#       endif
-#endif
-
-#ifdef _DEBUG
-#       define Py_DEBUG
-#endif
-
-
-#ifdef MS_WIN32
-
-#define SIZEOF_SHORT 2
-#define SIZEOF_INT 4
-#define SIZEOF_LONG 4
-#define SIZEOF_LONG_LONG 8
-#define SIZEOF_DOUBLE 8
-#define SIZEOF_FLOAT 4
-
-/* VC 7.1 has them and VC 6.0 does not.  VC 6.0 has a version number of 1200.
-   Microsoft eMbedded Visual C++ 4.0 has a version number of 1201 and doesn't
-   define these.
-   If some compiler does not provide them, modify the #if appropriately. */
-#if defined(_MSC_VER)
-#if _MSC_VER > 1300
-#define HAVE_UINTPTR_T 1
-#define HAVE_INTPTR_T 1
-#else
-/* VC6, VS 2002 and eVC4 don't support the C99 LL suffix for 64-bit integer literals */
-#define Py_LL(x) x##I64
-#endif  /* _MSC_VER > 1300  */
-#endif  /* _MSC_VER */
-
-#endif
-
-/* define signed and unsigned exact-width 32-bit and 64-bit types, used in the
-   implementation of Python integers. */
-#define PY_UINT32_T uint32_t
-#define PY_UINT64_T uint64_t
-#define PY_INT32_T int32_t
-#define PY_INT64_T int64_t
-
-/* Fairly standard from here! */
-
-/* Define to 1 if you have the `copysign' function. */
-#define HAVE_COPYSIGN 1
-
-/* Define to 1 if you have the `round' function. */
-#if _MSC_VER >= 1800
-#define HAVE_ROUND 1
-#endif
-
-/* Define to 1 if you have the `isinf' macro. */
-#define HAVE_DECL_ISINF 1
-
-/* Define to 1 if you have the `isnan' function. */
-#define HAVE_DECL_ISNAN 1
-
-/* Define if on AIX 3.
-   System headers sometimes define this.
-   We just want to avoid a redefinition error message.  */
-#ifndef _ALL_SOURCE
-/* #undef _ALL_SOURCE */
-#endif
-
-/* Define to empty if the keyword does not work.  */
-/* #define const  */
-
-/* Define to 1 if you have the <conio.h> header file. */
-#define HAVE_CONIO_H 1
-
-/* Define to 1 if you have the <direct.h> header file. */
-#define HAVE_DIRECT_H 1
-
-/* Define if you have dirent.h.  */
-/* #define DIRENT 1 */
-
-/* Define to the type of elements in the array set by `getgroups'.
-   Usually this is either `int' or `gid_t'.  */
-/* #undef GETGROUPS_T */
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-/* #undef gid_t */
-
-/* Define if your struct tm has tm_zone.  */
-/* #undef HAVE_TM_ZONE */
-
-/* Define if you don't have tm_zone but do have the external array
-   tzname.  */
-#define HAVE_TZNAME
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-/* #undef mode_t */
-
-/* Define if you don't have dirent.h, but have ndir.h.  */
-/* #undef NDIR */
-
-/* Define to `long' if <sys/types.h> doesn't define.  */
-/* #undef off_t */
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-/* #undef pid_t */
-
-/* Define if the system does not provide POSIX.1 features except
-   with this defined.  */
-/* #undef _POSIX_1_SOURCE */
-
-/* Define if you need to in order for stat and other things to work.  */
-/* #undef _POSIX_SOURCE */
-
-/* Define as the return type of signal handlers (int or void).  */
-#define RETSIGTYPE void
-
-/* Define to `unsigned' if <sys/types.h> doesn't define.  */
-/* #undef size_t */
-
-/* Define if you have the ANSI C header files.  */
-#define STDC_HEADERS 1
-
-/* Define if you don't have dirent.h, but have sys/dir.h.  */
-/* #undef SYSDIR */
-
-/* Define if you don't have dirent.h, but have sys/ndir.h.  */
-/* #undef SYSNDIR */
-
-/* Define if you can safely include both <sys/time.h> and <time.h>.  */
-/* #undef TIME_WITH_SYS_TIME */
-
-/* Define if your <sys/time.h> declares struct tm.  */
-/* #define TM_IN_SYS_TIME 1 */
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-/* #undef uid_t */
-
-/* Define if the closedir function returns void instead of int.  */
-/* #undef VOID_CLOSEDIR */
-
-/* Define if getpgrp() must be called as getpgrp(0)
-   and (consequently) setpgrp() as setpgrp(0, 0). */
-/* #undef GETPGRP_HAVE_ARGS */
-
-/* Define this if your time.h defines altzone */
-/* #define HAVE_ALTZONE */
-
-/* Define if you have the putenv function.  */
-#define HAVE_PUTENV
-
-/* Define if your compiler supports function prototypes */
-#define HAVE_PROTOTYPES
-
-/* Define if  you can safely include both <sys/select.h> and <sys/time.h>
-   (which you can't on SCO ODT 3.0). */
-/* #undef SYS_SELECT_WITH_SYS_TIME */
-
-/* Define if you want build the _decimal module using a coroutine-local rather
-   than a thread-local context */
-#define WITH_DECIMAL_CONTEXTVAR 1
-
-/* Define if you want documentation strings in extension modules */
-#define WITH_DOC_STRINGS 1
-
-/* Define if you want to compile in rudimentary thread support */
-/* #undef WITH_THREAD */
-
-/* Define if you want to use the GNU readline library */
-/* #define WITH_READLINE 1 */
-
-/* Use Python's own small-block memory-allocator. */
-#define WITH_PYMALLOC 1
-
-/* Define if you have clock.  */
-/* #define HAVE_CLOCK */
-
-/* Define when any dynamic module loading is enabled */
-#define HAVE_DYNAMIC_LOADING
-
-/* Define if you have ftime.  */
-#define HAVE_FTIME
-
-/* Define if you have getpeername.  */
-#define HAVE_GETPEERNAME
-
-/* Define if you have getpgrp.  */
-/* #undef HAVE_GETPGRP */
-
-/* Define if you have getpid.  */
-#define HAVE_GETPID
-
-/* Define if you have gettimeofday.  */
-/* #undef HAVE_GETTIMEOFDAY */
-
-/* Define if you have getwd.  */
-/* #undef HAVE_GETWD */
-
-/* Define if you have lstat.  */
-/* #undef HAVE_LSTAT */
-
-/* Define if you have the mktime function.  */
-#define HAVE_MKTIME
-
-/* Define if you have nice.  */
-/* #undef HAVE_NICE */
-
-/* Define if you have readlink.  */
-/* #undef HAVE_READLINK */
-
-/* Define if you have setpgid.  */
-/* #undef HAVE_SETPGID */
-
-/* Define if you have setpgrp.  */
-/* #undef HAVE_SETPGRP */
-
-/* Define if you have setsid.  */
-/* #undef HAVE_SETSID */
-
-/* Define if you have setvbuf.  */
-#define HAVE_SETVBUF
-
-/* Define if you have siginterrupt.  */
-/* #undef HAVE_SIGINTERRUPT */
-
-/* Define if you have symlink.  */
-/* #undef HAVE_SYMLINK */
-
-/* Define if you have tcgetpgrp.  */
-/* #undef HAVE_TCGETPGRP */
-
-/* Define if you have tcsetpgrp.  */
-/* #undef HAVE_TCSETPGRP */
-
-/* Define if you have times.  */
-/* #undef HAVE_TIMES */
-
-/* Define if you have uname.  */
-/* #undef HAVE_UNAME */
-
-/* Define if you have waitpid.  */
-/* #undef HAVE_WAITPID */
-
-/* Define to 1 if you have the `wcsftime' function. */
-#if defined(_MSC_VER) && _MSC_VER >= 1310
-#define HAVE_WCSFTIME 1
-#endif
-
-/* Define to 1 if you have the `wcscoll' function. */
-#define HAVE_WCSCOLL 1
-
-/* Define to 1 if you have the `wcsxfrm' function. */
-#define HAVE_WCSXFRM 1
-
-/* Define if the zlib library has inflateCopy */
-#define HAVE_ZLIB_COPY 1
-
-/* Define if you have the <dlfcn.h> header file.  */
-/* #undef HAVE_DLFCN_H */
-
-/* Define to 1 if you have the <errno.h> header file. */
-#define HAVE_ERRNO_H 1
-
-/* Define if you have the <fcntl.h> header file.  */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if you have the <process.h> header file. */
-#define HAVE_PROCESS_H 1
-
-/* Define to 1 if you have the <signal.h> header file. */
-#define HAVE_SIGNAL_H 1
-
-/* Define if you have the <stdarg.h> prototypes.  */
-#define HAVE_STDARG_PROTOTYPES
-
-/* Define if you have the <stddef.h> header file.  */
-#define HAVE_STDDEF_H 1
-
-/* Define if you have the <sys/audioio.h> header file.  */
-/* #undef HAVE_SYS_AUDIOIO_H */
-
-/* Define if you have the <sys/param.h> header file.  */
-/* #define HAVE_SYS_PARAM_H 1 */
-
-/* Define if you have the <sys/select.h> header file.  */
-/* #define HAVE_SYS_SELECT_H 1 */
-
-/* Define to 1 if you have the <sys/stat.h> header file.  */
-#define HAVE_SYS_STAT_H 1
-
-/* Define if you have the <sys/time.h> header file.  */
-/* #define HAVE_SYS_TIME_H 1 */
-
-/* Define if you have the <sys/times.h> header file.  */
-/* #define HAVE_SYS_TIMES_H 1 */
-
-/* Define to 1 if you have the <sys/types.h> header file.  */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define if you have the <sys/un.h> header file.  */
-/* #define HAVE_SYS_UN_H 1 */
-
-/* Define if you have the <sys/utime.h> header file.  */
-/* #define HAVE_SYS_UTIME_H 1 */
-
-/* Define if you have the <sys/utsname.h> header file.  */
-/* #define HAVE_SYS_UTSNAME_H 1 */
-
-/* Define if you have the <unistd.h> header file.  */
-/* #define HAVE_UNISTD_H 1 */
-
-/* Define if you have the <utime.h> header file.  */
-/* #define HAVE_UTIME_H 1 */
-
-/* Define if the compiler provides a wchar.h header file. */
-#define HAVE_WCHAR_H 1
-
-/* The size of `wchar_t', as computed by sizeof. */
-#define SIZEOF_WCHAR_T 2
-
-/* The size of `_Bool', as computed by sizeof. */
-#define SIZEOF__BOOL 1
-
-/* The size of `pid_t', as computed by sizeof. */
-#define SIZEOF_PID_T SIZEOF_INT
-
-/* Define if you have the dl library (-ldl).  */
-/* #undef HAVE_LIBDL */
-
-/* Define if you have the mpc library (-lmpc).  */
-/* #undef HAVE_LIBMPC */
-
-/* Define if you have the nsl library (-lnsl).  */
-#define HAVE_LIBNSL 1
-
-/* Define if you have the seq library (-lseq).  */
-/* #undef HAVE_LIBSEQ */
-
-/* Define if you have the socket library (-lsocket).  */
-#define HAVE_LIBSOCKET 1
-
-/* Define if you have the sun library (-lsun).  */
-/* #undef HAVE_LIBSUN */
-
-/* Define if you have the termcap library (-ltermcap).  */
-/* #undef HAVE_LIBTERMCAP */
-
-/* Define if you have the termlib library (-ltermlib).  */
-/* #undef HAVE_LIBTERMLIB */
-
-/* Define if you have the thread library (-lthread).  */
-/* #undef HAVE_LIBTHREAD */
-
-/* WinSock does not use a bitmask in select, and uses
-   socket handles greater than FD_SETSIZE */
-#define Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE
-
-/* Define if C doubles are 64-bit IEEE 754 binary format, stored with the
-   least significant byte first */
-#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 1
-
-/* Define to 1 if you have the `erf' function. */
-#define HAVE_ERF 1
-
-/* Define to 1 if you have the `erfc' function. */
-#define HAVE_ERFC 1
-
-/* Define if you have the 'inet_pton' function. */
-#define HAVE_INET_PTON 1
-
-/* framework name */
-#define _PYTHONFRAMEWORK ""
-
-/* Define if libssl has X509_VERIFY_PARAM_set1_host and related function */
-#define HAVE_X509_VERIFY_PARAM_SET1_HOST 1
-
-#endif /* !Py_CONFIG_H */
diff --git a/pythonsdk/include/pyctype.h b/pythonsdk/include/pyctype.h
deleted file mode 100644
index ee22795..0000000
--- a/pythonsdk/include/pyctype.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef Py_LIMITED_API
-#ifndef PYCTYPE_H
-#define PYCTYPE_H
-
-#define PY_CTF_LOWER  0x01
-#define PY_CTF_UPPER  0x02
-#define PY_CTF_ALPHA  (PY_CTF_LOWER|PY_CTF_UPPER)
-#define PY_CTF_DIGIT  0x04
-#define PY_CTF_ALNUM  (PY_CTF_ALPHA|PY_CTF_DIGIT)
-#define PY_CTF_SPACE  0x08
-#define PY_CTF_XDIGIT 0x10
-
-PyAPI_DATA(const unsigned int) _Py_ctype_table[256];
-
-/* Unlike their C counterparts, the following macros are not meant to
- * handle an int with any of the values [EOF, 0-UCHAR_MAX]. The argument
- * must be a signed/unsigned char. */
-#define Py_ISLOWER(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_LOWER)
-#define Py_ISUPPER(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_UPPER)
-#define Py_ISALPHA(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALPHA)
-#define Py_ISDIGIT(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_DIGIT)
-#define Py_ISXDIGIT(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_XDIGIT)
-#define Py_ISALNUM(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALNUM)
-#define Py_ISSPACE(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_SPACE)
-
-PyAPI_DATA(const unsigned char) _Py_ctype_tolower[256];
-PyAPI_DATA(const unsigned char) _Py_ctype_toupper[256];
-
-#define Py_TOLOWER(c) (_Py_ctype_tolower[Py_CHARMASK(c)])
-#define Py_TOUPPER(c) (_Py_ctype_toupper[Py_CHARMASK(c)])
-
-#endif /* !PYCTYPE_H */
-#endif /* !Py_LIMITED_API */
diff --git a/pythonsdk/include/pydebug.h b/pythonsdk/include/pydebug.h
deleted file mode 100644
index c983d0a..0000000
--- a/pythonsdk/include/pydebug.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef Py_LIMITED_API
-#ifndef Py_PYDEBUG_H
-#define Py_PYDEBUG_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* These global variable are defined in pylifecycle.c */
-/* XXX (ncoghlan): move these declarations to pylifecycle.h? */
-PyAPI_DATA(int) Py_DebugFlag;
-PyAPI_DATA(int) Py_VerboseFlag;
-PyAPI_DATA(int) Py_QuietFlag;
-PyAPI_DATA(int) Py_InteractiveFlag;
-PyAPI_DATA(int) Py_InspectFlag;
-PyAPI_DATA(int) Py_OptimizeFlag;
-PyAPI_DATA(int) Py_NoSiteFlag;
-PyAPI_DATA(int) Py_BytesWarningFlag;
-PyAPI_DATA(int) Py_FrozenFlag;
-PyAPI_DATA(int) Py_IgnoreEnvironmentFlag;
-PyAPI_DATA(int) Py_DontWriteBytecodeFlag;
-PyAPI_DATA(int) Py_NoUserSiteDirectory;
-PyAPI_DATA(int) Py_UnbufferedStdioFlag;
-PyAPI_DATA(int) Py_HashRandomizationFlag;
-PyAPI_DATA(int) Py_IsolatedFlag;
-
-#ifdef MS_WINDOWS
-PyAPI_DATA(int) Py_LegacyWindowsFSEncodingFlag;
-PyAPI_DATA(int) Py_LegacyWindowsStdioFlag;
-#endif
-
-/* this is a wrapper around getenv() that pays attention to
-   Py_IgnoreEnvironmentFlag.  It should be used for getting variables like
-   PYTHONPATH and PYTHONHOME from the environment */
-#define Py_GETENV(s) (Py_IgnoreEnvironmentFlag ? NULL : getenv(s))
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PYDEBUG_H */
-#endif /* Py_LIMITED_API */
diff --git a/pythonsdk/include/pydtrace.h b/pythonsdk/include/pydtrace.h
deleted file mode 100644
index 2c5b0e9..0000000
--- a/pythonsdk/include/pydtrace.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Static DTrace probes interface */
-
-#ifndef Py_DTRACE_H
-#define Py_DTRACE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef WITH_DTRACE
-
-#include "pydtrace_probes.h"
-
-/* pydtrace_probes.h, on systems with DTrace, is auto-generated to include
-   `PyDTrace_{PROBE}` and `PyDTrace_{PROBE}_ENABLED()` macros for every probe
-   defined in pydtrace_provider.d.
-
-   Calling these functions must be guarded by a `PyDTrace_{PROBE}_ENABLED()`
-   check to minimize performance impact when probing is off. For example:
-
-       if (PyDTrace_FUNCTION_ENTRY_ENABLED())
-           PyDTrace_FUNCTION_ENTRY(f);
-*/
-
-#else
-
-/* Without DTrace, compile to nothing. */
-
-static inline void PyDTrace_LINE(const char *arg0, const char *arg1, int arg2) {}
-static inline void PyDTrace_FUNCTION_ENTRY(const char *arg0, const char *arg1, int arg2)  {}
-static inline void PyDTrace_FUNCTION_RETURN(const char *arg0, const char *arg1, int arg2) {}
-static inline void PyDTrace_GC_START(int arg0) {}
-static inline void PyDTrace_GC_DONE(Py_ssize_t arg0) {}
-static inline void PyDTrace_INSTANCE_NEW_START(int arg0) {}
-static inline void PyDTrace_INSTANCE_NEW_DONE(int arg0) {}
-static inline void PyDTrace_INSTANCE_DELETE_START(int arg0) {}
-static inline void PyDTrace_INSTANCE_DELETE_DONE(int arg0) {}
-static inline void PyDTrace_IMPORT_FIND_LOAD_START(const char *arg0) {}
-static inline void PyDTrace_IMPORT_FIND_LOAD_DONE(const char *arg0, int arg1) {}
-
-static inline int PyDTrace_LINE_ENABLED(void) { return 0; }
-static inline int PyDTrace_FUNCTION_ENTRY_ENABLED(void) { return 0; }
-static inline int PyDTrace_FUNCTION_RETURN_ENABLED(void) { return 0; }
-static inline int PyDTrace_GC_START_ENABLED(void) { return 0; }
-static inline int PyDTrace_GC_DONE_ENABLED(void) { return 0; }
-static inline int PyDTrace_INSTANCE_NEW_START_ENABLED(void) { return 0; }
-static inline int PyDTrace_INSTANCE_NEW_DONE_ENABLED(void) { return 0; }
-static inline int PyDTrace_INSTANCE_DELETE_START_ENABLED(void) { return 0; }
-static inline int PyDTrace_INSTANCE_DELETE_DONE_ENABLED(void) { return 0; }
-static inline int PyDTrace_IMPORT_FIND_LOAD_START_ENABLED(void) { return 0; }
-static inline int PyDTrace_IMPORT_FIND_LOAD_DONE_ENABLED(void) { return 0; }
-
-#endif /* !WITH_DTRACE */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_DTRACE_H */
diff --git a/pythonsdk/include/pyerrors.h b/pythonsdk/include/pyerrors.h
deleted file mode 100644
index 221b889..0000000
--- a/pythonsdk/include/pyerrors.h
+++ /dev/null
@@ -1,504 +0,0 @@
-#ifndef Py_ERRORS_H
-#define Py_ERRORS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Error objects */
-
-#ifndef Py_LIMITED_API
-/* PyException_HEAD defines the initial segment of every exception class. */
-#define PyException_HEAD PyObject_HEAD PyObject *dict;\
-             PyObject *args; PyObject *traceback;\
-             PyObject *context; PyObject *cause;\
-             char suppress_context;
-
-typedef struct {
-    PyException_HEAD
-} PyBaseExceptionObject;
-
-typedef struct {
-    PyException_HEAD
-    PyObject *msg;
-    PyObject *filename;
-    PyObject *lineno;
-    PyObject *offset;
-    PyObject *text;
-    PyObject *print_file_and_line;
-} PySyntaxErrorObject;
-
-typedef struct {
-    PyException_HEAD
-    PyObject *msg;
-    PyObject *name;
-    PyObject *path;
-} PyImportErrorObject;
-
-typedef struct {
-    PyException_HEAD
-    PyObject *encoding;
-    PyObject *object;
-    Py_ssize_t start;
-    Py_ssize_t end;
-    PyObject *reason;
-} PyUnicodeErrorObject;
-
-typedef struct {
-    PyException_HEAD
-    PyObject *code;
-} PySystemExitObject;
-
-typedef struct {
-    PyException_HEAD
-    PyObject *myerrno;
-    PyObject *strerror;
-    PyObject *filename;
-    PyObject *filename2;
-#ifdef MS_WINDOWS
-    PyObject *winerror;
-#endif
-    Py_ssize_t written;   /* only for BlockingIOError, -1 otherwise */
-} PyOSErrorObject;
-
-typedef struct {
-    PyException_HEAD
-    PyObject *value;
-} PyStopIterationObject;
-
-/* Compatibility typedefs */
-typedef PyOSErrorObject PyEnvironmentErrorObject;
-#ifdef MS_WINDOWS
-typedef PyOSErrorObject PyWindowsErrorObject;
-#endif
-#endif /* !Py_LIMITED_API */
-
-/* Error handling definitions */
-
-PyAPI_FUNC(void) PyErr_SetNone(PyObject *);
-PyAPI_FUNC(void) PyErr_SetObject(PyObject *, PyObject *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _PyErr_SetKeyError(PyObject *);
-_PyErr_StackItem *_PyErr_GetTopmostException(PyThreadState *tstate);
-#endif
-PyAPI_FUNC(void) PyErr_SetString(
-    PyObject *exception,
-    const char *string   /* decoded from utf-8 */
-    );
-PyAPI_FUNC(PyObject *) PyErr_Occurred(void);
-PyAPI_FUNC(void) PyErr_Clear(void);
-PyAPI_FUNC(void) PyErr_Fetch(PyObject **, PyObject **, PyObject **);
-PyAPI_FUNC(void) PyErr_Restore(PyObject *, PyObject *, PyObject *);
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(void) PyErr_GetExcInfo(PyObject **, PyObject **, PyObject **);
-PyAPI_FUNC(void) PyErr_SetExcInfo(PyObject *, PyObject *, PyObject *);
-#endif
-
-#if defined(__clang__) || \
-    (defined(__GNUC__) && \
-     ((__GNUC__ >= 3) || \
-      (__GNUC__ == 2) && (__GNUC_MINOR__ >= 5)))
-#define _Py_NO_RETURN __attribute__((__noreturn__))
-#else
-#define _Py_NO_RETURN
-#endif
-
-/* Defined in Python/pylifecycle.c */
-PyAPI_FUNC(void) Py_FatalError(const char *message) _Py_NO_RETURN;
-
-#if defined(Py_DEBUG) || defined(Py_LIMITED_API)
-#define _PyErr_OCCURRED() PyErr_Occurred()
-#else
-#define _PyErr_OCCURRED() (PyThreadState_GET()->curexc_type)
-#endif
-
-/* Error testing and normalization */
-PyAPI_FUNC(int) PyErr_GivenExceptionMatches(PyObject *, PyObject *);
-PyAPI_FUNC(int) PyErr_ExceptionMatches(PyObject *);
-PyAPI_FUNC(void) PyErr_NormalizeException(PyObject**, PyObject**, PyObject**);
-
-/* Traceback manipulation (PEP 3134) */
-PyAPI_FUNC(int) PyException_SetTraceback(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyException_GetTraceback(PyObject *);
-
-/* Cause manipulation (PEP 3134) */
-PyAPI_FUNC(PyObject *) PyException_GetCause(PyObject *);
-PyAPI_FUNC(void) PyException_SetCause(PyObject *, PyObject *);
-
-/* Context manipulation (PEP 3134) */
-PyAPI_FUNC(PyObject *) PyException_GetContext(PyObject *);
-PyAPI_FUNC(void) PyException_SetContext(PyObject *, PyObject *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _PyErr_ChainExceptions(PyObject *, PyObject *, PyObject *);
-#endif
-
-/* */
-
-#define PyExceptionClass_Check(x)                                       \
-    (PyType_Check((x)) &&                                               \
-     PyType_FastSubclass((PyTypeObject*)(x), Py_TPFLAGS_BASE_EXC_SUBCLASS))
-
-#define PyExceptionInstance_Check(x)                    \
-    PyType_FastSubclass((x)->ob_type, Py_TPFLAGS_BASE_EXC_SUBCLASS)
-
-#define PyExceptionClass_Name(x) \
-     ((char *)(((PyTypeObject*)(x))->tp_name))
-
-#define PyExceptionInstance_Class(x) ((PyObject*)((x)->ob_type))
-
-
-/* Predefined exceptions */
-
-PyAPI_DATA(PyObject *) PyExc_BaseException;
-PyAPI_DATA(PyObject *) PyExc_Exception;
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-PyAPI_DATA(PyObject *) PyExc_StopAsyncIteration;
-#endif
-PyAPI_DATA(PyObject *) PyExc_StopIteration;
-PyAPI_DATA(PyObject *) PyExc_GeneratorExit;
-PyAPI_DATA(PyObject *) PyExc_ArithmeticError;
-PyAPI_DATA(PyObject *) PyExc_LookupError;
-
-PyAPI_DATA(PyObject *) PyExc_AssertionError;
-PyAPI_DATA(PyObject *) PyExc_AttributeError;
-PyAPI_DATA(PyObject *) PyExc_BufferError;
-PyAPI_DATA(PyObject *) PyExc_EOFError;
-PyAPI_DATA(PyObject *) PyExc_FloatingPointError;
-PyAPI_DATA(PyObject *) PyExc_OSError;
-PyAPI_DATA(PyObject *) PyExc_ImportError;
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000
-PyAPI_DATA(PyObject *) PyExc_ModuleNotFoundError;
-#endif
-PyAPI_DATA(PyObject *) PyExc_IndexError;
-PyAPI_DATA(PyObject *) PyExc_KeyError;
-PyAPI_DATA(PyObject *) PyExc_KeyboardInterrupt;
-PyAPI_DATA(PyObject *) PyExc_MemoryError;
-PyAPI_DATA(PyObject *) PyExc_NameError;
-PyAPI_DATA(PyObject *) PyExc_OverflowError;
-PyAPI_DATA(PyObject *) PyExc_RuntimeError;
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-PyAPI_DATA(PyObject *) PyExc_RecursionError;
-#endif
-PyAPI_DATA(PyObject *) PyExc_NotImplementedError;
-PyAPI_DATA(PyObject *) PyExc_SyntaxError;
-PyAPI_DATA(PyObject *) PyExc_IndentationError;
-PyAPI_DATA(PyObject *) PyExc_TabError;
-PyAPI_DATA(PyObject *) PyExc_ReferenceError;
-PyAPI_DATA(PyObject *) PyExc_SystemError;
-PyAPI_DATA(PyObject *) PyExc_SystemExit;
-PyAPI_DATA(PyObject *) PyExc_TypeError;
-PyAPI_DATA(PyObject *) PyExc_UnboundLocalError;
-PyAPI_DATA(PyObject *) PyExc_UnicodeError;
-PyAPI_DATA(PyObject *) PyExc_UnicodeEncodeError;
-PyAPI_DATA(PyObject *) PyExc_UnicodeDecodeError;
-PyAPI_DATA(PyObject *) PyExc_UnicodeTranslateError;
-PyAPI_DATA(PyObject *) PyExc_ValueError;
-PyAPI_DATA(PyObject *) PyExc_ZeroDivisionError;
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_DATA(PyObject *) PyExc_BlockingIOError;
-PyAPI_DATA(PyObject *) PyExc_BrokenPipeError;
-PyAPI_DATA(PyObject *) PyExc_ChildProcessError;
-PyAPI_DATA(PyObject *) PyExc_ConnectionError;
-PyAPI_DATA(PyObject *) PyExc_ConnectionAbortedError;
-PyAPI_DATA(PyObject *) PyExc_ConnectionRefusedError;
-PyAPI_DATA(PyObject *) PyExc_ConnectionResetError;
-PyAPI_DATA(PyObject *) PyExc_FileExistsError;
-PyAPI_DATA(PyObject *) PyExc_FileNotFoundError;
-PyAPI_DATA(PyObject *) PyExc_InterruptedError;
-PyAPI_DATA(PyObject *) PyExc_IsADirectoryError;
-PyAPI_DATA(PyObject *) PyExc_NotADirectoryError;
-PyAPI_DATA(PyObject *) PyExc_PermissionError;
-PyAPI_DATA(PyObject *) PyExc_ProcessLookupError;
-PyAPI_DATA(PyObject *) PyExc_TimeoutError;
-#endif
-
-
-/* Compatibility aliases */
-PyAPI_DATA(PyObject *) PyExc_EnvironmentError;
-PyAPI_DATA(PyObject *) PyExc_IOError;
-#ifdef MS_WINDOWS
-PyAPI_DATA(PyObject *) PyExc_WindowsError;
-#endif
-
-/* Predefined warning categories */
-PyAPI_DATA(PyObject *) PyExc_Warning;
-PyAPI_DATA(PyObject *) PyExc_UserWarning;
-PyAPI_DATA(PyObject *) PyExc_DeprecationWarning;
-PyAPI_DATA(PyObject *) PyExc_PendingDeprecationWarning;
-PyAPI_DATA(PyObject *) PyExc_SyntaxWarning;
-PyAPI_DATA(PyObject *) PyExc_RuntimeWarning;
-PyAPI_DATA(PyObject *) PyExc_FutureWarning;
-PyAPI_DATA(PyObject *) PyExc_ImportWarning;
-PyAPI_DATA(PyObject *) PyExc_UnicodeWarning;
-PyAPI_DATA(PyObject *) PyExc_BytesWarning;
-PyAPI_DATA(PyObject *) PyExc_ResourceWarning;
-
-
-/* Convenience functions */
-
-PyAPI_FUNC(int) PyErr_BadArgument(void);
-PyAPI_FUNC(PyObject *) PyErr_NoMemory(void);
-PyAPI_FUNC(PyObject *) PyErr_SetFromErrno(PyObject *);
-PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilenameObject(
-    PyObject *, PyObject *);
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03040000
-PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilenameObjects(
-    PyObject *, PyObject *, PyObject *);
-#endif
-PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilename(
-    PyObject *exc,
-    const char *filename   /* decoded from the filesystem encoding */
-    );
-#if defined(MS_WINDOWS) && !defined(Py_LIMITED_API)
-PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithUnicodeFilename(
-    PyObject *, const Py_UNICODE *) Py_DEPRECATED(3.3);
-#endif /* MS_WINDOWS */
-
-PyAPI_FUNC(PyObject *) PyErr_Format(
-    PyObject *exception,
-    const char *format,   /* ASCII-encoded string  */
-    ...
-    );
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-PyAPI_FUNC(PyObject *) PyErr_FormatV(
-    PyObject *exception,
-    const char *format,
-    va_list vargs);
-#endif
-
-#ifndef Py_LIMITED_API
-/* Like PyErr_Format(), but saves current exception as __context__ and
-   __cause__.
- */
-PyAPI_FUNC(PyObject *) _PyErr_FormatFromCause(
-    PyObject *exception,
-    const char *format,   /* ASCII-encoded string  */
-    ...
-    );
-#endif
-
-#ifdef MS_WINDOWS
-PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilename(
-    int ierr,
-    const char *filename        /* decoded from the filesystem encoding */
-    );
-#ifndef Py_LIMITED_API
-/* XXX redeclare to use WSTRING */
-PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithUnicodeFilename(
-    int, const Py_UNICODE *) Py_DEPRECATED(3.3);
-#endif
-PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErr(int);
-PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObject(
-    PyObject *,int, PyObject *);
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03040000
-PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObjects(
-    PyObject *,int, PyObject *, PyObject *);
-#endif
-PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilename(
-    PyObject *exc,
-    int ierr,
-    const char *filename        /* decoded from the filesystem encoding */
-    );
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithUnicodeFilename(
-    PyObject *,int, const Py_UNICODE *) Py_DEPRECATED(3.3);
-#endif
-PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErr(PyObject *, int);
-#endif /* MS_WINDOWS */
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000
-PyAPI_FUNC(PyObject *) PyErr_SetImportErrorSubclass(PyObject *, PyObject *,
-    PyObject *, PyObject *);
-#endif
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(PyObject *) PyErr_SetImportError(PyObject *, PyObject *,
-    PyObject *);
-#endif
-
-/* Export the old function so that the existing API remains available: */
-PyAPI_FUNC(void) PyErr_BadInternalCall(void);
-PyAPI_FUNC(void) _PyErr_BadInternalCall(const char *filename, int lineno);
-/* Mask the old API with a call to the new API for code compiled under
-   Python 2.0: */
-#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
-
-/* Function to create a new exception */
-PyAPI_FUNC(PyObject *) PyErr_NewException(
-    const char *name, PyObject *base, PyObject *dict);
-PyAPI_FUNC(PyObject *) PyErr_NewExceptionWithDoc(
-    const char *name, const char *doc, PyObject *base, PyObject *dict);
-PyAPI_FUNC(void) PyErr_WriteUnraisable(PyObject *);
-
-/* In exceptions.c */
-#ifndef Py_LIMITED_API
-/* Helper that attempts to replace the current exception with one of the
- * same type but with a prefix added to the exception text. The resulting
- * exception description looks like:
- *
- *     prefix (exc_type: original_exc_str)
- *
- * Only some exceptions can be safely replaced. If the function determines
- * it isn't safe to perform the replacement, it will leave the original
- * unmodified exception in place.
- *
- * Returns a borrowed reference to the new exception (if any), NULL if the
- * existing exception was left in place.
- */
-PyAPI_FUNC(PyObject *) _PyErr_TrySetFromCause(
-    const char *prefix_format,   /* ASCII-encoded string  */
-    ...
-    );
-#endif
-
-
-/* In signalmodule.c */
-PyAPI_FUNC(int) PyErr_CheckSignals(void);
-PyAPI_FUNC(void) PyErr_SetInterrupt(void);
-
-/* In signalmodule.c */
-#ifndef Py_LIMITED_API
-int PySignal_SetWakeupFd(int fd);
-#endif
-
-/* Support for adding program text to SyntaxErrors */
-PyAPI_FUNC(void) PyErr_SyntaxLocation(
-    const char *filename,       /* decoded from the filesystem encoding */
-    int lineno);
-PyAPI_FUNC(void) PyErr_SyntaxLocationEx(
-    const char *filename,       /* decoded from the filesystem encoding */
-    int lineno,
-    int col_offset);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) PyErr_SyntaxLocationObject(
-    PyObject *filename,
-    int lineno,
-    int col_offset);
-#endif
-PyAPI_FUNC(PyObject *) PyErr_ProgramText(
-    const char *filename,       /* decoded from the filesystem encoding */
-    int lineno);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) PyErr_ProgramTextObject(
-    PyObject *filename,
-    int lineno);
-#endif
-
-/* The following functions are used to create and modify unicode
-   exceptions from C */
-
-/* create a UnicodeDecodeError object */
-PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_Create(
-    const char *encoding,       /* UTF-8 encoded string */
-    const char *object,
-    Py_ssize_t length,
-    Py_ssize_t start,
-    Py_ssize_t end,
-    const char *reason          /* UTF-8 encoded string */
-    );
-
-/* create a UnicodeEncodeError object */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_Create(
-    const char *encoding,       /* UTF-8 encoded string */
-    const Py_UNICODE *object,
-    Py_ssize_t length,
-    Py_ssize_t start,
-    Py_ssize_t end,
-    const char *reason          /* UTF-8 encoded string */
-    ) Py_DEPRECATED(3.3);
-#endif
-
-/* create a UnicodeTranslateError object */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_Create(
-    const Py_UNICODE *object,
-    Py_ssize_t length,
-    Py_ssize_t start,
-    Py_ssize_t end,
-    const char *reason          /* UTF-8 encoded string */
-    ) Py_DEPRECATED(3.3);
-PyAPI_FUNC(PyObject *) _PyUnicodeTranslateError_Create(
-    PyObject *object,
-    Py_ssize_t start,
-    Py_ssize_t end,
-    const char *reason          /* UTF-8 encoded string */
-    );
-#endif
-
-/* get the encoding attribute */
-PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetEncoding(PyObject *);
-PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetEncoding(PyObject *);
-
-/* get the object attribute */
-PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetObject(PyObject *);
-PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetObject(PyObject *);
-PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_GetObject(PyObject *);
-
-/* get the value of the start attribute (the int * may not be NULL)
-   return 0 on success, -1 on failure */
-PyAPI_FUNC(int) PyUnicodeEncodeError_GetStart(PyObject *, Py_ssize_t *);
-PyAPI_FUNC(int) PyUnicodeDecodeError_GetStart(PyObject *, Py_ssize_t *);
-PyAPI_FUNC(int) PyUnicodeTranslateError_GetStart(PyObject *, Py_ssize_t *);
-
-/* assign a new value to the start attribute
-   return 0 on success, -1 on failure */
-PyAPI_FUNC(int) PyUnicodeEncodeError_SetStart(PyObject *, Py_ssize_t);
-PyAPI_FUNC(int) PyUnicodeDecodeError_SetStart(PyObject *, Py_ssize_t);
-PyAPI_FUNC(int) PyUnicodeTranslateError_SetStart(PyObject *, Py_ssize_t);
-
-/* get the value of the end attribute (the int *may not be NULL)
- return 0 on success, -1 on failure */
-PyAPI_FUNC(int) PyUnicodeEncodeError_GetEnd(PyObject *, Py_ssize_t *);
-PyAPI_FUNC(int) PyUnicodeDecodeError_GetEnd(PyObject *, Py_ssize_t *);
-PyAPI_FUNC(int) PyUnicodeTranslateError_GetEnd(PyObject *, Py_ssize_t *);
-
-/* assign a new value to the end attribute
-   return 0 on success, -1 on failure */
-PyAPI_FUNC(int) PyUnicodeEncodeError_SetEnd(PyObject *, Py_ssize_t);
-PyAPI_FUNC(int) PyUnicodeDecodeError_SetEnd(PyObject *, Py_ssize_t);
-PyAPI_FUNC(int) PyUnicodeTranslateError_SetEnd(PyObject *, Py_ssize_t);
-
-/* get the value of the reason attribute */
-PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetReason(PyObject *);
-PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetReason(PyObject *);
-PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_GetReason(PyObject *);
-
-/* assign a new value to the reason attribute
-   return 0 on success, -1 on failure */
-PyAPI_FUNC(int) PyUnicodeEncodeError_SetReason(
-    PyObject *exc,
-    const char *reason          /* UTF-8 encoded string */
-    );
-PyAPI_FUNC(int) PyUnicodeDecodeError_SetReason(
-    PyObject *exc,
-    const char *reason          /* UTF-8 encoded string */
-    );
-PyAPI_FUNC(int) PyUnicodeTranslateError_SetReason(
-    PyObject *exc,
-    const char *reason          /* UTF-8 encoded string */
-    );
-
-/* These APIs aren't really part of the error implementation, but
-   often needed to format error messages; the native C lib APIs are
-   not available on all platforms, which is why we provide emulations
-   for those platforms in Python/mysnprintf.c,
-   WARNING:  The return value of snprintf varies across platforms; do
-   not rely on any particular behavior; eventually the C99 defn may
-   be reliable.
-*/
-#if defined(MS_WIN32) && !defined(HAVE_SNPRINTF)
-# define HAVE_SNPRINTF
-# define snprintf _snprintf
-# define vsnprintf _vsnprintf
-#endif
-
-#include <stdarg.h>
-PyAPI_FUNC(int) PyOS_snprintf(char *str, size_t size, const char  *format, ...)
-                        Py_GCC_ATTRIBUTE((format(printf, 3, 4)));
-PyAPI_FUNC(int) PyOS_vsnprintf(char *str, size_t size, const char  *format, va_list va)
-                        Py_GCC_ATTRIBUTE((format(printf, 3, 0)));
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_ERRORS_H */
diff --git a/pythonsdk/include/pyexpat.h b/pythonsdk/include/pyexpat.h
deleted file mode 100644
index 5f5d381..0000000
--- a/pythonsdk/include/pyexpat.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Stuff to export relevant 'expat' entry points from pyexpat to other
- * parser modules, such as cElementTree. */
-
-/* note: you must import expat.h before importing this module! */
-
-#define PyExpat_CAPI_MAGIC  "pyexpat.expat_CAPI 1.1"
-#define PyExpat_CAPSULE_NAME "pyexpat.expat_CAPI"
-
-struct PyExpat_CAPI
-{
-    char* magic; /* set to PyExpat_CAPI_MAGIC */
-    int size; /* set to sizeof(struct PyExpat_CAPI) */
-    int MAJOR_VERSION;
-    int MINOR_VERSION;
-    int MICRO_VERSION;
-    /* pointers to selected expat functions.  add new functions at
-       the end, if needed */
-    const XML_LChar * (*ErrorString)(enum XML_Error code);
-    enum XML_Error (*GetErrorCode)(XML_Parser parser);
-    XML_Size (*GetErrorColumnNumber)(XML_Parser parser);
-    XML_Size (*GetErrorLineNumber)(XML_Parser parser);
-    enum XML_Status (*Parse)(
-        XML_Parser parser, const char *s, int len, int isFinal);
-    XML_Parser (*ParserCreate_MM)(
-        const XML_Char *encoding, const XML_Memory_Handling_Suite *memsuite,
-        const XML_Char *namespaceSeparator);
-    void (*ParserFree)(XML_Parser parser);
-    void (*SetCharacterDataHandler)(
-        XML_Parser parser, XML_CharacterDataHandler handler);
-    void (*SetCommentHandler)(
-        XML_Parser parser, XML_CommentHandler handler);
-    void (*SetDefaultHandlerExpand)(
-        XML_Parser parser, XML_DefaultHandler handler);
-    void (*SetElementHandler)(
-        XML_Parser parser, XML_StartElementHandler start,
-        XML_EndElementHandler end);
-    void (*SetNamespaceDeclHandler)(
-        XML_Parser parser, XML_StartNamespaceDeclHandler start,
-        XML_EndNamespaceDeclHandler end);
-    void (*SetProcessingInstructionHandler)(
-        XML_Parser parser, XML_ProcessingInstructionHandler handler);
-    void (*SetUnknownEncodingHandler)(
-        XML_Parser parser, XML_UnknownEncodingHandler handler,
-        void *encodingHandlerData);
-    void (*SetUserData)(XML_Parser parser, void *userData);
-    void (*SetStartDoctypeDeclHandler)(XML_Parser parser,
-                                       XML_StartDoctypeDeclHandler start);
-    enum XML_Status (*SetEncoding)(XML_Parser parser, const XML_Char *encoding);
-    int (*DefaultUnknownEncodingHandler)(
-        void *encodingHandlerData, const XML_Char *name, XML_Encoding *info);
-    /* might be none for expat < 2.1.0 */
-    int (*SetHashSalt)(XML_Parser parser, unsigned long hash_salt);
-    /* always add new stuff to the end! */
-};
-
diff --git a/pythonsdk/include/pyfpe.h b/pythonsdk/include/pyfpe.h
deleted file mode 100644
index 30baaca..0000000
--- a/pythonsdk/include/pyfpe.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef Py_PYFPE_H
-#define Py_PYFPE_H
-
-/* These macros used to do something when Python was built with --with-fpectl,
- * but support for that was dropped in 3.7. We continue to define them though,
- * to avoid breaking API users.
- */
-
-#define PyFPE_START_PROTECT(err_string, leave_stmt)
-#define PyFPE_END_PROTECT(v)
-
-#endif /* !Py_PYFPE_H */
diff --git a/pythonsdk/include/pyhash.h b/pythonsdk/include/pyhash.h
deleted file mode 100644
index df3a808..0000000
--- a/pythonsdk/include/pyhash.h
+++ /dev/null
@@ -1,145 +0,0 @@
-#ifndef Py_HASH_H
-
-#define Py_HASH_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Helpers for hash functions */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(Py_hash_t) _Py_HashDouble(double);
-PyAPI_FUNC(Py_hash_t) _Py_HashPointer(void*);
-PyAPI_FUNC(Py_hash_t) _Py_HashBytes(const void*, Py_ssize_t);
-#endif
-
-/* Prime multiplier used in string and various other hashes. */
-#define _PyHASH_MULTIPLIER 1000003UL  /* 0xf4243 */
-
-/* Parameters used for the numeric hash implementation.  See notes for
-   _Py_HashDouble in Python/pyhash.c.  Numeric hashes are based on
-   reduction modulo the prime 2**_PyHASH_BITS - 1. */
-
-#if SIZEOF_VOID_P >= 8
-#  define _PyHASH_BITS 61
-#else
-#  define _PyHASH_BITS 31
-#endif
-
-#define _PyHASH_MODULUS (((size_t)1 << _PyHASH_BITS) - 1)
-#define _PyHASH_INF 314159
-#define _PyHASH_NAN 0
-#define _PyHASH_IMAG _PyHASH_MULTIPLIER
-
-
-/* hash secret
- *
- * memory layout on 64 bit systems
- *   cccccccc cccccccc cccccccc  uc -- unsigned char[24]
- *   pppppppp ssssssss ........  fnv -- two Py_hash_t
- *   k0k0k0k0 k1k1k1k1 ........  siphash -- two uint64_t
- *   ........ ........ ssssssss  djbx33a -- 16 bytes padding + one Py_hash_t
- *   ........ ........ eeeeeeee  pyexpat XML hash salt
- *
- * memory layout on 32 bit systems
- *   cccccccc cccccccc cccccccc  uc
- *   ppppssss ........ ........  fnv -- two Py_hash_t
- *   k0k0k0k0 k1k1k1k1 ........  siphash -- two uint64_t (*)
- *   ........ ........ ssss....  djbx33a -- 16 bytes padding + one Py_hash_t
- *   ........ ........ eeee....  pyexpat XML hash salt
- *
- * (*) The siphash member may not be available on 32 bit platforms without
- *     an unsigned int64 data type.
- */
-#ifndef Py_LIMITED_API
-typedef union {
-    /* ensure 24 bytes */
-    unsigned char uc[24];
-    /* two Py_hash_t for FNV */
-    struct {
-        Py_hash_t prefix;
-        Py_hash_t suffix;
-    } fnv;
-    /* two uint64 for SipHash24 */
-    struct {
-        uint64_t k0;
-        uint64_t k1;
-    } siphash;
-    /* a different (!) Py_hash_t for small string optimization */
-    struct {
-        unsigned char padding[16];
-        Py_hash_t suffix;
-    } djbx33a;
-    struct {
-        unsigned char padding[16];
-        Py_hash_t hashsalt;
-    } expat;
-} _Py_HashSecret_t;
-PyAPI_DATA(_Py_HashSecret_t) _Py_HashSecret;
-#endif
-
-#ifdef Py_DEBUG
-PyAPI_DATA(int) _Py_HashSecret_Initialized;
-#endif
-
-
-/* hash function definition */
-#ifndef Py_LIMITED_API
-typedef struct {
-    Py_hash_t (*const hash)(const void *, Py_ssize_t);
-    const char *name;
-    const int hash_bits;
-    const int seed_bits;
-} PyHash_FuncDef;
-
-PyAPI_FUNC(PyHash_FuncDef*) PyHash_GetFuncDef(void);
-#endif
-
-
-/* cutoff for small string DJBX33A optimization in range [1, cutoff).
- *
- * About 50% of the strings in a typical Python application are smaller than
- * 6 to 7 chars. However DJBX33A is vulnerable to hash collision attacks.
- * NEVER use DJBX33A for long strings!
- *
- * A Py_HASH_CUTOFF of 0 disables small string optimization. 32 bit platforms
- * should use a smaller cutoff because it is easier to create colliding
- * strings. A cutoff of 7 on 64bit platforms and 5 on 32bit platforms should
- * provide a decent safety margin.
- */
-#ifndef Py_HASH_CUTOFF
-#  define Py_HASH_CUTOFF 0
-#elif (Py_HASH_CUTOFF > 7 || Py_HASH_CUTOFF < 0)
-#  error Py_HASH_CUTOFF must in range 0...7.
-#endif /* Py_HASH_CUTOFF */
-
-
-/* hash algorithm selection
- *
- * The values for Py_HASH_SIPHASH24 and Py_HASH_FNV are hard-coded in the
- * configure script.
- *
- * - FNV is available on all platforms and architectures.
- * - SIPHASH24 only works on plaforms that don't require aligned memory for integers.
- * - With EXTERNAL embedders can provide an alternative implementation with::
- *
- *     PyHash_FuncDef PyHash_Func = {...};
- *
- * XXX: Figure out __declspec() for extern PyHash_FuncDef.
- */
-#define Py_HASH_EXTERNAL 0
-#define Py_HASH_SIPHASH24 1
-#define Py_HASH_FNV 2
-
-#ifndef Py_HASH_ALGORITHM
-#  ifndef HAVE_ALIGNED_REQUIRED
-#    define Py_HASH_ALGORITHM Py_HASH_SIPHASH24
-#  else
-#    define Py_HASH_ALGORITHM Py_HASH_FNV
-#  endif /* uint64_t && uint32_t && aligned */
-#endif /* Py_HASH_ALGORITHM */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_HASH_H */
diff --git a/pythonsdk/include/pylifecycle.h b/pythonsdk/include/pylifecycle.h
deleted file mode 100644
index 104a3dc..0000000
--- a/pythonsdk/include/pylifecycle.h
+++ /dev/null
@@ -1,238 +0,0 @@
-
-/* Interfaces to configure, query, create & destroy the Python runtime */
-
-#ifndef Py_PYLIFECYCLE_H
-#define Py_PYLIFECYCLE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef Py_LIMITED_API
-typedef struct {
-    const char *prefix;
-    const char *msg;
-    int user_err;
-} _PyInitError;
-
-/* Almost all errors causing Python initialization to fail */
-#ifdef _MSC_VER
-   /* Visual Studio 2015 doesn't implement C99 __func__ in C */
-#  define _Py_INIT_GET_FUNC() __FUNCTION__
-#else
-#  define _Py_INIT_GET_FUNC() __func__
-#endif
-
-#define _Py_INIT_OK() \
-    (_PyInitError){.prefix = NULL, .msg = NULL, .user_err = 0}
-#define _Py_INIT_ERR(MSG) \
-    (_PyInitError){.prefix = _Py_INIT_GET_FUNC(), .msg = (MSG), .user_err = 0}
-/* Error that can be fixed by the user like invalid input parameter.
-   Don't abort() the process on such error. */
-#define _Py_INIT_USER_ERR(MSG) \
-    (_PyInitError){.prefix = _Py_INIT_GET_FUNC(), .msg = (MSG), .user_err = 1}
-#define _Py_INIT_NO_MEMORY() _Py_INIT_USER_ERR("memory allocation failed")
-#define _Py_INIT_FAILED(err) \
-    (err.msg != NULL)
-
-#endif
-
-
-PyAPI_FUNC(void) Py_SetProgramName(const wchar_t *);
-PyAPI_FUNC(wchar_t *) Py_GetProgramName(void);
-
-PyAPI_FUNC(void) Py_SetPythonHome(const wchar_t *);
-PyAPI_FUNC(wchar_t *) Py_GetPythonHome(void);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _Py_SetProgramFullPath(const wchar_t *);
-
-/* Only used by applications that embed the interpreter and need to
- * override the standard encoding determination mechanism
- */
-PyAPI_FUNC(int) Py_SetStandardStreamEncoding(const char *encoding,
-                                             const char *errors);
-
-/* PEP 432 Multi-phase initialization API (Private while provisional!) */
-PyAPI_FUNC(_PyInitError) _Py_InitializeCore(
-    PyInterpreterState **interp_p,
-    const _PyCoreConfig *config);
-PyAPI_FUNC(int) _Py_IsCoreInitialized(void);
-PyAPI_FUNC(_PyInitError) _Py_InitializeFromConfig(
-    const _PyCoreConfig *config);
-#ifdef Py_BUILD_CORE
-PyAPI_FUNC(void) _Py_Initialize_ReadEnvVarsNoAlloc(void);
-#endif
-
-PyAPI_FUNC(PyObject *) _Py_GetGlobalVariablesAsDict(void);
-
-PyAPI_FUNC(_PyInitError) _PyCoreConfig_Read(_PyCoreConfig *);
-PyAPI_FUNC(void) _PyCoreConfig_Clear(_PyCoreConfig *);
-PyAPI_FUNC(int) _PyCoreConfig_Copy(
-    _PyCoreConfig *config,
-    const _PyCoreConfig *config2);
-PyAPI_FUNC(PyObject *) _PyCoreConfig_AsDict(const _PyCoreConfig *config);
-PyAPI_FUNC(void) _PyCoreConfig_SetGlobalConfig(
-    const _PyCoreConfig *config);
-
-
-PyAPI_FUNC(_PyInitError) _PyMainInterpreterConfig_Read(
-    _PyMainInterpreterConfig *config,
-    const _PyCoreConfig *core_config);
-PyAPI_FUNC(void) _PyMainInterpreterConfig_Clear(_PyMainInterpreterConfig *);
-PyAPI_FUNC(int) _PyMainInterpreterConfig_Copy(
-    _PyMainInterpreterConfig *config,
-    const _PyMainInterpreterConfig *config2);
-/* Used by _testcapi.get_main_config() */
-PyAPI_FUNC(PyObject*) _PyMainInterpreterConfig_AsDict(
-    const _PyMainInterpreterConfig *config);
-
-PyAPI_FUNC(_PyInitError) _Py_InitializeMainInterpreter(
-        PyInterpreterState *interp,
-        const _PyMainInterpreterConfig *config);
-#endif   /* !defined(Py_LIMITED_API) */
-
-
-/* Initialization and finalization */
-PyAPI_FUNC(void) Py_Initialize(void);
-PyAPI_FUNC(void) Py_InitializeEx(int);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _Py_FatalInitError(_PyInitError err) _Py_NO_RETURN;
-#endif
-PyAPI_FUNC(void) Py_Finalize(void);
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000
-PyAPI_FUNC(int) Py_FinalizeEx(void);
-#endif
-PyAPI_FUNC(int) Py_IsInitialized(void);
-
-/* Subinterpreter support */
-PyAPI_FUNC(PyThreadState *) Py_NewInterpreter(void);
-PyAPI_FUNC(void) Py_EndInterpreter(PyThreadState *);
-
-
-/* Py_PyAtExit is for the atexit module, Py_AtExit is for low-level
- * exit functions.
- */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _Py_PyAtExit(void (*func)(PyObject *), PyObject *);
-#endif
-PyAPI_FUNC(int) Py_AtExit(void (*func)(void));
-
-PyAPI_FUNC(void) Py_Exit(int) _Py_NO_RETURN;
-
-/* Restore signals that the interpreter has called SIG_IGN on to SIG_DFL. */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _Py_RestoreSignals(void);
-
-PyAPI_FUNC(int) Py_FdIsInteractive(FILE *, const char *);
-#endif
-
-/* Bootstrap __main__ (defined in Modules/main.c) */
-PyAPI_FUNC(int) Py_Main(int argc, wchar_t **argv);
-#ifdef Py_BUILD_CORE
-PyAPI_FUNC(int) _Py_UnixMain(int argc, char **argv);
-#endif
-
-/* In getpath.c */
-PyAPI_FUNC(wchar_t *) Py_GetProgramFullPath(void);
-PyAPI_FUNC(wchar_t *) Py_GetPrefix(void);
-PyAPI_FUNC(wchar_t *) Py_GetExecPrefix(void);
-PyAPI_FUNC(wchar_t *) Py_GetPath(void);
-#ifdef Py_BUILD_CORE
-PyAPI_FUNC(_PyInitError) _PyPathConfig_Init(const _PyCoreConfig *core_config);
-PyAPI_FUNC(int) _PyPathConfig_ComputeArgv0(
-    int argc, wchar_t **argv,
-    PyObject **argv0_p);
-PyAPI_FUNC(int) _Py_FindEnvConfigValue(
-    FILE *env_file,
-    const wchar_t *key,
-    wchar_t *value,
-    size_t value_size);
-#endif
-PyAPI_FUNC(void)      Py_SetPath(const wchar_t *);
-#ifdef MS_WINDOWS
-int _Py_CheckPython3(void);
-#endif
-
-/* In their own files */
-PyAPI_FUNC(const char *) Py_GetVersion(void);
-PyAPI_FUNC(const char *) Py_GetPlatform(void);
-PyAPI_FUNC(const char *) Py_GetCopyright(void);
-PyAPI_FUNC(const char *) Py_GetCompiler(void);
-PyAPI_FUNC(const char *) Py_GetBuildInfo(void);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(const char *) _Py_gitidentifier(void);
-PyAPI_FUNC(const char *) _Py_gitversion(void);
-#endif
-
-/* Internal -- various one-time initializations */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyBuiltin_Init(void);
-PyAPI_FUNC(_PyInitError) _PySys_BeginInit(PyObject **sysmod);
-PyAPI_FUNC(int) _PySys_EndInit(PyObject *sysdict, _PyMainInterpreterConfig *config);
-PyAPI_FUNC(_PyInitError) _PyImport_Init(PyInterpreterState *interp);
-PyAPI_FUNC(void) _PyExc_Init(PyObject * bltinmod);
-PyAPI_FUNC(_PyInitError) _PyImportHooks_Init(void);
-PyAPI_FUNC(int) _PyFrame_Init(void);
-PyAPI_FUNC(int) _PyFloat_Init(void);
-PyAPI_FUNC(int) PyByteArray_Init(void);
-PyAPI_FUNC(_PyInitError) _Py_HashRandomization_Init(const _PyCoreConfig *);
-#endif
-#ifdef Py_BUILD_CORE
-PyAPI_FUNC(int) _Py_ReadHashSeed(
-    const char *seed_text,
-    int *use_hash_seed,
-    unsigned long *hash_seed);
-#endif
-
-/* Various internal finalizers */
-
-#ifdef Py_BUILD_CORE
-PyAPI_FUNC(void) _PyExc_Fini(void);
-PyAPI_FUNC(void) _PyImport_Fini(void);
-PyAPI_FUNC(void) _PyImport_Fini2(void);
-PyAPI_FUNC(void) _PyGC_DumpShutdownStats(void);
-PyAPI_FUNC(void) _PyGC_Fini(void);
-PyAPI_FUNC(void) _PyType_Fini(void);
-PyAPI_FUNC(void) _Py_HashRandomization_Fini(void);
-#endif   /* Py_BUILD_CORE */
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) PyMethod_Fini(void);
-PyAPI_FUNC(void) PyFrame_Fini(void);
-PyAPI_FUNC(void) PyCFunction_Fini(void);
-PyAPI_FUNC(void) PyDict_Fini(void);
-PyAPI_FUNC(void) PyTuple_Fini(void);
-PyAPI_FUNC(void) PyList_Fini(void);
-PyAPI_FUNC(void) PySet_Fini(void);
-PyAPI_FUNC(void) PyBytes_Fini(void);
-PyAPI_FUNC(void) PyByteArray_Fini(void);
-PyAPI_FUNC(void) PyFloat_Fini(void);
-PyAPI_FUNC(void) PyOS_FiniInterrupts(void);
-PyAPI_FUNC(void) PySlice_Fini(void);
-PyAPI_FUNC(void) PyAsyncGen_Fini(void);
-
-PyAPI_FUNC(int) _Py_IsFinalizing(void);
-#endif   /* !Py_LIMITED_API */
-
-/* Signals */
-typedef void (*PyOS_sighandler_t)(int);
-PyAPI_FUNC(PyOS_sighandler_t) PyOS_getsig(int);
-PyAPI_FUNC(PyOS_sighandler_t) PyOS_setsig(int, PyOS_sighandler_t);
-
-#ifndef Py_LIMITED_API
-/* Random */
-PyAPI_FUNC(int) _PyOS_URandom(void *buffer, Py_ssize_t size);
-PyAPI_FUNC(int) _PyOS_URandomNonblock(void *buffer, Py_ssize_t size);
-#endif /* !Py_LIMITED_API */
-
-/* Legacy locale support */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _Py_CoerceLegacyLocale(const _PyCoreConfig *config);
-PyAPI_FUNC(int) _Py_LegacyLocaleDetected(void);
-PyAPI_FUNC(char *) _Py_SetLocaleFromEnv(int category);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PYLIFECYCLE_H */
diff --git a/pythonsdk/include/pymacconfig.h b/pythonsdk/include/pymacconfig.h
deleted file mode 100644
index a1eccea..0000000
--- a/pythonsdk/include/pymacconfig.h
+++ /dev/null
@@ -1,102 +0,0 @@
-#ifndef PYMACCONFIG_H
-#define PYMACCONFIG_H
-     /*
-      * This file moves some of the autoconf magic to compile-time
-      * when building on MacOSX. This is needed for building 4-way
-      * universal binaries and for 64-bit universal binaries because
-      * the values redefined below aren't configure-time constant but
-      * only compile-time constant in these scenarios.
-      */
-
-#if defined(__APPLE__)
-
-# undef SIZEOF_LONG
-# undef SIZEOF_PTHREAD_T
-# undef SIZEOF_SIZE_T
-# undef SIZEOF_TIME_T
-# undef SIZEOF_VOID_P
-# undef SIZEOF__BOOL
-# undef SIZEOF_UINTPTR_T
-# undef SIZEOF_PTHREAD_T
-# undef WORDS_BIGENDIAN
-# undef DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754
-# undef DOUBLE_IS_BIG_ENDIAN_IEEE754
-# undef DOUBLE_IS_LITTLE_ENDIAN_IEEE754
-# undef HAVE_GCC_ASM_FOR_X87
-
-#    undef VA_LIST_IS_ARRAY
-#    if defined(__LP64__) && defined(__x86_64__)
-#        define VA_LIST_IS_ARRAY 1
-#    endif
-
-#    undef HAVE_LARGEFILE_SUPPORT
-#    ifndef __LP64__
-#         define HAVE_LARGEFILE_SUPPORT 1
-#    endif
-
-#    undef SIZEOF_LONG
-#    ifdef __LP64__
-#        define SIZEOF__BOOL            1
-#        define SIZEOF__BOOL            1
-#        define SIZEOF_LONG             8
-#        define SIZEOF_PTHREAD_T        8
-#        define SIZEOF_SIZE_T           8
-#        define SIZEOF_TIME_T           8
-#        define SIZEOF_VOID_P           8
-#        define SIZEOF_UINTPTR_T        8
-#        define SIZEOF_PTHREAD_T        8
-#    else
-#        ifdef __ppc__
-#           define SIZEOF__BOOL         4
-#        else
-#           define SIZEOF__BOOL         1
-#        endif
-#        define SIZEOF_LONG             4
-#        define SIZEOF_PTHREAD_T        4
-#        define SIZEOF_SIZE_T           4
-#        define SIZEOF_TIME_T           4
-#        define SIZEOF_VOID_P           4
-#        define SIZEOF_UINTPTR_T        4
-#        define SIZEOF_PTHREAD_T        4
-#    endif
-
-#    if defined(__LP64__)
-     /* MacOSX 10.4 (the first release to support 64-bit code
-      * at all) only supports 64-bit in the UNIX layer.
-      * Therefore suppress the toolbox-glue in 64-bit mode.
-      */
-
-    /* In 64-bit mode setpgrp always has no arguments, in 32-bit
-     * mode that depends on the compilation environment
-     */
-#       undef SETPGRP_HAVE_ARG
-
-#    endif
-
-#ifdef __BIG_ENDIAN__
-#define WORDS_BIGENDIAN 1
-#define DOUBLE_IS_BIG_ENDIAN_IEEE754
-#else
-#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754
-#endif /* __BIG_ENDIAN */
-
-#ifdef __i386__
-# define HAVE_GCC_ASM_FOR_X87
-#endif
-
-    /*
-     * The definition in pyconfig.h is only valid on the OS release
-     * where configure ran on and not necessarily for all systems where
-     * the executable can be used on.
-     *
-     * Specifically: OSX 10.4 has limited supported for '%zd', while
-     * 10.5 has full support for '%zd'. A binary built on 10.5 won't
-     * work properly on 10.4 unless we suppress the definition
-     * of PY_FORMAT_SIZE_T
-     */
-#undef  PY_FORMAT_SIZE_T
-
-
-#endif /* defined(_APPLE__) */
-
-#endif /* PYMACCONFIG_H */
diff --git a/pythonsdk/include/pymacro.h b/pythonsdk/include/pymacro.h
deleted file mode 100644
index e8f9a66..0000000
--- a/pythonsdk/include/pymacro.h
+++ /dev/null
@@ -1,100 +0,0 @@
-#ifndef Py_PYMACRO_H
-#define Py_PYMACRO_H
-
-/* Minimum value between x and y */
-#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x))
-
-/* Maximum value between x and y */
-#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
-
-/* Absolute value of the number x */
-#define Py_ABS(x) ((x) < 0 ? -(x) : (x))
-
-#define _Py_XSTRINGIFY(x) #x
-
-/* Convert the argument to a string. For example, Py_STRINGIFY(123) is replaced
-   with "123" by the preprocessor. Defines are also replaced by their value.
-   For example Py_STRINGIFY(__LINE__) is replaced by the line number, not
-   by "__LINE__". */
-#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
-
-/* Get the size of a structure member in bytes */
-#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
-
-/* Argument must be a char or an int in [-128, 127] or [0, 255]. */
-#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
-
-/* Assert a build-time dependency, as an expression.
-
-   Your compile will fail if the condition isn't true, or can't be evaluated
-   by the compiler. This can be used in an expression: its value is 0.
-
-   Example:
-
-   #define foo_to_char(foo)  \
-       ((char *)(foo)        \
-        + Py_BUILD_ASSERT_EXPR(offsetof(struct foo, string) == 0))
-
-   Written by Rusty Russell, public domain, http://ccodearchive.net/ */
-#define Py_BUILD_ASSERT_EXPR(cond) \
-    (sizeof(char [1 - 2*!(cond)]) - 1)
-
-#define Py_BUILD_ASSERT(cond)  do {         \
-        (void)Py_BUILD_ASSERT_EXPR(cond);   \
-    } while(0)
-
-/* Get the number of elements in a visible array
-
-   This does not work on pointers, or arrays declared as [], or function
-   parameters. With correct compiler support, such usage will cause a build
-   error (see Py_BUILD_ASSERT_EXPR).
-
-   Written by Rusty Russell, public domain, http://ccodearchive.net/
-
-   Requires at GCC 3.1+ */
-#if (defined(__GNUC__) && !defined(__STRICT_ANSI__) && \
-    (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)) || (__GNUC__ >= 4)))
-/* Two gcc extensions.
-   &a[0] degrades to a pointer: a different type from an array */
-#define Py_ARRAY_LENGTH(array) \
-    (sizeof(array) / sizeof((array)[0]) \
-     + Py_BUILD_ASSERT_EXPR(!__builtin_types_compatible_p(typeof(array), \
-                                                          typeof(&(array)[0]))))
-#else
-#define Py_ARRAY_LENGTH(array) \
-    (sizeof(array) / sizeof((array)[0]))
-#endif
-
-
-/* Define macros for inline documentation. */
-#define PyDoc_VAR(name) static char name[]
-#define PyDoc_STRVAR(name,str) PyDoc_VAR(name) = PyDoc_STR(str)
-#ifdef WITH_DOC_STRINGS
-#define PyDoc_STR(str) str
-#else
-#define PyDoc_STR(str) ""
-#endif
-
-/* Below "a" is a power of 2. */
-/* Round down size "n" to be a multiple of "a". */
-#define _Py_SIZE_ROUND_DOWN(n, a) ((size_t)(n) & ~(size_t)((a) - 1))
-/* Round up size "n" to be a multiple of "a". */
-#define _Py_SIZE_ROUND_UP(n, a) (((size_t)(n) + \
-        (size_t)((a) - 1)) & ~(size_t)((a) - 1))
-/* Round pointer "p" down to the closest "a"-aligned address <= "p". */
-#define _Py_ALIGN_DOWN(p, a) ((void *)((uintptr_t)(p) & ~(uintptr_t)((a) - 1)))
-/* Round pointer "p" up to the closest "a"-aligned address >= "p". */
-#define _Py_ALIGN_UP(p, a) ((void *)(((uintptr_t)(p) + \
-        (uintptr_t)((a) - 1)) & ~(uintptr_t)((a) - 1)))
-/* Check if pointer "p" is aligned to "a"-bytes boundary. */
-#define _Py_IS_ALIGNED(p, a) (!((uintptr_t)(p) & (uintptr_t)((a) - 1)))
-
-#ifdef __GNUC__
-#define Py_UNUSED(name) _unused_ ## name __attribute__((unused))
-#else
-#define Py_UNUSED(name) _unused_ ## name
-#endif
-
-#define Py_UNREACHABLE() abort()
-
-#endif /* Py_PYMACRO_H */
diff --git a/pythonsdk/include/pymath.h b/pythonsdk/include/pymath.h
deleted file mode 100644
index f4a7f85..0000000
--- a/pythonsdk/include/pymath.h
+++ /dev/null
@@ -1,230 +0,0 @@
-#ifndef Py_PYMATH_H
-#define Py_PYMATH_H
-
-#include "pyconfig.h" /* include for defines */
-
-/**************************************************************************
-Symbols and macros to supply platform-independent interfaces to mathematical
-functions and constants
-**************************************************************************/
-
-/* Python provides implementations for copysign, round and hypot in
- * Python/pymath.c just in case your math library doesn't provide the
- * functions.
- *
- *Note: PC/pyconfig.h defines copysign as _copysign
- */
-#ifndef HAVE_COPYSIGN
-extern double copysign(double, double);
-#endif
-
-#ifndef HAVE_ROUND
-extern double round(double);
-#endif
-
-#ifndef HAVE_HYPOT
-extern double hypot(double, double);
-#endif
-
-/* extra declarations */
-#ifndef _MSC_VER
-#ifndef __STDC__
-extern double fmod (double, double);
-extern double frexp (double, int *);
-extern double ldexp (double, int);
-extern double modf (double, double *);
-extern double pow(double, double);
-#endif /* __STDC__ */
-#endif /* _MSC_VER */
-
-/* High precision definition of pi and e (Euler)
- * The values are taken from libc6's math.h.
- */
-#ifndef Py_MATH_PIl
-#define Py_MATH_PIl 3.1415926535897932384626433832795029L
-#endif
-#ifndef Py_MATH_PI
-#define Py_MATH_PI 3.14159265358979323846
-#endif
-
-#ifndef Py_MATH_El
-#define Py_MATH_El 2.7182818284590452353602874713526625L
-#endif
-
-#ifndef Py_MATH_E
-#define Py_MATH_E 2.7182818284590452354
-#endif
-
-/* Tau (2pi) to 40 digits, taken from tauday.com/tau-digits. */
-#ifndef Py_MATH_TAU
-#define Py_MATH_TAU 6.2831853071795864769252867665590057683943L
-#endif
-
-
-/* On x86, Py_FORCE_DOUBLE forces a floating-point number out of an x87 FPU
-   register and into a 64-bit memory location, rounding from extended
-   precision to double precision in the process.  On other platforms it does
-   nothing. */
-
-/* we take double rounding as evidence of x87 usage */
-#ifndef Py_LIMITED_API
-#ifndef Py_FORCE_DOUBLE
-#  ifdef X87_DOUBLE_ROUNDING
-PyAPI_FUNC(double) _Py_force_double(double);
-#    define Py_FORCE_DOUBLE(X) (_Py_force_double(X))
-#  else
-#    define Py_FORCE_DOUBLE(X) (X)
-#  endif
-#endif
-#endif
-
-#ifndef Py_LIMITED_API
-#ifdef HAVE_GCC_ASM_FOR_X87
-PyAPI_FUNC(unsigned short) _Py_get_387controlword(void);
-PyAPI_FUNC(void) _Py_set_387controlword(unsigned short);
-#endif
-#endif
-
-/* Py_IS_NAN(X)
- * Return 1 if float or double arg is a NaN, else 0.
- * Caution:
- *     X is evaluated more than once.
- *     This may not work on all platforms.  Each platform has *some*
- *     way to spell this, though -- override in pyconfig.h if you have
- *     a platform where it doesn't work.
- * Note: PC/pyconfig.h defines Py_IS_NAN as _isnan
- */
-#ifndef Py_IS_NAN
-#if defined HAVE_DECL_ISNAN && HAVE_DECL_ISNAN == 1
-#define Py_IS_NAN(X) isnan(X)
-#else
-#define Py_IS_NAN(X) ((X) != (X))
-#endif
-#endif
-
-/* Py_IS_INFINITY(X)
- * Return 1 if float or double arg is an infinity, else 0.
- * Caution:
- *    X is evaluated more than once.
- *    This implementation may set the underflow flag if |X| is very small;
- *    it really can't be implemented correctly (& easily) before C99.
- *    Override in pyconfig.h if you have a better spelling on your platform.
- *  Py_FORCE_DOUBLE is used to avoid getting false negatives from a
- *    non-infinite value v sitting in an 80-bit x87 register such that
- *    v becomes infinite when spilled from the register to 64-bit memory.
- * Note: PC/pyconfig.h defines Py_IS_INFINITY as _isinf
- */
-#ifndef Py_IS_INFINITY
-#  if defined HAVE_DECL_ISINF && HAVE_DECL_ISINF == 1
-#    define Py_IS_INFINITY(X) isinf(X)
-#  else
-#    define Py_IS_INFINITY(X) ((X) &&                                   \
-                               (Py_FORCE_DOUBLE(X)*0.5 == Py_FORCE_DOUBLE(X)))
-#  endif
-#endif
-
-/* Py_IS_FINITE(X)
- * Return 1 if float or double arg is neither infinite nor NAN, else 0.
- * Some compilers (e.g. VisualStudio) have intrisics for this, so a special
- * macro for this particular test is useful
- * Note: PC/pyconfig.h defines Py_IS_FINITE as _finite
- */
-#ifndef Py_IS_FINITE
-#if defined HAVE_DECL_ISFINITE && HAVE_DECL_ISFINITE == 1
-#define Py_IS_FINITE(X) isfinite(X)
-#elif defined HAVE_FINITE
-#define Py_IS_FINITE(X) finite(X)
-#else
-#define Py_IS_FINITE(X) (!Py_IS_INFINITY(X) && !Py_IS_NAN(X))
-#endif
-#endif
-
-/* HUGE_VAL is supposed to expand to a positive double infinity.  Python
- * uses Py_HUGE_VAL instead because some platforms are broken in this
- * respect.  We used to embed code in pyport.h to try to worm around that,
- * but different platforms are broken in conflicting ways.  If you're on
- * a platform where HUGE_VAL is defined incorrectly, fiddle your Python
- * config to #define Py_HUGE_VAL to something that works on your platform.
- */
-#ifndef Py_HUGE_VAL
-#define Py_HUGE_VAL HUGE_VAL
-#endif
-
-/* Py_NAN
- * A value that evaluates to a NaN. On IEEE 754 platforms INF*0 or
- * INF/INF works. Define Py_NO_NAN in pyconfig.h if your platform
- * doesn't support NaNs.
- */
-#if !defined(Py_NAN) && !defined(Py_NO_NAN)
-#if !defined(__INTEL_COMPILER)
-    #define Py_NAN (Py_HUGE_VAL * 0.)
-#else /* __INTEL_COMPILER */
-    #if defined(ICC_NAN_STRICT)
-        #pragma float_control(push)
-        #pragma float_control(precise, on)
-        #pragma float_control(except,  on)
-        #if defined(_MSC_VER)
-            __declspec(noinline)
-        #else /* Linux */
-            __attribute__((noinline))
-        #endif /* _MSC_VER */
-        static double __icc_nan()
-        {
-            return sqrt(-1.0);
-        }
-        #pragma float_control (pop)
-        #define Py_NAN __icc_nan()
-    #else /* ICC_NAN_RELAXED as default for Intel Compiler */
-        static const union { unsigned char buf[8]; double __icc_nan; } __nan_store = {0,0,0,0,0,0,0xf8,0x7f};
-        #define Py_NAN (__nan_store.__icc_nan)
-    #endif /* ICC_NAN_STRICT */
-#endif /* __INTEL_COMPILER */
-#endif
-
-/* Py_OVERFLOWED(X)
- * Return 1 iff a libm function overflowed.  Set errno to 0 before calling
- * a libm function, and invoke this macro after, passing the function
- * result.
- * Caution:
- *    This isn't reliable.  C99 no longer requires libm to set errno under
- *        any exceptional condition, but does require +- HUGE_VAL return
- *        values on overflow.  A 754 box *probably* maps HUGE_VAL to a
- *        double infinity, and we're cool if that's so, unless the input
- *        was an infinity and an infinity is the expected result.  A C89
- *        system sets errno to ERANGE, so we check for that too.  We're
- *        out of luck if a C99 754 box doesn't map HUGE_VAL to +Inf, or
- *        if the returned result is a NaN, or if a C89 box returns HUGE_VAL
- *        in non-overflow cases.
- *    X is evaluated more than once.
- * Some platforms have better way to spell this, so expect some #ifdef'ery.
- *
- * OpenBSD uses 'isinf()' because a compiler bug on that platform causes
- * the longer macro version to be mis-compiled. This isn't optimal, and
- * should be removed once a newer compiler is available on that platform.
- * The system that had the failure was running OpenBSD 3.2 on Intel, with
- * gcc 2.95.3.
- *
- * According to Tim's checkin, the FreeBSD systems use isinf() to work
- * around a FPE bug on that platform.
- */
-#if defined(__FreeBSD__) || defined(__OpenBSD__)
-#define Py_OVERFLOWED(X) isinf(X)
-#else
-#define Py_OVERFLOWED(X) ((X) != 0.0 && (errno == ERANGE ||    \
-                                         (X) == Py_HUGE_VAL || \
-                                         (X) == -Py_HUGE_VAL))
-#endif
-
-/* Return whether integral type *type* is signed or not. */
-#define _Py_IntegralTypeSigned(type) ((type)(-1) < 0)
-/* Return the maximum value of integral type *type*. */
-#define _Py_IntegralTypeMax(type) ((_Py_IntegralTypeSigned(type)) ? (((((type)1 << (sizeof(type)*CHAR_BIT - 2)) - 1) << 1) + 1) : ~(type)0)
-/* Return the minimum value of integral type *type*. */
-#define _Py_IntegralTypeMin(type) ((_Py_IntegralTypeSigned(type)) ? -_Py_IntegralTypeMax(type) - 1 : 0)
-/* Check whether *v* is in the range of integral type *type*. This is most
- * useful if *v* is floating-point, since demoting a floating-point *v* to an
- * integral type that cannot represent *v*'s integral part is undefined
- * behavior. */
-#define _Py_InIntegralTypeRange(type, v) (_Py_IntegralTypeMin(type) <= v && v <= _Py_IntegralTypeMax(type))
-
-#endif /* Py_PYMATH_H */
diff --git a/pythonsdk/include/pymem.h b/pythonsdk/include/pymem.h
deleted file mode 100644
index bbf3e79..0000000
--- a/pythonsdk/include/pymem.h
+++ /dev/null
@@ -1,244 +0,0 @@
-/* The PyMem_ family:  low-level memory allocation interfaces.
-   See objimpl.h for the PyObject_ memory family.
-*/
-
-#ifndef Py_PYMEM_H
-#define Py_PYMEM_H
-
-#include "pyport.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void *) PyMem_RawMalloc(size_t size);
-PyAPI_FUNC(void *) PyMem_RawCalloc(size_t nelem, size_t elsize);
-PyAPI_FUNC(void *) PyMem_RawRealloc(void *ptr, size_t new_size);
-PyAPI_FUNC(void) PyMem_RawFree(void *ptr);
-
-/* Configure the Python memory allocators. Pass NULL to use default
-   allocators. */
-PyAPI_FUNC(int) _PyMem_SetupAllocators(const char *opt);
-
-/* Try to get the allocators name set by _PyMem_SetupAllocators(). */
-PyAPI_FUNC(const char*) _PyMem_GetAllocatorsName(void);
-
-/* Track an allocated memory block in the tracemalloc module.
-   Return 0 on success, return -1 on error (failed to allocate memory to store
-   the trace).
-
-   Return -2 if tracemalloc is disabled.
-
-   If memory block is already tracked, update the existing trace. */
-PyAPI_FUNC(int) PyTraceMalloc_Track(
-    unsigned int domain,
-    uintptr_t ptr,
-    size_t size);
-
-/* Untrack an allocated memory block in the tracemalloc module.
-   Do nothing if the block was not tracked.
-
-   Return -2 if tracemalloc is disabled, otherwise return 0. */
-PyAPI_FUNC(int) PyTraceMalloc_Untrack(
-    unsigned int domain,
-    uintptr_t ptr);
-
-/* Get the traceback where a memory block was allocated.
-
-   Return a tuple of (filename: str, lineno: int) tuples.
-
-   Return None if the tracemalloc module is disabled or if the memory block
-   is not tracked by tracemalloc.
-
-   Raise an exception and return NULL on error. */
-PyAPI_FUNC(PyObject*) _PyTraceMalloc_GetTraceback(
-    unsigned int domain,
-    uintptr_t ptr);
-#endif   /* !defined(Py_LIMITED_API) */
-
-
-/* BEWARE:
-
-   Each interface exports both functions and macros.  Extension modules should
-   use the functions, to ensure binary compatibility across Python versions.
-   Because the Python implementation is free to change internal details, and
-   the macros may (or may not) expose details for speed, if you do use the
-   macros you must recompile your extensions with each Python release.
-
-   Never mix calls to PyMem_ with calls to the platform malloc/realloc/
-   calloc/free.  For example, on Windows different DLLs may end up using
-   different heaps, and if you use PyMem_Malloc you'll get the memory from the
-   heap used by the Python DLL; it could be a disaster if you free()'ed that
-   directly in your own extension.  Using PyMem_Free instead ensures Python
-   can return the memory to the proper heap.  As another example, in
-   PYMALLOC_DEBUG mode, Python wraps all calls to all PyMem_ and PyObject_
-   memory functions in special debugging wrappers that add additional
-   debugging info to dynamic memory blocks.  The system routines have no idea
-   what to do with that stuff, and the Python wrappers have no idea what to do
-   with raw blocks obtained directly by the system routines then.
-
-   The GIL must be held when using these APIs.
-*/
-
-/*
- * Raw memory interface
- * ====================
- */
-
-/* Functions
-
-   Functions supplying platform-independent semantics for malloc/realloc/
-   free.  These functions make sure that allocating 0 bytes returns a distinct
-   non-NULL pointer (whenever possible -- if we're flat out of memory, NULL
-   may be returned), even if the platform malloc and realloc don't.
-   Returned pointers must be checked for NULL explicitly.  No action is
-   performed on failure (no exception is set, no warning is printed, etc).
-*/
-
-PyAPI_FUNC(void *) PyMem_Malloc(size_t size);
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize);
-#endif
-PyAPI_FUNC(void *) PyMem_Realloc(void *ptr, size_t new_size);
-PyAPI_FUNC(void) PyMem_Free(void *ptr);
-
-#ifndef Py_LIMITED_API
-/* strdup() using PyMem_RawMalloc() */
-PyAPI_FUNC(char *) _PyMem_RawStrdup(const char *str);
-
-/* strdup() using PyMem_Malloc() */
-PyAPI_FUNC(char *) _PyMem_Strdup(const char *str);
-
-/* wcsdup() using PyMem_RawMalloc() */
-PyAPI_FUNC(wchar_t*) _PyMem_RawWcsdup(const wchar_t *str);
-#endif
-
-/* Macros. */
-
-/* PyMem_MALLOC(0) means malloc(1). Some systems would return NULL
-   for malloc(0), which would be treated as an error. Some platforms
-   would return a pointer with no memory behind it, which would break
-   pymalloc. To solve these problems, allocate an extra byte. */
-/* Returns NULL to indicate error if a negative size or size larger than
-   Py_ssize_t can represent is supplied.  Helps prevents security holes. */
-#define PyMem_MALLOC(n)         PyMem_Malloc(n)
-#define PyMem_REALLOC(p, n)     PyMem_Realloc(p, n)
-#define PyMem_FREE(p)           PyMem_Free(p)
-
-/*
- * Type-oriented memory interface
- * ==============================
- *
- * Allocate memory for n objects of the given type.  Returns a new pointer
- * or NULL if the request was too large or memory allocation failed.  Use
- * these macros rather than doing the multiplication yourself so that proper
- * overflow checking is always done.
- */
-
-#define PyMem_New(type, n) \
-  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :      \
-        ( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
-#define PyMem_NEW(type, n) \
-  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :      \
-        ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
-
-/*
- * The value of (p) is always clobbered by this macro regardless of success.
- * The caller MUST check if (p) is NULL afterwards and deal with the memory
- * error if so.  This means the original value of (p) MUST be saved for the
- * caller's memory error handler to not lose track of it.
- */
-#define PyMem_Resize(p, type, n) \
-  ( (p) = ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :        \
-        (type *) PyMem_Realloc((p), (n) * sizeof(type)) )
-#define PyMem_RESIZE(p, type, n) \
-  ( (p) = ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :        \
-        (type *) PyMem_REALLOC((p), (n) * sizeof(type)) )
-
-/* PyMem{Del,DEL} are left over from ancient days, and shouldn't be used
- * anymore.  They're just confusing aliases for PyMem_{Free,FREE} now.
- */
-#define PyMem_Del               PyMem_Free
-#define PyMem_DEL               PyMem_FREE
-
-#ifndef Py_LIMITED_API
-typedef enum {
-    /* PyMem_RawMalloc(), PyMem_RawRealloc() and PyMem_RawFree() */
-    PYMEM_DOMAIN_RAW,
-
-    /* PyMem_Malloc(), PyMem_Realloc() and PyMem_Free() */
-    PYMEM_DOMAIN_MEM,
-
-    /* PyObject_Malloc(), PyObject_Realloc() and PyObject_Free() */
-    PYMEM_DOMAIN_OBJ
-} PyMemAllocatorDomain;
-
-typedef struct {
-    /* user context passed as the first argument to the 4 functions */
-    void *ctx;
-
-    /* allocate a memory block */
-    void* (*malloc) (void *ctx, size_t size);
-
-    /* allocate a memory block initialized by zeros */
-    void* (*calloc) (void *ctx, size_t nelem, size_t elsize);
-
-    /* allocate or resize a memory block */
-    void* (*realloc) (void *ctx, void *ptr, size_t new_size);
-
-    /* release a memory block */
-    void (*free) (void *ctx, void *ptr);
-} PyMemAllocatorEx;
-
-/* Get the memory block allocator of the specified domain. */
-PyAPI_FUNC(void) PyMem_GetAllocator(PyMemAllocatorDomain domain,
-                                    PyMemAllocatorEx *allocator);
-
-/* Set the memory block allocator of the specified domain.
-
-   The new allocator must return a distinct non-NULL pointer when requesting
-   zero bytes.
-
-   For the PYMEM_DOMAIN_RAW domain, the allocator must be thread-safe: the GIL
-   is not held when the allocator is called.
-
-   If the new allocator is not a hook (don't call the previous allocator), the
-   PyMem_SetupDebugHooks() function must be called to reinstall the debug hooks
-   on top on the new allocator. */
-PyAPI_FUNC(void) PyMem_SetAllocator(PyMemAllocatorDomain domain,
-                                    PyMemAllocatorEx *allocator);
-
-/* Setup hooks to detect bugs in the following Python memory allocator
-   functions:
-
-   - PyMem_RawMalloc(), PyMem_RawRealloc(), PyMem_RawFree()
-   - PyMem_Malloc(), PyMem_Realloc(), PyMem_Free()
-   - PyObject_Malloc(), PyObject_Realloc() and PyObject_Free()
-
-   Newly allocated memory is filled with the byte 0xCB, freed memory is filled
-   with the byte 0xDB. Additional checks:
-
-   - detect API violations, ex: PyObject_Free() called on a buffer allocated
-     by PyMem_Malloc()
-   - detect write before the start of the buffer (buffer underflow)
-   - detect write after the end of the buffer (buffer overflow)
-
-   The function does nothing if Python is not compiled is debug mode. */
-PyAPI_FUNC(void) PyMem_SetupDebugHooks(void);
-#endif
-
-#ifdef Py_BUILD_CORE
-/* Set the memory allocator of the specified domain to the default.
-   Save the old allocator into *old_alloc if it's non-NULL.
-   Return on success, or return -1 if the domain is unknown. */
-PyAPI_FUNC(int) _PyMem_SetDefaultAllocator(
-    PyMemAllocatorDomain domain,
-    PyMemAllocatorEx *old_alloc);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_PYMEM_H */
diff --git a/pythonsdk/include/pyport.h b/pythonsdk/include/pyport.h
deleted file mode 100644
index 5c9bc5c..0000000
--- a/pythonsdk/include/pyport.h
+++ /dev/null
@@ -1,793 +0,0 @@
-#ifndef Py_PYPORT_H
-#define Py_PYPORT_H
-
-#include "pyconfig.h" /* include for defines */
-
-#include <inttypes.h>
-
-/**************************************************************************
-Symbols and macros to supply platform-independent interfaces to basic
-C language & library operations whose spellings vary across platforms.
-
-Please try to make documentation here as clear as possible:  by definition,
-the stuff here is trying to illuminate C's darkest corners.
-
-Config #defines referenced here:
-
-SIGNED_RIGHT_SHIFT_ZERO_FILLS
-Meaning:  To be defined iff i>>j does not extend the sign bit when i is a
-          signed integral type and i < 0.
-Used in:  Py_ARITHMETIC_RIGHT_SHIFT
-
-Py_DEBUG
-Meaning:  Extra checks compiled in for debug mode.
-Used in:  Py_SAFE_DOWNCAST
-
-**************************************************************************/
-
-/* typedefs for some C9X-defined synonyms for integral types.
- *
- * The names in Python are exactly the same as the C9X names, except with a
- * Py_ prefix.  Until C9X is universally implemented, this is the only way
- * to ensure that Python gets reliable names that don't conflict with names
- * in non-Python code that are playing their own tricks to define the C9X
- * names.
- *
- * NOTE: don't go nuts here!  Python has no use for *most* of the C9X
- * integral synonyms.  Only define the ones we actually need.
- */
-
-/* long long is required. Ensure HAVE_LONG_LONG is defined for compatibility. */
-#ifndef HAVE_LONG_LONG
-#define HAVE_LONG_LONG 1
-#endif
-#ifndef PY_LONG_LONG
-#define PY_LONG_LONG long long
-/* If LLONG_MAX is defined in limits.h, use that. */
-#define PY_LLONG_MIN LLONG_MIN
-#define PY_LLONG_MAX LLONG_MAX
-#define PY_ULLONG_MAX ULLONG_MAX
-#endif
-
-#define PY_UINT32_T uint32_t
-#define PY_UINT64_T uint64_t
-
-/* Signed variants of the above */
-#define PY_INT32_T int32_t
-#define PY_INT64_T int64_t
-
-/* If PYLONG_BITS_IN_DIGIT is not defined then we'll use 30-bit digits if all
-   the necessary integer types are available, and we're on a 64-bit platform
-   (as determined by SIZEOF_VOID_P); otherwise we use 15-bit digits. */
-
-#ifndef PYLONG_BITS_IN_DIGIT
-#if SIZEOF_VOID_P >= 8
-#define PYLONG_BITS_IN_DIGIT 30
-#else
-#define PYLONG_BITS_IN_DIGIT 15
-#endif
-#endif
-
-/* uintptr_t is the C9X name for an unsigned integral type such that a
- * legitimate void* can be cast to uintptr_t and then back to void* again
- * without loss of information.  Similarly for intptr_t, wrt a signed
- * integral type.
- */
-typedef uintptr_t       Py_uintptr_t;
-typedef intptr_t        Py_intptr_t;
-
-/* Py_ssize_t is a signed integral type such that sizeof(Py_ssize_t) ==
- * sizeof(size_t).  C99 doesn't define such a thing directly (size_t is an
- * unsigned integral type).  See PEP 353 for details.
- */
-#ifdef HAVE_SSIZE_T
-typedef ssize_t         Py_ssize_t;
-#elif SIZEOF_VOID_P == SIZEOF_SIZE_T
-typedef Py_intptr_t     Py_ssize_t;
-#else
-#   error "Python needs a typedef for Py_ssize_t in pyport.h."
-#endif
-
-/* Py_hash_t is the same size as a pointer. */
-#define SIZEOF_PY_HASH_T SIZEOF_SIZE_T
-typedef Py_ssize_t Py_hash_t;
-/* Py_uhash_t is the unsigned equivalent needed to calculate numeric hash. */
-#define SIZEOF_PY_UHASH_T SIZEOF_SIZE_T
-typedef size_t Py_uhash_t;
-
-/* Only used for compatibility with code that may not be PY_SSIZE_T_CLEAN. */
-#ifdef PY_SSIZE_T_CLEAN
-typedef Py_ssize_t Py_ssize_clean_t;
-#else
-typedef int Py_ssize_clean_t;
-#endif
-
-/* Largest possible value of size_t. */
-#define PY_SIZE_MAX SIZE_MAX
-
-/* Largest positive value of type Py_ssize_t. */
-#define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1))
-/* Smallest negative value of type Py_ssize_t. */
-#define PY_SSIZE_T_MIN (-PY_SSIZE_T_MAX-1)
-
-/* PY_FORMAT_SIZE_T is a platform-specific modifier for use in a printf
- * format to convert an argument with the width of a size_t or Py_ssize_t.
- * C99 introduced "z" for this purpose, but not all platforms support that;
- * e.g., MS compilers use "I" instead.
- *
- * These "high level" Python format functions interpret "z" correctly on
- * all platforms (Python interprets the format string itself, and does whatever
- * the platform C requires to convert a size_t/Py_ssize_t argument):
- *
- *     PyBytes_FromFormat
- *     PyErr_Format
- *     PyBytes_FromFormatV
- *     PyUnicode_FromFormatV
- *
- * Lower-level uses require that you interpolate the correct format modifier
- * yourself (e.g., calling printf, fprintf, sprintf, PyOS_snprintf); for
- * example,
- *
- *     Py_ssize_t index;
- *     fprintf(stderr, "index %" PY_FORMAT_SIZE_T "d sucks\n", index);
- *
- * That will expand to %ld, or %Id, or to something else correct for a
- * Py_ssize_t on the platform.
- */
-#ifndef PY_FORMAT_SIZE_T
-#   if SIZEOF_SIZE_T == SIZEOF_INT && !defined(__APPLE__)
-#       define PY_FORMAT_SIZE_T ""
-#   elif SIZEOF_SIZE_T == SIZEOF_LONG
-#       define PY_FORMAT_SIZE_T "l"
-#   elif defined(MS_WINDOWS)
-#       define PY_FORMAT_SIZE_T "I"
-#   else
-#       error "This platform's pyconfig.h needs to define PY_FORMAT_SIZE_T"
-#   endif
-#endif
-
-/* Py_LOCAL can be used instead of static to get the fastest possible calling
- * convention for functions that are local to a given module.
- *
- * Py_LOCAL_INLINE does the same thing, and also explicitly requests inlining,
- * for platforms that support that.
- *
- * If PY_LOCAL_AGGRESSIVE is defined before python.h is included, more
- * "aggressive" inlining/optimization is enabled for the entire module.  This
- * may lead to code bloat, and may slow things down for those reasons.  It may
- * also lead to errors, if the code relies on pointer aliasing.  Use with
- * care.
- *
- * NOTE: You can only use this for functions that are entirely local to a
- * module; functions that are exported via method tables, callbacks, etc,
- * should keep using static.
- */
-
-#if defined(_MSC_VER)
-#if defined(PY_LOCAL_AGGRESSIVE)
-/* enable more aggressive optimization for visual studio */
-#pragma optimize("agtw", on)
-#endif
-/* ignore warnings if the compiler decides not to inline a function */
-#pragma warning(disable: 4710)
-/* fastest possible local call under MSVC */
-#define Py_LOCAL(type) static type __fastcall
-#define Py_LOCAL_INLINE(type) static __inline type __fastcall
-#else
-#define Py_LOCAL(type) static type
-#define Py_LOCAL_INLINE(type) static inline type
-#endif
-
-/* Py_MEMCPY is kept for backwards compatibility,
- * see https://bugs.python.org/issue28126 */
-#define Py_MEMCPY memcpy
-
-#include <stdlib.h>
-
-#ifdef HAVE_IEEEFP_H
-#include <ieeefp.h>  /* needed for 'finite' declaration on some platforms */
-#endif
-
-#include <math.h> /* Moved here from the math section, before extern "C" */
-
-/********************************************
- * WRAPPER FOR <time.h> and/or <sys/time.h> *
- ********************************************/
-
-#ifdef TIME_WITH_SYS_TIME
-#include <sys/time.h>
-#include <time.h>
-#else /* !TIME_WITH_SYS_TIME */
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#else /* !HAVE_SYS_TIME_H */
-#include <time.h>
-#endif /* !HAVE_SYS_TIME_H */
-#endif /* !TIME_WITH_SYS_TIME */
-
-
-/******************************
- * WRAPPER FOR <sys/select.h> *
- ******************************/
-
-/* NB caller must include <sys/types.h> */
-
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#endif /* !HAVE_SYS_SELECT_H */
-
-/*******************************
- * stat() and fstat() fiddling *
- *******************************/
-
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#elif defined(HAVE_STAT_H)
-#include <stat.h>
-#endif
-
-#ifndef S_IFMT
-/* VisualAge C/C++ Failed to Define MountType Field in sys/stat.h */
-#define S_IFMT 0170000
-#endif
-
-#ifndef S_IFLNK
-/* Windows doesn't define S_IFLNK but posixmodule.c maps
- * IO_REPARSE_TAG_SYMLINK to S_IFLNK */
-#  define S_IFLNK 0120000
-#endif
-
-#ifndef S_ISREG
-#define S_ISREG(x) (((x) & S_IFMT) == S_IFREG)
-#endif
-
-#ifndef S_ISDIR
-#define S_ISDIR(x) (((x) & S_IFMT) == S_IFDIR)
-#endif
-
-#ifndef S_ISCHR
-#define S_ISCHR(x) (((x) & S_IFMT) == S_IFCHR)
-#endif
-
-#ifdef __cplusplus
-/* Move this down here since some C++ #include's don't like to be included
-   inside an extern "C" */
-extern "C" {
-#endif
-
-
-/* Py_ARITHMETIC_RIGHT_SHIFT
- * C doesn't define whether a right-shift of a signed integer sign-extends
- * or zero-fills.  Here a macro to force sign extension:
- * Py_ARITHMETIC_RIGHT_SHIFT(TYPE, I, J)
- *    Return I >> J, forcing sign extension.  Arithmetically, return the
- *    floor of I/2**J.
- * Requirements:
- *    I should have signed integer type.  In the terminology of C99, this can
- *    be either one of the five standard signed integer types (signed char,
- *    short, int, long, long long) or an extended signed integer type.
- *    J is an integer >= 0 and strictly less than the number of bits in the
- *    type of I (because C doesn't define what happens for J outside that
- *    range either).
- *    TYPE used to specify the type of I, but is now ignored.  It's been left
- *    in for backwards compatibility with versions <= 2.6 or 3.0.
- * Caution:
- *    I may be evaluated more than once.
- */
-#ifdef SIGNED_RIGHT_SHIFT_ZERO_FILLS
-#define Py_ARITHMETIC_RIGHT_SHIFT(TYPE, I, J) \
-    ((I) < 0 ? -1-((-1-(I)) >> (J)) : (I) >> (J))
-#else
-#define Py_ARITHMETIC_RIGHT_SHIFT(TYPE, I, J) ((I) >> (J))
-#endif
-
-/* Py_FORCE_EXPANSION(X)
- * "Simply" returns its argument.  However, macro expansions within the
- * argument are evaluated.  This unfortunate trickery is needed to get
- * token-pasting to work as desired in some cases.
- */
-#define Py_FORCE_EXPANSION(X) X
-
-/* Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW)
- * Cast VALUE to type NARROW from type WIDE.  In Py_DEBUG mode, this
- * assert-fails if any information is lost.
- * Caution:
- *    VALUE may be evaluated more than once.
- */
-#ifdef Py_DEBUG
-#define Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) \
-    (assert((WIDE)(NARROW)(VALUE) == (VALUE)), (NARROW)(VALUE))
-#else
-#define Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) (NARROW)(VALUE)
-#endif
-
-/* Py_SET_ERRNO_ON_MATH_ERROR(x)
- * If a libm function did not set errno, but it looks like the result
- * overflowed or not-a-number, set errno to ERANGE or EDOM.  Set errno
- * to 0 before calling a libm function, and invoke this macro after,
- * passing the function result.
- * Caution:
- *    This isn't reliable.  See Py_OVERFLOWED comments.
- *    X is evaluated more than once.
- */
-#if defined(__FreeBSD__) || defined(__OpenBSD__) || (defined(__hpux) && defined(__ia64))
-#define _Py_SET_EDOM_FOR_NAN(X) if (isnan(X)) errno = EDOM;
-#else
-#define _Py_SET_EDOM_FOR_NAN(X) ;
-#endif
-#define Py_SET_ERRNO_ON_MATH_ERROR(X) \
-    do { \
-        if (errno == 0) { \
-            if ((X) == Py_HUGE_VAL || (X) == -Py_HUGE_VAL) \
-                errno = ERANGE; \
-            else _Py_SET_EDOM_FOR_NAN(X) \
-        } \
-    } while(0)
-
-/* Py_SET_ERANGE_IF_OVERFLOW(x)
- * An alias of Py_SET_ERRNO_ON_MATH_ERROR for backward-compatibility.
- */
-#define Py_SET_ERANGE_IF_OVERFLOW(X) Py_SET_ERRNO_ON_MATH_ERROR(X)
-
-/* Py_ADJUST_ERANGE1(x)
- * Py_ADJUST_ERANGE2(x, y)
- * Set errno to 0 before calling a libm function, and invoke one of these
- * macros after, passing the function result(s) (Py_ADJUST_ERANGE2 is useful
- * for functions returning complex results).  This makes two kinds of
- * adjustments to errno:  (A) If it looks like the platform libm set
- * errno=ERANGE due to underflow, clear errno. (B) If it looks like the
- * platform libm overflowed but didn't set errno, force errno to ERANGE.  In
- * effect, we're trying to force a useful implementation of C89 errno
- * behavior.
- * Caution:
- *    This isn't reliable.  See Py_OVERFLOWED comments.
- *    X and Y may be evaluated more than once.
- */
-#define Py_ADJUST_ERANGE1(X)                                            \
-    do {                                                                \
-        if (errno == 0) {                                               \
-            if ((X) == Py_HUGE_VAL || (X) == -Py_HUGE_VAL)              \
-                errno = ERANGE;                                         \
-        }                                                               \
-        else if (errno == ERANGE && (X) == 0.0)                         \
-            errno = 0;                                                  \
-    } while(0)
-
-#define Py_ADJUST_ERANGE2(X, Y)                                         \
-    do {                                                                \
-        if ((X) == Py_HUGE_VAL || (X) == -Py_HUGE_VAL ||                \
-            (Y) == Py_HUGE_VAL || (Y) == -Py_HUGE_VAL) {                \
-                        if (errno == 0)                                 \
-                                errno = ERANGE;                         \
-        }                                                               \
-        else if (errno == ERANGE)                                       \
-            errno = 0;                                                  \
-    } while(0)
-
-/*  The functions _Py_dg_strtod and _Py_dg_dtoa in Python/dtoa.c (which are
- *  required to support the short float repr introduced in Python 3.1) require
- *  that the floating-point unit that's being used for arithmetic operations
- *  on C doubles is set to use 53-bit precision.  It also requires that the
- *  FPU rounding mode is round-half-to-even, but that's less often an issue.
- *
- *  If your FPU isn't already set to 53-bit precision/round-half-to-even, and
- *  you want to make use of _Py_dg_strtod and _Py_dg_dtoa, then you should
- *
- *     #define HAVE_PY_SET_53BIT_PRECISION 1
- *
- *  and also give appropriate definitions for the following three macros:
- *
- *    _PY_SET_53BIT_PRECISION_START : store original FPU settings, and
- *        set FPU to 53-bit precision/round-half-to-even
- *    _PY_SET_53BIT_PRECISION_END : restore original FPU settings
- *    _PY_SET_53BIT_PRECISION_HEADER : any variable declarations needed to
- *        use the two macros above.
- *
- * The macros are designed to be used within a single C function: see
- * Python/pystrtod.c for an example of their use.
- */
-
-/* get and set x87 control word for gcc/x86 */
-#ifdef HAVE_GCC_ASM_FOR_X87
-#define HAVE_PY_SET_53BIT_PRECISION 1
-/* _Py_get/set_387controlword functions are defined in Python/pymath.c */
-#define _Py_SET_53BIT_PRECISION_HEADER                          \
-    unsigned short old_387controlword, new_387controlword
-#define _Py_SET_53BIT_PRECISION_START                                   \
-    do {                                                                \
-        old_387controlword = _Py_get_387controlword();                  \
-        new_387controlword = (old_387controlword & ~0x0f00) | 0x0200; \
-        if (new_387controlword != old_387controlword)                   \
-            _Py_set_387controlword(new_387controlword);                 \
-    } while (0)
-#define _Py_SET_53BIT_PRECISION_END                             \
-    if (new_387controlword != old_387controlword)               \
-        _Py_set_387controlword(old_387controlword)
-#endif
-
-/* get and set x87 control word for VisualStudio/x86 */
-#if defined(_MSC_VER) && !defined(_WIN64) /* x87 not supported in 64-bit */
-#define HAVE_PY_SET_53BIT_PRECISION 1
-#define _Py_SET_53BIT_PRECISION_HEADER \
-    unsigned int old_387controlword, new_387controlword, out_387controlword
-/* We use the __control87_2 function to set only the x87 control word.
-   The SSE control word is unaffected. */
-#define _Py_SET_53BIT_PRECISION_START                                   \
-    do {                                                                \
-        __control87_2(0, 0, &old_387controlword, NULL);                 \
-        new_387controlword =                                            \
-          (old_387controlword & ~(_MCW_PC | _MCW_RC)) | (_PC_53 | _RC_NEAR); \
-        if (new_387controlword != old_387controlword)                   \
-            __control87_2(new_387controlword, _MCW_PC | _MCW_RC,        \
-                          &out_387controlword, NULL);                   \
-    } while (0)
-#define _Py_SET_53BIT_PRECISION_END                                     \
-    do {                                                                \
-        if (new_387controlword != old_387controlword)                   \
-            __control87_2(old_387controlword, _MCW_PC | _MCW_RC,        \
-                          &out_387controlword, NULL);                   \
-    } while (0)
-#endif
-
-#ifdef HAVE_GCC_ASM_FOR_MC68881
-#define HAVE_PY_SET_53BIT_PRECISION 1
-#define _Py_SET_53BIT_PRECISION_HEADER \
-  unsigned int old_fpcr, new_fpcr
-#define _Py_SET_53BIT_PRECISION_START                                   \
-  do {                                                                  \
-    __asm__ ("fmove.l %%fpcr,%0" : "=g" (old_fpcr));                    \
-    /* Set double precision / round to nearest.  */                     \
-    new_fpcr = (old_fpcr & ~0xf0) | 0x80;                               \
-    if (new_fpcr != old_fpcr)                                           \
-      __asm__ volatile ("fmove.l %0,%%fpcr" : : "g" (new_fpcr));        \
-  } while (0)
-#define _Py_SET_53BIT_PRECISION_END                                     \
-  do {                                                                  \
-    if (new_fpcr != old_fpcr)                                           \
-      __asm__ volatile ("fmove.l %0,%%fpcr" : : "g" (old_fpcr));        \
-  } while (0)
-#endif
-
-/* default definitions are empty */
-#ifndef HAVE_PY_SET_53BIT_PRECISION
-#define _Py_SET_53BIT_PRECISION_HEADER
-#define _Py_SET_53BIT_PRECISION_START
-#define _Py_SET_53BIT_PRECISION_END
-#endif
-
-/* If we can't guarantee 53-bit precision, don't use the code
-   in Python/dtoa.c, but fall back to standard code.  This
-   means that repr of a float will be long (17 sig digits).
-
-   Realistically, there are two things that could go wrong:
-
-   (1) doubles aren't IEEE 754 doubles, or
-   (2) we're on x86 with the rounding precision set to 64-bits
-       (extended precision), and we don't know how to change
-       the rounding precision.
- */
-
-#if !defined(DOUBLE_IS_LITTLE_ENDIAN_IEEE754) && \
-    !defined(DOUBLE_IS_BIG_ENDIAN_IEEE754) && \
-    !defined(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754)
-#define PY_NO_SHORT_FLOAT_REPR
-#endif
-
-/* double rounding is symptomatic of use of extended precision on x86.  If
-   we're seeing double rounding, and we don't have any mechanism available for
-   changing the FPU rounding precision, then don't use Python/dtoa.c. */
-#if defined(X87_DOUBLE_ROUNDING) && !defined(HAVE_PY_SET_53BIT_PRECISION)
-#define PY_NO_SHORT_FLOAT_REPR
-#endif
-
-
-/* Py_DEPRECATED(version)
- * Declare a variable, type, or function deprecated.
- * Usage:
- *    extern int old_var Py_DEPRECATED(2.3);
- *    typedef int T1 Py_DEPRECATED(2.4);
- *    extern int x() Py_DEPRECATED(2.5);
- */
-#if defined(__GNUC__) \
-    && ((__GNUC__ >= 4) || (__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))
-#define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
-#else
-#define Py_DEPRECATED(VERSION_UNUSED)
-#endif
-
-
-/* _Py_HOT_FUNCTION
- * The hot attribute on a function is used to inform the compiler that the
- * function is a hot spot of the compiled program. The function is optimized
- * more aggressively and on many target it is placed into special subsection of
- * the text section so all hot functions appears close together improving
- * locality.
- *
- * Usage:
- *    int _Py_HOT_FUNCTION x(void) { return 3; }
- *
- * Issue #28618: This attribute must not be abused, otherwise it can have a
- * negative effect on performance. Only the functions were Python spend most of
- * its time must use it. Use a profiler when running performance benchmark
- * suite to find these functions.
- */
-#if defined(__GNUC__) \
-    && ((__GNUC__ >= 5) || (__GNUC__ == 4) && (__GNUC_MINOR__ >= 3))
-#define _Py_HOT_FUNCTION __attribute__((hot))
-#else
-#define _Py_HOT_FUNCTION
-#endif
-
-/* _Py_NO_INLINE
- * Disable inlining on a function. For example, it helps to reduce the C stack
- * consumption.
- *
- * Usage:
- *    int _Py_NO_INLINE x(void) { return 3; }
- */
-#if defined(__GNUC__) || defined(__clang__)
-#  define _Py_NO_INLINE __attribute__((noinline))
-#else
-#  define _Py_NO_INLINE
-#endif
-
-/**************************************************************************
-Prototypes that are missing from the standard include files on some systems
-(and possibly only some versions of such systems.)
-
-Please be conservative with adding new ones, document them and enclose them
-in platform-specific #ifdefs.
-**************************************************************************/
-
-#ifdef SOLARIS
-/* Unchecked */
-extern int gethostname(char *, int);
-#endif
-
-#ifdef HAVE__GETPTY
-#include <sys/types.h>          /* we need to import mode_t */
-extern char * _getpty(int *, int, mode_t, int);
-#endif
-
-/* On QNX 6, struct termio must be declared by including sys/termio.h
-   if TCGETA, TCSETA, TCSETAW, or TCSETAF are used.  sys/termio.h must
-   be included before termios.h or it will generate an error. */
-#if defined(HAVE_SYS_TERMIO_H) && !defined(__hpux)
-#include <sys/termio.h>
-#endif
-
-
-/* On 4.4BSD-descendants, ctype functions serves the whole range of
- * wchar_t character set rather than single byte code points only.
- * This characteristic can break some operations of string object
- * including str.upper() and str.split() on UTF-8 locales.  This
- * workaround was provided by Tim Robbins of FreeBSD project.
- */
-
-#if defined(__APPLE__)
-#  define _PY_PORT_CTYPE_UTF8_ISSUE
-#endif
-
-#ifdef _PY_PORT_CTYPE_UTF8_ISSUE
-#ifndef __cplusplus
-   /* The workaround below is unsafe in C++ because
-    * the <locale> defines these symbols as real functions,
-    * with a slightly different signature.
-    * See issue #10910
-    */
-#include <ctype.h>
-#include <wctype.h>
-#undef isalnum
-#define isalnum(c) iswalnum(btowc(c))
-#undef isalpha
-#define isalpha(c) iswalpha(btowc(c))
-#undef islower
-#define islower(c) iswlower(btowc(c))
-#undef isspace
-#define isspace(c) iswspace(btowc(c))
-#undef isupper
-#define isupper(c) iswupper(btowc(c))
-#undef tolower
-#define tolower(c) towlower(btowc(c))
-#undef toupper
-#define toupper(c) towupper(btowc(c))
-#endif
-#endif
-
-
-/* Declarations for symbol visibility.
-
-  PyAPI_FUNC(type): Declares a public Python API function and return type
-  PyAPI_DATA(type): Declares public Python data and its type
-  PyMODINIT_FUNC:   A Python module init function.  If these functions are
-                    inside the Python core, they are private to the core.
-                    If in an extension module, it may be declared with
-                    external linkage depending on the platform.
-
-  As a number of platforms support/require "__declspec(dllimport/dllexport)",
-  we support a HAVE_DECLSPEC_DLL macro to save duplication.
-*/
-
-/*
-  All windows ports, except cygwin, are handled in PC/pyconfig.h.
-
-  Cygwin is the only other autoconf platform requiring special
-  linkage handling and it uses __declspec().
-*/
-#if defined(__CYGWIN__)
-#       define HAVE_DECLSPEC_DLL
-#endif
-
-/* only get special linkage if built as shared or platform is Cygwin */
-#if defined(Py_ENABLE_SHARED) || defined(__CYGWIN__)
-#       if defined(HAVE_DECLSPEC_DLL)
-#               if defined(Py_BUILD_CORE) || defined(Py_BUILD_CORE_BUILTIN)
-#                       define PyAPI_FUNC(RTYPE) __declspec(dllexport) RTYPE
-#                       define PyAPI_DATA(RTYPE) extern __declspec(dllexport) RTYPE
-        /* module init functions inside the core need no external linkage */
-        /* except for Cygwin to handle embedding */
-#                       if defined(__CYGWIN__)
-#                               define PyMODINIT_FUNC __declspec(dllexport) PyObject*
-#                       else /* __CYGWIN__ */
-#                               define PyMODINIT_FUNC PyObject*
-#                       endif /* __CYGWIN__ */
-#               else /* Py_BUILD_CORE */
-        /* Building an extension module, or an embedded situation */
-        /* public Python functions and data are imported */
-        /* Under Cygwin, auto-import functions to prevent compilation */
-        /* failures similar to those described at the bottom of 4.1: */
-        /* http://docs.python.org/extending/windows.html#a-cookbook-approach */
-#                       if !defined(__CYGWIN__)
-#                               define PyAPI_FUNC(RTYPE) __declspec(dllimport) RTYPE
-#                       endif /* !__CYGWIN__ */
-#                       define PyAPI_DATA(RTYPE) extern __declspec(dllimport) RTYPE
-        /* module init functions outside the core must be exported */
-#                       if defined(__cplusplus)
-#                               define PyMODINIT_FUNC extern "C" __declspec(dllexport) PyObject*
-#                       else /* __cplusplus */
-#                               define PyMODINIT_FUNC __declspec(dllexport) PyObject*
-#                       endif /* __cplusplus */
-#               endif /* Py_BUILD_CORE */
-#       endif /* HAVE_DECLSPEC_DLL */
-#endif /* Py_ENABLE_SHARED */
-
-/* If no external linkage macros defined by now, create defaults */
-#ifndef PyAPI_FUNC
-#       define PyAPI_FUNC(RTYPE) RTYPE
-#endif
-#ifndef PyAPI_DATA
-#       define PyAPI_DATA(RTYPE) extern RTYPE
-#endif
-#ifndef PyMODINIT_FUNC
-#       if defined(__cplusplus)
-#               define PyMODINIT_FUNC extern "C" PyObject*
-#       else /* __cplusplus */
-#               define PyMODINIT_FUNC PyObject*
-#       endif /* __cplusplus */
-#endif
-
-/* limits.h constants that may be missing */
-
-#ifndef INT_MAX
-#define INT_MAX 2147483647
-#endif
-
-#ifndef LONG_MAX
-#if SIZEOF_LONG == 4
-#define LONG_MAX 0X7FFFFFFFL
-#elif SIZEOF_LONG == 8
-#define LONG_MAX 0X7FFFFFFFFFFFFFFFL
-#else
-#error "could not set LONG_MAX in pyport.h"
-#endif
-#endif
-
-#ifndef LONG_MIN
-#define LONG_MIN (-LONG_MAX-1)
-#endif
-
-#ifndef LONG_BIT
-#define LONG_BIT (8 * SIZEOF_LONG)
-#endif
-
-#if LONG_BIT != 8 * SIZEOF_LONG
-/* 04-Oct-2000 LONG_BIT is apparently (mis)defined as 64 on some recent
- * 32-bit platforms using gcc.  We try to catch that here at compile-time
- * rather than waiting for integer multiplication to trigger bogus
- * overflows.
- */
-#error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-/*
- * Hide GCC attributes from compilers that don't support them.
- */
-#if (!defined(__GNUC__) || __GNUC__ < 2 || \
-     (__GNUC__ == 2 && __GNUC_MINOR__ < 7) )
-#define Py_GCC_ATTRIBUTE(x)
-#else
-#define Py_GCC_ATTRIBUTE(x) __attribute__(x)
-#endif
-
-/*
- * Specify alignment on compilers that support it.
- */
-#if defined(__GNUC__) && __GNUC__ >= 3
-#define Py_ALIGNED(x) __attribute__((aligned(x)))
-#else
-#define Py_ALIGNED(x)
-#endif
-
-/* Eliminate end-of-loop code not reached warnings from SunPro C
- * when using do{...}while(0) macros
- */
-#ifdef __SUNPRO_C
-#pragma error_messages (off,E_END_OF_LOOP_CODE_NOT_REACHED)
-#endif
-
-#ifndef Py_LL
-#define Py_LL(x) x##LL
-#endif
-
-#ifndef Py_ULL
-#define Py_ULL(x) Py_LL(x##U)
-#endif
-
-#define Py_VA_COPY va_copy
-
-/*
- * Convenient macros to deal with endianness of the platform. WORDS_BIGENDIAN is
- * detected by configure and defined in pyconfig.h. The code in pyconfig.h
- * also takes care of Apple's universal builds.
- */
-
-#ifdef WORDS_BIGENDIAN
-#define PY_BIG_ENDIAN 1
-#define PY_LITTLE_ENDIAN 0
-#else
-#define PY_BIG_ENDIAN 0
-#define PY_LITTLE_ENDIAN 1
-#endif
-
-#if defined(Py_BUILD_CORE) || defined(Py_BUILD_CORE_BUILTIN)
-/*
- * Macros to protect CRT calls against instant termination when passed an
- * invalid parameter (issue23524).
- */
-#if defined _MSC_VER && _MSC_VER >= 1900
-
-extern _invalid_parameter_handler _Py_silent_invalid_parameter_handler;
-#define _Py_BEGIN_SUPPRESS_IPH { _invalid_parameter_handler _Py_old_handler = \
-    _set_thread_local_invalid_parameter_handler(_Py_silent_invalid_parameter_handler);
-#define _Py_END_SUPPRESS_IPH _set_thread_local_invalid_parameter_handler(_Py_old_handler); }
-
-#else
-
-#define _Py_BEGIN_SUPPRESS_IPH
-#define _Py_END_SUPPRESS_IPH
-
-#endif /* _MSC_VER >= 1900 */
-#endif /* Py_BUILD_CORE */
-
-#ifdef __ANDROID__
-/* The Android langinfo.h header is not used. */
-#undef HAVE_LANGINFO_H
-#undef CODESET
-#endif
-
-/* Maximum value of the Windows DWORD type */
-#define PY_DWORD_MAX 4294967295U
-
-/* This macro used to tell whether Python was built with multithreading
- * enabled.  Now multithreading is always enabled, but keep the macro
- * for compatibility.
- */
-#ifndef WITH_THREAD
-#define WITH_THREAD
-#endif
-
-#endif /* Py_PYPORT_H */
diff --git a/pythonsdk/include/pystate.h b/pythonsdk/include/pystate.h
deleted file mode 100644
index 28eb707..0000000
--- a/pythonsdk/include/pystate.h
+++ /dev/null
@@ -1,456 +0,0 @@
-
-/* Thread and interpreter state structures and their interfaces */
-
-
-#ifndef Py_PYSTATE_H
-#define Py_PYSTATE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "pythread.h"
-
-/* This limitation is for performance and simplicity. If needed it can be
-removed (with effort). */
-#define MAX_CO_EXTRA_USERS 255
-
-/* State shared between threads */
-
-struct _ts; /* Forward */
-struct _is; /* Forward */
-struct _frame; /* Forward declaration for PyFrameObject. */
-
-#ifdef Py_LIMITED_API
-typedef struct _is PyInterpreterState;
-#else
-typedef PyObject* (*_PyFrameEvalFunction)(struct _frame *, int);
-
-
-typedef struct {
-    int install_signal_handlers;  /* Install signal handlers? -1 means unset */
-
-    int ignore_environment; /* -E, Py_IgnoreEnvironmentFlag */
-    int use_hash_seed;      /* PYTHONHASHSEED=x */
-    unsigned long hash_seed;
-    const char *allocator;  /* Memory allocator: _PyMem_SetupAllocators() */
-    int dev_mode;           /* PYTHONDEVMODE, -X dev */
-    int faulthandler;       /* PYTHONFAULTHANDLER, -X faulthandler */
-    int tracemalloc;        /* PYTHONTRACEMALLOC, -X tracemalloc=N */
-    int import_time;        /* PYTHONPROFILEIMPORTTIME, -X importtime */
-    int show_ref_count;     /* -X showrefcount */
-    int show_alloc_count;   /* -X showalloccount */
-    int dump_refs;          /* PYTHONDUMPREFS */
-    int malloc_stats;       /* PYTHONMALLOCSTATS */
-    int coerce_c_locale;    /* PYTHONCOERCECLOCALE, -1 means unknown */
-    int coerce_c_locale_warn; /* PYTHONCOERCECLOCALE=warn */
-    int utf8_mode;          /* PYTHONUTF8, -X utf8; -1 means unknown */
-
-    wchar_t *program_name;  /* Program name, see also Py_GetProgramName() */
-    int argc;               /* Number of command line arguments,
-                               -1 means unset */
-    wchar_t **argv;         /* Command line arguments */
-    wchar_t *program;       /* argv[0] or "" */
-
-    int nxoption;           /* Number of -X options */
-    wchar_t **xoptions;     /* -X options */
-
-    int nwarnoption;        /* Number of warnings options */
-    wchar_t **warnoptions;  /* Warnings options */
-
-    /* Path configuration inputs */
-    wchar_t *module_search_path_env; /* PYTHONPATH environment variable */
-    wchar_t *home;          /* PYTHONHOME environment variable,
-                               see also Py_SetPythonHome(). */
-
-    /* Path configuration outputs */
-    int nmodule_search_path;        /* Number of sys.path paths,
-                                       -1 means unset */
-    wchar_t **module_search_paths;  /* sys.path paths */
-    wchar_t *executable;    /* sys.executable */
-    wchar_t *prefix;        /* sys.prefix */
-    wchar_t *base_prefix;   /* sys.base_prefix */
-    wchar_t *exec_prefix;   /* sys.exec_prefix */
-    wchar_t *base_exec_prefix;  /* sys.base_exec_prefix */
-
-    /* Private fields */
-    int _disable_importlib; /* Needed by freeze_importlib */
-} _PyCoreConfig;
-
-#define _PyCoreConfig_INIT \
-    (_PyCoreConfig){ \
-        .install_signal_handlers = -1, \
-        .ignore_environment = -1, \
-        .use_hash_seed = -1, \
-        .coerce_c_locale = -1, \
-        .faulthandler = -1, \
-        .tracemalloc = -1, \
-        .utf8_mode = -1, \
-        .argc = -1, \
-        .nmodule_search_path = -1}
-/* Note: _PyCoreConfig_INIT sets other fields to 0/NULL */
-
-/* Placeholders while working on the new configuration API
- *
- * See PEP 432 for final anticipated contents
- */
-typedef struct {
-    int install_signal_handlers;   /* Install signal handlers? -1 means unset */
-    PyObject *argv;                /* sys.argv list, can be NULL */
-    PyObject *executable;          /* sys.executable str */
-    PyObject *prefix;              /* sys.prefix str */
-    PyObject *base_prefix;         /* sys.base_prefix str, can be NULL */
-    PyObject *exec_prefix;         /* sys.exec_prefix str */
-    PyObject *base_exec_prefix;    /* sys.base_exec_prefix str, can be NULL */
-    PyObject *warnoptions;         /* sys.warnoptions list, can be NULL */
-    PyObject *xoptions;            /* sys._xoptions dict, can be NULL */
-    PyObject *module_search_path;  /* sys.path list */
-} _PyMainInterpreterConfig;
-
-#define _PyMainInterpreterConfig_INIT \
-    (_PyMainInterpreterConfig){.install_signal_handlers = -1}
-/* Note: _PyMainInterpreterConfig_INIT sets other fields to 0/NULL */
-
-typedef struct _is {
-
-    struct _is *next;
-    struct _ts *tstate_head;
-
-    int64_t id;
-    int64_t id_refcount;
-    PyThread_type_lock id_mutex;
-
-    PyObject *modules;
-    PyObject *modules_by_index;
-    PyObject *sysdict;
-    PyObject *builtins;
-    PyObject *importlib;
-
-    /* Used in Python/sysmodule.c. */
-    int check_interval;
-
-    /* Used in Modules/_threadmodule.c. */
-    long num_threads;
-    /* Support for runtime thread stack size tuning.
-       A value of 0 means using the platform's default stack size
-       or the size specified by the THREAD_STACK_SIZE macro. */
-    /* Used in Python/thread.c. */
-    size_t pythread_stacksize;
-
-    PyObject *codec_search_path;
-    PyObject *codec_search_cache;
-    PyObject *codec_error_registry;
-    int codecs_initialized;
-    int fscodec_initialized;
-
-    _PyCoreConfig core_config;
-    _PyMainInterpreterConfig config;
-#ifdef HAVE_DLOPEN
-    int dlopenflags;
-#endif
-
-    PyObject *builtins_copy;
-    PyObject *import_func;
-    /* Initialized to PyEval_EvalFrameDefault(). */
-    _PyFrameEvalFunction eval_frame;
-
-    Py_ssize_t co_extra_user_count;
-    freefunc co_extra_freefuncs[MAX_CO_EXTRA_USERS];
-
-#ifdef HAVE_FORK
-    PyObject *before_forkers;
-    PyObject *after_forkers_parent;
-    PyObject *after_forkers_child;
-#endif
-    /* AtExit module */
-    void (*pyexitfunc)(PyObject *);
-    PyObject *pyexitmodule;
-
-    uint64_t tstate_next_unique_id;
-} PyInterpreterState;
-#endif   /* !Py_LIMITED_API */
-
-
-/* State unique per thread */
-
-#ifndef Py_LIMITED_API
-/* Py_tracefunc return -1 when raising an exception, or 0 for success. */
-typedef int (*Py_tracefunc)(PyObject *, struct _frame *, int, PyObject *);
-
-/* The following values are used for 'what' for tracefunc functions
- *
- * To add a new kind of trace event, also update "trace_init" in
- * Python/sysmodule.c to define the Python level event name
- */
-#define PyTrace_CALL 0
-#define PyTrace_EXCEPTION 1
-#define PyTrace_LINE 2
-#define PyTrace_RETURN 3
-#define PyTrace_C_CALL 4
-#define PyTrace_C_EXCEPTION 5
-#define PyTrace_C_RETURN 6
-#define PyTrace_OPCODE 7
-#endif   /* Py_LIMITED_API */
-
-#ifdef Py_LIMITED_API
-typedef struct _ts PyThreadState;
-#else
-
-typedef struct _err_stackitem {
-    /* This struct represents an entry on the exception stack, which is a
-     * per-coroutine state. (Coroutine in the computer science sense,
-     * including the thread and generators).
-     * This ensures that the exception state is not impacted by "yields"
-     * from an except handler.
-     */
-    PyObject *exc_type, *exc_value, *exc_traceback;
-
-    struct _err_stackitem *previous_item;
-
-} _PyErr_StackItem;
-
-
-typedef struct _ts {
-    /* See Python/ceval.c for comments explaining most fields */
-
-    struct _ts *prev;
-    struct _ts *next;
-    PyInterpreterState *interp;
-
-    /* Borrowed reference to the current frame (it can be NULL) */
-    struct _frame *frame;
-    int recursion_depth;
-    char overflowed; /* The stack has overflowed. Allow 50 more calls
-                        to handle the runtime error. */
-    char recursion_critical; /* The current calls must not cause
-                                a stack overflow. */
-    int stackcheck_counter;
-
-    /* 'tracing' keeps track of the execution depth when tracing/profiling.
-       This is to prevent the actual trace/profile code from being recorded in
-       the trace/profile. */
-    int tracing;
-    int use_tracing;
-
-    Py_tracefunc c_profilefunc;
-    Py_tracefunc c_tracefunc;
-    PyObject *c_profileobj;
-    PyObject *c_traceobj;
-
-    /* The exception currently being raised */
-    PyObject *curexc_type;
-    PyObject *curexc_value;
-    PyObject *curexc_traceback;
-
-    /* The exception currently being handled, if no coroutines/generators
-     * are present. Always last element on the stack referred to be exc_info.
-     */
-    _PyErr_StackItem exc_state;
-
-    /* Pointer to the top of the stack of the exceptions currently
-     * being handled */
-    _PyErr_StackItem *exc_info;
-
-    PyObject *dict;  /* Stores per-thread state */
-
-    int gilstate_counter;
-
-    PyObject *async_exc; /* Asynchronous exception to raise */
-    unsigned long thread_id; /* Thread id where this tstate was created */
-
-    int trash_delete_nesting;
-    PyObject *trash_delete_later;
-
-    /* Called when a thread state is deleted normally, but not when it
-     * is destroyed after fork().
-     * Pain:  to prevent rare but fatal shutdown errors (issue 18808),
-     * Thread.join() must wait for the join'ed thread's tstate to be unlinked
-     * from the tstate chain.  That happens at the end of a thread's life,
-     * in pystate.c.
-     * The obvious way doesn't quite work:  create a lock which the tstate
-     * unlinking code releases, and have Thread.join() wait to acquire that
-     * lock.  The problem is that we _are_ at the end of the thread's life:
-     * if the thread holds the last reference to the lock, decref'ing the
-     * lock will delete the lock, and that may trigger arbitrary Python code
-     * if there's a weakref, with a callback, to the lock.  But by this time
-     * _PyThreadState_Current is already NULL, so only the simplest of C code
-     * can be allowed to run (in particular it must not be possible to
-     * release the GIL).
-     * So instead of holding the lock directly, the tstate holds a weakref to
-     * the lock:  that's the value of on_delete_data below.  Decref'ing a
-     * weakref is harmless.
-     * on_delete points to _threadmodule.c's static release_sentinel() function.
-     * After the tstate is unlinked, release_sentinel is called with the
-     * weakref-to-lock (on_delete_data) argument, and release_sentinel releases
-     * the indirectly held lock.
-     */
-    void (*on_delete)(void *);
-    void *on_delete_data;
-
-    int coroutine_origin_tracking_depth;
-
-    PyObject *coroutine_wrapper;
-    int in_coroutine_wrapper;
-
-    PyObject *async_gen_firstiter;
-    PyObject *async_gen_finalizer;
-
-    PyObject *context;
-    uint64_t context_ver;
-
-    /* Unique thread state id. */
-    uint64_t id;
-
-    /* XXX signal handlers should also be here */
-
-} PyThreadState;
-#endif   /* !Py_LIMITED_API */
-
-
-PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_New(void);
-PyAPI_FUNC(void) PyInterpreterState_Clear(PyInterpreterState *);
-PyAPI_FUNC(void) PyInterpreterState_Delete(PyInterpreterState *);
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03070000
-/* New in 3.7 */
-PyAPI_FUNC(int64_t) PyInterpreterState_GetID(PyInterpreterState *);
-#endif
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyState_AddModule(PyObject*, struct PyModuleDef*);
-#endif /* !Py_LIMITED_API */
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-/* New in 3.3 */
-PyAPI_FUNC(int) PyState_AddModule(PyObject*, struct PyModuleDef*);
-PyAPI_FUNC(int) PyState_RemoveModule(struct PyModuleDef*);
-#endif
-PyAPI_FUNC(PyObject*) PyState_FindModule(struct PyModuleDef*);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _PyState_ClearModules(void);
-#endif
-
-PyAPI_FUNC(PyThreadState *) PyThreadState_New(PyInterpreterState *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyThreadState *) _PyThreadState_Prealloc(PyInterpreterState *);
-PyAPI_FUNC(void) _PyThreadState_Init(PyThreadState *);
-#endif /* !Py_LIMITED_API */
-PyAPI_FUNC(void) PyThreadState_Clear(PyThreadState *);
-PyAPI_FUNC(void) PyThreadState_Delete(PyThreadState *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _PyThreadState_DeleteExcept(PyThreadState *tstate);
-#endif /* !Py_LIMITED_API */
-PyAPI_FUNC(void) PyThreadState_DeleteCurrent(void);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _PyGILState_Reinit(void);
-#endif /* !Py_LIMITED_API */
-
-/* Return the current thread state. The global interpreter lock must be held.
- * When the current thread state is NULL, this issues a fatal error (so that
- * the caller needn't check for NULL). */
-PyAPI_FUNC(PyThreadState *) PyThreadState_Get(void);
-
-#ifndef Py_LIMITED_API
-/* Similar to PyThreadState_Get(), but don't issue a fatal error
- * if it is NULL. */
-PyAPI_FUNC(PyThreadState *) _PyThreadState_UncheckedGet(void);
-#endif /* !Py_LIMITED_API */
-
-PyAPI_FUNC(PyThreadState *) PyThreadState_Swap(PyThreadState *);
-PyAPI_FUNC(PyObject *) PyThreadState_GetDict(void);
-PyAPI_FUNC(int) PyThreadState_SetAsyncExc(unsigned long, PyObject *);
-
-
-/* Variable and macro for in-line access to current thread state */
-
-/* Assuming the current thread holds the GIL, this is the
-   PyThreadState for the current thread. */
-#ifdef Py_BUILD_CORE
-#  define _PyThreadState_Current _PyRuntime.gilstate.tstate_current
-#  define PyThreadState_GET() \
-             ((PyThreadState*)_Py_atomic_load_relaxed(&_PyThreadState_Current))
-#else
-#  define PyThreadState_GET() PyThreadState_Get()
-#endif
-
-typedef
-    enum {PyGILState_LOCKED, PyGILState_UNLOCKED}
-        PyGILState_STATE;
-
-
-/* Ensure that the current thread is ready to call the Python
-   C API, regardless of the current state of Python, or of its
-   thread lock.  This may be called as many times as desired
-   by a thread so long as each call is matched with a call to
-   PyGILState_Release().  In general, other thread-state APIs may
-   be used between _Ensure() and _Release() calls, so long as the
-   thread-state is restored to its previous state before the Release().
-   For example, normal use of the Py_BEGIN_ALLOW_THREADS/
-   Py_END_ALLOW_THREADS macros are acceptable.
-
-   The return value is an opaque "handle" to the thread state when
-   PyGILState_Ensure() was called, and must be passed to
-   PyGILState_Release() to ensure Python is left in the same state. Even
-   though recursive calls are allowed, these handles can *not* be shared -
-   each unique call to PyGILState_Ensure must save the handle for its
-   call to PyGILState_Release.
-
-   When the function returns, the current thread will hold the GIL.
-
-   Failure is a fatal error.
-*/
-PyAPI_FUNC(PyGILState_STATE) PyGILState_Ensure(void);
-
-/* Release any resources previously acquired.  After this call, Python's
-   state will be the same as it was prior to the corresponding
-   PyGILState_Ensure() call (but generally this state will be unknown to
-   the caller, hence the use of the GILState API.)
-
-   Every call to PyGILState_Ensure must be matched by a call to
-   PyGILState_Release on the same thread.
-*/
-PyAPI_FUNC(void) PyGILState_Release(PyGILState_STATE);
-
-/* Helper/diagnostic function - get the current thread state for
-   this thread.  May return NULL if no GILState API has been used
-   on the current thread.  Note that the main thread always has such a
-   thread-state, even if no auto-thread-state call has been made
-   on the main thread.
-*/
-PyAPI_FUNC(PyThreadState *) PyGILState_GetThisThreadState(void);
-
-#ifndef Py_LIMITED_API
-/* Helper/diagnostic function - return 1 if the current thread
-   currently holds the GIL, 0 otherwise.
-
-   The function returns 1 if _PyGILState_check_enabled is non-zero. */
-PyAPI_FUNC(int) PyGILState_Check(void);
-
-/* Unsafe function to get the single PyInterpreterState used by this process'
-   GILState implementation.
-
-   Return NULL before _PyGILState_Init() is called and after _PyGILState_Fini()
-   is called. */
-PyAPI_FUNC(PyInterpreterState *) _PyGILState_GetInterpreterStateUnsafe(void);
-#endif   /* !Py_LIMITED_API */
-
-
-/* The implementation of sys._current_frames()  Returns a dict mapping
-   thread id to that thread's current frame.
-*/
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyThread_CurrentFrames(void);
-#endif
-
-/* Routines for advanced debuggers, requested by David Beazley.
-   Don't use unless you know what you are doing! */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_Main(void);
-PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_Head(void);
-PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_Next(PyInterpreterState *);
-PyAPI_FUNC(PyThreadState *) PyInterpreterState_ThreadHead(PyInterpreterState *);
-PyAPI_FUNC(PyThreadState *) PyThreadState_Next(PyThreadState *);
-
-typedef struct _frame *(*PyThreadFrameGetter)(PyThreadState *self_);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PYSTATE_H */
diff --git a/pythonsdk/include/pystrcmp.h b/pythonsdk/include/pystrcmp.h
deleted file mode 100644
index eccabdc..0000000
--- a/pythonsdk/include/pystrcmp.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef Py_STRCMP_H
-#define Py_STRCMP_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(int) PyOS_mystrnicmp(const char *, const char *, Py_ssize_t);
-PyAPI_FUNC(int) PyOS_mystricmp(const char *, const char *);
-
-#ifdef MS_WINDOWS
-#define PyOS_strnicmp strnicmp
-#define PyOS_stricmp stricmp
-#else
-#define PyOS_strnicmp PyOS_mystrnicmp
-#define PyOS_stricmp PyOS_mystricmp
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_STRCMP_H */
diff --git a/pythonsdk/include/pystrhex.h b/pythonsdk/include/pystrhex.h
deleted file mode 100644
index 1ce3a5e..0000000
--- a/pythonsdk/include/pystrhex.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef Py_STRHEX_H
-#define Py_STRHEX_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef Py_LIMITED_API
-/* Returns a str() containing the hex representation of argbuf. */
-PyAPI_FUNC(PyObject*) _Py_strhex(const char* argbuf, const Py_ssize_t arglen);
-/* Returns a bytes() containing the ASCII hex representation of argbuf. */
-PyAPI_FUNC(PyObject*) _Py_strhex_bytes(const char* argbuf, const Py_ssize_t arglen);
-#endif /* !Py_LIMITED_API */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_STRHEX_H */
diff --git a/pythonsdk/include/pystrtod.h b/pythonsdk/include/pystrtod.h
deleted file mode 100644
index ba2e8d0..0000000
--- a/pythonsdk/include/pystrtod.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef Py_STRTOD_H
-#define Py_STRTOD_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-PyAPI_FUNC(double) PyOS_string_to_double(const char *str,
-                                         char **endptr,
-                                         PyObject *overflow_exception);
-
-/* The caller is responsible for calling PyMem_Free to free the buffer
-   that's is returned. */
-PyAPI_FUNC(char *) PyOS_double_to_string(double val,
-                                         char format_code,
-                                         int precision,
-                                         int flags,
-                                         int *type);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _Py_string_to_number_with_underscores(
-    const char *str, Py_ssize_t len, const char *what, PyObject *obj, void *arg,
-    PyObject *(*innerfunc)(const char *, Py_ssize_t, void *));
-
-PyAPI_FUNC(double) _Py_parse_inf_or_nan(const char *p, char **endptr);
-#endif
-
-
-/* PyOS_double_to_string's "flags" parameter can be set to 0 or more of: */
-#define Py_DTSF_SIGN      0x01 /* always add the sign */
-#define Py_DTSF_ADD_DOT_0 0x02 /* if the result is an integer add ".0" */
-#define Py_DTSF_ALT       0x04 /* "alternate" formatting. it's format_code
-                                  specific */
-
-/* PyOS_double_to_string's "type", if non-NULL, will be set to one of: */
-#define Py_DTST_FINITE 0
-#define Py_DTST_INFINITE 1
-#define Py_DTST_NAN 2
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_STRTOD_H */
diff --git a/pythonsdk/include/pythonrun.h b/pythonsdk/include/pythonrun.h
deleted file mode 100644
index 818cef2..0000000
--- a/pythonsdk/include/pythonrun.h
+++ /dev/null
@@ -1,181 +0,0 @@
-
-/* Interfaces to parse and execute pieces of python code */
-
-#ifndef Py_PYTHONRUN_H
-#define Py_PYTHONRUN_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *);
-PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *);
-PyAPI_FUNC(int) PyRun_AnyFileExFlags(
-    FILE *fp,
-    const char *filename,       /* decoded from the filesystem encoding */
-    int closeit,
-    PyCompilerFlags *flags);
-PyAPI_FUNC(int) PyRun_SimpleFileExFlags(
-    FILE *fp,
-    const char *filename,       /* decoded from the filesystem encoding */
-    int closeit,
-    PyCompilerFlags *flags);
-PyAPI_FUNC(int) PyRun_InteractiveOneFlags(
-    FILE *fp,
-    const char *filename,       /* decoded from the filesystem encoding */
-    PyCompilerFlags *flags);
-PyAPI_FUNC(int) PyRun_InteractiveOneObject(
-    FILE *fp,
-    PyObject *filename,
-    PyCompilerFlags *flags);
-PyAPI_FUNC(int) PyRun_InteractiveLoopFlags(
-    FILE *fp,
-    const char *filename,       /* decoded from the filesystem encoding */
-    PyCompilerFlags *flags);
-
-PyAPI_FUNC(struct _mod *) PyParser_ASTFromString(
-    const char *s,
-    const char *filename,       /* decoded from the filesystem encoding */
-    int start,
-    PyCompilerFlags *flags,
-    PyArena *arena);
-PyAPI_FUNC(struct _mod *) PyParser_ASTFromStringObject(
-    const char *s,
-    PyObject *filename,
-    int start,
-    PyCompilerFlags *flags,
-    PyArena *arena);
-PyAPI_FUNC(struct _mod *) PyParser_ASTFromFile(
-    FILE *fp,
-    const char *filename,       /* decoded from the filesystem encoding */
-    const char* enc,
-    int start,
-    const char *ps1,
-    const char *ps2,
-    PyCompilerFlags *flags,
-    int *errcode,
-    PyArena *arena);
-PyAPI_FUNC(struct _mod *) PyParser_ASTFromFileObject(
-    FILE *fp,
-    PyObject *filename,
-    const char* enc,
-    int start,
-    const char *ps1,
-    const char *ps2,
-    PyCompilerFlags *flags,
-    int *errcode,
-    PyArena *arena);
-#endif
-
-#ifndef PyParser_SimpleParseString
-#define PyParser_SimpleParseString(S, B) \
-    PyParser_SimpleParseStringFlags(S, B, 0)
-#define PyParser_SimpleParseFile(FP, S, B) \
-    PyParser_SimpleParseFileFlags(FP, S, B, 0)
-#endif
-PyAPI_FUNC(struct _node *) PyParser_SimpleParseStringFlags(const char *, int,
-                                                           int);
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(struct _node *) PyParser_SimpleParseStringFlagsFilename(const char *,
-                                                                   const char *,
-                                                                   int, int);
-#endif
-PyAPI_FUNC(struct _node *) PyParser_SimpleParseFileFlags(FILE *, const char *,
-                                                         int, int);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) PyRun_StringFlags(const char *, int, PyObject *,
-                                         PyObject *, PyCompilerFlags *);
-
-PyAPI_FUNC(PyObject *) PyRun_FileExFlags(
-    FILE *fp,
-    const char *filename,       /* decoded from the filesystem encoding */
-    int start,
-    PyObject *globals,
-    PyObject *locals,
-    int closeit,
-    PyCompilerFlags *flags);
-#endif
-
-#ifdef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) Py_CompileString(const char *, const char *, int);
-#else
-#define Py_CompileString(str, p, s) Py_CompileStringExFlags(str, p, s, NULL, -1)
-#define Py_CompileStringFlags(str, p, s, f) Py_CompileStringExFlags(str, p, s, f, -1)
-PyAPI_FUNC(PyObject *) Py_CompileStringExFlags(
-    const char *str,
-    const char *filename,       /* decoded from the filesystem encoding */
-    int start,
-    PyCompilerFlags *flags,
-    int optimize);
-PyAPI_FUNC(PyObject *) Py_CompileStringObject(
-    const char *str,
-    PyObject *filename, int start,
-    PyCompilerFlags *flags,
-    int optimize);
-#endif
-PyAPI_FUNC(struct symtable *) Py_SymtableString(
-    const char *str,
-    const char *filename,       /* decoded from the filesystem encoding */
-    int start);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(struct symtable *) Py_SymtableStringObject(
-    const char *str,
-    PyObject *filename,
-    int start);
-#endif
-
-PyAPI_FUNC(void) PyErr_Print(void);
-PyAPI_FUNC(void) PyErr_PrintEx(int);
-PyAPI_FUNC(void) PyErr_Display(PyObject *, PyObject *, PyObject *);
-
-#ifndef Py_LIMITED_API
-/* Use macros for a bunch of old variants */
-#define PyRun_String(str, s, g, l) PyRun_StringFlags(str, s, g, l, NULL)
-#define PyRun_AnyFile(fp, name) PyRun_AnyFileExFlags(fp, name, 0, NULL)
-#define PyRun_AnyFileEx(fp, name, closeit) \
-    PyRun_AnyFileExFlags(fp, name, closeit, NULL)
-#define PyRun_AnyFileFlags(fp, name, flags) \
-    PyRun_AnyFileExFlags(fp, name, 0, flags)
-#define PyRun_SimpleString(s) PyRun_SimpleStringFlags(s, NULL)
-#define PyRun_SimpleFile(f, p) PyRun_SimpleFileExFlags(f, p, 0, NULL)
-#define PyRun_SimpleFileEx(f, p, c) PyRun_SimpleFileExFlags(f, p, c, NULL)
-#define PyRun_InteractiveOne(f, p) PyRun_InteractiveOneFlags(f, p, NULL)
-#define PyRun_InteractiveLoop(f, p) PyRun_InteractiveLoopFlags(f, p, NULL)
-#define PyRun_File(fp, p, s, g, l) \
-    PyRun_FileExFlags(fp, p, s, g, l, 0, NULL)
-#define PyRun_FileEx(fp, p, s, g, l, c) \
-    PyRun_FileExFlags(fp, p, s, g, l, c, NULL)
-#define PyRun_FileFlags(fp, p, s, g, l, flags) \
-    PyRun_FileExFlags(fp, p, s, g, l, 0, flags)
-#endif
-
-/* Stuff with no proper home (yet) */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(char *) PyOS_Readline(FILE *, FILE *, const char *);
-#endif
-PyAPI_DATA(int) (*PyOS_InputHook)(void);
-PyAPI_DATA(char) *(*PyOS_ReadlineFunctionPointer)(FILE *, FILE *, const char *);
-#ifndef Py_LIMITED_API
-PyAPI_DATA(PyThreadState*) _PyOS_ReadlineTState;
-#endif
-
-/* Stack size, in "pointers" (so we get extra safety margins
-   on 64-bit platforms).  On a 32-bit platform, this translates
-   to an 8k margin. */
-#define PYOS_STACK_MARGIN 2048
-
-#if defined(WIN32) && !defined(MS_WIN64) && defined(_MSC_VER) && _MSC_VER >= 1300
-/* Enable stack checking under Microsoft C */
-#define USE_STACKCHECK
-#endif
-
-#ifdef USE_STACKCHECK
-/* Check that we aren't overflowing our stack */
-PyAPI_FUNC(int) PyOS_CheckStack(void);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PYTHONRUN_H */
diff --git a/pythonsdk/include/pythread.h b/pythonsdk/include/pythread.h
deleted file mode 100644
index a1e37fb..0000000
--- a/pythonsdk/include/pythread.h
+++ /dev/null
@@ -1,155 +0,0 @@
-
-#ifndef Py_PYTHREAD_H
-#define Py_PYTHREAD_H
-
-typedef void *PyThread_type_lock;
-typedef void *PyThread_type_sema;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Return status codes for Python lock acquisition.  Chosen for maximum
- * backwards compatibility, ie failure -> 0, success -> 1.  */
-typedef enum PyLockStatus {
-    PY_LOCK_FAILURE = 0,
-    PY_LOCK_ACQUIRED = 1,
-    PY_LOCK_INTR
-} PyLockStatus;
-
-#ifndef Py_LIMITED_API
-#define PYTHREAD_INVALID_THREAD_ID ((unsigned long)-1)
-#endif
-
-PyAPI_FUNC(void) PyThread_init_thread(void);
-PyAPI_FUNC(unsigned long) PyThread_start_new_thread(void (*)(void *), void *);
-PyAPI_FUNC(void) PyThread_exit_thread(void);
-PyAPI_FUNC(unsigned long) PyThread_get_thread_ident(void);
-
-PyAPI_FUNC(PyThread_type_lock) PyThread_allocate_lock(void);
-PyAPI_FUNC(void) PyThread_free_lock(PyThread_type_lock);
-PyAPI_FUNC(int) PyThread_acquire_lock(PyThread_type_lock, int);
-#define WAIT_LOCK       1
-#define NOWAIT_LOCK     0
-
-/* PY_TIMEOUT_T is the integral type used to specify timeouts when waiting
-   on a lock (see PyThread_acquire_lock_timed() below).
-   PY_TIMEOUT_MAX is the highest usable value (in microseconds) of that
-   type, and depends on the system threading API.
-
-   NOTE: this isn't the same value as `_thread.TIMEOUT_MAX`.  The _thread
-   module exposes a higher-level API, with timeouts expressed in seconds
-   and floating-point numbers allowed.
-*/
-#define PY_TIMEOUT_T long long
-
-#if defined(_POSIX_THREADS)
-   /* PyThread_acquire_lock_timed() uses _PyTime_FromNanoseconds(us * 1000),
-      convert microseconds to nanoseconds. */
-#  define PY_TIMEOUT_MAX (PY_LLONG_MAX / 1000)
-#elif defined (NT_THREADS)
-   /* In the NT API, the timeout is a DWORD and is expressed in milliseconds */
-#  if 0xFFFFFFFFLL * 1000 < PY_LLONG_MAX
-#    define PY_TIMEOUT_MAX (0xFFFFFFFFLL * 1000)
-#  else
-#    define PY_TIMEOUT_MAX PY_LLONG_MAX
-#  endif
-#else
-#  define PY_TIMEOUT_MAX PY_LLONG_MAX
-#endif
-
-
-/* If microseconds == 0, the call is non-blocking: it returns immediately
-   even when the lock can't be acquired.
-   If microseconds > 0, the call waits up to the specified duration.
-   If microseconds < 0, the call waits until success (or abnormal failure)
-
-   microseconds must be less than PY_TIMEOUT_MAX. Behaviour otherwise is
-   undefined.
-
-   If intr_flag is true and the acquire is interrupted by a signal, then the
-   call will return PY_LOCK_INTR.  The caller may reattempt to acquire the
-   lock.
-*/
-PyAPI_FUNC(PyLockStatus) PyThread_acquire_lock_timed(PyThread_type_lock,
-                                                     PY_TIMEOUT_T microseconds,
-                                                     int intr_flag);
-
-PyAPI_FUNC(void) PyThread_release_lock(PyThread_type_lock);
-
-PyAPI_FUNC(size_t) PyThread_get_stacksize(void);
-PyAPI_FUNC(int) PyThread_set_stacksize(size_t);
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(PyObject*) PyThread_GetInfo(void);
-#endif
-
-
-/* Thread Local Storage (TLS) API
-   TLS API is DEPRECATED.  Use Thread Specific Storage (TSS) API.
-
-   The existing TLS API has used int to represent TLS keys across all
-   platforms, but it is not POSIX-compliant.  Therefore, the new TSS API uses
-   opaque data type to represent TSS keys to be compatible (see PEP 539).
-*/
-PyAPI_FUNC(int) PyThread_create_key(void) Py_DEPRECATED(3.7);
-PyAPI_FUNC(void) PyThread_delete_key(int key) Py_DEPRECATED(3.7);
-PyAPI_FUNC(int) PyThread_set_key_value(int key, void *value) Py_DEPRECATED(3.7);
-PyAPI_FUNC(void *) PyThread_get_key_value(int key) Py_DEPRECATED(3.7);
-PyAPI_FUNC(void) PyThread_delete_key_value(int key) Py_DEPRECATED(3.7);
-
-/* Cleanup after a fork */
-PyAPI_FUNC(void) PyThread_ReInitTLS(void) Py_DEPRECATED(3.7);
-
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03070000
-/* New in 3.7 */
-/* Thread Specific Storage (TSS) API */
-
-typedef struct _Py_tss_t Py_tss_t;  /* opaque */
-
-#ifndef Py_LIMITED_API
-#if defined(_POSIX_THREADS)
-    /* Darwin needs pthread.h to know type name the pthread_key_t. */
-#   include <pthread.h>
-#   define NATIVE_TSS_KEY_T     pthread_key_t
-#elif defined(NT_THREADS)
-    /* In Windows, native TSS key type is DWORD,
-       but hardcode the unsigned long to avoid errors for include directive.
-    */
-#   define NATIVE_TSS_KEY_T     unsigned long
-#else
-#   error "Require native threads. See https://bugs.python.org/issue31370"
-#endif
-
-/* When Py_LIMITED_API is not defined, the type layout of Py_tss_t is
-   exposed to allow static allocation in the API clients.  Even in this case,
-   you must handle TSS keys through API functions due to compatibility.
-*/
-struct _Py_tss_t {
-    int _is_initialized;
-    NATIVE_TSS_KEY_T _key;
-};
-
-#undef NATIVE_TSS_KEY_T
-
-/* When static allocation, you must initialize with Py_tss_NEEDS_INIT. */
-#define Py_tss_NEEDS_INIT   {0}
-#endif  /* !Py_LIMITED_API */
-
-PyAPI_FUNC(Py_tss_t *) PyThread_tss_alloc(void);
-PyAPI_FUNC(void) PyThread_tss_free(Py_tss_t *key);
-
-/* The parameter key must not be NULL. */
-PyAPI_FUNC(int) PyThread_tss_is_created(Py_tss_t *key);
-PyAPI_FUNC(int) PyThread_tss_create(Py_tss_t *key);
-PyAPI_FUNC(void) PyThread_tss_delete(Py_tss_t *key);
-PyAPI_FUNC(int) PyThread_tss_set(Py_tss_t *key, void *value);
-PyAPI_FUNC(void *) PyThread_tss_get(Py_tss_t *key);
-#endif  /* New in 3.7 */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_PYTHREAD_H */
diff --git a/pythonsdk/include/pytime.h b/pythonsdk/include/pytime.h
deleted file mode 100644
index dde92ee..0000000
--- a/pythonsdk/include/pytime.h
+++ /dev/null
@@ -1,246 +0,0 @@
-#ifndef Py_LIMITED_API
-#ifndef Py_PYTIME_H
-#define Py_PYTIME_H
-
-#include "pyconfig.h" /* include for defines */
-#include "object.h"
-
-/**************************************************************************
-Symbols and macros to supply platform-independent interfaces to time related
-functions and constants
-**************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* _PyTime_t: Python timestamp with subsecond precision. It can be used to
-   store a duration, and so indirectly a date (related to another date, like
-   UNIX epoch). */
-typedef int64_t _PyTime_t;
-#define _PyTime_MIN INT64_MIN
-#define _PyTime_MAX INT64_MAX
-
-typedef enum {
-    /* Round towards minus infinity (-inf).
-       For example, used to read a clock. */
-    _PyTime_ROUND_FLOOR=0,
-    /* Round towards infinity (+inf).
-       For example, used for timeout to wait "at least" N seconds. */
-    _PyTime_ROUND_CEILING=1,
-    /* Round to nearest with ties going to nearest even integer.
-       For example, used to round from a Python float. */
-    _PyTime_ROUND_HALF_EVEN=2,
-    /* Round away from zero
-       For example, used for timeout. _PyTime_ROUND_CEILING rounds
-       -1e-9 to 0 milliseconds which causes bpo-31786 issue.
-       _PyTime_ROUND_UP rounds -1e-9 to -1 millisecond which keeps
-       the timeout sign as expected. select.poll(timeout) must block
-       for negative values." */
-    _PyTime_ROUND_UP=3,
-    /* _PyTime_ROUND_TIMEOUT (an alias for _PyTime_ROUND_UP) should be
-       used for timeouts. */
-    _PyTime_ROUND_TIMEOUT = _PyTime_ROUND_UP
-} _PyTime_round_t;
-
-
-/* Convert a time_t to a PyLong. */
-PyAPI_FUNC(PyObject *) _PyLong_FromTime_t(
-    time_t sec);
-
-/* Convert a PyLong to a time_t. */
-PyAPI_FUNC(time_t) _PyLong_AsTime_t(
-    PyObject *obj);
-
-/* Convert a number of seconds, int or float, to time_t. */
-PyAPI_FUNC(int) _PyTime_ObjectToTime_t(
-    PyObject *obj,
-    time_t *sec,
-    _PyTime_round_t);
-
-/* Convert a number of seconds, int or float, to a timeval structure.
-   usec is in the range [0; 999999] and rounded towards zero.
-   For example, -1.2 is converted to (-2, 800000). */
-PyAPI_FUNC(int) _PyTime_ObjectToTimeval(
-    PyObject *obj,
-    time_t *sec,
-    long *usec,
-    _PyTime_round_t);
-
-/* Convert a number of seconds, int or float, to a timespec structure.
-   nsec is in the range [0; 999999999] and rounded towards zero.
-   For example, -1.2 is converted to (-2, 800000000). */
-PyAPI_FUNC(int) _PyTime_ObjectToTimespec(
-    PyObject *obj,
-    time_t *sec,
-    long *nsec,
-    _PyTime_round_t);
-
-
-/* Create a timestamp from a number of seconds. */
-PyAPI_FUNC(_PyTime_t) _PyTime_FromSeconds(int seconds);
-
-/* Macro to create a timestamp from a number of seconds, no integer overflow.
-   Only use the macro for small values, prefer _PyTime_FromSeconds(). */
-#define _PYTIME_FROMSECONDS(seconds) \
-            ((_PyTime_t)(seconds) * (1000 * 1000 * 1000))
-
-/* Create a timestamp from a number of nanoseconds. */
-PyAPI_FUNC(_PyTime_t) _PyTime_FromNanoseconds(_PyTime_t ns);
-
-/* Create a timestamp from nanoseconds (Python int). */
-PyAPI_FUNC(int) _PyTime_FromNanosecondsObject(_PyTime_t *t,
-    PyObject *obj);
-
-/* Convert a number of seconds (Python float or int) to a timetamp.
-   Raise an exception and return -1 on error, return 0 on success. */
-PyAPI_FUNC(int) _PyTime_FromSecondsObject(_PyTime_t *t,
-    PyObject *obj,
-    _PyTime_round_t round);
-
-/* Convert a number of milliseconds (Python float or int, 10^-3) to a timetamp.
-   Raise an exception and return -1 on error, return 0 on success. */
-PyAPI_FUNC(int) _PyTime_FromMillisecondsObject(_PyTime_t *t,
-    PyObject *obj,
-    _PyTime_round_t round);
-
-/* Convert a timestamp to a number of seconds as a C double. */
-PyAPI_FUNC(double) _PyTime_AsSecondsDouble(_PyTime_t t);
-
-/* Convert timestamp to a number of milliseconds (10^-3 seconds). */
-PyAPI_FUNC(_PyTime_t) _PyTime_AsMilliseconds(_PyTime_t t,
-    _PyTime_round_t round);
-
-/* Convert timestamp to a number of microseconds (10^-6 seconds). */
-PyAPI_FUNC(_PyTime_t) _PyTime_AsMicroseconds(_PyTime_t t,
-    _PyTime_round_t round);
-
-/* Convert timestamp to a number of nanoseconds (10^-9 seconds) as a Python int
-   object. */
-PyAPI_FUNC(PyObject *) _PyTime_AsNanosecondsObject(_PyTime_t t);
-
-/* Create a timestamp from a timeval structure.
-   Raise an exception and return -1 on overflow, return 0 on success. */
-PyAPI_FUNC(int) _PyTime_FromTimeval(_PyTime_t *tp, struct timeval *tv);
-
-/* Convert a timestamp to a timeval structure (microsecond resolution).
-   tv_usec is always positive.
-   Raise an exception and return -1 if the conversion overflowed,
-   return 0 on success. */
-PyAPI_FUNC(int) _PyTime_AsTimeval(_PyTime_t t,
-    struct timeval *tv,
-    _PyTime_round_t round);
-
-/* Similar to _PyTime_AsTimeval(), but don't raise an exception on error. */
-PyAPI_FUNC(int) _PyTime_AsTimeval_noraise(_PyTime_t t,
-    struct timeval *tv,
-    _PyTime_round_t round);
-
-/* Convert a timestamp to a number of seconds (secs) and microseconds (us).
-   us is always positive. This function is similar to _PyTime_AsTimeval()
-   except that secs is always a time_t type, whereas the timeval structure
-   uses a C long for tv_sec on Windows.
-   Raise an exception and return -1 if the conversion overflowed,
-   return 0 on success. */
-PyAPI_FUNC(int) _PyTime_AsTimevalTime_t(
-    _PyTime_t t,
-    time_t *secs,
-    int *us,
-    _PyTime_round_t round);
-
-#if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_KQUEUE)
-/* Create a timestamp from a timespec structure.
-   Raise an exception and return -1 on overflow, return 0 on success. */
-PyAPI_FUNC(int) _PyTime_FromTimespec(_PyTime_t *tp, struct timespec *ts);
-
-/* Convert a timestamp to a timespec structure (nanosecond resolution).
-   tv_nsec is always positive.
-   Raise an exception and return -1 on error, return 0 on success. */
-PyAPI_FUNC(int) _PyTime_AsTimespec(_PyTime_t t, struct timespec *ts);
-#endif
-
-/* Compute ticks * mul / div.
-   The caller must ensure that ((div - 1) * mul) cannot overflow. */
-PyAPI_FUNC(_PyTime_t) _PyTime_MulDiv(_PyTime_t ticks,
-    _PyTime_t mul,
-    _PyTime_t div);
-
-/* Get the current time from the system clock.
-
-   The function cannot fail. _PyTime_Init() ensures that the system clock
-   works. */
-PyAPI_FUNC(_PyTime_t) _PyTime_GetSystemClock(void);
-
-/* Get the time of a monotonic clock, i.e. a clock that cannot go backwards.
-   The clock is not affected by system clock updates. The reference point of
-   the returned value is undefined, so that only the difference between the
-   results of consecutive calls is valid.
-
-   The function cannot fail. _PyTime_Init() ensures that a monotonic clock
-   is available and works. */
-PyAPI_FUNC(_PyTime_t) _PyTime_GetMonotonicClock(void);
-
-
-/* Structure used by time.get_clock_info() */
-typedef struct {
-    const char *implementation;
-    int monotonic;
-    int adjustable;
-    double resolution;
-} _Py_clock_info_t;
-
-/* Get the current time from the system clock.
- * Fill clock information if info is not NULL.
- * Raise an exception and return -1 on error, return 0 on success.
- */
-PyAPI_FUNC(int) _PyTime_GetSystemClockWithInfo(
-    _PyTime_t *t,
-    _Py_clock_info_t *info);
-
-/* Get the time of a monotonic clock, i.e. a clock that cannot go backwards.
-   The clock is not affected by system clock updates. The reference point of
-   the returned value is undefined, so that only the difference between the
-   results of consecutive calls is valid.
-
-   Fill info (if set) with information of the function used to get the time.
-
-   Return 0 on success, raise an exception and return -1 on error. */
-PyAPI_FUNC(int) _PyTime_GetMonotonicClockWithInfo(
-    _PyTime_t *t,
-    _Py_clock_info_t *info);
-
-
-/* Initialize time.
-   Return 0 on success, raise an exception and return -1 on error. */
-PyAPI_FUNC(int) _PyTime_Init(void);
-
-/* Converts a timestamp to the Gregorian time, using the local time zone.
-   Return 0 on success, raise an exception and return -1 on error. */
-PyAPI_FUNC(int) _PyTime_localtime(time_t t, struct tm *tm);
-
-/* Converts a timestamp to the Gregorian time, assuming UTC.
-   Return 0 on success, raise an exception and return -1 on error. */
-PyAPI_FUNC(int) _PyTime_gmtime(time_t t, struct tm *tm);
-
-/* Get the performance counter: clock with the highest available resolution to
-   measure a short duration.
-
-   The function cannot fail. _PyTime_Init() ensures that the system clock
-   works. */
-PyAPI_FUNC(_PyTime_t) _PyTime_GetPerfCounter(void);
-
-/* Get the performance counter: clock with the highest available resolution to
-   measure a short duration.
-
-   Fill info (if set) with information of the function used to get the time.
-
-   Return 0 on success, raise an exception and return -1 on error. */
-PyAPI_FUNC(int) _PyTime_GetPerfCounterWithInfo(
-    _PyTime_t *t,
-    _Py_clock_info_t *info);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* Py_PYTIME_H */
-#endif /* Py_LIMITED_API */
diff --git a/pythonsdk/include/rangeobject.h b/pythonsdk/include/rangeobject.h
deleted file mode 100644
index b9a136d..0000000
--- a/pythonsdk/include/rangeobject.h
+++ /dev/null
@@ -1,27 +0,0 @@
-
-/* Range object interface */
-
-#ifndef Py_RANGEOBJECT_H
-#define Py_RANGEOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-A range object represents an integer range.  This is an immutable object;
-a range cannot change its value after creation.
-
-Range objects behave like the corresponding tuple objects except that
-they are represented by a start, stop, and step datamembers.
-*/
-
-PyAPI_DATA(PyTypeObject) PyRange_Type;
-PyAPI_DATA(PyTypeObject) PyRangeIter_Type;
-PyAPI_DATA(PyTypeObject) PyLongRangeIter_Type;
-
-#define PyRange_Check(op) (Py_TYPE(op) == &PyRange_Type)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_RANGEOBJECT_H */
diff --git a/pythonsdk/include/setobject.h b/pythonsdk/include/setobject.h
deleted file mode 100644
index b2f7963..0000000
--- a/pythonsdk/include/setobject.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Set object interface */
-
-#ifndef Py_SETOBJECT_H
-#define Py_SETOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef Py_LIMITED_API
-
-/* There are three kinds of entries in the table:
-
-1. Unused:  key == NULL and hash == 0
-2. Dummy:   key == dummy and hash == -1
-3. Active:  key != NULL and key != dummy and hash != -1
-
-The hash field of Unused slots is always zero.
-
-The hash field of Dummy slots are set to -1
-meaning that dummy entries can be detected by
-either entry->key==dummy or by entry->hash==-1.
-*/
-
-#define PySet_MINSIZE 8
-
-typedef struct {
-    PyObject *key;
-    Py_hash_t hash;             /* Cached hash code of the key */
-} setentry;
-
-/* The SetObject data structure is shared by set and frozenset objects.
-
-Invariant for sets:
- - hash is -1
-
-Invariants for frozensets:
- - data is immutable.
- - hash is the hash of the frozenset or -1 if not computed yet.
-
-*/
-
-typedef struct {
-    PyObject_HEAD
-
-    Py_ssize_t fill;            /* Number active and dummy entries*/
-    Py_ssize_t used;            /* Number active entries */
-
-    /* The table contains mask + 1 slots, and that's a power of 2.
-     * We store the mask instead of the size because the mask is more
-     * frequently needed.
-     */
-    Py_ssize_t mask;
-
-    /* The table points to a fixed-size smalltable for small tables
-     * or to additional malloc'ed memory for bigger tables.
-     * The table pointer is never NULL which saves us from repeated
-     * runtime null-tests.
-     */
-    setentry *table;
-    Py_hash_t hash;             /* Only used by frozenset objects */
-    Py_ssize_t finger;          /* Search finger for pop() */
-
-    setentry smalltable[PySet_MINSIZE];
-    PyObject *weakreflist;      /* List of weak references */
-} PySetObject;
-
-#define PySet_GET_SIZE(so) (assert(PyAnySet_Check(so)),(((PySetObject *)(so))->used))
-
-PyAPI_DATA(PyObject *) _PySet_Dummy;
-
-PyAPI_FUNC(int) _PySet_NextEntry(PyObject *set, Py_ssize_t *pos, PyObject **key, Py_hash_t *hash);
-PyAPI_FUNC(int) _PySet_Update(PyObject *set, PyObject *iterable);
-PyAPI_FUNC(int) PySet_ClearFreeList(void);
-
-#endif /* Section excluded by Py_LIMITED_API */
-
-PyAPI_DATA(PyTypeObject) PySet_Type;
-PyAPI_DATA(PyTypeObject) PyFrozenSet_Type;
-PyAPI_DATA(PyTypeObject) PySetIter_Type;
-
-PyAPI_FUNC(PyObject *) PySet_New(PyObject *);
-PyAPI_FUNC(PyObject *) PyFrozenSet_New(PyObject *);
-
-PyAPI_FUNC(int) PySet_Add(PyObject *set, PyObject *key);
-PyAPI_FUNC(int) PySet_Clear(PyObject *set);
-PyAPI_FUNC(int) PySet_Contains(PyObject *anyset, PyObject *key);
-PyAPI_FUNC(int) PySet_Discard(PyObject *set, PyObject *key);
-PyAPI_FUNC(PyObject *) PySet_Pop(PyObject *set);
-PyAPI_FUNC(Py_ssize_t) PySet_Size(PyObject *anyset);
-
-#define PyFrozenSet_CheckExact(ob) (Py_TYPE(ob) == &PyFrozenSet_Type)
-#define PyAnySet_CheckExact(ob) \
-    (Py_TYPE(ob) == &PySet_Type || Py_TYPE(ob) == &PyFrozenSet_Type)
-#define PyAnySet_Check(ob) \
-    (Py_TYPE(ob) == &PySet_Type || Py_TYPE(ob) == &PyFrozenSet_Type || \
-      PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \
-      PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
-#define PySet_Check(ob) \
-    (Py_TYPE(ob) == &PySet_Type || \
-    PyType_IsSubtype(Py_TYPE(ob), &PySet_Type))
-#define   PyFrozenSet_Check(ob) \
-    (Py_TYPE(ob) == &PyFrozenSet_Type || \
-      PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_SETOBJECT_H */
diff --git a/pythonsdk/include/sliceobject.h b/pythonsdk/include/sliceobject.h
deleted file mode 100644
index e0e68c2..0000000
--- a/pythonsdk/include/sliceobject.h
+++ /dev/null
@@ -1,63 +0,0 @@
-#ifndef Py_SLICEOBJECT_H
-#define Py_SLICEOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* The unique ellipsis object "..." */
-
-PyAPI_DATA(PyObject) _Py_EllipsisObject; /* Don't use this directly */
-
-#define Py_Ellipsis (&_Py_EllipsisObject)
-
-/* Slice object interface */
-
-/*
-
-A slice object containing start, stop, and step data members (the
-names are from range).  After much talk with Guido, it was decided to
-let these be any arbitrary python type.  Py_None stands for omitted values.
-*/
-#ifndef Py_LIMITED_API
-typedef struct {
-    PyObject_HEAD
-    PyObject *start, *stop, *step;      /* not NULL */
-} PySliceObject;
-#endif
-
-PyAPI_DATA(PyTypeObject) PySlice_Type;
-PyAPI_DATA(PyTypeObject) PyEllipsis_Type;
-
-#define PySlice_Check(op) (Py_TYPE(op) == &PySlice_Type)
-
-PyAPI_FUNC(PyObject *) PySlice_New(PyObject* start, PyObject* stop,
-                                  PyObject* step);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PySlice_FromIndices(Py_ssize_t start, Py_ssize_t stop);
-PyAPI_FUNC(int) _PySlice_GetLongIndices(PySliceObject *self, PyObject *length,
-                                 PyObject **start_ptr, PyObject **stop_ptr,
-                                 PyObject **step_ptr);
-#endif
-PyAPI_FUNC(int) PySlice_GetIndices(PyObject *r, Py_ssize_t length,
-                                  Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step);
-PyAPI_FUNC(int) PySlice_GetIndicesEx(PyObject *r, Py_ssize_t length,
-                                     Py_ssize_t *start, Py_ssize_t *stop,
-                                     Py_ssize_t *step, Py_ssize_t *slicelength) Py_DEPRECATED(3.7);
-
-#if !defined(Py_LIMITED_API) || (Py_LIMITED_API+0 >= 0x03050400 && Py_LIMITED_API+0 < 0x03060000) || Py_LIMITED_API+0 >= 0x03060100
-#define PySlice_GetIndicesEx(slice, length, start, stop, step, slicelen) (  \
-    PySlice_Unpack((slice), (start), (stop), (step)) < 0 ?                  \
-    ((*(slicelen) = 0), -1) :                                               \
-    ((*(slicelen) = PySlice_AdjustIndices((length), (start), (stop), *(step))), \
-     0))
-PyAPI_FUNC(int) PySlice_Unpack(PyObject *slice,
-                               Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step);
-PyAPI_FUNC(Py_ssize_t) PySlice_AdjustIndices(Py_ssize_t length,
-                                             Py_ssize_t *start, Py_ssize_t *stop,
-                                             Py_ssize_t step);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_SLICEOBJECT_H */
diff --git a/pythonsdk/include/structmember.h b/pythonsdk/include/structmember.h
deleted file mode 100644
index af01afe..0000000
--- a/pythonsdk/include/structmember.h
+++ /dev/null
@@ -1,74 +0,0 @@
-#ifndef Py_STRUCTMEMBER_H
-#define Py_STRUCTMEMBER_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Interface to map C struct members to Python object attributes */
-
-#include <stddef.h> /* For offsetof */
-
-/* An array of PyMemberDef structures defines the name, type and offset
-   of selected members of a C structure.  These can be read by
-   PyMember_GetOne() and set by PyMember_SetOne() (except if their READONLY
-   flag is set).  The array must be terminated with an entry whose name
-   pointer is NULL. */
-
-typedef struct PyMemberDef {
-    const char *name;
-    int type;
-    Py_ssize_t offset;
-    int flags;
-    const char *doc;
-} PyMemberDef;
-
-/* Types */
-#define T_SHORT     0
-#define T_INT       1
-#define T_LONG      2
-#define T_FLOAT     3
-#define T_DOUBLE    4
-#define T_STRING    5
-#define T_OBJECT    6
-/* XXX the ordering here is weird for binary compatibility */
-#define T_CHAR      7   /* 1-character string */
-#define T_BYTE      8   /* 8-bit signed int */
-/* unsigned variants: */
-#define T_UBYTE     9
-#define T_USHORT    10
-#define T_UINT      11
-#define T_ULONG     12
-
-/* Added by Jack: strings contained in the structure */
-#define T_STRING_INPLACE    13
-
-/* Added by Lillo: bools contained in the structure (assumed char) */
-#define T_BOOL      14
-
-#define T_OBJECT_EX 16  /* Like T_OBJECT, but raises AttributeError
-                           when the value is NULL, instead of
-                           converting to None. */
-#define T_LONGLONG      17
-#define T_ULONGLONG     18
-
-#define T_PYSSIZET      19      /* Py_ssize_t */
-#define T_NONE          20      /* Value is always None */
-
-
-/* Flags */
-#define READONLY            1
-#define READ_RESTRICTED     2
-#define PY_WRITE_RESTRICTED 4
-#define RESTRICTED          (READ_RESTRICTED | PY_WRITE_RESTRICTED)
-
-
-/* Current API, use this */
-PyAPI_FUNC(PyObject *) PyMember_GetOne(const char *, struct PyMemberDef *);
-PyAPI_FUNC(int) PyMember_SetOne(char *, struct PyMemberDef *, PyObject *);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_STRUCTMEMBER_H */
diff --git a/pythonsdk/include/structseq.h b/pythonsdk/include/structseq.h
deleted file mode 100644
index 3a6b269..0000000
--- a/pythonsdk/include/structseq.h
+++ /dev/null
@@ -1,49 +0,0 @@
-
-/* Named tuple object interface */
-
-#ifndef Py_STRUCTSEQ_H
-#define Py_STRUCTSEQ_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct PyStructSequence_Field {
-    const char *name;
-    const char *doc;
-} PyStructSequence_Field;
-
-typedef struct PyStructSequence_Desc {
-    const char *name;
-    const char *doc;
-    struct PyStructSequence_Field *fields;
-    int n_in_sequence;
-} PyStructSequence_Desc;
-
-extern char* PyStructSequence_UnnamedField;
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) PyStructSequence_InitType(PyTypeObject *type,
-                                           PyStructSequence_Desc *desc);
-PyAPI_FUNC(int) PyStructSequence_InitType2(PyTypeObject *type,
-                                           PyStructSequence_Desc *desc);
-#endif
-PyAPI_FUNC(PyTypeObject*) PyStructSequence_NewType(PyStructSequence_Desc *desc);
-
-PyAPI_FUNC(PyObject *) PyStructSequence_New(PyTypeObject* type);
-
-#ifndef Py_LIMITED_API
-typedef PyTupleObject PyStructSequence;
-
-/* Macro, *only* to be used to fill in brand new objects */
-#define PyStructSequence_SET_ITEM(op, i, v) PyTuple_SET_ITEM(op, i, v)
-
-#define PyStructSequence_GET_ITEM(op, i) PyTuple_GET_ITEM(op, i)
-#endif
-
-PyAPI_FUNC(void) PyStructSequence_SetItem(PyObject*, Py_ssize_t, PyObject*);
-PyAPI_FUNC(PyObject*) PyStructSequence_GetItem(PyObject*, Py_ssize_t);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_STRUCTSEQ_H */
diff --git a/pythonsdk/include/symtable.h b/pythonsdk/include/symtable.h
deleted file mode 100644
index 1fb0db6..0000000
--- a/pythonsdk/include/symtable.h
+++ /dev/null
@@ -1,118 +0,0 @@
-#ifndef Py_LIMITED_API
-#ifndef Py_SYMTABLE_H
-#define Py_SYMTABLE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* XXX(ncoghlan): This is a weird mix of public names and interpreter internal
- *                names.
- */
-
-typedef enum _block_type { FunctionBlock, ClassBlock, ModuleBlock }
-    _Py_block_ty;
-
-struct _symtable_entry;
-
-struct symtable {
-    PyObject *st_filename;          /* name of file being compiled,
-                                       decoded from the filesystem encoding */
-    struct _symtable_entry *st_cur; /* current symbol table entry */
-    struct _symtable_entry *st_top; /* symbol table entry for module */
-    PyObject *st_blocks;            /* dict: map AST node addresses
-                                     *       to symbol table entries */
-    PyObject *st_stack;             /* list: stack of namespace info */
-    PyObject *st_global;            /* borrowed ref to st_top->ste_symbols */
-    int st_nblocks;                 /* number of blocks used. kept for
-                                       consistency with the corresponding
-                                       compiler structure */
-    PyObject *st_private;           /* name of current class or NULL */
-    PyFutureFeatures *st_future;    /* module's future features that affect
-                                       the symbol table */
-    int recursion_depth;            /* current recursion depth */
-    int recursion_limit;            /* recursion limit */
-};
-
-typedef struct _symtable_entry {
-    PyObject_HEAD
-    PyObject *ste_id;        /* int: key in ste_table->st_blocks */
-    PyObject *ste_symbols;   /* dict: variable names to flags */
-    PyObject *ste_name;      /* string: name of current block */
-    PyObject *ste_varnames;  /* list of function parameters */
-    PyObject *ste_children;  /* list of child blocks */
-    PyObject *ste_directives;/* locations of global and nonlocal statements */
-    _Py_block_ty ste_type;   /* module, class, or function */
-    int ste_nested;      /* true if block is nested */
-    unsigned ste_free : 1;        /* true if block has free variables */
-    unsigned ste_child_free : 1;  /* true if a child block has free vars,
-                                     including free refs to globals */
-    unsigned ste_generator : 1;   /* true if namespace is a generator */
-    unsigned ste_coroutine : 1;   /* true if namespace is a coroutine */
-    unsigned ste_varargs : 1;     /* true if block has varargs */
-    unsigned ste_varkeywords : 1; /* true if block has varkeywords */
-    unsigned ste_returns_value : 1;  /* true if namespace uses return with
-                                        an argument */
-    unsigned ste_needs_class_closure : 1; /* for class scopes, true if a
-                                             closure over __class__
-                                             should be created */
-    int ste_lineno;          /* first line of block */
-    int ste_col_offset;      /* offset of first line of block */
-    int ste_opt_lineno;      /* lineno of last exec or import * */
-    int ste_opt_col_offset;  /* offset of last exec or import * */
-    struct symtable *ste_table;
-} PySTEntryObject;
-
-PyAPI_DATA(PyTypeObject) PySTEntry_Type;
-
-#define PySTEntry_Check(op) (Py_TYPE(op) == &PySTEntry_Type)
-
-PyAPI_FUNC(int) PyST_GetScope(PySTEntryObject *, PyObject *);
-
-PyAPI_FUNC(struct symtable *) PySymtable_Build(
-    mod_ty mod,
-    const char *filename,       /* decoded from the filesystem encoding */
-    PyFutureFeatures *future);
-PyAPI_FUNC(struct symtable *) PySymtable_BuildObject(
-    mod_ty mod,
-    PyObject *filename,
-    PyFutureFeatures *future);
-PyAPI_FUNC(PySTEntryObject *) PySymtable_Lookup(struct symtable *, void *);
-
-PyAPI_FUNC(void) PySymtable_Free(struct symtable *);
-
-/* Flags for def-use information */
-
-#define DEF_GLOBAL 1           /* global stmt */
-#define DEF_LOCAL 2            /* assignment in code block */
-#define DEF_PARAM 2<<1         /* formal parameter */
-#define DEF_NONLOCAL 2<<2      /* nonlocal stmt */
-#define USE 2<<3               /* name is used */
-#define DEF_FREE 2<<4          /* name used but not defined in nested block */
-#define DEF_FREE_CLASS 2<<5    /* free variable from class's method */
-#define DEF_IMPORT 2<<6        /* assignment occurred via import */
-#define DEF_ANNOT 2<<7         /* this name is annotated */
-
-#define DEF_BOUND (DEF_LOCAL | DEF_PARAM | DEF_IMPORT)
-
-/* GLOBAL_EXPLICIT and GLOBAL_IMPLICIT are used internally by the symbol
-   table.  GLOBAL is returned from PyST_GetScope() for either of them.
-   It is stored in ste_symbols at bits 12-15.
-*/
-#define SCOPE_OFFSET 11
-#define SCOPE_MASK (DEF_GLOBAL | DEF_LOCAL | DEF_PARAM | DEF_NONLOCAL)
-
-#define LOCAL 1
-#define GLOBAL_EXPLICIT 2
-#define GLOBAL_IMPLICIT 3
-#define FREE 4
-#define CELL 5
-
-#define GENERATOR 1
-#define GENERATOR_EXPRESSION 2
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_SYMTABLE_H */
-#endif /* Py_LIMITED_API */
diff --git a/pythonsdk/include/sysmodule.h b/pythonsdk/include/sysmodule.h
deleted file mode 100644
index 29a3ed9..0000000
--- a/pythonsdk/include/sysmodule.h
+++ /dev/null
@@ -1,48 +0,0 @@
-
-/* System module interface */
-
-#ifndef Py_SYSMODULE_H
-#define Py_SYSMODULE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(PyObject *) PySys_GetObject(const char *);
-PyAPI_FUNC(int) PySys_SetObject(const char *, PyObject *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PySys_GetObjectId(_Py_Identifier *key);
-PyAPI_FUNC(int) _PySys_SetObjectId(_Py_Identifier *key, PyObject *);
-#endif
-
-PyAPI_FUNC(void) PySys_SetArgv(int, wchar_t **);
-PyAPI_FUNC(void) PySys_SetArgvEx(int, wchar_t **, int);
-PyAPI_FUNC(void) PySys_SetPath(const wchar_t *);
-
-PyAPI_FUNC(void) PySys_WriteStdout(const char *format, ...)
-                 Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
-PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...)
-                 Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
-PyAPI_FUNC(void) PySys_FormatStdout(const char *format, ...);
-PyAPI_FUNC(void) PySys_FormatStderr(const char *format, ...);
-
-PyAPI_FUNC(void) PySys_ResetWarnOptions(void);
-PyAPI_FUNC(void) PySys_AddWarnOption(const wchar_t *);
-PyAPI_FUNC(void) PySys_AddWarnOptionUnicode(PyObject *);
-PyAPI_FUNC(int) PySys_HasWarnOptions(void);
-
-PyAPI_FUNC(void) PySys_AddXOption(const wchar_t *);
-PyAPI_FUNC(PyObject *) PySys_GetXOptions(void);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(size_t) _PySys_GetSizeOf(PyObject *);
-#endif
-
-#ifdef Py_BUILD_CORE
-PyAPI_FUNC(int) _PySys_AddXOptionWithError(const wchar_t *s);
-PyAPI_FUNC(int) _PySys_AddWarnOptionWithError(PyObject *option);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_SYSMODULE_H */
diff --git a/pythonsdk/include/token.h b/pythonsdk/include/token.h
deleted file mode 100644
index bd06007..0000000
--- a/pythonsdk/include/token.h
+++ /dev/null
@@ -1,92 +0,0 @@
-
-/* Token types */
-#ifndef Py_LIMITED_API
-#ifndef Py_TOKEN_H
-#define Py_TOKEN_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#undef TILDE   /* Prevent clash of our definition with system macro. Ex AIX, ioctl.h */
-
-#define ENDMARKER       0
-#define NAME            1
-#define NUMBER          2
-#define STRING          3
-#define NEWLINE         4
-#define INDENT          5
-#define DEDENT          6
-#define LPAR            7
-#define RPAR            8
-#define LSQB            9
-#define RSQB            10
-#define COLON           11
-#define COMMA           12
-#define SEMI            13
-#define PLUS            14
-#define MINUS           15
-#define STAR            16
-#define SLASH           17
-#define VBAR            18
-#define AMPER           19
-#define LESS            20
-#define GREATER         21
-#define EQUAL           22
-#define DOT             23
-#define PERCENT         24
-#define LBRACE          25
-#define RBRACE          26
-#define EQEQUAL         27
-#define NOTEQUAL        28
-#define LESSEQUAL       29
-#define GREATEREQUAL    30
-#define TILDE           31
-#define CIRCUMFLEX      32
-#define LEFTSHIFT       33
-#define RIGHTSHIFT      34
-#define DOUBLESTAR      35
-#define PLUSEQUAL       36
-#define MINEQUAL        37
-#define STAREQUAL       38
-#define SLASHEQUAL      39
-#define PERCENTEQUAL    40
-#define AMPEREQUAL      41
-#define VBAREQUAL       42
-#define CIRCUMFLEXEQUAL 43
-#define LEFTSHIFTEQUAL  44
-#define RIGHTSHIFTEQUAL 45
-#define DOUBLESTAREQUAL 46
-#define DOUBLESLASH     47
-#define DOUBLESLASHEQUAL 48
-#define AT              49
-#define ATEQUAL         50
-#define RARROW          51
-#define ELLIPSIS        52
-/* Don't forget to update the table _PyParser_TokenNames in tokenizer.c! */
-#define OP              53
-#define ERRORTOKEN      54
-/* These aren't used by the C tokenizer but are needed for tokenize.py */
-#define COMMENT         55
-#define NL              56
-#define ENCODING                57
-#define N_TOKENS        58
-
-/* Special definitions for cooperation with parser */
-
-#define NT_OFFSET               256
-
-#define ISTERMINAL(x)           ((x) < NT_OFFSET)
-#define ISNONTERMINAL(x)        ((x) >= NT_OFFSET)
-#define ISEOF(x)                ((x) == ENDMARKER)
-
-
-PyAPI_DATA(const char *) _PyParser_TokenNames[]; /* Token names */
-PyAPI_FUNC(int) PyToken_OneChar(int);
-PyAPI_FUNC(int) PyToken_TwoChars(int, int);
-PyAPI_FUNC(int) PyToken_ThreeChars(int, int, int);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_TOKEN_H */
-#endif /* Py_LIMITED_API */
diff --git a/pythonsdk/include/traceback.h b/pythonsdk/include/traceback.h
deleted file mode 100644
index 5cd333e..0000000
--- a/pythonsdk/include/traceback.h
+++ /dev/null
@@ -1,119 +0,0 @@
-
-#ifndef Py_TRACEBACK_H
-#define Py_TRACEBACK_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "pystate.h"
-
-struct _frame;
-
-/* Traceback interface */
-#ifndef Py_LIMITED_API
-typedef struct _traceback {
-    PyObject_HEAD
-    struct _traceback *tb_next;
-    struct _frame *tb_frame;
-    int tb_lasti;
-    int tb_lineno;
-} PyTracebackObject;
-#endif
-
-PyAPI_FUNC(int) PyTraceBack_Here(struct _frame *);
-PyAPI_FUNC(int) PyTraceBack_Print(PyObject *, PyObject *);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _Py_DisplaySourceLine(PyObject *, PyObject *, int, int);
-PyAPI_FUNC(void) _PyTraceback_Add(const char *, const char *, int);
-#endif
-
-/* Reveal traceback type so we can typecheck traceback objects */
-PyAPI_DATA(PyTypeObject) PyTraceBack_Type;
-#define PyTraceBack_Check(v) (Py_TYPE(v) == &PyTraceBack_Type)
-
-#ifndef Py_LIMITED_API
-/* Write the Python traceback into the file 'fd'. For example:
-
-       Traceback (most recent call first):
-         File "xxx", line xxx in <xxx>
-         File "xxx", line xxx in <xxx>
-         ...
-         File "xxx", line xxx in <xxx>
-
-   This function is written for debug purpose only, to dump the traceback in
-   the worst case: after a segmentation fault, at fatal error, etc. That's why,
-   it is very limited. Strings are truncated to 100 characters and encoded to
-   ASCII with backslashreplace. It doesn't write the source code, only the
-   function name, filename and line number of each frame. Write only the first
-   100 frames: if the traceback is truncated, write the line " ...".
-
-   This function is signal safe. */
-
-PyAPI_FUNC(void) _Py_DumpTraceback(
-    int fd,
-    PyThreadState *tstate);
-
-/* Write the traceback of all threads into the file 'fd'. current_thread can be
-   NULL.
-
-   Return NULL on success, or an error message on error.
-
-   This function is written for debug purpose only. It calls
-   _Py_DumpTraceback() for each thread, and so has the same limitations. It
-   only write the traceback of the first 100 threads: write "..." if there are
-   more threads.
-
-   If current_tstate is NULL, the function tries to get the Python thread state
-   of the current thread. It is not an error if the function is unable to get
-   the current Python thread state.
-
-   If interp is NULL, the function tries to get the interpreter state from
-   the current Python thread state, or from
-   _PyGILState_GetInterpreterStateUnsafe() in last resort.
-
-   It is better to pass NULL to interp and current_tstate, the function tries
-   different options to retrieve these informations.
-
-   This function is signal safe. */
-
-PyAPI_FUNC(const char*) _Py_DumpTracebackThreads(
-    int fd,
-    PyInterpreterState *interp,
-    PyThreadState *current_tstate);
-#endif /* !Py_LIMITED_API */
-
-#ifndef Py_LIMITED_API
-
-/* Write a Unicode object into the file descriptor fd. Encode the string to
-   ASCII using the backslashreplace error handler.
-
-   Do nothing if text is not a Unicode object. The function accepts Unicode
-   string which is not ready (PyUnicode_WCHAR_KIND).
-
-   This function is signal safe. */
-PyAPI_FUNC(void) _Py_DumpASCII(int fd, PyObject *text);
-
-/* Format an integer as decimal into the file descriptor fd.
-
-   This function is signal safe. */
-PyAPI_FUNC(void) _Py_DumpDecimal(
-    int fd,
-    unsigned long value);
-
-/* Format an integer as hexadecimal into the file descriptor fd with at least
-   width digits.
-
-   The maximum width is sizeof(unsigned long)*2 digits.
-
-   This function is signal safe. */
-PyAPI_FUNC(void) _Py_DumpHexadecimal(
-    int fd,
-    unsigned long value,
-    Py_ssize_t width);
-
-#endif   /* !Py_LIMITED_API */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_TRACEBACK_H */
diff --git a/pythonsdk/include/tupleobject.h b/pythonsdk/include/tupleobject.h
deleted file mode 100644
index c418238..0000000
--- a/pythonsdk/include/tupleobject.h
+++ /dev/null
@@ -1,73 +0,0 @@
-
-/* Tuple object interface */
-
-#ifndef Py_TUPLEOBJECT_H
-#define Py_TUPLEOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-Another generally useful object type is a tuple of object pointers.
-For Python, this is an immutable type.  C code can change the tuple items
-(but not their number), and even use tuples as general-purpose arrays of
-object references, but in general only brand new tuples should be mutated,
-not ones that might already have been exposed to Python code.
-
-*** WARNING *** PyTuple_SetItem does not increment the new item's reference
-count, but does decrement the reference count of the item it replaces,
-if not nil.  It does *decrement* the reference count if it is *not*
-inserted in the tuple.  Similarly, PyTuple_GetItem does not increment the
-returned item's reference count.
-*/
-
-#ifndef Py_LIMITED_API
-typedef struct {
-    PyObject_VAR_HEAD
-    PyObject *ob_item[1];
-
-    /* ob_item contains space for 'ob_size' elements.
-     * Items must normally not be NULL, except during construction when
-     * the tuple is not yet visible outside the function that builds it.
-     */
-} PyTupleObject;
-#endif
-
-PyAPI_DATA(PyTypeObject) PyTuple_Type;
-PyAPI_DATA(PyTypeObject) PyTupleIter_Type;
-
-#define PyTuple_Check(op) \
-                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
-#define PyTuple_CheckExact(op) (Py_TYPE(op) == &PyTuple_Type)
-
-PyAPI_FUNC(PyObject *) PyTuple_New(Py_ssize_t size);
-PyAPI_FUNC(Py_ssize_t) PyTuple_Size(PyObject *);
-PyAPI_FUNC(PyObject *) PyTuple_GetItem(PyObject *, Py_ssize_t);
-PyAPI_FUNC(int) PyTuple_SetItem(PyObject *, Py_ssize_t, PyObject *);
-PyAPI_FUNC(PyObject *) PyTuple_GetSlice(PyObject *, Py_ssize_t, Py_ssize_t);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyTuple_Resize(PyObject **, Py_ssize_t);
-#endif
-PyAPI_FUNC(PyObject *) PyTuple_Pack(Py_ssize_t, ...);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _PyTuple_MaybeUntrack(PyObject *);
-#endif
-
-/* Macro, trading safety for speed */
-#ifndef Py_LIMITED_API
-#define PyTuple_GET_ITEM(op, i) (((PyTupleObject *)(op))->ob_item[i])
-#define PyTuple_GET_SIZE(op)    (assert(PyTuple_Check(op)),Py_SIZE(op))
-
-/* Macro, *only* to be used to fill in brand new tuples */
-#define PyTuple_SET_ITEM(op, i, v) (((PyTupleObject *)(op))->ob_item[i] = v)
-#endif
-
-PyAPI_FUNC(int) PyTuple_ClearFreeList(void);
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _PyTuple_DebugMallocStats(FILE *out);
-#endif /* Py_LIMITED_API */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_TUPLEOBJECT_H */
diff --git a/pythonsdk/include/typeslots.h b/pythonsdk/include/typeslots.h
deleted file mode 100644
index bf382f0..0000000
--- a/pythonsdk/include/typeslots.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* Do not renumber the file; these numbers are part of the stable ABI. */
-/* Disabled, see #10181 */
-#undef Py_bf_getbuffer
-#undef Py_bf_releasebuffer
-#define Py_mp_ass_subscript 3
-#define Py_mp_length 4
-#define Py_mp_subscript 5
-#define Py_nb_absolute 6
-#define Py_nb_add 7
-#define Py_nb_and 8
-#define Py_nb_bool 9
-#define Py_nb_divmod 10
-#define Py_nb_float 11
-#define Py_nb_floor_divide 12
-#define Py_nb_index 13
-#define Py_nb_inplace_add 14
-#define Py_nb_inplace_and 15
-#define Py_nb_inplace_floor_divide 16
-#define Py_nb_inplace_lshift 17
-#define Py_nb_inplace_multiply 18
-#define Py_nb_inplace_or 19
-#define Py_nb_inplace_power 20
-#define Py_nb_inplace_remainder 21
-#define Py_nb_inplace_rshift 22
-#define Py_nb_inplace_subtract 23
-#define Py_nb_inplace_true_divide 24
-#define Py_nb_inplace_xor 25
-#define Py_nb_int 26
-#define Py_nb_invert 27
-#define Py_nb_lshift 28
-#define Py_nb_multiply 29
-#define Py_nb_negative 30
-#define Py_nb_or 31
-#define Py_nb_positive 32
-#define Py_nb_power 33
-#define Py_nb_remainder 34
-#define Py_nb_rshift 35
-#define Py_nb_subtract 36
-#define Py_nb_true_divide 37
-#define Py_nb_xor 38
-#define Py_sq_ass_item 39
-#define Py_sq_concat 40
-#define Py_sq_contains 41
-#define Py_sq_inplace_concat 42
-#define Py_sq_inplace_repeat 43
-#define Py_sq_item 44
-#define Py_sq_length 45
-#define Py_sq_repeat 46
-#define Py_tp_alloc 47
-#define Py_tp_base 48
-#define Py_tp_bases 49
-#define Py_tp_call 50
-#define Py_tp_clear 51
-#define Py_tp_dealloc 52
-#define Py_tp_del 53
-#define Py_tp_descr_get 54
-#define Py_tp_descr_set 55
-#define Py_tp_doc 56
-#define Py_tp_getattr 57
-#define Py_tp_getattro 58
-#define Py_tp_hash 59
-#define Py_tp_init 60
-#define Py_tp_is_gc 61
-#define Py_tp_iter 62
-#define Py_tp_iternext 63
-#define Py_tp_methods 64
-#define Py_tp_new 65
-#define Py_tp_repr 66
-#define Py_tp_richcompare 67
-#define Py_tp_setattr 68
-#define Py_tp_setattro 69
-#define Py_tp_str 70
-#define Py_tp_traverse 71
-#define Py_tp_members 72
-#define Py_tp_getset 73
-#define Py_tp_free 74
-#define Py_nb_matrix_multiply 75
-#define Py_nb_inplace_matrix_multiply 76
-#define Py_am_await 77
-#define Py_am_aiter 78
-#define Py_am_anext 79
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
-/* New in 3.5 */
-#define Py_tp_finalize 80
-#endif
diff --git a/pythonsdk/include/ucnhash.h b/pythonsdk/include/ucnhash.h
deleted file mode 100644
index 6d1a29f..0000000
--- a/pythonsdk/include/ucnhash.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Unicode name database interface */
-#ifndef Py_LIMITED_API
-#ifndef Py_UCNHASH_H
-#define Py_UCNHASH_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* revised ucnhash CAPI interface (exported through a "wrapper") */
-
-#define PyUnicodeData_CAPSULE_NAME "unicodedata.ucnhash_CAPI"
-
-typedef struct {
-
-    /* Size of this struct */
-    int size;
-
-    /* Get name for a given character code.  Returns non-zero if
-       success, zero if not.  Does not set Python exceptions.
-       If self is NULL, data come from the default version of the database.
-       If it is not NULL, it should be a unicodedata.ucd_X_Y_Z object */
-    int (*getname)(PyObject *self, Py_UCS4 code, char* buffer, int buflen,
-                   int with_alias_and_seq);
-
-    /* Get character code for a given name.  Same error handling
-       as for getname. */
-    int (*getcode)(PyObject *self, const char* name, int namelen, Py_UCS4* code,
-                   int with_named_seq);
-
-} _PyUnicode_Name_CAPI;
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_UCNHASH_H */
-#endif /* !Py_LIMITED_API */
diff --git a/pythonsdk/include/unicodeobject.h b/pythonsdk/include/unicodeobject.h
deleted file mode 100644
index bfc1257..0000000
--- a/pythonsdk/include/unicodeobject.h
+++ /dev/null
@@ -1,2334 +0,0 @@
-#ifndef Py_UNICODEOBJECT_H
-#define Py_UNICODEOBJECT_H
-
-#include <stdarg.h>
-
-/*
-
-Unicode implementation based on original code by Fredrik Lundh,
-modified by Marc-Andre Lemburg (mal@lemburg.com) according to the
-Unicode Integration Proposal. (See
-http://www.egenix.com/files/python/unicode-proposal.txt).
-
-Copyright (c) Corporation for National Research Initiatives.
-
-
- Original header:
- --------------------------------------------------------------------
-
- * Yet another Unicode string type for Python.  This type supports the
- * 16-bit Basic Multilingual Plane (BMP) only.
- *
- * Written by Fredrik Lundh, January 1999.
- *
- * Copyright (c) 1999 by Secret Labs AB.
- * Copyright (c) 1999 by Fredrik Lundh.
- *
- * fredrik@pythonware.com
- * http://www.pythonware.com
- *
- * --------------------------------------------------------------------
- * This Unicode String Type is
- *
- * Copyright (c) 1999 by Secret Labs AB
- * Copyright (c) 1999 by Fredrik Lundh
- *
- * By obtaining, using, and/or copying this software and/or its
- * associated documentation, you agree that you have read, understood,
- * and will comply with the following terms and conditions:
- *
- * Permission to use, copy, modify, and distribute this software and its
- * associated documentation for any purpose and without fee is hereby
- * granted, provided that the above copyright notice appears in all
- * copies, and that both that copyright notice and this permission notice
- * appear in supporting documentation, and that the name of Secret Labs
- * AB or the author not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission.
- *
- * SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
- * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- * -------------------------------------------------------------------- */
-
-#include <ctype.h>
-
-/* === Internal API ======================================================= */
-
-/* --- Internal Unicode Format -------------------------------------------- */
-
-/* Python 3.x requires unicode */
-#define Py_USING_UNICODE
-
-#ifndef SIZEOF_WCHAR_T
-#error Must define SIZEOF_WCHAR_T
-#endif
-
-#define Py_UNICODE_SIZE SIZEOF_WCHAR_T
-
-/* If wchar_t can be used for UCS-4 storage, set Py_UNICODE_WIDE.
-   Otherwise, Unicode strings are stored as UCS-2 (with limited support
-   for UTF-16) */
-
-#if Py_UNICODE_SIZE >= 4
-#define Py_UNICODE_WIDE
-#endif
-
-/* Set these flags if the platform has "wchar.h" and the
-   wchar_t type is a 16-bit unsigned type */
-/* #define HAVE_WCHAR_H */
-/* #define HAVE_USABLE_WCHAR_T */
-
-/* Py_UNICODE was the native Unicode storage format (code unit) used by
-   Python and represents a single Unicode element in the Unicode type.
-   With PEP 393, Py_UNICODE is deprecated and replaced with a
-   typedef to wchar_t. */
-
-#ifndef Py_LIMITED_API
-#define PY_UNICODE_TYPE wchar_t
-typedef wchar_t Py_UNICODE /* Py_DEPRECATED(3.3) */;
-#endif
-
-/* If the compiler provides a wchar_t type we try to support it
-   through the interface functions PyUnicode_FromWideChar(),
-   PyUnicode_AsWideChar() and PyUnicode_AsWideCharString(). */
-
-#ifdef HAVE_USABLE_WCHAR_T
-# ifndef HAVE_WCHAR_H
-#  define HAVE_WCHAR_H
-# endif
-#endif
-
-#ifdef HAVE_WCHAR_H
-#  include <wchar.h>
-#endif
-
-/* Py_UCS4 and Py_UCS2 are typedefs for the respective
-   unicode representations. */
-typedef uint32_t Py_UCS4;
-typedef uint16_t Py_UCS2;
-typedef uint8_t Py_UCS1;
-
-/* --- Internal Unicode Operations ---------------------------------------- */
-
-/* Since splitting on whitespace is an important use case, and
-   whitespace in most situations is solely ASCII whitespace, we
-   optimize for the common case by using a quick look-up table
-   _Py_ascii_whitespace (see below) with an inlined check.
-
- */
-#ifndef Py_LIMITED_API
-#define Py_UNICODE_ISSPACE(ch) \
-    ((ch) < 128U ? _Py_ascii_whitespace[(ch)] : _PyUnicode_IsWhitespace(ch))
-
-#define Py_UNICODE_ISLOWER(ch) _PyUnicode_IsLowercase(ch)
-#define Py_UNICODE_ISUPPER(ch) _PyUnicode_IsUppercase(ch)
-#define Py_UNICODE_ISTITLE(ch) _PyUnicode_IsTitlecase(ch)
-#define Py_UNICODE_ISLINEBREAK(ch) _PyUnicode_IsLinebreak(ch)
-
-#define Py_UNICODE_TOLOWER(ch) _PyUnicode_ToLowercase(ch)
-#define Py_UNICODE_TOUPPER(ch) _PyUnicode_ToUppercase(ch)
-#define Py_UNICODE_TOTITLE(ch) _PyUnicode_ToTitlecase(ch)
-
-#define Py_UNICODE_ISDECIMAL(ch) _PyUnicode_IsDecimalDigit(ch)
-#define Py_UNICODE_ISDIGIT(ch) _PyUnicode_IsDigit(ch)
-#define Py_UNICODE_ISNUMERIC(ch) _PyUnicode_IsNumeric(ch)
-#define Py_UNICODE_ISPRINTABLE(ch) _PyUnicode_IsPrintable(ch)
-
-#define Py_UNICODE_TODECIMAL(ch) _PyUnicode_ToDecimalDigit(ch)
-#define Py_UNICODE_TODIGIT(ch) _PyUnicode_ToDigit(ch)
-#define Py_UNICODE_TONUMERIC(ch) _PyUnicode_ToNumeric(ch)
-
-#define Py_UNICODE_ISALPHA(ch) _PyUnicode_IsAlpha(ch)
-
-#define Py_UNICODE_ISALNUM(ch) \
-       (Py_UNICODE_ISALPHA(ch) || \
-    Py_UNICODE_ISDECIMAL(ch) || \
-    Py_UNICODE_ISDIGIT(ch) || \
-    Py_UNICODE_ISNUMERIC(ch))
-
-#define Py_UNICODE_COPY(target, source, length) \
-    memcpy((target), (source), (length)*sizeof(Py_UNICODE))
-
-#define Py_UNICODE_FILL(target, value, length) \
-    do {Py_ssize_t i_; Py_UNICODE *t_ = (target); Py_UNICODE v_ = (value);\
-        for (i_ = 0; i_ < (length); i_++) t_[i_] = v_;\
-    } while (0)
-
-/* macros to work with surrogates */
-#define Py_UNICODE_IS_SURROGATE(ch) (0xD800 <= (ch) && (ch) <= 0xDFFF)
-#define Py_UNICODE_IS_HIGH_SURROGATE(ch) (0xD800 <= (ch) && (ch) <= 0xDBFF)
-#define Py_UNICODE_IS_LOW_SURROGATE(ch) (0xDC00 <= (ch) && (ch) <= 0xDFFF)
-/* Join two surrogate characters and return a single Py_UCS4 value. */
-#define Py_UNICODE_JOIN_SURROGATES(high, low)  \
-    (((((Py_UCS4)(high) & 0x03FF) << 10) |      \
-      ((Py_UCS4)(low) & 0x03FF)) + 0x10000)
-/* high surrogate = top 10 bits added to D800 */
-#define Py_UNICODE_HIGH_SURROGATE(ch) (0xD800 - (0x10000 >> 10) + ((ch) >> 10))
-/* low surrogate = bottom 10 bits added to DC00 */
-#define Py_UNICODE_LOW_SURROGATE(ch) (0xDC00 + ((ch) & 0x3FF))
-
-/* Check if substring matches at given offset.  The offset must be
-   valid, and the substring must not be empty. */
-
-#define Py_UNICODE_MATCH(string, offset, substring) \
-    ((*((string)->wstr + (offset)) == *((substring)->wstr)) && \
-     ((*((string)->wstr + (offset) + (substring)->wstr_length-1) == *((substring)->wstr + (substring)->wstr_length-1))) && \
-     !memcmp((string)->wstr + (offset), (substring)->wstr, (substring)->wstr_length*sizeof(Py_UNICODE)))
-
-#endif /* Py_LIMITED_API */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* --- Unicode Type ------------------------------------------------------- */
-
-#ifndef Py_LIMITED_API
-
-/* ASCII-only strings created through PyUnicode_New use the PyASCIIObject
-   structure. state.ascii and state.compact are set, and the data
-   immediately follow the structure. utf8_length and wstr_length can be found
-   in the length field; the utf8 pointer is equal to the data pointer. */
-typedef struct {
-    /* There are 4 forms of Unicode strings:
-
-       - compact ascii:
-
-         * structure = PyASCIIObject
-         * test: PyUnicode_IS_COMPACT_ASCII(op)
-         * kind = PyUnicode_1BYTE_KIND
-         * compact = 1
-         * ascii = 1
-         * ready = 1
-         * (length is the length of the utf8 and wstr strings)
-         * (data starts just after the structure)
-         * (since ASCII is decoded from UTF-8, the utf8 string are the data)
-
-       - compact:
-
-         * structure = PyCompactUnicodeObject
-         * test: PyUnicode_IS_COMPACT(op) && !PyUnicode_IS_ASCII(op)
-         * kind = PyUnicode_1BYTE_KIND, PyUnicode_2BYTE_KIND or
-           PyUnicode_4BYTE_KIND
-         * compact = 1
-         * ready = 1
-         * ascii = 0
-         * utf8 is not shared with data
-         * utf8_length = 0 if utf8 is NULL
-         * wstr is shared with data and wstr_length=length
-           if kind=PyUnicode_2BYTE_KIND and sizeof(wchar_t)=2
-           or if kind=PyUnicode_4BYTE_KIND and sizeof(wchar_t)=4
-         * wstr_length = 0 if wstr is NULL
-         * (data starts just after the structure)
-
-       - legacy string, not ready:
-
-         * structure = PyUnicodeObject
-         * test: kind == PyUnicode_WCHAR_KIND
-         * length = 0 (use wstr_length)
-         * hash = -1
-         * kind = PyUnicode_WCHAR_KIND
-         * compact = 0
-         * ascii = 0
-         * ready = 0
-         * interned = SSTATE_NOT_INTERNED
-         * wstr is not NULL
-         * data.any is NULL
-         * utf8 is NULL
-         * utf8_length = 0
-
-       - legacy string, ready:
-
-         * structure = PyUnicodeObject structure
-         * test: !PyUnicode_IS_COMPACT(op) && kind != PyUnicode_WCHAR_KIND
-         * kind = PyUnicode_1BYTE_KIND, PyUnicode_2BYTE_KIND or
-           PyUnicode_4BYTE_KIND
-         * compact = 0
-         * ready = 1
-         * data.any is not NULL
-         * utf8 is shared and utf8_length = length with data.any if ascii = 1
-         * utf8_length = 0 if utf8 is NULL
-         * wstr is shared with data.any and wstr_length = length
-           if kind=PyUnicode_2BYTE_KIND and sizeof(wchar_t)=2
-           or if kind=PyUnicode_4BYTE_KIND and sizeof(wchar_4)=4
-         * wstr_length = 0 if wstr is NULL
-
-       Compact strings use only one memory block (structure + characters),
-       whereas legacy strings use one block for the structure and one block
-       for characters.
-
-       Legacy strings are created by PyUnicode_FromUnicode() and
-       PyUnicode_FromStringAndSize(NULL, size) functions. They become ready
-       when PyUnicode_READY() is called.
-
-       See also _PyUnicode_CheckConsistency().
-    */
-    PyObject_HEAD
-    Py_ssize_t length;          /* Number of code points in the string */
-    Py_hash_t hash;             /* Hash value; -1 if not set */
-    struct {
-        /*
-           SSTATE_NOT_INTERNED (0)
-           SSTATE_INTERNED_MORTAL (1)
-           SSTATE_INTERNED_IMMORTAL (2)
-
-           If interned != SSTATE_NOT_INTERNED, the two references from the
-           dictionary to this object are *not* counted in ob_refcnt.
-         */
-        unsigned int interned:2;
-        /* Character size:
-
-           - PyUnicode_WCHAR_KIND (0):
-
-             * character type = wchar_t (16 or 32 bits, depending on the
-               platform)
-
-           - PyUnicode_1BYTE_KIND (1):
-
-             * character type = Py_UCS1 (8 bits, unsigned)
-             * all characters are in the range U+0000-U+00FF (latin1)
-             * if ascii is set, all characters are in the range U+0000-U+007F
-               (ASCII), otherwise at least one character is in the range
-               U+0080-U+00FF
-
-           - PyUnicode_2BYTE_KIND (2):
-
-             * character type = Py_UCS2 (16 bits, unsigned)
-             * all characters are in the range U+0000-U+FFFF (BMP)
-             * at least one character is in the range U+0100-U+FFFF
-
-           - PyUnicode_4BYTE_KIND (4):
-
-             * character type = Py_UCS4 (32 bits, unsigned)
-             * all characters are in the range U+0000-U+10FFFF
-             * at least one character is in the range U+10000-U+10FFFF
-         */
-        unsigned int kind:3;
-        /* Compact is with respect to the allocation scheme. Compact unicode
-           objects only require one memory block while non-compact objects use
-           one block for the PyUnicodeObject struct and another for its data
-           buffer. */
-        unsigned int compact:1;
-        /* The string only contains characters in the range U+0000-U+007F (ASCII)
-           and the kind is PyUnicode_1BYTE_KIND. If ascii is set and compact is
-           set, use the PyASCIIObject structure. */
-        unsigned int ascii:1;
-        /* The ready flag indicates whether the object layout is initialized
-           completely. This means that this is either a compact object, or
-           the data pointer is filled out. The bit is redundant, and helps
-           to minimize the test in PyUnicode_IS_READY(). */
-        unsigned int ready:1;
-        /* Padding to ensure that PyUnicode_DATA() is always aligned to
-           4 bytes (see issue #19537 on m68k). */
-        unsigned int :24;
-    } state;
-    wchar_t *wstr;              /* wchar_t representation (null-terminated) */
-} PyASCIIObject;
-
-/* Non-ASCII strings allocated through PyUnicode_New use the
-   PyCompactUnicodeObject structure. state.compact is set, and the data
-   immediately follow the structure. */
-typedef struct {
-    PyASCIIObject _base;
-    Py_ssize_t utf8_length;     /* Number of bytes in utf8, excluding the
-                                 * terminating \0. */
-    char *utf8;                 /* UTF-8 representation (null-terminated) */
-    Py_ssize_t wstr_length;     /* Number of code points in wstr, possible
-                                 * surrogates count as two code points. */
-} PyCompactUnicodeObject;
-
-/* Strings allocated through PyUnicode_FromUnicode(NULL, len) use the
-   PyUnicodeObject structure. The actual string data is initially in the wstr
-   block, and copied into the data block using _PyUnicode_Ready. */
-typedef struct {
-    PyCompactUnicodeObject _base;
-    union {
-        void *any;
-        Py_UCS1 *latin1;
-        Py_UCS2 *ucs2;
-        Py_UCS4 *ucs4;
-    } data;                     /* Canonical, smallest-form Unicode buffer */
-} PyUnicodeObject;
-#endif
-
-PyAPI_DATA(PyTypeObject) PyUnicode_Type;
-PyAPI_DATA(PyTypeObject) PyUnicodeIter_Type;
-
-#define PyUnicode_Check(op) \
-                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
-#define PyUnicode_CheckExact(op) (Py_TYPE(op) == &PyUnicode_Type)
-
-/* Fast access macros */
-#ifndef Py_LIMITED_API
-
-#define PyUnicode_WSTR_LENGTH(op) \
-    (PyUnicode_IS_COMPACT_ASCII(op) ?                  \
-     ((PyASCIIObject*)op)->length :                    \
-     ((PyCompactUnicodeObject*)op)->wstr_length)
-
-/* Returns the deprecated Py_UNICODE representation's size in code units
-   (this includes surrogate pairs as 2 units).
-   If the Py_UNICODE representation is not available, it will be computed
-   on request.  Use PyUnicode_GET_LENGTH() for the length in code points. */
-
-#define PyUnicode_GET_SIZE(op)                       \
-    (assert(PyUnicode_Check(op)),                    \
-     (((PyASCIIObject *)(op))->wstr) ?               \
-      PyUnicode_WSTR_LENGTH(op) :                    \
-      ((void)PyUnicode_AsUnicode((PyObject *)(op)),  \
-       assert(((PyASCIIObject *)(op))->wstr),        \
-       PyUnicode_WSTR_LENGTH(op)))
-    /* Py_DEPRECATED(3.3) */
-
-#define PyUnicode_GET_DATA_SIZE(op) \
-    (PyUnicode_GET_SIZE(op) * Py_UNICODE_SIZE)
-    /* Py_DEPRECATED(3.3) */
-
-/* Alias for PyUnicode_AsUnicode().  This will create a wchar_t/Py_UNICODE
-   representation on demand.  Using this macro is very inefficient now,
-   try to port your code to use the new PyUnicode_*BYTE_DATA() macros or
-   use PyUnicode_WRITE() and PyUnicode_READ(). */
-
-#define PyUnicode_AS_UNICODE(op) \
-    (assert(PyUnicode_Check(op)), \
-     (((PyASCIIObject *)(op))->wstr) ? (((PyASCIIObject *)(op))->wstr) : \
-      PyUnicode_AsUnicode((PyObject *)(op)))
-    /* Py_DEPRECATED(3.3) */
-
-#define PyUnicode_AS_DATA(op) \
-    ((const char *)(PyUnicode_AS_UNICODE(op)))
-    /* Py_DEPRECATED(3.3) */
-
-
-/* --- Flexible String Representation Helper Macros (PEP 393) -------------- */
-
-/* Values for PyASCIIObject.state: */
-
-/* Interning state. */
-#define SSTATE_NOT_INTERNED 0
-#define SSTATE_INTERNED_MORTAL 1
-#define SSTATE_INTERNED_IMMORTAL 2
-
-/* Return true if the string contains only ASCII characters, or 0 if not. The
-   string may be compact (PyUnicode_IS_COMPACT_ASCII) or not, but must be
-   ready. */
-#define PyUnicode_IS_ASCII(op)                   \
-    (assert(PyUnicode_Check(op)),                \
-     assert(PyUnicode_IS_READY(op)),             \
-     ((PyASCIIObject*)op)->state.ascii)
-
-/* Return true if the string is compact or 0 if not.
-   No type checks or Ready calls are performed. */
-#define PyUnicode_IS_COMPACT(op) \
-    (((PyASCIIObject*)(op))->state.compact)
-
-/* Return true if the string is a compact ASCII string (use PyASCIIObject
-   structure), or 0 if not.  No type checks or Ready calls are performed. */
-#define PyUnicode_IS_COMPACT_ASCII(op)                 \
-    (((PyASCIIObject*)op)->state.ascii && PyUnicode_IS_COMPACT(op))
-
-enum PyUnicode_Kind {
-/* String contains only wstr byte characters.  This is only possible
-   when the string was created with a legacy API and _PyUnicode_Ready()
-   has not been called yet.  */
-    PyUnicode_WCHAR_KIND = 0,
-/* Return values of the PyUnicode_KIND() macro: */
-    PyUnicode_1BYTE_KIND = 1,
-    PyUnicode_2BYTE_KIND = 2,
-    PyUnicode_4BYTE_KIND = 4
-};
-
-/* Return pointers to the canonical representation cast to unsigned char,
-   Py_UCS2, or Py_UCS4 for direct character access.
-   No checks are performed, use PyUnicode_KIND() before to ensure
-   these will work correctly. */
-
-#define PyUnicode_1BYTE_DATA(op) ((Py_UCS1*)PyUnicode_DATA(op))
-#define PyUnicode_2BYTE_DATA(op) ((Py_UCS2*)PyUnicode_DATA(op))
-#define PyUnicode_4BYTE_DATA(op) ((Py_UCS4*)PyUnicode_DATA(op))
-
-/* Return one of the PyUnicode_*_KIND values defined above. */
-#define PyUnicode_KIND(op) \
-    (assert(PyUnicode_Check(op)), \
-     assert(PyUnicode_IS_READY(op)),            \
-     ((PyASCIIObject *)(op))->state.kind)
-
-/* Return a void pointer to the raw unicode buffer. */
-#define _PyUnicode_COMPACT_DATA(op)                     \
-    (PyUnicode_IS_ASCII(op) ?                   \
-     ((void*)((PyASCIIObject*)(op) + 1)) :              \
-     ((void*)((PyCompactUnicodeObject*)(op) + 1)))
-
-#define _PyUnicode_NONCOMPACT_DATA(op)                  \
-    (assert(((PyUnicodeObject*)(op))->data.any),        \
-     ((((PyUnicodeObject *)(op))->data.any)))
-
-#define PyUnicode_DATA(op) \
-    (assert(PyUnicode_Check(op)), \
-     PyUnicode_IS_COMPACT(op) ? _PyUnicode_COMPACT_DATA(op) :   \
-     _PyUnicode_NONCOMPACT_DATA(op))
-
-/* In the access macros below, "kind" may be evaluated more than once.
-   All other macro parameters are evaluated exactly once, so it is safe
-   to put side effects into them (such as increasing the index). */
-
-/* Write into the canonical representation, this macro does not do any sanity
-   checks and is intended for usage in loops.  The caller should cache the
-   kind and data pointers obtained from other macro calls.
-   index is the index in the string (starts at 0) and value is the new
-   code point value which should be written to that location. */
-#define PyUnicode_WRITE(kind, data, index, value) \
-    do { \
-        switch ((kind)) { \
-        case PyUnicode_1BYTE_KIND: { \
-            ((Py_UCS1 *)(data))[(index)] = (Py_UCS1)(value); \
-            break; \
-        } \
-        case PyUnicode_2BYTE_KIND: { \
-            ((Py_UCS2 *)(data))[(index)] = (Py_UCS2)(value); \
-            break; \
-        } \
-        default: { \
-            assert((kind) == PyUnicode_4BYTE_KIND); \
-            ((Py_UCS4 *)(data))[(index)] = (Py_UCS4)(value); \
-        } \
-        } \
-    } while (0)
-
-/* Read a code point from the string's canonical representation.  No checks
-   or ready calls are performed. */
-#define PyUnicode_READ(kind, data, index) \
-    ((Py_UCS4) \
-    ((kind) == PyUnicode_1BYTE_KIND ? \
-        ((const Py_UCS1 *)(data))[(index)] : \
-        ((kind) == PyUnicode_2BYTE_KIND ? \
-            ((const Py_UCS2 *)(data))[(index)] : \
-            ((const Py_UCS4 *)(data))[(index)] \
-        ) \
-    ))
-
-/* PyUnicode_READ_CHAR() is less efficient than PyUnicode_READ() because it
-   calls PyUnicode_KIND() and might call it twice.  For single reads, use
-   PyUnicode_READ_CHAR, for multiple consecutive reads callers should
-   cache kind and use PyUnicode_READ instead. */
-#define PyUnicode_READ_CHAR(unicode, index) \
-    (assert(PyUnicode_Check(unicode)),          \
-     assert(PyUnicode_IS_READY(unicode)),       \
-     (Py_UCS4)                                  \
-        (PyUnicode_KIND((unicode)) == PyUnicode_1BYTE_KIND ? \
-            ((const Py_UCS1 *)(PyUnicode_DATA((unicode))))[(index)] : \
-            (PyUnicode_KIND((unicode)) == PyUnicode_2BYTE_KIND ? \
-                ((const Py_UCS2 *)(PyUnicode_DATA((unicode))))[(index)] : \
-                ((const Py_UCS4 *)(PyUnicode_DATA((unicode))))[(index)] \
-            ) \
-        ))
-
-/* Returns the length of the unicode string. The caller has to make sure that
-   the string has it's canonical representation set before calling
-   this macro.  Call PyUnicode_(FAST_)Ready to ensure that. */
-#define PyUnicode_GET_LENGTH(op)                \
-    (assert(PyUnicode_Check(op)),               \
-     assert(PyUnicode_IS_READY(op)),            \
-     ((PyASCIIObject *)(op))->length)
-
-
-/* Fast check to determine whether an object is ready. Equivalent to
-   PyUnicode_IS_COMPACT(op) || ((PyUnicodeObject*)(op))->data.any) */
-
-#define PyUnicode_IS_READY(op) (((PyASCIIObject*)op)->state.ready)
-
-/* PyUnicode_READY() does less work than _PyUnicode_Ready() in the best
-   case.  If the canonical representation is not yet set, it will still call
-   _PyUnicode_Ready().
-   Returns 0 on success and -1 on errors. */
-#define PyUnicode_READY(op)                        \
-    (assert(PyUnicode_Check(op)),                       \
-     (PyUnicode_IS_READY(op) ?                          \
-      0 : _PyUnicode_Ready((PyObject *)(op))))
-
-/* Return a maximum character value which is suitable for creating another
-   string based on op.  This is always an approximation but more efficient
-   than iterating over the string. */
-#define PyUnicode_MAX_CHAR_VALUE(op) \
-    (assert(PyUnicode_IS_READY(op)),                                    \
-     (PyUnicode_IS_ASCII(op) ?                                          \
-      (0x7f) :                                                          \
-      (PyUnicode_KIND(op) == PyUnicode_1BYTE_KIND ?                     \
-       (0xffU) :                                                        \
-       (PyUnicode_KIND(op) == PyUnicode_2BYTE_KIND ?                    \
-        (0xffffU) :                                                     \
-        (0x10ffffU)))))
-
-#endif
-
-/* --- Constants ---------------------------------------------------------- */
-
-/* This Unicode character will be used as replacement character during
-   decoding if the errors argument is set to "replace". Note: the
-   Unicode character U+FFFD is the official REPLACEMENT CHARACTER in
-   Unicode 3.0. */
-
-#define Py_UNICODE_REPLACEMENT_CHARACTER ((Py_UCS4) 0xFFFD)
-
-/* === Public API ========================================================= */
-
-/* --- Plain Py_UNICODE --------------------------------------------------- */
-
-/* With PEP 393, this is the recommended way to allocate a new unicode object.
-   This function will allocate the object and its buffer in a single memory
-   block.  Objects created using this function are not resizable. */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) PyUnicode_New(
-    Py_ssize_t size,            /* Number of code points in the new string */
-    Py_UCS4 maxchar             /* maximum code point value in the string */
-    );
-#endif
-
-/* Initializes the canonical string representation from the deprecated
-   wstr/Py_UNICODE representation. This function is used to convert Unicode
-   objects which were created using the old API to the new flexible format
-   introduced with PEP 393.
-
-   Don't call this function directly, use the public PyUnicode_READY() macro
-   instead. */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) _PyUnicode_Ready(
-    PyObject *unicode           /* Unicode object */
-    );
-#endif
-
-/* Get a copy of a Unicode string. */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) _PyUnicode_Copy(
-    PyObject *unicode
-    );
-#endif
-
-/* Copy character from one unicode object into another, this function performs
-   character conversion when necessary and falls back to memcpy() if possible.
-
-   Fail if to is too small (smaller than *how_many* or smaller than
-   len(from)-from_start), or if kind(from[from_start:from_start+how_many]) >
-   kind(to), or if *to* has more than 1 reference.
-
-   Return the number of written character, or return -1 and raise an exception
-   on error.
-
-   Pseudo-code:
-
-       how_many = min(how_many, len(from) - from_start)
-       to[to_start:to_start+how_many] = from[from_start:from_start+how_many]
-       return how_many
-
-   Note: The function doesn't write a terminating null character.
-   */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(Py_ssize_t) PyUnicode_CopyCharacters(
-    PyObject *to,
-    Py_ssize_t to_start,
-    PyObject *from,
-    Py_ssize_t from_start,
-    Py_ssize_t how_many
-    );
-
-/* Unsafe version of PyUnicode_CopyCharacters(): don't check arguments and so
-   may crash if parameters are invalid (e.g. if the output string
-   is too short). */
-PyAPI_FUNC(void) _PyUnicode_FastCopyCharacters(
-    PyObject *to,
-    Py_ssize_t to_start,
-    PyObject *from,
-    Py_ssize_t from_start,
-    Py_ssize_t how_many
-    );
-#endif
-
-#ifndef Py_LIMITED_API
-/* Fill a string with a character: write fill_char into
-   unicode[start:start+length].
-
-   Fail if fill_char is bigger than the string maximum character, or if the
-   string has more than 1 reference.
-
-   Return the number of written character, or return -1 and raise an exception
-   on error. */
-PyAPI_FUNC(Py_ssize_t) PyUnicode_Fill(
-    PyObject *unicode,
-    Py_ssize_t start,
-    Py_ssize_t length,
-    Py_UCS4 fill_char
-    );
-
-/* Unsafe version of PyUnicode_Fill(): don't check arguments and so may crash
-   if parameters are invalid (e.g. if length is longer than the string). */
-PyAPI_FUNC(void) _PyUnicode_FastFill(
-    PyObject *unicode,
-    Py_ssize_t start,
-    Py_ssize_t length,
-    Py_UCS4 fill_char
-    );
-#endif
-
-/* Create a Unicode Object from the Py_UNICODE buffer u of the given
-   size.
-
-   u may be NULL which causes the contents to be undefined. It is the
-   user's responsibility to fill in the needed data afterwards. Note
-   that modifying the Unicode object contents after construction is
-   only allowed if u was set to NULL.
-
-   The buffer is copied into the new object. */
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) PyUnicode_FromUnicode(
-    const Py_UNICODE *u,        /* Unicode buffer */
-    Py_ssize_t size             /* size of buffer */
-    ) /* Py_DEPRECATED(3.3) */;
-#endif
-
-/* Similar to PyUnicode_FromUnicode(), but u points to UTF-8 encoded bytes */
-PyAPI_FUNC(PyObject*) PyUnicode_FromStringAndSize(
-    const char *u,             /* UTF-8 encoded string */
-    Py_ssize_t size            /* size of buffer */
-    );
-
-/* Similar to PyUnicode_FromUnicode(), but u points to null-terminated
-   UTF-8 encoded bytes.  The size is determined with strlen(). */
-PyAPI_FUNC(PyObject*) PyUnicode_FromString(
-    const char *u              /* UTF-8 encoded string */
-    );
-
-#ifndef Py_LIMITED_API
-/* Create a new string from a buffer of Py_UCS1, Py_UCS2 or Py_UCS4 characters.
-   Scan the string to find the maximum character. */
-PyAPI_FUNC(PyObject*) PyUnicode_FromKindAndData(
-    int kind,
-    const void *buffer,
-    Py_ssize_t size);
-
-/* Create a new string from a buffer of ASCII characters.
-   WARNING: Don't check if the string contains any non-ASCII character. */
-PyAPI_FUNC(PyObject*) _PyUnicode_FromASCII(
-    const char *buffer,
-    Py_ssize_t size);
-#endif
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(PyObject*) PyUnicode_Substring(
-    PyObject *str,
-    Py_ssize_t start,
-    Py_ssize_t end);
-#endif
-
-#ifndef Py_LIMITED_API
-/* Compute the maximum character of the substring unicode[start:end].
-   Return 127 for an empty string. */
-PyAPI_FUNC(Py_UCS4) _PyUnicode_FindMaxChar (
-    PyObject *unicode,
-    Py_ssize_t start,
-    Py_ssize_t end);
-#endif
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-/* Copy the string into a UCS4 buffer including the null character if copy_null
-   is set. Return NULL and raise an exception on error. Raise a SystemError if
-   the buffer is smaller than the string. Return buffer on success.
-
-   buflen is the length of the buffer in (Py_UCS4) characters. */
-PyAPI_FUNC(Py_UCS4*) PyUnicode_AsUCS4(
-    PyObject *unicode,
-    Py_UCS4* buffer,
-    Py_ssize_t buflen,
-    int copy_null);
-
-/* Copy the string into a UCS4 buffer. A new buffer is allocated using
- * PyMem_Malloc; if this fails, NULL is returned with a memory error
-   exception set. */
-PyAPI_FUNC(Py_UCS4*) PyUnicode_AsUCS4Copy(PyObject *unicode);
-#endif
-
-#ifndef Py_LIMITED_API
-/* Return a read-only pointer to the Unicode object's internal
-   Py_UNICODE buffer.
-   If the wchar_t/Py_UNICODE representation is not yet available, this
-   function will calculate it. */
-
-PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
-    PyObject *unicode           /* Unicode object */
-    ) /* Py_DEPRECATED(3.3) */;
-
-/* Similar to PyUnicode_AsUnicode(), but raises a ValueError if the string
-   contains null characters. */
-PyAPI_FUNC(const Py_UNICODE *) _PyUnicode_AsUnicode(
-    PyObject *unicode           /* Unicode object */
-    );
-
-/* Return a read-only pointer to the Unicode object's internal
-   Py_UNICODE buffer and save the length at size.
-   If the wchar_t/Py_UNICODE representation is not yet available, this
-   function will calculate it. */
-
-PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicodeAndSize(
-    PyObject *unicode,          /* Unicode object */
-    Py_ssize_t *size            /* location where to save the length */
-    )  /* Py_DEPRECATED(3.3) */;
-#endif
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-/* Get the length of the Unicode object. */
-
-PyAPI_FUNC(Py_ssize_t) PyUnicode_GetLength(
-    PyObject *unicode
-);
-#endif
-
-/* Get the number of Py_UNICODE units in the
-   string representation. */
-
-PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize(
-    PyObject *unicode           /* Unicode object */
-    ) Py_DEPRECATED(3.3);
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-/* Read a character from the string. */
-
-PyAPI_FUNC(Py_UCS4) PyUnicode_ReadChar(
-    PyObject *unicode,
-    Py_ssize_t index
-    );
-
-/* Write a character to the string. The string must have been created through
-   PyUnicode_New, must not be shared, and must not have been hashed yet.
-
-   Return 0 on success, -1 on error. */
-
-PyAPI_FUNC(int) PyUnicode_WriteChar(
-    PyObject *unicode,
-    Py_ssize_t index,
-    Py_UCS4 character
-    );
-#endif
-
-#ifndef Py_LIMITED_API
-/* Get the maximum ordinal for a Unicode character. */
-PyAPI_FUNC(Py_UNICODE) PyUnicode_GetMax(void) Py_DEPRECATED(3.3);
-#endif
-
-/* Resize a Unicode object. The length is the number of characters, except
-   if the kind of the string is PyUnicode_WCHAR_KIND: in this case, the length
-   is the number of Py_UNICODE characters.
-
-   *unicode is modified to point to the new (resized) object and 0
-   returned on success.
-
-   Try to resize the string in place (which is usually faster than allocating
-   a new string and copy characters), or create a new string.
-
-   Error handling is implemented as follows: an exception is set, -1
-   is returned and *unicode left untouched.
-
-   WARNING: The function doesn't check string content, the result may not be a
-            string in canonical representation. */
-
-PyAPI_FUNC(int) PyUnicode_Resize(
-    PyObject **unicode,         /* Pointer to the Unicode object */
-    Py_ssize_t length           /* New length */
-    );
-
-/* Decode obj to a Unicode object.
-
-   bytes, bytearray and other bytes-like objects are decoded according to the
-   given encoding and error handler. The encoding and error handler can be
-   NULL to have the interface use UTF-8 and "strict".
-
-   All other objects (including Unicode objects) raise an exception.
-
-   The API returns NULL in case of an error. The caller is responsible
-   for decref'ing the returned objects.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_FromEncodedObject(
-    PyObject *obj,              /* Object */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    );
-
-/* Copy an instance of a Unicode subtype to a new true Unicode object if
-   necessary. If obj is already a true Unicode object (not a subtype), return
-   the reference with *incremented* refcount.
-
-   The API returns NULL in case of an error. The caller is responsible
-   for decref'ing the returned objects.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_FromObject(
-    PyObject *obj      /* Object */
-    );
-
-PyAPI_FUNC(PyObject *) PyUnicode_FromFormatV(
-    const char *format,   /* ASCII-encoded string  */
-    va_list vargs
-    );
-PyAPI_FUNC(PyObject *) PyUnicode_FromFormat(
-    const char *format,   /* ASCII-encoded string  */
-    ...
-    );
-
-#ifndef Py_LIMITED_API
-typedef struct {
-    PyObject *buffer;
-    void *data;
-    enum PyUnicode_Kind kind;
-    Py_UCS4 maxchar;
-    Py_ssize_t size;
-    Py_ssize_t pos;
-
-    /* minimum number of allocated characters (default: 0) */
-    Py_ssize_t min_length;
-
-    /* minimum character (default: 127, ASCII) */
-    Py_UCS4 min_char;
-
-    /* If non-zero, overallocate the buffer (default: 0). */
-    unsigned char overallocate;
-
-    /* If readonly is 1, buffer is a shared string (cannot be modified)
-       and size is set to 0. */
-    unsigned char readonly;
-} _PyUnicodeWriter ;
-
-/* Initialize a Unicode writer.
- *
- * By default, the minimum buffer size is 0 character and overallocation is
- * disabled. Set min_length, min_char and overallocate attributes to control
- * the allocation of the buffer. */
-PyAPI_FUNC(void)
-_PyUnicodeWriter_Init(_PyUnicodeWriter *writer);
-
-/* Prepare the buffer to write 'length' characters
-   with the specified maximum character.
-
-   Return 0 on success, raise an exception and return -1 on error. */
-#define _PyUnicodeWriter_Prepare(WRITER, LENGTH, MAXCHAR)             \
-    (((MAXCHAR) <= (WRITER)->maxchar                                  \
-      && (LENGTH) <= (WRITER)->size - (WRITER)->pos)                  \
-     ? 0                                                              \
-     : (((LENGTH) == 0)                                               \
-        ? 0                                                           \
-        : _PyUnicodeWriter_PrepareInternal((WRITER), (LENGTH), (MAXCHAR))))
-
-/* Don't call this function directly, use the _PyUnicodeWriter_Prepare() macro
-   instead. */
-PyAPI_FUNC(int)
-_PyUnicodeWriter_PrepareInternal(_PyUnicodeWriter *writer,
-                                 Py_ssize_t length, Py_UCS4 maxchar);
-
-/* Prepare the buffer to have at least the kind KIND.
-   For example, kind=PyUnicode_2BYTE_KIND ensures that the writer will
-   support characters in range U+000-U+FFFF.
-
-   Return 0 on success, raise an exception and return -1 on error. */
-#define _PyUnicodeWriter_PrepareKind(WRITER, KIND)                    \
-    (assert((KIND) != PyUnicode_WCHAR_KIND),                          \
-     (KIND) <= (WRITER)->kind                                         \
-     ? 0                                                              \
-     : _PyUnicodeWriter_PrepareKindInternal((WRITER), (KIND)))
-
-/* Don't call this function directly, use the _PyUnicodeWriter_PrepareKind()
-   macro instead. */
-PyAPI_FUNC(int)
-_PyUnicodeWriter_PrepareKindInternal(_PyUnicodeWriter *writer,
-                                     enum PyUnicode_Kind kind);
-
-/* Append a Unicode character.
-   Return 0 on success, raise an exception and return -1 on error. */
-PyAPI_FUNC(int)
-_PyUnicodeWriter_WriteChar(_PyUnicodeWriter *writer,
-    Py_UCS4 ch
-    );
-
-/* Append a Unicode string.
-   Return 0 on success, raise an exception and return -1 on error. */
-PyAPI_FUNC(int)
-_PyUnicodeWriter_WriteStr(_PyUnicodeWriter *writer,
-    PyObject *str               /* Unicode string */
-    );
-
-/* Append a substring of a Unicode string.
-   Return 0 on success, raise an exception and return -1 on error. */
-PyAPI_FUNC(int)
-_PyUnicodeWriter_WriteSubstring(_PyUnicodeWriter *writer,
-    PyObject *str,              /* Unicode string */
-    Py_ssize_t start,
-    Py_ssize_t end
-    );
-
-/* Append an ASCII-encoded byte string.
-   Return 0 on success, raise an exception and return -1 on error. */
-PyAPI_FUNC(int)
-_PyUnicodeWriter_WriteASCIIString(_PyUnicodeWriter *writer,
-    const char *str,           /* ASCII-encoded byte string */
-    Py_ssize_t len             /* number of bytes, or -1 if unknown */
-    );
-
-/* Append a latin1-encoded byte string.
-   Return 0 on success, raise an exception and return -1 on error. */
-PyAPI_FUNC(int)
-_PyUnicodeWriter_WriteLatin1String(_PyUnicodeWriter *writer,
-    const char *str,           /* latin1-encoded byte string */
-    Py_ssize_t len             /* length in bytes */
-    );
-
-/* Get the value of the writer as a Unicode string. Clear the
-   buffer of the writer. Raise an exception and return NULL
-   on error. */
-PyAPI_FUNC(PyObject *)
-_PyUnicodeWriter_Finish(_PyUnicodeWriter *writer);
-
-/* Deallocate memory of a writer (clear its internal buffer). */
-PyAPI_FUNC(void)
-_PyUnicodeWriter_Dealloc(_PyUnicodeWriter *writer);
-#endif
-
-#ifndef Py_LIMITED_API
-/* Format the object based on the format_spec, as defined in PEP 3101
-   (Advanced String Formatting). */
-PyAPI_FUNC(int) _PyUnicode_FormatAdvancedWriter(
-    _PyUnicodeWriter *writer,
-    PyObject *obj,
-    PyObject *format_spec,
-    Py_ssize_t start,
-    Py_ssize_t end);
-#endif
-
-PyAPI_FUNC(void) PyUnicode_InternInPlace(PyObject **);
-PyAPI_FUNC(void) PyUnicode_InternImmortal(PyObject **);
-PyAPI_FUNC(PyObject *) PyUnicode_InternFromString(
-    const char *u              /* UTF-8 encoded string */
-    );
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void) _Py_ReleaseInternedUnicodeStrings(void);
-#endif
-
-/* Use only if you know it's a string */
-#define PyUnicode_CHECK_INTERNED(op) \
-    (((PyASCIIObject *)(op))->state.interned)
-
-/* --- wchar_t support for platforms which support it --------------------- */
-
-#ifdef HAVE_WCHAR_H
-
-/* Create a Unicode Object from the wchar_t buffer w of the given
-   size.
-
-   The buffer is copied into the new object. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_FromWideChar(
-    const wchar_t *w,           /* wchar_t buffer */
-    Py_ssize_t size             /* size of buffer */
-    );
-
-/* Copies the Unicode Object contents into the wchar_t buffer w.  At
-   most size wchar_t characters are copied.
-
-   Note that the resulting wchar_t string may or may not be
-   0-terminated.  It is the responsibility of the caller to make sure
-   that the wchar_t string is 0-terminated in case this is required by
-   the application.
-
-   Returns the number of wchar_t characters copied (excluding a
-   possibly trailing 0-termination character) or -1 in case of an
-   error. */
-
-PyAPI_FUNC(Py_ssize_t) PyUnicode_AsWideChar(
-    PyObject *unicode,          /* Unicode object */
-    wchar_t *w,                 /* wchar_t buffer */
-    Py_ssize_t size             /* size of buffer */
-    );
-
-/* Convert the Unicode object to a wide character string. The output string
-   always ends with a nul character. If size is not NULL, write the number of
-   wide characters (excluding the null character) into *size.
-
-   Returns a buffer allocated by PyMem_Malloc() (use PyMem_Free() to free it)
-   on success. On error, returns NULL, *size is undefined and raises a
-   MemoryError. */
-
-PyAPI_FUNC(wchar_t*) PyUnicode_AsWideCharString(
-    PyObject *unicode,          /* Unicode object */
-    Py_ssize_t *size            /* number of characters of the result */
-    );
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(void*) _PyUnicode_AsKind(PyObject *s, unsigned int kind);
-#endif
-
-#endif
-
-/* --- Unicode ordinals --------------------------------------------------- */
-
-/* Create a Unicode Object from the given Unicode code point ordinal.
-
-   The ordinal must be in range(0x110000). A ValueError is
-   raised in case it is not.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_FromOrdinal(int ordinal);
-
-/* --- Free-list management ----------------------------------------------- */
-
-/* Clear the free list used by the Unicode implementation.
-
-   This can be used to release memory used for objects on the free
-   list back to the Python memory allocator.
-
-*/
-
-PyAPI_FUNC(int) PyUnicode_ClearFreeList(void);
-
-/* === Builtin Codecs =====================================================
-
-   Many of these APIs take two arguments encoding and errors. These
-   parameters encoding and errors have the same semantics as the ones
-   of the builtin str() API.
-
-   Setting encoding to NULL causes the default encoding (UTF-8) to be used.
-
-   Error handling is set by errors which may also be set to NULL
-   meaning to use the default handling defined for the codec. Default
-   error handling for all builtin codecs is "strict" (ValueErrors are
-   raised).
-
-   The codecs all use a similar interface. Only deviation from the
-   generic ones are documented.
-
-*/
-
-/* --- Manage the default encoding ---------------------------------------- */
-
-/* Returns a pointer to the default encoding (UTF-8) of the
-   Unicode object unicode and the size of the encoded representation
-   in bytes stored in *size.
-
-   In case of an error, no *size is set.
-
-   This function caches the UTF-8 encoded string in the unicodeobject
-   and subsequent calls will return the same string.  The memory is released
-   when the unicodeobject is deallocated.
-
-   _PyUnicode_AsStringAndSize is a #define for PyUnicode_AsUTF8AndSize to
-   support the previous internal function with the same behaviour.
-
-   *** This API is for interpreter INTERNAL USE ONLY and will likely
-   *** be removed or changed in the future.
-
-   *** If you need to access the Unicode object as UTF-8 bytes string,
-   *** please use PyUnicode_AsUTF8String() instead.
-*/
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(const char *) PyUnicode_AsUTF8AndSize(
-    PyObject *unicode,
-    Py_ssize_t *size);
-#define _PyUnicode_AsStringAndSize PyUnicode_AsUTF8AndSize
-#endif
-
-/* Returns a pointer to the default encoding (UTF-8) of the
-   Unicode object unicode.
-
-   Like PyUnicode_AsUTF8AndSize(), this also caches the UTF-8 representation
-   in the unicodeobject.
-
-   _PyUnicode_AsString is a #define for PyUnicode_AsUTF8 to
-   support the previous internal function with the same behaviour.
-
-   Use of this API is DEPRECATED since no size information can be
-   extracted from the returned data.
-
-   *** This API is for interpreter INTERNAL USE ONLY and will likely
-   *** be removed or changed for Python 3.1.
-
-   *** If you need to access the Unicode object as UTF-8 bytes string,
-   *** please use PyUnicode_AsUTF8String() instead.
-
-*/
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(const char *) PyUnicode_AsUTF8(PyObject *unicode);
-#define _PyUnicode_AsString PyUnicode_AsUTF8
-#endif
-
-/* Returns "utf-8".  */
-
-PyAPI_FUNC(const char*) PyUnicode_GetDefaultEncoding(void);
-
-/* --- Generic Codecs ----------------------------------------------------- */
-
-/* Create a Unicode object by decoding the encoded string s of the
-   given size. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_Decode(
-    const char *s,              /* encoded string */
-    Py_ssize_t size,            /* size of buffer */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    );
-
-/* Decode a Unicode object unicode and return the result as Python
-   object.
-
-   This API is DEPRECATED. The only supported standard encoding is rot13.
-   Use PyCodec_Decode() to decode with rot13 and non-standard codecs
-   that decode from str. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsDecodedObject(
-    PyObject *unicode,          /* Unicode object */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    ) Py_DEPRECATED(3.6);
-
-/* Decode a Unicode object unicode and return the result as Unicode
-   object.
-
-   This API is DEPRECATED. The only supported standard encoding is rot13.
-   Use PyCodec_Decode() to decode with rot13 and non-standard codecs
-   that decode from str to str. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsDecodedUnicode(
-    PyObject *unicode,          /* Unicode object */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    ) Py_DEPRECATED(3.6);
-
-/* Encodes a Py_UNICODE buffer of the given size and returns a
-   Python string object. */
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) PyUnicode_Encode(
-    const Py_UNICODE *s,        /* Unicode char buffer */
-    Py_ssize_t size,            /* number of Py_UNICODE chars to encode */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    ) Py_DEPRECATED(3.3);
-#endif
-
-/* Encodes a Unicode object and returns the result as Python
-   object.
-
-   This API is DEPRECATED.  It is superseded by PyUnicode_AsEncodedString()
-   since all standard encodings (except rot13) encode str to bytes.
-   Use PyCodec_Encode() for encoding with rot13 and non-standard codecs
-   that encode form str to non-bytes. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedObject(
-    PyObject *unicode,          /* Unicode object */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    ) Py_DEPRECATED(3.6);
-
-/* Encodes a Unicode object and returns the result as Python string
-   object. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedString(
-    PyObject *unicode,          /* Unicode object */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    );
-
-/* Encodes a Unicode object and returns the result as Unicode
-   object.
-
-   This API is DEPRECATED.  The only supported standard encodings is rot13.
-   Use PyCodec_Encode() to encode with rot13 and non-standard codecs
-   that encode from str to str. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedUnicode(
-    PyObject *unicode,          /* Unicode object */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    ) Py_DEPRECATED(3.6);
-
-/* Build an encoding map. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_BuildEncodingMap(
-    PyObject* string            /* 256 character map */
-   );
-
-/* --- UTF-7 Codecs ------------------------------------------------------- */
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF7(
-    const char *string,         /* UTF-7 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF7Stateful(
-    const char *string,         /* UTF-7 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    Py_ssize_t *consumed        /* bytes consumed */
-    );
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF7(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,          /* number of Py_UNICODE chars to encode */
-    int base64SetO,             /* Encode RFC2152 Set O characters in base64 */
-    int base64WhiteSpace,       /* Encode whitespace (sp, ht, nl, cr) in base64 */
-    const char *errors          /* error handling */
-    ) Py_DEPRECATED(3.3);
-PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF7(
-    PyObject *unicode,          /* Unicode object */
-    int base64SetO,             /* Encode RFC2152 Set O characters in base64 */
-    int base64WhiteSpace,       /* Encode whitespace (sp, ht, nl, cr) in base64 */
-    const char *errors          /* error handling */
-    );
-#endif
-
-/* --- UTF-8 Codecs ------------------------------------------------------- */
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF8(
-    const char *string,         /* UTF-8 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF8Stateful(
-    const char *string,         /* UTF-8 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    Py_ssize_t *consumed        /* bytes consumed */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsUTF8String(
-    PyObject *unicode           /* Unicode object */
-    );
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) _PyUnicode_AsUTF8String(
-    PyObject *unicode,
-    const char *errors);
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF8(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,          /* number of Py_UNICODE chars to encode */
-    const char *errors          /* error handling */
-    ) Py_DEPRECATED(3.3);
-#endif
-
-/* --- UTF-32 Codecs ------------------------------------------------------ */
-
-/* Decodes length bytes from a UTF-32 encoded buffer string and returns
-   the corresponding Unicode object.
-
-   errors (if non-NULL) defines the error handling. It defaults
-   to "strict".
-
-   If byteorder is non-NULL, the decoder starts decoding using the
-   given byte order:
-
-    *byteorder == -1: little endian
-    *byteorder == 0:  native order
-    *byteorder == 1:  big endian
-
-   In native mode, the first four bytes of the stream are checked for a
-   BOM mark. If found, the BOM mark is analysed, the byte order
-   adjusted and the BOM skipped.  In the other modes, no BOM mark
-   interpretation is done. After completion, *byteorder is set to the
-   current byte order at the end of input data.
-
-   If byteorder is NULL, the codec starts in native order mode.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF32(
-    const char *string,         /* UTF-32 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    int *byteorder              /* pointer to byteorder to use
-                                   0=native;-1=LE,1=BE; updated on
-                                   exit */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF32Stateful(
-    const char *string,         /* UTF-32 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    int *byteorder,             /* pointer to byteorder to use
-                                   0=native;-1=LE,1=BE; updated on
-                                   exit */
-    Py_ssize_t *consumed        /* bytes consumed */
-    );
-
-/* Returns a Python string using the UTF-32 encoding in native byte
-   order. The string always starts with a BOM mark.  */
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsUTF32String(
-    PyObject *unicode           /* Unicode object */
-    );
-
-/* Returns a Python string object holding the UTF-32 encoded value of
-   the Unicode data.
-
-   If byteorder is not 0, output is written according to the following
-   byte order:
-
-   byteorder == -1: little endian
-   byteorder == 0:  native byte order (writes a BOM mark)
-   byteorder == 1:  big endian
-
-   If byteorder is 0, the output string will always start with the
-   Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark is
-   prepended.
-
-*/
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF32(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,          /* number of Py_UNICODE chars to encode */
-    const char *errors,         /* error handling */
-    int byteorder               /* byteorder to use 0=BOM+native;-1=LE,1=BE */
-    ) Py_DEPRECATED(3.3);
-PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF32(
-    PyObject *object,           /* Unicode object */
-    const char *errors,         /* error handling */
-    int byteorder               /* byteorder to use 0=BOM+native;-1=LE,1=BE */
-    );
-#endif
-
-/* --- UTF-16 Codecs ------------------------------------------------------ */
-
-/* Decodes length bytes from a UTF-16 encoded buffer string and returns
-   the corresponding Unicode object.
-
-   errors (if non-NULL) defines the error handling. It defaults
-   to "strict".
-
-   If byteorder is non-NULL, the decoder starts decoding using the
-   given byte order:
-
-    *byteorder == -1: little endian
-    *byteorder == 0:  native order
-    *byteorder == 1:  big endian
-
-   In native mode, the first two bytes of the stream are checked for a
-   BOM mark. If found, the BOM mark is analysed, the byte order
-   adjusted and the BOM skipped.  In the other modes, no BOM mark
-   interpretation is done. After completion, *byteorder is set to the
-   current byte order at the end of input data.
-
-   If byteorder is NULL, the codec starts in native order mode.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF16(
-    const char *string,         /* UTF-16 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    int *byteorder              /* pointer to byteorder to use
-                                   0=native;-1=LE,1=BE; updated on
-                                   exit */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF16Stateful(
-    const char *string,         /* UTF-16 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    int *byteorder,             /* pointer to byteorder to use
-                                   0=native;-1=LE,1=BE; updated on
-                                   exit */
-    Py_ssize_t *consumed        /* bytes consumed */
-    );
-
-/* Returns a Python string using the UTF-16 encoding in native byte
-   order. The string always starts with a BOM mark.  */
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsUTF16String(
-    PyObject *unicode           /* Unicode object */
-    );
-
-/* Returns a Python string object holding the UTF-16 encoded value of
-   the Unicode data.
-
-   If byteorder is not 0, output is written according to the following
-   byte order:
-
-   byteorder == -1: little endian
-   byteorder == 0:  native byte order (writes a BOM mark)
-   byteorder == 1:  big endian
-
-   If byteorder is 0, the output string will always start with the
-   Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark is
-   prepended.
-
-   Note that Py_UNICODE data is being interpreted as UTF-16 reduced to
-   UCS-2. This trick makes it possible to add full UTF-16 capabilities
-   at a later point without compromising the APIs.
-
-*/
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,          /* number of Py_UNICODE chars to encode */
-    const char *errors,         /* error handling */
-    int byteorder               /* byteorder to use 0=BOM+native;-1=LE,1=BE */
-    ) Py_DEPRECATED(3.3);
-PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF16(
-    PyObject* unicode,          /* Unicode object */
-    const char *errors,         /* error handling */
-    int byteorder               /* byteorder to use 0=BOM+native;-1=LE,1=BE */
-    );
-#endif
-
-/* --- Unicode-Escape Codecs ---------------------------------------------- */
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUnicodeEscape(
-    const char *string,         /* Unicode-Escape encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors          /* error handling */
-    );
-
-#ifndef Py_LIMITED_API
-/* Helper for PyUnicode_DecodeUnicodeEscape that detects invalid escape
-   chars. */
-PyAPI_FUNC(PyObject*) _PyUnicode_DecodeUnicodeEscape(
-        const char *string,     /* Unicode-Escape encoded string */
-        Py_ssize_t length,      /* size of string */
-        const char *errors,     /* error handling */
-        const char **first_invalid_escape  /* on return, points to first
-                                              invalid escaped char in
-                                              string. */
-);
-#endif
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsUnicodeEscapeString(
-    PyObject *unicode           /* Unicode object */
-    );
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeUnicodeEscape(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length           /* Number of Py_UNICODE chars to encode */
-    ) Py_DEPRECATED(3.3);
-#endif
-
-/* --- Raw-Unicode-Escape Codecs ------------------------------------------ */
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeRawUnicodeEscape(
-    const char *string,         /* Raw-Unicode-Escape encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsRawUnicodeEscapeString(
-    PyObject *unicode           /* Unicode object */
-    );
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeRawUnicodeEscape(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length           /* Number of Py_UNICODE chars to encode */
-    ) Py_DEPRECATED(3.3);
-#endif
-
-/* --- Unicode Internal Codec ---------------------------------------------
-
-    Only for internal use in _codecsmodule.c */
-
-#ifndef Py_LIMITED_API
-PyObject *_PyUnicode_DecodeUnicodeInternal(
-    const char *string,
-    Py_ssize_t length,
-    const char *errors
-    );
-#endif
-
-/* --- Latin-1 Codecs -----------------------------------------------------
-
-   Note: Latin-1 corresponds to the first 256 Unicode ordinals.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeLatin1(
-    const char *string,         /* Latin-1 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsLatin1String(
-    PyObject *unicode           /* Unicode object */
-    );
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) _PyUnicode_AsLatin1String(
-    PyObject* unicode,
-    const char* errors);
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeLatin1(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,          /* Number of Py_UNICODE chars to encode */
-    const char *errors          /* error handling */
-    ) Py_DEPRECATED(3.3);
-#endif
-
-/* --- ASCII Codecs -------------------------------------------------------
-
-   Only 7-bit ASCII data is excepted. All other codes generate errors.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeASCII(
-    const char *string,         /* ASCII encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsASCIIString(
-    PyObject *unicode           /* Unicode object */
-    );
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) _PyUnicode_AsASCIIString(
-    PyObject* unicode,
-    const char* errors);
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeASCII(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,          /* Number of Py_UNICODE chars to encode */
-    const char *errors          /* error handling */
-    ) Py_DEPRECATED(3.3);
-#endif
-
-/* --- Character Map Codecs -----------------------------------------------
-
-   This codec uses mappings to encode and decode characters.
-
-   Decoding mappings must map byte ordinals (integers in the range from 0 to
-   255) to Unicode strings, integers (which are then interpreted as Unicode
-   ordinals) or None.  Unmapped data bytes (ones which cause a LookupError)
-   as well as mapped to None, 0xFFFE or '\ufffe' are treated as "undefined
-   mapping" and cause an error.
-
-   Encoding mappings must map Unicode ordinal integers to bytes objects,
-   integers in the range from 0 to 255 or None.  Unmapped character
-   ordinals (ones which cause a LookupError) as well as mapped to
-   None are treated as "undefined mapping" and cause an error.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeCharmap(
-    const char *string,         /* Encoded string */
-    Py_ssize_t length,          /* size of string */
-    PyObject *mapping,          /* decoding mapping */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsCharmapString(
-    PyObject *unicode,          /* Unicode object */
-    PyObject *mapping           /* encoding mapping */
-    );
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeCharmap(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,          /* Number of Py_UNICODE chars to encode */
-    PyObject *mapping,          /* encoding mapping */
-    const char *errors          /* error handling */
-    ) Py_DEPRECATED(3.3);
-PyAPI_FUNC(PyObject*) _PyUnicode_EncodeCharmap(
-    PyObject *unicode,          /* Unicode object */
-    PyObject *mapping,          /* encoding mapping */
-    const char *errors          /* error handling */
-    );
-#endif
-
-/* Translate a Py_UNICODE buffer of the given length by applying a
-   character mapping table to it and return the resulting Unicode
-   object.
-
-   The mapping table must map Unicode ordinal integers to Unicode strings,
-   Unicode ordinal integers or None (causing deletion of the character).
-
-   Mapping tables may be dictionaries or sequences. Unmapped character
-   ordinals (ones which cause a LookupError) are left untouched and
-   are copied as-is.
-
-*/
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) PyUnicode_TranslateCharmap(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,          /* Number of Py_UNICODE chars to encode */
-    PyObject *table,            /* Translate table */
-    const char *errors          /* error handling */
-    ) Py_DEPRECATED(3.3);
-#endif
-
-#ifdef MS_WINDOWS
-
-/* --- MBCS codecs for Windows -------------------------------------------- */
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeMBCS(
-    const char *string,         /* MBCS encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeMBCSStateful(
-    const char *string,         /* MBCS encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    Py_ssize_t *consumed        /* bytes consumed */
-    );
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeCodePageStateful(
-    int code_page,              /* code page number */
-    const char *string,         /* encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    Py_ssize_t *consumed        /* bytes consumed */
-    );
-#endif
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsMBCSString(
-    PyObject *unicode           /* Unicode object */
-    );
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeMBCS(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,          /* number of Py_UNICODE chars to encode */
-    const char *errors          /* error handling */
-    ) Py_DEPRECATED(3.3);
-#endif
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeCodePage(
-    int code_page,              /* code page number */
-    PyObject *unicode,          /* Unicode object */
-    const char *errors          /* error handling */
-    );
-#endif
-
-#endif /* MS_WINDOWS */
-
-#ifndef Py_LIMITED_API
-/* --- Decimal Encoder ---------------------------------------------------- */
-
-/* Takes a Unicode string holding a decimal value and writes it into
-   an output buffer using standard ASCII digit codes.
-
-   The output buffer has to provide at least length+1 bytes of storage
-   area. The output string is 0-terminated.
-
-   The encoder converts whitespace to ' ', decimal characters to their
-   corresponding ASCII digit and all other Latin-1 characters except
-   \0 as-is. Characters outside this range (Unicode ordinals 1-256)
-   are treated as errors. This includes embedded NULL bytes.
-
-   Error handling is defined by the errors argument:
-
-      NULL or "strict": raise a ValueError
-      "ignore": ignore the wrong characters (these are not copied to the
-                output buffer)
-      "replace": replaces illegal characters with '?'
-
-   Returns 0 on success, -1 on failure.
-
-*/
-
-PyAPI_FUNC(int) PyUnicode_EncodeDecimal(
-    Py_UNICODE *s,              /* Unicode buffer */
-    Py_ssize_t length,          /* Number of Py_UNICODE chars to encode */
-    char *output,               /* Output buffer; must have size >= length */
-    const char *errors          /* error handling */
-    ) /* Py_DEPRECATED(3.3) */;
-
-/* Transforms code points that have decimal digit property to the
-   corresponding ASCII digit code points.
-
-   Returns a new Unicode string on success, NULL on failure.
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_TransformDecimalToASCII(
-    Py_UNICODE *s,              /* Unicode buffer */
-    Py_ssize_t length           /* Number of Py_UNICODE chars to transform */
-    ) /* Py_DEPRECATED(3.3) */;
-
-/* Coverts a Unicode object holding a decimal value to an ASCII string
-   for using in int, float and complex parsers.
-   Transforms code points that have decimal digit property to the
-   corresponding ASCII digit code points.  Transforms spaces to ASCII.
-   Transforms code points starting from the first non-ASCII code point that
-   is neither a decimal digit nor a space to the end into '?'. */
-
-PyAPI_FUNC(PyObject*) _PyUnicode_TransformDecimalAndSpaceToASCII(
-    PyObject *unicode           /* Unicode object */
-    );
-#endif
-
-/* --- Locale encoding --------------------------------------------------- */
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-/* Decode a string from the current locale encoding. The decoder is strict if
-   *surrogateescape* is equal to zero, otherwise it uses the 'surrogateescape'
-   error handler (PEP 383) to escape undecodable bytes. If a byte sequence can
-   be decoded as a surrogate character and *surrogateescape* is not equal to
-   zero, the byte sequence is escaped using the 'surrogateescape' error handler
-   instead of being decoded. *str* must end with a null character but cannot
-   contain embedded null characters. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeLocaleAndSize(
-    const char *str,
-    Py_ssize_t len,
-    const char *errors);
-
-/* Similar to PyUnicode_DecodeLocaleAndSize(), but compute the string
-   length using strlen(). */
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeLocale(
-    const char *str,
-    const char *errors);
-
-/* Encode a Unicode object to the current locale encoding. The encoder is
-   strict is *surrogateescape* is equal to zero, otherwise the
-   "surrogateescape" error handler is used. Return a bytes object. The string
-   cannot contain embedded null characters. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeLocale(
-    PyObject *unicode,
-    const char *errors
-    );
-#endif
-
-/* --- File system encoding ---------------------------------------------- */
-
-/* ParseTuple converter: encode str objects to bytes using
-   PyUnicode_EncodeFSDefault(); bytes objects are output as-is. */
-
-PyAPI_FUNC(int) PyUnicode_FSConverter(PyObject*, void*);
-
-/* ParseTuple converter: decode bytes objects to unicode using
-   PyUnicode_DecodeFSDefaultAndSize(); str objects are output as-is. */
-
-PyAPI_FUNC(int) PyUnicode_FSDecoder(PyObject*, void*);
-
-/* Decode a null-terminated string using Py_FileSystemDefaultEncoding
-   and the "surrogateescape" error handler.
-
-   If Py_FileSystemDefaultEncoding is not set, fall back to the locale
-   encoding.
-
-   Use PyUnicode_DecodeFSDefaultAndSize() if the string length is known.
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeFSDefault(
-    const char *s               /* encoded string */
-    );
-
-/* Decode a string using Py_FileSystemDefaultEncoding
-   and the "surrogateescape" error handler.
-
-   If Py_FileSystemDefaultEncoding is not set, fall back to the locale
-   encoding.
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeFSDefaultAndSize(
-    const char *s,               /* encoded string */
-    Py_ssize_t size              /* size */
-    );
-
-/* Encode a Unicode object to Py_FileSystemDefaultEncoding with the
-   "surrogateescape" error handler, and return bytes.
-
-   If Py_FileSystemDefaultEncoding is not set, fall back to the locale
-   encoding.
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeFSDefault(
-    PyObject *unicode
-    );
-
-/* --- Methods & Slots ----------------------------------------------------
-
-   These are capable of handling Unicode objects and strings on input
-   (we refer to them as strings in the descriptions) and return
-   Unicode objects or integers as appropriate. */
-
-/* Concat two strings giving a new Unicode string. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_Concat(
-    PyObject *left,             /* Left string */
-    PyObject *right             /* Right string */
-    );
-
-/* Concat two strings and put the result in *pleft
-   (sets *pleft to NULL on error) */
-
-PyAPI_FUNC(void) PyUnicode_Append(
-    PyObject **pleft,           /* Pointer to left string */
-    PyObject *right             /* Right string */
-    );
-
-/* Concat two strings, put the result in *pleft and drop the right object
-   (sets *pleft to NULL on error) */
-
-PyAPI_FUNC(void) PyUnicode_AppendAndDel(
-    PyObject **pleft,           /* Pointer to left string */
-    PyObject *right             /* Right string */
-    );
-
-/* Split a string giving a list of Unicode strings.
-
-   If sep is NULL, splitting will be done at all whitespace
-   substrings. Otherwise, splits occur at the given separator.
-
-   At most maxsplit splits will be done. If negative, no limit is set.
-
-   Separators are not included in the resulting list.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_Split(
-    PyObject *s,                /* String to split */
-    PyObject *sep,              /* String separator */
-    Py_ssize_t maxsplit         /* Maxsplit count */
-    );
-
-/* Dito, but split at line breaks.
-
-   CRLF is considered to be one line break. Line breaks are not
-   included in the resulting list. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_Splitlines(
-    PyObject *s,                /* String to split */
-    int keepends                /* If true, line end markers are included */
-    );
-
-/* Partition a string using a given separator. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_Partition(
-    PyObject *s,                /* String to partition */
-    PyObject *sep               /* String separator */
-    );
-
-/* Partition a string using a given separator, searching from the end of the
-   string. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_RPartition(
-    PyObject *s,                /* String to partition */
-    PyObject *sep               /* String separator */
-    );
-
-/* Split a string giving a list of Unicode strings.
-
-   If sep is NULL, splitting will be done at all whitespace
-   substrings. Otherwise, splits occur at the given separator.
-
-   At most maxsplit splits will be done. But unlike PyUnicode_Split
-   PyUnicode_RSplit splits from the end of the string. If negative,
-   no limit is set.
-
-   Separators are not included in the resulting list.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_RSplit(
-    PyObject *s,                /* String to split */
-    PyObject *sep,              /* String separator */
-    Py_ssize_t maxsplit         /* Maxsplit count */
-    );
-
-/* Translate a string by applying a character mapping table to it and
-   return the resulting Unicode object.
-
-   The mapping table must map Unicode ordinal integers to Unicode strings,
-   Unicode ordinal integers or None (causing deletion of the character).
-
-   Mapping tables may be dictionaries or sequences. Unmapped character
-   ordinals (ones which cause a LookupError) are left untouched and
-   are copied as-is.
-
-*/
-
-PyAPI_FUNC(PyObject *) PyUnicode_Translate(
-    PyObject *str,              /* String */
-    PyObject *table,            /* Translate table */
-    const char *errors          /* error handling */
-    );
-
-/* Join a sequence of strings using the given separator and return
-   the resulting Unicode string. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_Join(
-    PyObject *separator,        /* Separator string */
-    PyObject *seq               /* Sequence object */
-    );
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject *) _PyUnicode_JoinArray(
-    PyObject *separator,
-    PyObject *const *items,
-    Py_ssize_t seqlen
-    );
-#endif /* Py_LIMITED_API */
-
-/* Return 1 if substr matches str[start:end] at the given tail end, 0
-   otherwise. */
-
-PyAPI_FUNC(Py_ssize_t) PyUnicode_Tailmatch(
-    PyObject *str,              /* String */
-    PyObject *substr,           /* Prefix or Suffix string */
-    Py_ssize_t start,           /* Start index */
-    Py_ssize_t end,             /* Stop index */
-    int direction               /* Tail end: -1 prefix, +1 suffix */
-    );
-
-/* Return the first position of substr in str[start:end] using the
-   given search direction or -1 if not found. -2 is returned in case
-   an error occurred and an exception is set. */
-
-PyAPI_FUNC(Py_ssize_t) PyUnicode_Find(
-    PyObject *str,              /* String */
-    PyObject *substr,           /* Substring to find */
-    Py_ssize_t start,           /* Start index */
-    Py_ssize_t end,             /* Stop index */
-    int direction               /* Find direction: +1 forward, -1 backward */
-    );
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
-/* Like PyUnicode_Find, but search for single character only. */
-PyAPI_FUNC(Py_ssize_t) PyUnicode_FindChar(
-    PyObject *str,
-    Py_UCS4 ch,
-    Py_ssize_t start,
-    Py_ssize_t end,
-    int direction
-    );
-#endif
-
-/* Count the number of occurrences of substr in str[start:end]. */
-
-PyAPI_FUNC(Py_ssize_t) PyUnicode_Count(
-    PyObject *str,              /* String */
-    PyObject *substr,           /* Substring to count */
-    Py_ssize_t start,           /* Start index */
-    Py_ssize_t end              /* Stop index */
-    );
-
-/* Replace at most maxcount occurrences of substr in str with replstr
-   and return the resulting Unicode object. */
-
-PyAPI_FUNC(PyObject *) PyUnicode_Replace(
-    PyObject *str,              /* String */
-    PyObject *substr,           /* Substring to find */
-    PyObject *replstr,          /* Substring to replace */
-    Py_ssize_t maxcount         /* Max. number of replacements to apply;
-                                   -1 = all */
-    );
-
-/* Compare two strings and return -1, 0, 1 for less than, equal,
-   greater than resp.
-   Raise an exception and return -1 on error. */
-
-PyAPI_FUNC(int) PyUnicode_Compare(
-    PyObject *left,             /* Left string */
-    PyObject *right             /* Right string */
-    );
-
-#ifndef Py_LIMITED_API
-/* Test whether a unicode is equal to ASCII identifier.  Return 1 if true,
-   0 otherwise.  The right argument must be ASCII identifier.
-   Any error occurs inside will be cleared before return. */
-
-PyAPI_FUNC(int) _PyUnicode_EqualToASCIIId(
-    PyObject *left,             /* Left string */
-    _Py_Identifier *right       /* Right identifier */
-    );
-#endif
-
-/* Compare a Unicode object with C string and return -1, 0, 1 for less than,
-   equal, and greater than, respectively.  It is best to pass only
-   ASCII-encoded strings, but the function interprets the input string as
-   ISO-8859-1 if it contains non-ASCII characters.
-   This function does not raise exceptions. */
-
-PyAPI_FUNC(int) PyUnicode_CompareWithASCIIString(
-    PyObject *left,
-    const char *right           /* ASCII-encoded string */
-    );
-
-#ifndef Py_LIMITED_API
-/* Test whether a unicode is equal to ASCII string.  Return 1 if true,
-   0 otherwise.  The right argument must be ASCII-encoded string.
-   Any error occurs inside will be cleared before return. */
-
-PyAPI_FUNC(int) _PyUnicode_EqualToASCIIString(
-    PyObject *left,
-    const char *right           /* ASCII-encoded string */
-    );
-#endif
-
-/* Rich compare two strings and return one of the following:
-
-   - NULL in case an exception was raised
-   - Py_True or Py_False for successful comparisons
-   - Py_NotImplemented in case the type combination is unknown
-
-   Possible values for op:
-
-     Py_GT, Py_GE, Py_EQ, Py_NE, Py_LT, Py_LE
-
-*/
-
-PyAPI_FUNC(PyObject *) PyUnicode_RichCompare(
-    PyObject *left,             /* Left string */
-    PyObject *right,            /* Right string */
-    int op                      /* Operation: Py_EQ, Py_NE, Py_GT, etc. */
-    );
-
-/* Apply an argument tuple or dictionary to a format string and return
-   the resulting Unicode string. */
-
-PyAPI_FUNC(PyObject *) PyUnicode_Format(
-    PyObject *format,           /* Format string */
-    PyObject *args              /* Argument tuple or dictionary */
-    );
-
-/* Checks whether element is contained in container and return 1/0
-   accordingly.
-
-   element has to coerce to a one element Unicode string. -1 is
-   returned in case of an error. */
-
-PyAPI_FUNC(int) PyUnicode_Contains(
-    PyObject *container,        /* Container string */
-    PyObject *element           /* Element string */
-    );
-
-/* Checks whether argument is a valid identifier. */
-
-PyAPI_FUNC(int) PyUnicode_IsIdentifier(PyObject *s);
-
-#ifndef Py_LIMITED_API
-/* Externally visible for str.strip(unicode) */
-PyAPI_FUNC(PyObject *) _PyUnicode_XStrip(
-    PyObject *self,
-    int striptype,
-    PyObject *sepobj
-    );
-#endif
-
-/* Using explicit passed-in values, insert the thousands grouping
-   into the string pointed to by buffer.  For the argument descriptions,
-   see Objects/stringlib/localeutil.h */
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(Py_ssize_t) _PyUnicode_InsertThousandsGrouping(
-    _PyUnicodeWriter *writer,
-    Py_ssize_t n_buffer,
-    PyObject *digits,
-    Py_ssize_t d_pos,
-    Py_ssize_t n_digits,
-    Py_ssize_t min_width,
-    const char *grouping,
-    PyObject *thousands_sep,
-    Py_UCS4 *maxchar);
-#endif
-/* === Characters Type APIs =============================================== */
-
-/* Helper array used by Py_UNICODE_ISSPACE(). */
-
-#ifndef Py_LIMITED_API
-PyAPI_DATA(const unsigned char) _Py_ascii_whitespace[];
-
-/* These should not be used directly. Use the Py_UNICODE_IS* and
-   Py_UNICODE_TO* macros instead.
-
-   These APIs are implemented in Objects/unicodectype.c.
-
-*/
-
-PyAPI_FUNC(int) _PyUnicode_IsLowercase(
-    Py_UCS4 ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsUppercase(
-    Py_UCS4 ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsTitlecase(
-    Py_UCS4 ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsXidStart(
-    Py_UCS4 ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsXidContinue(
-    Py_UCS4 ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsWhitespace(
-    const Py_UCS4 ch         /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsLinebreak(
-    const Py_UCS4 ch         /* Unicode character */
-    );
-
-PyAPI_FUNC(Py_UCS4) _PyUnicode_ToLowercase(
-    Py_UCS4 ch       /* Unicode character */
-    ) /* Py_DEPRECATED(3.3) */;
-
-PyAPI_FUNC(Py_UCS4) _PyUnicode_ToUppercase(
-    Py_UCS4 ch       /* Unicode character */
-    ) /* Py_DEPRECATED(3.3) */;
-
-PyAPI_FUNC(Py_UCS4) _PyUnicode_ToTitlecase(
-    Py_UCS4 ch       /* Unicode character */
-    ) Py_DEPRECATED(3.3);
-
-PyAPI_FUNC(int) _PyUnicode_ToLowerFull(
-    Py_UCS4 ch,       /* Unicode character */
-    Py_UCS4 *res
-    );
-
-PyAPI_FUNC(int) _PyUnicode_ToTitleFull(
-    Py_UCS4 ch,       /* Unicode character */
-    Py_UCS4 *res
-    );
-
-PyAPI_FUNC(int) _PyUnicode_ToUpperFull(
-    Py_UCS4 ch,       /* Unicode character */
-    Py_UCS4 *res
-    );
-
-PyAPI_FUNC(int) _PyUnicode_ToFoldedFull(
-    Py_UCS4 ch,       /* Unicode character */
-    Py_UCS4 *res
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsCaseIgnorable(
-    Py_UCS4 ch         /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsCased(
-    Py_UCS4 ch         /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_ToDecimalDigit(
-    Py_UCS4 ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_ToDigit(
-    Py_UCS4 ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(double) _PyUnicode_ToNumeric(
-    Py_UCS4 ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsDecimalDigit(
-    Py_UCS4 ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsDigit(
-    Py_UCS4 ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsNumeric(
-    Py_UCS4 ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsPrintable(
-    Py_UCS4 ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsAlpha(
-    Py_UCS4 ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(size_t) Py_UNICODE_strlen(
-    const Py_UNICODE *u
-    ) Py_DEPRECATED(3.3);
-
-PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strcpy(
-    Py_UNICODE *s1,
-    const Py_UNICODE *s2) Py_DEPRECATED(3.3);
-
-PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strcat(
-    Py_UNICODE *s1, const Py_UNICODE *s2) Py_DEPRECATED(3.3);
-
-PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strncpy(
-    Py_UNICODE *s1,
-    const Py_UNICODE *s2,
-    size_t n) Py_DEPRECATED(3.3);
-
-PyAPI_FUNC(int) Py_UNICODE_strcmp(
-    const Py_UNICODE *s1,
-    const Py_UNICODE *s2
-    ) Py_DEPRECATED(3.3);
-
-PyAPI_FUNC(int) Py_UNICODE_strncmp(
-    const Py_UNICODE *s1,
-    const Py_UNICODE *s2,
-    size_t n
-    ) Py_DEPRECATED(3.3);
-
-PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strchr(
-    const Py_UNICODE *s,
-    Py_UNICODE c
-    ) Py_DEPRECATED(3.3);
-
-PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strrchr(
-    const Py_UNICODE *s,
-    Py_UNICODE c
-    ) Py_DEPRECATED(3.3);
-
-PyAPI_FUNC(PyObject*) _PyUnicode_FormatLong(PyObject *, int, int, int);
-
-/* Create a copy of a unicode string ending with a nul character. Return NULL
-   and raise a MemoryError exception on memory allocation failure, otherwise
-   return a new allocated buffer (use PyMem_Free() to free the buffer). */
-
-PyAPI_FUNC(Py_UNICODE*) PyUnicode_AsUnicodeCopy(
-    PyObject *unicode
-    ) Py_DEPRECATED(3.3);
-#endif /* Py_LIMITED_API */
-
-#if defined(Py_DEBUG) && !defined(Py_LIMITED_API)
-PyAPI_FUNC(int) _PyUnicode_CheckConsistency(
-    PyObject *op,
-    int check_content);
-#elif !defined(NDEBUG)
-/* For asserts that call _PyUnicode_CheckConsistency(), which would
- * otherwise be a problem when building with asserts but without Py_DEBUG. */
-#define _PyUnicode_CheckConsistency(op, check_content) PyUnicode_Check(op)
-#endif
-
-#ifndef Py_LIMITED_API
-/* Return an interned Unicode object for an Identifier; may fail if there is no memory.*/
-PyAPI_FUNC(PyObject*) _PyUnicode_FromId(_Py_Identifier*);
-/* Clear all static strings. */
-PyAPI_FUNC(void) _PyUnicode_ClearStaticStrings(void);
-
-/* Fast equality check when the inputs are known to be exact unicode types
-   and where the hash values are equal (i.e. a very probable match) */
-PyAPI_FUNC(int) _PyUnicode_EQ(PyObject *, PyObject *);
-#endif /* !Py_LIMITED_API */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_UNICODEOBJECT_H */
diff --git a/pythonsdk/include/warnings.h b/pythonsdk/include/warnings.h
deleted file mode 100644
index a1ec425..0000000
--- a/pythonsdk/include/warnings.h
+++ /dev/null
@@ -1,67 +0,0 @@
-#ifndef Py_WARNINGS_H
-#define Py_WARNINGS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(PyObject*) _PyWarnings_Init(void);
-#endif
-
-PyAPI_FUNC(int) PyErr_WarnEx(
-    PyObject *category,
-    const char *message,        /* UTF-8 encoded string */
-    Py_ssize_t stack_level);
-PyAPI_FUNC(int) PyErr_WarnFormat(
-    PyObject *category,
-    Py_ssize_t stack_level,
-    const char *format,         /* ASCII-encoded string  */
-    ...);
-
-#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000
-/* Emit a ResourceWarning warning */
-PyAPI_FUNC(int) PyErr_ResourceWarning(
-    PyObject *source,
-    Py_ssize_t stack_level,
-    const char *format,         /* ASCII-encoded string  */
-    ...);
-#endif
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int) PyErr_WarnExplicitObject(
-    PyObject *category,
-    PyObject *message,
-    PyObject *filename,
-    int lineno,
-    PyObject *module,
-    PyObject *registry);
-#endif
-PyAPI_FUNC(int) PyErr_WarnExplicit(
-    PyObject *category,
-    const char *message,        /* UTF-8 encoded string */
-    const char *filename,       /* decoded from the filesystem encoding */
-    int lineno,
-    const char *module,         /* UTF-8 encoded string */
-    PyObject *registry);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(int)
-PyErr_WarnExplicitFormat(PyObject *category,
-                         const char *filename, int lineno,
-                         const char *module, PyObject *registry,
-                         const char *format, ...);
-#endif
-
-/* DEPRECATED: Use PyErr_WarnEx() instead. */
-#ifndef Py_LIMITED_API
-#define PyErr_Warn(category, msg) PyErr_WarnEx(category, msg, 1)
-#endif
-
-#ifndef Py_LIMITED_API
-void _PyErr_WarnUnawaitedCoroutine(PyObject *coro);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_WARNINGS_H */
-
diff --git a/pythonsdk/include/weakrefobject.h b/pythonsdk/include/weakrefobject.h
deleted file mode 100644
index 87acf95..0000000
--- a/pythonsdk/include/weakrefobject.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Weak references objects for Python. */
-
-#ifndef Py_WEAKREFOBJECT_H
-#define Py_WEAKREFOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-typedef struct _PyWeakReference PyWeakReference;
-
-/* PyWeakReference is the base struct for the Python ReferenceType, ProxyType,
- * and CallableProxyType.
- */
-#ifndef Py_LIMITED_API
-struct _PyWeakReference {
-    PyObject_HEAD
-
-    /* The object to which this is a weak reference, or Py_None if none.
-     * Note that this is a stealth reference:  wr_object's refcount is
-     * not incremented to reflect this pointer.
-     */
-    PyObject *wr_object;
-
-    /* A callable to invoke when wr_object dies, or NULL if none. */
-    PyObject *wr_callback;
-
-    /* A cache for wr_object's hash code.  As usual for hashes, this is -1
-     * if the hash code isn't known yet.
-     */
-    Py_hash_t hash;
-
-    /* If wr_object is weakly referenced, wr_object has a doubly-linked NULL-
-     * terminated list of weak references to it.  These are the list pointers.
-     * If wr_object goes away, wr_object is set to Py_None, and these pointers
-     * have no meaning then.
-     */
-    PyWeakReference *wr_prev;
-    PyWeakReference *wr_next;
-};
-#endif
-
-PyAPI_DATA(PyTypeObject) _PyWeakref_RefType;
-PyAPI_DATA(PyTypeObject) _PyWeakref_ProxyType;
-PyAPI_DATA(PyTypeObject) _PyWeakref_CallableProxyType;
-
-#define PyWeakref_CheckRef(op) PyObject_TypeCheck(op, &_PyWeakref_RefType)
-#define PyWeakref_CheckRefExact(op) \
-        (Py_TYPE(op) == &_PyWeakref_RefType)
-#define PyWeakref_CheckProxy(op) \
-        ((Py_TYPE(op) == &_PyWeakref_ProxyType) || \
-         (Py_TYPE(op) == &_PyWeakref_CallableProxyType))
-
-#define PyWeakref_Check(op) \
-        (PyWeakref_CheckRef(op) || PyWeakref_CheckProxy(op))
-
-
-PyAPI_FUNC(PyObject *) PyWeakref_NewRef(PyObject *ob,
-                                              PyObject *callback);
-PyAPI_FUNC(PyObject *) PyWeakref_NewProxy(PyObject *ob,
-                                                PyObject *callback);
-PyAPI_FUNC(PyObject *) PyWeakref_GetObject(PyObject *ref);
-
-#ifndef Py_LIMITED_API
-PyAPI_FUNC(Py_ssize_t) _PyWeakref_GetWeakrefCount(PyWeakReference *head);
-
-PyAPI_FUNC(void) _PyWeakref_ClearRef(PyWeakReference *self);
-#endif
-
-/* Explanation for the Py_REFCNT() check: when a weakref's target is part
-   of a long chain of deallocations which triggers the trashcan mechanism,
-   clearing the weakrefs can be delayed long after the target's refcount
-   has dropped to zero.  In the meantime, code accessing the weakref will
-   be able to "see" the target object even though it is supposed to be
-   unreachable.  See issue #16602. */
-
-#define PyWeakref_GET_OBJECT(ref)                           \
-    (Py_REFCNT(((PyWeakReference *)(ref))->wr_object) > 0   \
-     ? ((PyWeakReference *)(ref))->wr_object                \
-     : Py_None)
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_WEAKREFOBJECT_H */
diff --git a/pythonsdk/libs/libpython37.a b/pythonsdk/libs/libpython37.a
deleted file mode 100644
index dabc65697caa7016ae61801c2bfc5310a6a3a06b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1232690
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%0Aw}&aDimw`-9~VX+0cXb<AWXQ?`4
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
Gnf`w&HDVzE

diff --git a/pythonsdk/libs/python3.lib b/pythonsdk/libs/python3.lib
deleted file mode 100644
index c0bca487269aec9a80ea651a6945d0cc00ae0c8a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 170564
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
Ky%gb!EB^-_Uo)2g

diff --git a/pythonsdk/libs/python37.lib b/pythonsdk/libs/python37.lib
deleted file mode 100644
index 535fea812146aa5e5af1e9f3b2089b0019c0f1e7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 342420
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

diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index fb4dcd6..0000000
--- a/requirements.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-adao
-openturns
-OWSLib
-jupyter
-zipp
-ipython
-ipywidgets
-mpi4py
-pyproj
-folium
-pandas
-numpy
-scipy
-kiwisolver
-matplotlib
-pandas
-alphashape
-openpyxl
-pylint
-doxypypy
-pyqt5
diff --git a/wheels/Fiona-1.8.21-cp310-cp310-win_amd64.whl b/wheels/Fiona-1.8.21-cp310-cp310-win_amd64.whl
new file mode 100644
index 0000000..2871079
--- /dev/null
+++ b/wheels/Fiona-1.8.21-cp310-cp310-win_amd64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:20cb819eef56c57f356cce4fea3b0384da956aab20beed4b2826b73acf1a04b5
+size 540558
diff --git a/wheels/Fiona-1.8.21-cp37-cp37m-win_amd64.whl b/wheels/Fiona-1.8.21-cp37-cp37m-win_amd64.whl
deleted file mode 100644
index 51eb5b2..0000000
--- a/wheels/Fiona-1.8.21-cp37-cp37m-win_amd64.whl
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b0dcebaf5f68da5a95f4fed98857a11b2de9bc88aaabd333a4b717b35dfbe415
-size 532168
diff --git a/wheels/GDAL-3.4.2-cp37-cp37m-win_amd64.whl b/wheels/GDAL-3.4.2-cp37-cp37m-win_amd64.whl
deleted file mode 100644
index 794c56f..0000000
--- a/wheels/GDAL-3.4.2-cp37-cp37m-win_amd64.whl
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f85da79cdf1f7f9e20a3cc9c66d68dc72fc6a6eeb389b0661257fe8a4965ed24
-size 25616046
diff --git a/wheels/GDAL-3.4.3-cp310-cp310-win_amd64.whl b/wheels/GDAL-3.4.3-cp310-cp310-win_amd64.whl
new file mode 100644
index 0000000..7bf8778
--- /dev/null
+++ b/wheels/GDAL-3.4.3-cp310-cp310-win_amd64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9893da5532a6c5dadc1fc3bc402ae29d161b7cf190d778f129da84d0e50baa29
+size 25754978
diff --git a/wheels/Shapely-1.8.1.post1-cp37-cp37m-win_amd64.whl b/wheels/Shapely-1.8.1.post1-cp37-cp37m-win_amd64.whl
deleted file mode 100644
index 545605b..0000000
--- a/wheels/Shapely-1.8.1.post1-cp37-cp37m-win_amd64.whl
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1a7b1e9695cc44fd1c590980e4615735bd117827b9c4572b0166c6aae344def6
-size 984994
diff --git a/wheels/Shapely-1.8.2-cp310-cp310-win_amd64.whl b/wheels/Shapely-1.8.2-cp310-cp310-win_amd64.whl
new file mode 100644
index 0000000..5f57e66
--- /dev/null
+++ b/wheels/Shapely-1.8.2-cp310-cp310-win_amd64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b2e5d9af166ab78d9b6abfb2659a41b28af2999f57e8afd878bf8686f6a20b78
+size 988260
diff --git a/wheels/rasterio-1.2.10-cp310-cp310-win_amd64.whl b/wheels/rasterio-1.2.10-cp310-cp310-win_amd64.whl
new file mode 100644
index 0000000..b9d13ea
--- /dev/null
+++ b/wheels/rasterio-1.2.10-cp310-cp310-win_amd64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5631b57d5f45646bdbfb8b43f84ec7aba67ca30983781f26e430251dfad89e7f
+size 1193598
diff --git a/wheels/rasterio-1.2.10-cp37-cp37m-win_amd64.whl b/wheels/rasterio-1.2.10-cp37-cp37m-win_amd64.whl
deleted file mode 100644
index 5ad52d1..0000000
--- a/wheels/rasterio-1.2.10-cp37-cp37m-win_amd64.whl
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:820e8701231c4e426fa29df964b75c1d8d076ec03f31b57667f385a7aca45f65
-size 1139006
-- 
GitLab