From 9348e93ca1987737b1defbea21f9110a8bc5a983 Mon Sep 17 00:00:00 2001 From: Ben Frederickson Date: Fri, 17 Nov 2023 11:13:27 -0800 Subject: [PATCH 01/27] Fix FreeBSD CI (#639) Fix freebsd ci issues, as mentioned in https://github.com/rbspy/freebsd-vagrant-box/issues/1 --- .github/workflows/build.yml | 38 +++++++++++++++++++------------------ ci/Vagrantfile | 27 ++++++++++++++++---------- ci/test_freebsd.sh | 11 +++++++---- 3 files changed, 44 insertions(+), 32 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 72a459ba..77fe875e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -118,46 +118,48 @@ jobs: path: dist build-freebsd: - runs-on: macos-latest + runs-on: ubuntu-22.04 needs: [lint] timeout-minutes: 30 strategy: matrix: - include: - - box: fbsd_13_1 - release: FreeBSD-13.1-STABLE - url: https://github.com/rbspy/freebsd-vagrant-box/releases/download/20221112/fbsd_13_1.box + box: + - freebsd-14 steps: - uses: actions/checkout@v3 - name: Cache Vagrant box uses: actions/cache@v3.0.4 with: - path: ~/.vagrant.d - key: ${{ matrix.box }}-vagrant-boxes-20221112-${{ hashFiles('ci/Vagrantfile') }} + path: .vagrant.d + key: ${{ matrix.box }}-vagrant-boxes-20231115-${{ hashFiles('ci/Vagrantfile') }} restore-keys: | - ${{ matrix.box }}-vagrant-boxes-20221112- + ${{ matrix.box }}-vagrant-boxes-20231115- - name: Cache Cargo and build artifacts uses: actions/cache@v3.0.4 with: path: build-artifacts.tar - key: ${{ matrix.box }}-cargo-20221112-${{ hashFiles('**/Cargo.lock') }} + key: ${{ matrix.box }}-cargo-20231115-${{ hashFiles('**/Cargo.lock') }} restore-keys: | - ${{ matrix.box }}-cargo-20221112- + ${{ matrix.box }}-cargo-20231115- + - name: Display CPU info + run: lscpu + - name: Install VM tools + run: | + sudo apt-get install -qq -o=Dpkg::Use-Pty=0 moreutils + sudo chronic apt-get install -qq -o=Dpkg::Use-Pty=0 vagrant virtualbox qemu libvirt-daemon-system - name: Set up VM + shell: sudo bash {0} run: | - brew install vagrant - vagrant plugin install vagrant-vbguest + vagrant plugin install vagrant-libvirt vagrant plugin install vagrant-scp - ln -sf ci/Vagrantfile Vagrantfile - - if [ ! -d ~/.vagrant.d/boxes/rbspy-VAGRANTSLASH-${{ matrix.release }} ]; then - vagrant box add --no-tty rbspy/${{ matrix.release }} ${{ matrix.url }} - fi - vagrant up ${{ matrix.box }} + vagrant status + vagrant up --no-tty --provider libvirt ${{ matrix.box }} - name: Build and test + shell: sudo bash {0} run: vagrant ssh ${{ matrix.box }} -- bash /vagrant/ci/test_freebsd.sh - name: Retrieve build artifacts for caching purposes + shell: sudo bash {0} run: | vagrant scp ${{ matrix.box }}:/vagrant/build-artifacts.tar build-artifacts.tar ls -ahl build-artifacts.tar diff --git a/ci/Vagrantfile b/ci/Vagrantfile index d88c4ba1..c22b36ac 100644 --- a/ci/Vagrantfile +++ b/ci/Vagrantfile @@ -1,20 +1,27 @@ Vagrant.configure("2") do |config| - config.vm.define "fbsd_12_2" do |fbsd_12_2| - fbsd_12_2.vm.box = "rbspy/FreeBSD-12.2-STABLE" + config.vm.define "freebsd-14" do |c| + c.vm.box = "roboxes/freebsd14" end - config.vm.define "fbsd_13_1" do |c| - c.vm.box = "rbspy/FreeBSD-13.1-STABLE" + + config.vm.boot_timeout = 600 + + config.vm.provider "libvirt" do |qe| + # https://vagrant-libvirt.github.io/vagrant-libvirt/configuration.html + qe.driver = "kvm" + qe.cpus = 3 + qe.memory = 8192 end config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: [".git", ".vagrant.d"] config.vm.provision "shell", inline: <<~SHELL - pkg install -y python devel/llvm11 + set -e + pkg install -y curl bash python llvm + chsh -s /usr/local/bin/bash vagrant + pw groupmod wheel -m vagrant + su -l vagrant <<'EOF' + curl https://sh.rustup.rs -sSf | sh -s -- -y --profile minimal --default-toolchain 1.73.0 + EOF SHELL - - config.vm.provider "virtualbox" do |v| - v.memory = 4096 - v.cpus = 2 - end end diff --git a/ci/test_freebsd.sh b/ci/test_freebsd.sh index 556cf5ea..5eff807c 100755 --- a/ci/test_freebsd.sh +++ b/ci/test_freebsd.sh @@ -1,18 +1,16 @@ #!/usr/bin/env bash -source ~/.bash_profile +source "$HOME/.cargo/env" set -e python --version cargo --version -export CARGO_HOME="/vagrant/.cargo" -mkdir -p $CARGO_HOME - cd /vagrant if [ -f build-artifacts.tar ]; then + echo "Unpacking cached build artifacts..." tar xf build-artifacts.tar rm -f build-artifacts.tar fi @@ -20,4 +18,9 @@ fi cargo build --release --workspace --all-targets cargo test --release +set +e tar cf build-artifacts.tar target +tar rf build-artifacts.tar "$HOME/.cargo/git" +tar rf build-artifacts.tar "$HOME/.cargo/registry" + +exit 0 From 2f8cfdd6d62ad3031377ec13f8dbf966fad697e4 Mon Sep 17 00:00:00 2001 From: Kai Fricke Date: Fri, 17 Nov 2023 21:22:52 +0000 Subject: [PATCH 02/27] Fix Python 3.11 native sampling (#635) In Python 3.11, merging native frames works a bit differently. We have to detect if a frame is an "entry frame". Once we hit a native frame that corresponds to python, we need to keep merging python frames until we hit the entry frame. Co-authored-by: Ben Frederickson Co-authored-by: Ben Frederickson --- src/main.rs | 1 + src/native_stack_trace.rs | 13 ++++++++++++- src/python_interpreters.rs | 7 +++++++ src/speedscope.rs | 1 + src/stack_trace.rs | 6 ++++++ 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index d2745c79..f965cc71 100644 --- a/src/main.rs +++ b/src/main.rs @@ -284,6 +284,7 @@ fn record_samples(pid: remoteprocess::Pid, config: &Config) -> Result<(), Error> short_filename: None, line: 0, locals: None, + is_entry: true, }); } diff --git a/src/native_stack_trace.rs b/src/native_stack_trace.rs index 0e2e1af9..ba7e6c64 100644 --- a/src/native_stack_trace.rs +++ b/src/native_stack_trace.rs @@ -93,8 +93,16 @@ impl NativeStack { // if we have a corresponding python frame for the evalframe // merge it into the stack. (if we're out of bounds a later // check will pick up - and report overall totals mismatch) - if python_frame_index < frames.len() { + + // Merge all python frames until we hit one with `is_entry`. + while python_frame_index < frames.len() { merged.push(frames[python_frame_index].clone()); + + if frames[python_frame_index].is_entry { + break; + } + + python_frame_index += 1; } python_frame_index += 1; } @@ -141,6 +149,7 @@ impl NativeStack { short_filename: None, module: None, locals: None, + is_entry: true, }); }); @@ -281,6 +290,7 @@ impl NativeStack { short_filename: None, module: Some(frame.module.clone()), locals: None, + is_entry: true, }) } None => Some(Frame { @@ -290,6 +300,7 @@ impl NativeStack { line: 0, short_filename: None, module: Some(frame.module.clone()), + is_entry: true, }), } } diff --git a/src/python_interpreters.rs b/src/python_interpreters.rs index f2485dee..cae9e85d 100644 --- a/src/python_interpreters.rs +++ b/src/python_interpreters.rs @@ -47,6 +47,7 @@ pub trait FrameObject { fn code(&self) -> *mut Self::CodeObject; fn lasti(&self) -> i32; fn back(&self) -> *mut Self; + fn is_entry(&self) -> bool; } pub trait CodeObject { @@ -157,6 +158,9 @@ macro_rules! PythonCommonImpl { fn back(&self) -> *mut Self { self.f_back } + fn is_entry(&self) -> bool { + true + } } impl Object for $py::PyObject { @@ -357,6 +361,9 @@ impl FrameObject for v3_11_0::_PyInterpreterFrame { fn back(&self) -> *mut Self { self.previous } + fn is_entry(&self) -> bool { + self.is_entry + } } impl Object for v3_11_0::PyObject { diff --git a/src/speedscope.rs b/src/speedscope.rs index faf57a0d..3cc0725c 100644 --- a/src/speedscope.rs +++ b/src/speedscope.rs @@ -288,6 +288,7 @@ mod tests { short_filename: None, line: 0, locals: None, + is_entry: true, }; let trace = stack_trace::StackTrace { diff --git a/src/stack_trace.rs b/src/stack_trace.rs index 4eb76623..a0d45632 100644 --- a/src/stack_trace.rs +++ b/src/stack_trace.rs @@ -47,6 +47,8 @@ pub struct Frame { pub line: i32, /// Local Variables associated with the frame pub locals: Option>, + /// If this is an entry frame. Each entry frame corresponds to one native frame. + pub is_entry: bool, } #[derive(Debug, Hash, Eq, PartialEq, Ord, PartialOrd, Clone, Serialize)] @@ -158,6 +160,8 @@ where None }; + let is_entry = frame.is_entry(); + frames.push(Frame { name, filename, @@ -165,6 +169,7 @@ where short_filename: None, module: None, locals, + is_entry, }); if frames.len() > 4096 { return Err(format_err!("Max frame recursion depth reached")); @@ -278,6 +283,7 @@ impl ProcessInfo { short_filename: None, line: 0, locals: None, + is_entry: true, } } } From 7cbbc015980c5db4d517b62523cf8488296fa2fd Mon Sep 17 00:00:00 2001 From: Ben Frederickson Date: Fri, 15 Dec 2023 16:50:19 -0800 Subject: [PATCH 03/27] Fix error handling in sampler.rs (#645) We were calling unwrap_err when failing to create a PythonSpy object in sampler.rs (on the result of sending the error on a channel), when we should have been calling unwrap. Fix. See #644 Also fix freebsd ci --- .github/workflows/build.yml | 1 + src/sampler.rs | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 77fe875e..0b74c603 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -145,6 +145,7 @@ jobs: run: lscpu - name: Install VM tools run: | + sudo apt-get update -qq sudo apt-get install -qq -o=Dpkg::Use-Pty=0 moreutils sudo chronic apt-get install -qq -o=Dpkg::Use-Pty=0 vagrant virtualbox qemu libvirt-daemon-system - name: Set up VM diff --git a/src/sampler.rs b/src/sampler.rs index db010e6c..10f0cdfa 100644 --- a/src/sampler.rs +++ b/src/sampler.rs @@ -56,7 +56,7 @@ impl Sampler { spy } Err(e) => { - initialized_tx.send(Err(e)).unwrap_err(); + initialized_tx.send(Err(e)).unwrap(); return; } }; @@ -308,7 +308,7 @@ impl PythonSpyThread { } Err(e) => { warn!("Failed to profile python from process {}: {}", pid, e); - initialized_tx.send(Err(e)).unwrap_err(); + initialized_tx.send(Err(e)).unwrap(); return; } }; From e0cbd460cd5a4932f9def95b82c88f7dde25fb14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 12:31:03 -0800 Subject: [PATCH 04/27] Bump shlex from 1.1.0 to 1.3.0 (#650) Bumps [shlex](https://github.com/comex/rust-shlex) from 1.1.0 to 1.3.0. - [Changelog](https://github.com/comex/rust-shlex/blob/master/CHANGELOG.md) - [Commits](https://github.com/comex/rust-shlex/commits) --- updated-dependencies: - dependency-name: shlex dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5a493fa7..5381c9a3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1327,9 +1327,9 @@ dependencies = [ [[package]] name = "shlex" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "smallvec" From 8dd54929106916a3c961cc57c1172793ce126180 Mon Sep 17 00:00:00 2001 From: Nariman Safiulin Date: Tue, 27 Feb 2024 21:23:07 +0200 Subject: [PATCH 05/27] Add support for UCS-2 strings (#648) * feat: add support for UCS-2 strings rebased commit: dcf703b609b90e1a10633d175c384c66d1c40fc9 * tests: add a test to ensure py-spy does not fails on cyrillic (ucs-2) strings * tests: fix `test_cyrillic` test for python 2 --------- Co-authored-by: Ben Frederickson --- src/python_data_access.rs | 9 +++++---- tests/integration_test.rs | 28 ++++++++++++++++++++++++++++ tests/scripts/cyrillic.py | 7 +++++++ 3 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 tests/scripts/cyrillic.py diff --git a/src/python_data_access.rs b/src/python_data_access.rs index 4249e40a..2ffd66dc 100644 --- a/src/python_data_access.rs +++ b/src/python_data_access.rs @@ -33,10 +33,11 @@ pub fn copy_string( Ok(chars.iter().collect()) } (2, _) => { - // UCS2 strings aren't used internally after v3.3: https://www.python.org/dev/peps/pep-0393/ - // TODO: however with python 2.7 they could be added with --enable-unicode=ucs2 configure flag. - // or with python 3.2 --with-wide-unicode=ucs2 - Err(format_err!("ucs2 strings aren't supported yet!")) + #[allow(clippy::cast_ptr_alignment)] + let chars = unsafe { + std::slice::from_raw_parts(bytes.as_ptr() as *const u16, bytes.len() / 2) + }; + Ok(String::from_utf16(chars)?) } (1, true) => Ok(String::from_utf8(bytes)?), (1, false) => Ok(bytes.iter().map(|&b| b as char).collect()), diff --git a/tests/integration_test.rs b/tests/integration_test.rs index 9d7c36cc..e136e35c 100644 --- a/tests/integration_test.rs +++ b/tests/integration_test.rs @@ -229,6 +229,34 @@ fn test_unicode() { assert!(!traces[0].owns_gil); } +#[test] +fn test_cyrillic() { + #[cfg(target_os = "macos")] + { + if unsafe { libc::geteuid() } != 0 { + return; + } + } + + // Identifiers with characters outside the ASCII range are supported from Python 3 + let runner = TestRunner::new(Config::default(), "./tests/scripts/longsleep.py"); + if runner.spy.version.major == 2 { + return; + } + + let mut runner = TestRunner::new(Config::default(), "./tests/scripts/cyrillic.py"); + + let traces = runner.spy.get_stack_traces().unwrap(); + assert_eq!(traces.len(), 1); + let trace = &traces[0]; + + assert_eq!(trace.frames[0].name, "кириллица"); + assert_eq!(trace.frames[0].line, 4); + + assert_eq!(trace.frames[1].name, ""); + assert_eq!(trace.frames[1].line, 7); +} + #[test] fn test_local_vars() { #[cfg(target_os = "macos")] diff --git a/tests/scripts/cyrillic.py b/tests/scripts/cyrillic.py new file mode 100644 index 00000000..77370c22 --- /dev/null +++ b/tests/scripts/cyrillic.py @@ -0,0 +1,7 @@ +import time + +def кириллица(seconds): + time.sleep(seconds) + +if __name__ == "__main__": + кириллица(100) From 5820bf6a7ef56718284add709bc56cc7b8cb6c16 Mon Sep 17 00:00:00 2001 From: andrewjcg Date: Wed, 9 Oct 2024 19:24:30 -0400 Subject: [PATCH 06/27] Fix clippy warnings (#679) --- .github/workflows/build.yml | 78 ++++++++++--------------------- Cargo.toml | 3 ++ ci/test_freebsd.sh | 4 +- ci/update_python_test_versions.py | 4 +- src/binary_parser.rs | 20 +------- src/config.rs | 10 ++-- src/coredump.rs | 5 +- src/lib.rs | 4 +- src/main.rs | 4 +- src/python_process_info.rs | 12 ++--- src/python_spy.rs | 26 ++++------- src/utils.rs | 2 +- tests/integration_test.rs | 2 +- 13 files changed, 62 insertions(+), 112 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0b74c603..48d4e89f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,22 +18,10 @@ jobs: steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 + with: + python-version: 3.11 - uses: pre-commit/action@v3.0.0 - build-linux-armv7: - runs-on: [self-hosted, linux, arm] - needs: [lint] - steps: - - name: Setup python - run: | - pyenv global system - python --version - - uses: actions/checkout@v3 - - name: Build - run: cargo build --verbose - - name: Run tests - run: cargo test - build: runs-on: ${{ matrix.os }} needs: [lint] @@ -52,6 +40,9 @@ jobs: id: test continue-on-error: true run: cargo test --release + - uses: actions/setup-python@v4 + with: + python-version: 3.11 - name: Test (retry#1) id: test1 run: cargo test --release @@ -60,9 +51,6 @@ jobs: - name: Test (retry#2) run: cargo test --release if: steps.test1.outcome=='failure' - - uses: actions/setup-python@v4 - with: - python-version: 3.9 - name: Build Wheel run: | pip install --upgrade maturin @@ -75,6 +63,7 @@ jobs: MACOSX_DEPLOYMENT_TARGET: 10.9 run: | rustup target add aarch64-apple-darwin + rustup target add x86_64-apple-darwin pip install --upgrade maturin maturin build --release -o dist --target universal2-apple-darwin if: matrix.os == 'macos-latest' @@ -181,23 +170,33 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.5.4, 3.5.9, 3.5.10, 3.6.7, 3.6.8, 3.6.9, 3.6.10, 3.6.11, 3.6.12, 3.6.13, 3.6.14, 3.6.15, 3.7.1, 3.7.2, 3.7.3, 3.7.4, 3.7.5, 3.7.6, 3.7.7, 3.7.8, 3.7.9, 3.7.10, 3.7.11, 3.7.12, 3.7.13, 3.7.14, 3.7.15, 3.7.16, 3.7.17, 3.8.0, 3.8.1, 3.8.2, 3.8.3, 3.8.4, 3.8.5, 3.8.6, 3.8.7, 3.8.8, 3.8.9, 3.8.10, 3.8.11, 3.8.12, 3.8.13, 3.8.14, 3.8.15, 3.8.16, 3.8.17, 3.8.18, 3.9.0, 3.9.1, 3.9.2, 3.9.3, 3.9.4, 3.9.5, 3.9.6, 3.9.7, 3.9.8, 3.9.9, 3.9.10, 3.9.11, 3.9.12, 3.9.13, 3.9.14, 3.9.15, 3.9.16, 3.9.17, 3.9.18, 3.10.0, 3.10.1, 3.10.2, 3.10.3, 3.10.4, 3.10.5, 3.10.6, 3.10.7, 3.10.8, 3.10.9, 3.10.10, 3.10.11, 3.10.12, 3.10.13, 3.11.0, 3.11.1, 3.11.2, 3.11.3, 3.11.4, 3.11.5] + python-version: [3.6.7, 3.6.8, 3.6.9, 3.6.10, 3.6.11, 3.6.12, 3.6.13, 3.6.14, 3.6.15, 3.7.1, 3.7.2, 3.7.3, 3.7.4, 3.7.5, 3.7.6, 3.7.7, 3.7.8, 3.7.9, 3.7.10, 3.7.11, 3.7.12, 3.7.13, 3.7.14, 3.7.15, 3.7.16, 3.7.17, 3.8.0, 3.8.1, 3.8.2, 3.8.3, 3.8.4, 3.8.5, 3.8.6, 3.8.7, 3.8.8, 3.8.9, 3.8.10, 3.8.11, 3.8.12, 3.8.13, 3.8.14, 3.8.15, 3.8.16, 3.8.17, 3.8.18, 3.9.0, 3.9.1, 3.9.2, 3.9.3, 3.9.4, 3.9.5, 3.9.6, 3.9.7, 3.9.8, 3.9.9, 3.9.10, 3.9.11, 3.9.12, 3.9.13, 3.9.14, 3.9.15, 3.9.16, 3.9.17, 3.9.18, 3.9.19, 3.9.20, 3.10.0, 3.10.1, 3.10.2, 3.10.3, 3.10.4, 3.10.5, 3.10.6, 3.10.7, 3.10.8, 3.10.9, 3.10.10, 3.10.11, 3.10.12, 3.10.13, 3.10.14, 3.10.15, 3.11.0, 3.11.1, 3.11.2, 3.11.3, 3.11.4, 3.11.5, 3.11.6, 3.11.7, 3.11.8, 3.11.9, 3.11.10] # TODO: also test windows - os: [ubuntu-20.04, macos-latest] + os: [ubuntu-20.04, macos-13] # some versions of python can't be tested on GHA with osx because of SIP: exclude: - - os: macos-latest + - os: macos-13 python-version: 3.11.0 - - os: macos-latest + - os: macos-13 python-version: 3.11.1 - - os: macos-latest + - os: macos-13 python-version: 3.11.2 - - os: macos-latest + - os: macos-13 python-version: 3.11.3 - - os: macos-latest + - os: macos-13 python-version: 3.11.4 - - os: macos-latest + - os: macos-13 python-version: 3.11.5 + - os: macos-13 + python-version: 3.11.6 + - os: macos-13 + python-version: 3.11.7 + - os: macos-13 + python-version: 3.11.8 + - os: macos-13 + python-version: 3.11.9 + - os: macos-13 + python-version: 3.11.10 steps: - uses: actions/checkout@v2 @@ -239,38 +238,11 @@ jobs: run: sudo "PATH=$PATH" python tests/integration_test.py if: steps.osx_test1.outcome=='failure' - test-wheel-linux-armv7: - name: Test ARMv7 Wheel - needs: [build-linux-cross] - runs-on: [self-hosted, linux, arm] - strategy: - matrix: - # we're installing the manylinux2014 wheel, so can - # only test out relatively recent versions of python - pyenv-python-version: [3.7.10, 3.8.9, 3.9.4] - steps: - - uses: actions/checkout@v3 - - uses: actions/download-artifact@v3 - with: - name: wheels - - name: Setup pyenv - run: | - # build the version of python if not installed already - # (note this relies on pyenv being setup already) - pyenv install -s ${{ matrix.pyenv-python-version }} - pyenv global ${{ matrix.pyenv-python-version }} - python --version - - name: Install wheel - run: | - pip install --force-reinstall --no-index --find-links . py-spy - - name: Test Wheel - run: python tests/integration_test.py - release: name: Release runs-on: ubuntu-latest if: "startsWith(github.ref, 'refs/tags/')" - needs: [test-wheels, test-wheel-linux-armv7] + needs: [test-wheels] steps: - uses: actions/download-artifact@v3 with: diff --git a/Cargo.toml b/Cargo.toml index cdfbd569..f3079690 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,3 +1,6 @@ +[features] +unwind = [] + [package] name = "py-spy" version = "0.3.14" diff --git a/ci/test_freebsd.sh b/ci/test_freebsd.sh index 5eff807c..6e78d955 100755 --- a/ci/test_freebsd.sh +++ b/ci/test_freebsd.sh @@ -16,7 +16,9 @@ if [ -f build-artifacts.tar ]; then fi cargo build --release --workspace --all-targets -cargo test --release + +# TODO: re-enable integration tests +# cargo test --release set +e tar cf build-artifacts.tar target diff --git a/ci/update_python_test_versions.py b/ci/update_python_test_versions.py index 958daa41..58f50a58 100644 --- a/ci/update_python_test_versions.py +++ b/ci/update_python_test_versions.py @@ -19,8 +19,8 @@ def get_github_python_versions(): continue major, minor, patch = parse_version(version_str) - if major == 3 and minor < 5: - # we don't support python 3.0/3.1/3.2 , and don't bother testing 3.3/3.4 + if major == 3 and minor < 6: + # we don't support python 3.0/3.1/3.2 , and don't bother testing 3.3/3.4/3.5 continue elif major == 2 and minor < 7: diff --git a/src/binary_parser.rs b/src/binary_parser.rs index 057fed67..b67e02c7 100644 --- a/src/binary_parser.rs +++ b/src/binary_parser.rs @@ -7,24 +7,20 @@ use goblin::Object; use memmap::Mmap; pub struct BinaryInfo { - pub filename: std::path::PathBuf, pub symbols: HashMap, pub bss_addr: u64, pub bss_size: u64, - pub offset: u64, - pub addr: u64, - pub size: u64, } impl BinaryInfo { - #[cfg(unwind)] + #[cfg(feature = "unwind")] pub fn contains(&self, addr: u64) -> bool { addr >= self.addr && addr < (self.addr + self.size) } } /// Uses goblin to parse a binary file, returns information on symbols/bss/adjusted offset etc -pub fn parse_binary(filename: &Path, addr: u64, size: u64) -> Result { +pub fn parse_binary(filename: &Path, addr: u64) -> Result { let offset = addr; let mut symbols = HashMap::new(); @@ -79,13 +75,9 @@ pub fn parse_binary(filename: &Path, addr: u64, size: u64) -> Result Result { @@ -169,13 +157,9 @@ pub fn parse_binary(filename: &Path, addr: u64, size: u64) -> Result 0; - if cfg!(unwind) { + if cfg!(feature = "unwind") { config.native = matches.occurrences_of("native") > 0; } diff --git a/src/coredump.rs b/src/coredump.rs index 53940bdb..c62ffd7d 100644 --- a/src/coredump.rs +++ b/src/coredump.rs @@ -191,7 +191,7 @@ impl PythonCoreDump { .find(|m| m.filename().is_some() & m.is_exec()) .ok_or_else(|| format_err!("Failed to get binary from coredump"))?; let python_filename = map.filename().unwrap(); - let python_binary = parse_binary(python_filename, map.start() as _, map.size() as _); + let python_binary = parse_binary(python_filename, map.start() as _); info!("Found python binary @ {}", python_filename.display()); (python_filename.to_owned(), python_binary) }; @@ -211,8 +211,7 @@ impl PythonCoreDump { if let Some(libpython) = libmap { if let Some(filename) = &libpython.filename() { info!("Found libpython binary @ {}", filename.display()); - let parsed = - parse_binary(filename, libpython.start() as u64, libpython.size() as u64)?; + let parsed = parse_binary(filename, libpython.start() as u64)?; libpython_binary = Some(parsed); } } diff --git a/src/lib.rs b/src/lib.rs index 424e253e..b7bb259b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -33,10 +33,10 @@ pub mod binary_parser; pub mod config; #[cfg(target_os = "linux")] pub mod coredump; -#[cfg(unwind)] +#[cfg(feature = "unwind")] mod cython; pub mod dump; -#[cfg(unwind)] +#[cfg(feature = "unwind")] mod native_stack_trace; mod python_bindings; mod python_data_access; diff --git a/src/main.rs b/src/main.rs index f965cc71..df0d602c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,11 +9,11 @@ mod config; mod console_viewer; #[cfg(target_os = "linux")] mod coredump; -#[cfg(unwind)] +#[cfg(feature = "unwind")] mod cython; mod dump; mod flamegraph; -#[cfg(unwind)] +#[cfg(feature = "unwind")] mod native_stack_trace; mod python_bindings; mod python_data_access; diff --git a/src/python_process_info.rs b/src/python_process_info.rs index dd802c67..f36bfb1f 100644 --- a/src/python_process_info.rs +++ b/src/python_process_info.rs @@ -100,7 +100,7 @@ impl PythonProcessInfo { let filename = std::path::PathBuf::from(format!("/proc/{}/exe", process.pid)); // TODO: consistent types? u64 -> usize? for map.start etc - let python_binary = parse_binary(&filename, map.start() as u64, map.size() as u64); + let python_binary = parse_binary(&filename, map.start() as u64); // windows symbols are stored in separate files (.pdb), load #[cfg(windows)] @@ -156,8 +156,7 @@ impl PythonProcessInfo { )); #[allow(unused_mut)] - let mut parsed = - parse_binary(filename, libpython.start() as u64, libpython.size() as u64)?; + let mut parsed = parse_binary(filename, libpython.start() as u64)?; #[cfg(windows)] parsed.symbols.extend(get_windows_python_symbols( process.pid, @@ -203,11 +202,8 @@ impl PythonProcessInfo { libpython.filename.display() ); - let mut binary = parse_binary( - &libpython.filename, - libpython.segment.vmaddr, - libpython.segment.vmsize, - )?; + let mut binary = + parse_binary(&libpython.filename, libpython.segment.vmaddr)?; // TODO: bss addr offsets returned from parsing binary are wrong // (assumes data section isn't split from text section like done here). diff --git a/src/python_spy.rs b/src/python_spy.rs index f5e36d68..fe1d0811 100644 --- a/src/python_spy.rs +++ b/src/python_spy.rs @@ -1,9 +1,9 @@ #[cfg(windows)] use regex::RegexBuilder; use std::collections::HashMap; -#[cfg(all(target_os = "linux", unwind))] +#[cfg(all(target_os = "linux", feature = "unwind"))] use std::collections::HashSet; -#[cfg(all(target_os = "linux", unwind))] +#[cfg(all(target_os = "linux", feature = "unwind"))] use std::iter::FromIterator; use std::path::Path; @@ -11,7 +11,7 @@ use anyhow::{Context, Error, Result}; use remoteprocess::{Pid, Process, ProcessMemory, Tid}; use crate::config::{Config, LockingStrategy}; -#[cfg(unwind)] +#[cfg(feature = "unwind")] use crate::native_stack_trace::NativeStack; use crate::python_bindings::{ v2_7_15, v3_10_0, v3_11_0, v3_3_7, v3_5_5, v3_6_6, v3_7_0, v3_8_0, v3_9_5, @@ -32,10 +32,8 @@ pub struct PythonSpy { pub version: Version, pub interpreter_address: usize, pub threadstate_address: usize, - pub python_filename: std::path::PathBuf, - pub version_string: String, pub config: Config, - #[cfg(unwind)] + #[cfg(feature = "unwind")] pub native: Option, pub short_filenames: HashMap>, pub python_thread_ids: HashMap, @@ -68,9 +66,7 @@ impl PythonSpy { // lets us figure out which thread has the GIL let threadstate_address = get_threadstate_address(&python_info, &version, config)?; - let version_string = format!("python{}.{}", version.major, version.minor); - - #[cfg(unwind)] + #[cfg(feature = "unwind")] let native = if config.native { Some(NativeStack::new( pid, @@ -87,9 +83,7 @@ impl PythonSpy { version, interpreter_address, threadstate_address, - python_filename: python_info.python_filename, - version_string, - #[cfg(unwind)] + #[cfg(feature = "unwind")] native, #[cfg(target_os = "linux")] dockerized: python_info.dockerized, @@ -291,7 +285,7 @@ impl PythonSpy { } // Merge in the native stack frames if necessary - #[cfg(unwind)] + #[cfg(feature = "unwind")] { if self.config.native { if let Some(native) = self.native.as_mut() { @@ -389,7 +383,7 @@ impl PythonSpy { Ok(None) } - #[cfg(all(target_os = "linux", not(unwind)))] + #[cfg(all(target_os = "linux", not(feature = "unwind")))] fn _get_os_thread_id( &mut self, _python_thread_id: u64, @@ -398,7 +392,7 @@ impl PythonSpy { Ok(None) } - #[cfg(all(target_os = "linux", unwind))] + #[cfg(all(target_os = "linux", feature = "unwind"))] fn _get_os_thread_id( &mut self, python_thread_id: u64, @@ -483,7 +477,7 @@ impl PythonSpy { Ok(None) } - #[cfg(all(target_os = "linux", unwind))] + #[cfg(all(target_os = "linux", feature = "unwind"))] pub fn _get_pthread_id( &self, unwinder: &remoteprocess::Unwinder, diff --git a/src/utils.rs b/src/utils.rs index 1d8778bb..2ca1374f 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,4 +1,4 @@ -#[cfg(unwind)] +#[cfg(feature = "unwind")] pub fn resolve_filename(filename: &str, modulename: &str) -> Option { // check the filename first, if it exists use it use std::path::Path; diff --git a/tests/integration_test.rs b/tests/integration_test.rs index e136e35c..25ada35c 100644 --- a/tests/integration_test.rs +++ b/tests/integration_test.rs @@ -62,7 +62,7 @@ fn test_busy_loop() { assert!(traces[0].active); } -#[cfg(unwind)] +#[cfg(feature = "unwind")] #[test] fn test_thread_reuse() { // on linux we had an issue with the pthread -> native thread id caching From 8e808030d939b908b913e9fe4192c0efc3349773 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Thu, 10 Oct 2024 13:43:24 -0500 Subject: [PATCH 07/27] Fix Windows build and lint (#685) --- .github/workflows/build.yml | 6 +-- Cargo.lock | 79 +++++++++++++++++++++++++++++++++++-- Cargo.toml | 2 +- src/python_process_info.rs | 6 ++- src/python_spy.rs | 2 - 5 files changed, 84 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 48d4e89f..8446203e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,13 +36,13 @@ jobs: if: runner.os == 'Linux' - name: Build run: cargo build --release --verbose --examples + - uses: actions/setup-python@v4 + with: + python-version: 3.9 - name: Test id: test continue-on-error: true run: cargo test --release - - uses: actions/setup-python@v4 - with: - python-version: 3.11 - name: Test (retry#1) id: test1 run: cargo test --release diff --git a/Cargo.lock b/Cargo.lock index 5381c9a3..b5ba6312 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1594,11 +1594,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -1634,6 +1634,15 @@ dependencies = [ "windows-targets 0.48.0", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -1664,6 +1673,22 @@ dependencies = [ "windows_x86_64_msvc 0.48.0", ] +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -1676,6 +1701,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -1688,6 +1719,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -1700,6 +1737,18 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -1712,6 +1761,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -1724,6 +1779,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -1736,6 +1797,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -1747,3 +1814,9 @@ name = "windows_x86_64_msvc" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" diff --git a/Cargo.toml b/Cargo.toml index f3079690..59482f68 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,4 +48,4 @@ py-spy-testdata = "0.1.0" termios = "0.3.3" [target.'cfg(windows)'.dependencies] -winapi = {version = "0.3", features = ["winbase", "consoleapi", "wincon", "handleapi", "timeapi", "processenv" ]} +winapi = {version = "0.3", features = ["errhandlingapi", "winbase", "consoleapi", "wincon", "handleapi", "timeapi", "processenv" ]} diff --git a/src/python_process_info.rs b/src/python_process_info.rs index f36bfb1f..528ff982 100644 --- a/src/python_process_info.rs +++ b/src/python_process_info.rs @@ -10,7 +10,9 @@ use std::slice; use anyhow::{Context, Error, Result}; use lazy_static::lazy_static; use proc_maps::{get_process_maps, MapRange}; -use remoteprocess::{Pid, ProcessMemory}; +#[cfg(not(target_os = "macos"))] +use remoteprocess::Pid; +use remoteprocess::ProcessMemory; use crate::binary_parser::{parse_binary, BinaryInfo}; use crate::config::Config; @@ -599,7 +601,7 @@ pub trait ContainsAddr { impl ContainsAddr for Vec { #[cfg(windows)] - fn contains_addr(&self, addr: usize) -> bool { + fn contains_addr(&self, _addr: usize) -> bool { // On windows, we can't just check if a pointer is valid by looking to see if it points // to something in the virtual memory map. Brute-force it instead true diff --git a/src/python_spy.rs b/src/python_spy.rs index fe1d0811..2b2a6fec 100644 --- a/src/python_spy.rs +++ b/src/python_spy.rs @@ -1,5 +1,3 @@ -#[cfg(windows)] -use regex::RegexBuilder; use std::collections::HashMap; #[cfg(all(target_os = "linux", feature = "unwind"))] use std::collections::HashSet; From 98de4208f766d65a5ae12d1cb70e0b25c2081103 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Thu, 10 Oct 2024 14:19:22 -0500 Subject: [PATCH 08/27] Add Rust cache action to CI (#686) --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8446203e..76b91f6e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,6 +31,7 @@ jobs: os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: actions/checkout@v3 + - uses: Swatinem/rust-cache@v2 - name: Install Dependencies run: sudo apt install libunwind-dev if: runner.os == 'Linux' @@ -92,6 +93,7 @@ jobs: CARGO_HOME: /root/.cargo steps: - uses: actions/checkout@v3 + - uses: Swatinem/rust-cache@v2 - name: Build run: | python3 -m pip install --upgrade maturin From cd165c8ef699355d0f6b3b091d0b7ffc77d046f2 Mon Sep 17 00:00:00 2001 From: Ben Frederickson Date: Thu, 10 Oct 2024 15:19:25 -0700 Subject: [PATCH 09/27] Reduce test wheel matrix (#687) Rather than test every patch version of python, only test the first/last patch for older python versions - while still testing all patch versions for python 3.10+. --- .github/workflows/build.yml | 2 +- ci/update_python_test_versions.py | 25 +++++++++++++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 76b91f6e..37803dfb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -172,7 +172,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.6.7, 3.6.8, 3.6.9, 3.6.10, 3.6.11, 3.6.12, 3.6.13, 3.6.14, 3.6.15, 3.7.1, 3.7.2, 3.7.3, 3.7.4, 3.7.5, 3.7.6, 3.7.7, 3.7.8, 3.7.9, 3.7.10, 3.7.11, 3.7.12, 3.7.13, 3.7.14, 3.7.15, 3.7.16, 3.7.17, 3.8.0, 3.8.1, 3.8.2, 3.8.3, 3.8.4, 3.8.5, 3.8.6, 3.8.7, 3.8.8, 3.8.9, 3.8.10, 3.8.11, 3.8.12, 3.8.13, 3.8.14, 3.8.15, 3.8.16, 3.8.17, 3.8.18, 3.9.0, 3.9.1, 3.9.2, 3.9.3, 3.9.4, 3.9.5, 3.9.6, 3.9.7, 3.9.8, 3.9.9, 3.9.10, 3.9.11, 3.9.12, 3.9.13, 3.9.14, 3.9.15, 3.9.16, 3.9.17, 3.9.18, 3.9.19, 3.9.20, 3.10.0, 3.10.1, 3.10.2, 3.10.3, 3.10.4, 3.10.5, 3.10.6, 3.10.7, 3.10.8, 3.10.9, 3.10.10, 3.10.11, 3.10.12, 3.10.13, 3.10.14, 3.10.15, 3.11.0, 3.11.1, 3.11.2, 3.11.3, 3.11.4, 3.11.5, 3.11.6, 3.11.7, 3.11.8, 3.11.9, 3.11.10] + python-version: [3.6.7, 3.6.15, 3.7.1, 3.7.17, 3.8.0, 3.8.18, 3.9.0, 3.9.20, 3.10.0, 3.10.1, 3.10.2, 3.10.3, 3.10.4, 3.10.5, 3.10.6, 3.10.7, 3.10.8, 3.10.9, 3.10.10, 3.10.11, 3.10.12, 3.10.13, 3.10.14, 3.10.15, 3.11.0, 3.11.1, 3.11.2, 3.11.3, 3.11.4, 3.11.5, 3.11.6, 3.11.7, 3.11.8, 3.11.9, 3.11.10] # TODO: also test windows os: [ubuntu-20.04, macos-13] # some versions of python can't be tested on GHA with osx because of SIP: diff --git a/ci/update_python_test_versions.py b/ci/update_python_test_versions.py index 58f50a58..6a53286d 100644 --- a/ci/update_python_test_versions.py +++ b/ci/update_python_test_versions.py @@ -1,3 +1,4 @@ +from collections import defaultdict import requests import pathlib import re @@ -13,8 +14,10 @@ def parse_version(v): def get_github_python_versions(): versions_json = requests.get(_VERSIONS_URL).json() raw_versions = [v["version"] for v in versions_json] - versions = [] - for version_str in raw_versions: + + minor_versions = defaultdict(list) + + for version_str in raw_versions: if "-" in version_str: continue @@ -26,8 +29,22 @@ def get_github_python_versions(): elif major == 2 and minor < 7: # we don't test python support before 2.7 continue + minor_versions[(major, minor)].append(patch) + + versions = [] + for (major, minor), patches in minor_versions.items(): + patches.sort() + + # for older versions of python, don't test all patches + # (just test first and last) to keep the test matrix down + if (major == 2 or minor < 10): + patches = [patches[0], patches[-1]] + + if (major == 3 and minor >= 12): + continue + + versions.extend(f"{major}.{minor}.{patch}" for patch in patches) - versions.append(version_str) return versions @@ -55,7 +72,7 @@ def get_github_python_versions(): exclusions = [] for v in versions: if v.startswith("3.11"): - exclusions.append(" - os: macos-latest\n") + exclusions.append(" - os: macos-13\n") exclusions.append(f" python-version: {v}\n") test_wheels = transformed.index(" test-wheels:\n") first_line = transformed.index(" exclude:\n", test_wheels) From c9e422b0db716ea0dec71cca666393fda5587a5f Mon Sep 17 00:00:00 2001 From: Jiang Liu Date: Sat, 12 Oct 2024 05:04:48 +0800 Subject: [PATCH 10/27] Fix bug introduced by commit 5820bf6a7ef56718284add709bc56cc7b8cb6c16 (#688) Commit 5820bf6a7ef56718284add709bc56cc7b8cb6c16 removes field `addr` and `size` from BinaryInfo, which are used when feature `unwind` is enabled. So recover these two fields. Fix building error: cargo build --all-features error[E0609]: no field `addr` on type `&BinaryInfo` --> src/binary_parser.rs:18:22 | 18 | addr >= self.addr && addr < (self.addr + self.size) | ^^^^ unknown field | = note: available fields are: `symbols`, `bss_addr`, `bss_size` error[E0609]: no field `addr` on type `&BinaryInfo` --> src/binary_parser.rs:18:43 | 18 | addr >= self.addr && addr < (self.addr + self.size) | ^^^^ unknown field | = note: available fields are: `symbols`, `bss_addr`, `bss_size` error[E0609]: no field `size` on type `&BinaryInfo` --> src/binary_parser.rs:18:55 | 18 | addr >= self.addr && addr < (self.addr + self.size) | ^^^^ unknown field | = note: available fields are: `symbols`, `bss_addr`, `bss_size` Signed-off-by: Jiang Liu --- src/binary_parser.rs | 12 +++++++++++- src/coredump.rs | 5 +++-- src/python_process_info.rs | 12 ++++++++---- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/binary_parser.rs b/src/binary_parser.rs index b67e02c7..ace9ab45 100644 --- a/src/binary_parser.rs +++ b/src/binary_parser.rs @@ -10,6 +10,10 @@ pub struct BinaryInfo { pub symbols: HashMap, pub bss_addr: u64, pub bss_size: u64, + #[allow(dead_code)] + pub addr: u64, + #[allow(dead_code)] + pub size: u64, } impl BinaryInfo { @@ -20,7 +24,7 @@ impl BinaryInfo { } /// Uses goblin to parse a binary file, returns information on symbols/bss/adjusted offset etc -pub fn parse_binary(filename: &Path, addr: u64) -> Result { +pub fn parse_binary(filename: &Path, addr: u64, size: u64) -> Result { let offset = addr; let mut symbols = HashMap::new(); @@ -78,6 +82,8 @@ pub fn parse_binary(filename: &Path, addr: u64) -> Result { symbols, bss_addr, bss_size, + addr, + size, }) } @@ -132,6 +138,8 @@ pub fn parse_binary(filename: &Path, addr: u64) -> Result { symbols, bss_addr: bss_header.sh_addr + offset, bss_size: bss_header.sh_size, + addr, + size, }) } Object::PE(pe) => { @@ -160,6 +168,8 @@ pub fn parse_binary(filename: &Path, addr: u64) -> Result { symbols, bss_addr, bss_size, + addr, + size, } }) } diff --git a/src/coredump.rs b/src/coredump.rs index c62ffd7d..53940bdb 100644 --- a/src/coredump.rs +++ b/src/coredump.rs @@ -191,7 +191,7 @@ impl PythonCoreDump { .find(|m| m.filename().is_some() & m.is_exec()) .ok_or_else(|| format_err!("Failed to get binary from coredump"))?; let python_filename = map.filename().unwrap(); - let python_binary = parse_binary(python_filename, map.start() as _); + let python_binary = parse_binary(python_filename, map.start() as _, map.size() as _); info!("Found python binary @ {}", python_filename.display()); (python_filename.to_owned(), python_binary) }; @@ -211,7 +211,8 @@ impl PythonCoreDump { if let Some(libpython) = libmap { if let Some(filename) = &libpython.filename() { info!("Found libpython binary @ {}", filename.display()); - let parsed = parse_binary(filename, libpython.start() as u64)?; + let parsed = + parse_binary(filename, libpython.start() as u64, libpython.size() as u64)?; libpython_binary = Some(parsed); } } diff --git a/src/python_process_info.rs b/src/python_process_info.rs index 528ff982..74b482e7 100644 --- a/src/python_process_info.rs +++ b/src/python_process_info.rs @@ -102,7 +102,7 @@ impl PythonProcessInfo { let filename = std::path::PathBuf::from(format!("/proc/{}/exe", process.pid)); // TODO: consistent types? u64 -> usize? for map.start etc - let python_binary = parse_binary(&filename, map.start() as u64); + let python_binary = parse_binary(&filename, map.start() as u64, map.size() as u64); // windows symbols are stored in separate files (.pdb), load #[cfg(windows)] @@ -158,7 +158,8 @@ impl PythonProcessInfo { )); #[allow(unused_mut)] - let mut parsed = parse_binary(filename, libpython.start() as u64)?; + let mut parsed = + parse_binary(filename, libpython.start() as u64, libpython.size() as u64)?; #[cfg(windows)] parsed.symbols.extend(get_windows_python_symbols( process.pid, @@ -204,8 +205,11 @@ impl PythonProcessInfo { libpython.filename.display() ); - let mut binary = - parse_binary(&libpython.filename, libpython.segment.vmaddr)?; + let mut binary = parse_binary( + &libpython.filename, + libpython.segment.vmaddr, + libpython.segment.vmsize, + )?; // TODO: bss addr offsets returned from parsing binary are wrong // (assumes data section isn't split from text section like done here). From 94e6c906780d0148c40d0b0d7df06199d8589597 Mon Sep 17 00:00:00 2001 From: Ben Frederickson Date: Fri, 11 Oct 2024 20:36:01 -0700 Subject: [PATCH 11/27] build `--all-features` in CI (#691) --- .github/workflows/build.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 37803dfb..8705ae18 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,8 +55,8 @@ jobs: - name: Build Wheel run: | pip install --upgrade maturin - maturin build --release -o dist - if: runner.os != 'Linux' + maturin build --release -o dist --all-features + if: runner.os == 'Windows' - name: Build Wheel - universal2 env: DEVELOPER_DIR: /Applications/Xcode.app/Contents/Developer @@ -66,6 +66,7 @@ jobs: rustup target add aarch64-apple-darwin rustup target add x86_64-apple-darwin pip install --upgrade maturin + maturin build --release -o dist maturin build --release -o dist --target universal2-apple-darwin if: matrix.os == 'macos-latest' - name: Rename Wheels @@ -94,11 +95,18 @@ jobs: steps: - uses: actions/checkout@v3 - uses: Swatinem/rust-cache@v2 + - name: Build + run: | + python3 -m pip install --upgrade maturin + maturin build --release -o dist --target $RUST_MUSL_CROSS_TARGET --features unwind + maturin sdist -o dist + if: matrix.target == 'x86_64-musl' - name: Build run: | python3 -m pip install --upgrade maturin maturin build --release -o dist --target $RUST_MUSL_CROSS_TARGET maturin sdist -o dist + if: matrix.target != 'x86_64-musl' - name: Rename Wheels run: | python3 -c "import shutil; import glob; wheels = glob.glob('dist/*.whl'); [shutil.move(wheel, wheel.replace('py3', 'py2.py3')) for wheel in wheels if 'py2' not in wheel]" From 4eb8cd21c59ad1c513529eb42738351c27d8cc69 Mon Sep 17 00:00:00 2001 From: Ben Frederickson Date: Fri, 11 Oct 2024 21:10:55 -0700 Subject: [PATCH 12/27] Python 3.12 support (#642) --- .github/workflows/build.yml | 7 +- generate_bindings.py | 88 +- src/coredump.rs | 7 +- src/python_bindings/mod.rs | 3 +- src/python_bindings/v3_12_0.rs | 12840 +++++++++++++++++++++++++++++++ src/python_data_access.rs | 95 +- src/python_interpreters.rs | 291 +- src/python_process_info.rs | 11 +- src/python_spy.rs | 7 +- src/python_threading.rs | 9 +- src/stack_trace.rs | 7 + src/version.rs | 2 +- tests/integration_test.py | 13 +- 13 files changed, 13214 insertions(+), 166 deletions(-) create mode 100644 src/python_bindings/v3_12_0.rs diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8705ae18..fd432dd8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,6 +35,9 @@ jobs: - name: Install Dependencies run: sudo apt install libunwind-dev if: runner.os == 'Linux' + - uses: actions/setup-python@v4 + with: + python-version: 3.9 - name: Build run: cargo build --release --verbose --examples - uses: actions/setup-python@v4 @@ -180,7 +183,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.6.7, 3.6.15, 3.7.1, 3.7.17, 3.8.0, 3.8.18, 3.9.0, 3.9.20, 3.10.0, 3.10.1, 3.10.2, 3.10.3, 3.10.4, 3.10.5, 3.10.6, 3.10.7, 3.10.8, 3.10.9, 3.10.10, 3.10.11, 3.10.12, 3.10.13, 3.10.14, 3.10.15, 3.11.0, 3.11.1, 3.11.2, 3.11.3, 3.11.4, 3.11.5, 3.11.6, 3.11.7, 3.11.8, 3.11.9, 3.11.10] + python-version: [3.6.7, 3.6.15, 3.7.1, 3.7.17, 3.8.0, 3.8.18, 3.9.0, 3.9.20, 3.10.0, 3.10.1, 3.10.2, 3.10.3, 3.10.4, 3.10.5, 3.10.6, 3.10.7, 3.10.8, 3.10.9, 3.10.10, 3.10.11, 3.10.12, 3.10.13, 3.10.14, 3.10.15, 3.11.0, 3.11.1, 3.11.2, 3.11.3, 3.11.4, 3.11.5, 3.11.6, 3.11.7, 3.11.8, 3.11.9, 3.11.10, 3.12.0] # TODO: also test windows os: [ubuntu-20.04, macos-13] # some versions of python can't be tested on GHA with osx because of SIP: @@ -207,6 +210,8 @@ jobs: python-version: 3.11.9 - os: macos-13 python-version: 3.11.10 + - os: macos-13 + python-version: 3.12.0 steps: - uses: actions/checkout@v2 diff --git a/generate_bindings.py b/generate_bindings.py index 6323a440..33e46960 100644 --- a/generate_bindings.py +++ b/generate_bindings.py @@ -17,7 +17,8 @@ def build_python(cpython_path, version): print("Compiling python %s from repo at %s" % (version, cpython_path)) install_path = os.path.abspath(os.path.join(cpython_path, version)) - ret = os.system(f""" + ret = os.system( + f""" cd {cpython_path} git checkout {version} @@ -27,7 +28,8 @@ def build_python(cpython_path, version): ../configure prefix={install_path} make make install - """) + """ + ) if ret: return ret @@ -57,8 +59,9 @@ def calculate_pyruntime_offsets(cpython_path, version, configure=False): size_t interp_head = offsetof(_PyRuntimeState, interpreters.head); printf("pub static INTERP_HEAD_OFFSET: usize = %i;\n", interp_head); - size_t tstate_current = offsetof(_PyRuntimeState, gilstate.tstate_current); - printf("pub static TSTATE_CURRENT: usize = %i;\n", tstate_current); + // tstate_current has been replaced by a thread-local variable in python 3.12 + // size_t tstate_current = offsetof(_PyRuntimeState, gilstate.tstate_current); + // printf("pub static TSTATE_CURRENT: usize = %i;\n", tstate_current); } """ @@ -88,7 +91,7 @@ def calculate_pyruntime_offsets(cpython_path, version, configure=False): else: ret = os.system(f"""gcc {source_filename} -I {cpython_path} -I {cpython_path}/Include -o {exe}""") if ret: - print("Failed to compile""") + print("Failed to compile") return ret ret = os.system(exe) @@ -100,19 +103,22 @@ def calculate_pyruntime_offsets(cpython_path, version, configure=False): def extract_bindings(cpython_path, version, configure=False): print("Generating bindings for python %s from repo at %s" % (version, cpython_path)) - ret = os.system(f""" + ret = os.system( + f""" cd {cpython_path} git checkout {version} # need to run configure on the current branch to generate pyconfig.h sometimes {("./configure prefix=" + os.path.abspath(os.path.join(cpython_path, version))) if configure else ""} - cat Include/Python.h > bindgen_input.h - cat Include/frameobject.h >> bindgen_input.h + + echo "// autogenerated by generate_bindings.py " > bindgen_input.h echo '#define Py_BUILD_CORE 1\n' >> bindgen_input.h - cat Include/internal/pycore_pystate.h >> bindgen_input.h + cat Include/Python.h >> bindgen_input.h + echo '#undef HAVE_STD_ATOMIC' >> bindgen_input.h + cat Include/frameobject.h >> bindgen_input.h cat Include/internal/pycore_interp.h >> bindgen_input.h - cat Include/internal/pycore_frame.h >> bindgen_input.h + cat Include/internal/pycore_dict.h >> bindgen_input.h bindgen bindgen_input.h -o bindgen_output.rs \ --with-derive-default \ @@ -132,13 +138,12 @@ def extract_bindings(cpython_path, version, configure=False): --whitelist-type PyFloatObject \ --whitelist-type PyDictObject \ --whitelist-type PyDictKeysObject \ - --whitelist-type PyDictKeyEntry \ - --whitelist-type PyDictUnicodeEntry \ --whitelist-type PyObject \ --whitelist-type PyTypeObject \ --whitelist-type PyHeapTypeObject \ -- -I . -I ./Include -I ./Include/internal - """) + """ + ) if ret: return ret @@ -152,36 +157,40 @@ def extract_bindings(cpython_path, version, configure=False): o.write("#![allow(clippy::useless_transmute)]\n") o.write("#![allow(clippy::default_trait_access)]\n") o.write("#![allow(clippy::cast_lossless)]\n") - o.write("#![allow(clippy::trivially_copy_pass_by_ref)]\n\n") - o.write("#![allow(clippy::upper_case_acronyms)]\n\n") + o.write("#![allow(clippy::trivially_copy_pass_by_ref)]\n") + o.write("#![allow(clippy::upper_case_acronyms)]\n") + o.write("#![allow(clippy::too_many_arguments)]\n\n") + o.write(open(os.path.join(cpython_path, "bindgen_output.rs")).read()) if __name__ == "__main__": - if sys.platform.startswith("win"): default_cpython_path = os.path.join(os.getenv("userprofile"), "code", "cpython") else: default_cpython_path = os.path.join(os.getenv("HOME"), "code", "cpython") - parser = argparse.ArgumentParser(description="runs bindgen on cpython version", - formatter_class=argparse.ArgumentDefaultsHelpFormatter) - parser.add_argument("--cpython", type=str, default=default_cpython_path, - dest="cpython", help="path to cpython repo") - parser.add_argument("--configure", - help="Run configure script prior to generating bindings", - action="store_true") - parser.add_argument("--pyruntime", - help="generate offsets for pyruntime", - action="store_true") - parser.add_argument("--build", - help="Build python for this version", - action="store_true") - parser.add_argument("--all", - help="Build all versions", - action="store_true") - - parser.add_argument("versions", type=str, nargs='*', help='versions to extract') + parser = argparse.ArgumentParser( + description="runs bindgen on cpython version", + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + ) + parser.add_argument( + "--cpython", + type=str, + default=default_cpython_path, + dest="cpython", + help="path to cpython repo", + ) + parser.add_argument( + "--configure", + help="Run configure script prior to generating bindings", + action="store_true", + ) + parser.add_argument("--pyruntime", help="generate offsets for pyruntime", action="store_true") + parser.add_argument("--build", help="Build python for this version", action="store_true") + parser.add_argument("--all", help="Build all versions", action="store_true") + + parser.add_argument("versions", type=str, nargs="*", help="versions to extract") args = parser.parse_args() @@ -191,7 +200,16 @@ def extract_bindings(cpython_path, version, configure=False): sys.exit(1) if args.all: - versions = ['v3.8.0b4', 'v3.7.0', 'v3.6.6', 'v3.5.5', 'v3.4.8', 'v3.3.7', 'v3.2.6', 'v2.7.15'] + versions = [ + "v3.8.0b4", + "v3.7.0", + "v3.6.6", + "v3.5.5", + "v3.4.8", + "v3.3.7", + "v3.2.6", + "v2.7.15", + ] else: versions = args.versions if not versions: diff --git a/src/coredump.rs b/src/coredump.rs index 53940bdb..834a2d49 100644 --- a/src/coredump.rs +++ b/src/coredump.rs @@ -15,7 +15,7 @@ use crate::binary_parser::{parse_binary, BinaryInfo}; use crate::config::Config; use crate::dump::print_trace; use crate::python_bindings::{ - v2_7_15, v3_10_0, v3_11_0, v3_3_7, v3_5_5, v3_6_6, v3_7_0, v3_8_0, v3_9_5, + v2_7_15, v3_10_0, v3_11_0, v3_12_0, v3_3_7, v3_5_5, v3_6_6, v3_7_0, v3_8_0, v3_9_5, }; use crate::python_data_access::format_variable; use crate::python_interpreters::InterpreterState; @@ -303,6 +303,11 @@ impl PythonCoreDump { minor: 11, .. } => self._get_stack::(config), + Version { + major: 3, + minor: 12, + .. + } => self._get_stack::(config), _ => Err(format_err!( "Unsupported version of Python: {}", self.version diff --git a/src/python_bindings/mod.rs b/src/python_bindings/mod.rs index 420e3c9a..0cb64188 100644 --- a/src/python_bindings/mod.rs +++ b/src/python_bindings/mod.rs @@ -1,6 +1,7 @@ pub mod v2_7_15; pub mod v3_10_0; pub mod v3_11_0; +pub mod v3_12_0; pub mod v3_3_7; pub mod v3_5_5; pub mod v3_6_6; @@ -71,7 +72,7 @@ pub mod pyruntime { } => 32, Version { major: 3, - minor: 11, + minor: 11..=12, .. } => 40, _ => 24, diff --git a/src/python_bindings/v3_12_0.rs b/src/python_bindings/v3_12_0.rs new file mode 100644 index 00000000..cc257341 --- /dev/null +++ b/src/python_bindings/v3_12_0.rs @@ -0,0 +1,12840 @@ +// Generated bindings for python v3.12.0 +#![allow(dead_code)] +#![allow(non_upper_case_globals)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] +#![allow(clippy::useless_transmute)] +#![allow(clippy::default_trait_access)] +#![allow(clippy::cast_lossless)] +#![allow(clippy::trivially_copy_pass_by_ref)] +#![allow(clippy::upper_case_acronyms)] +#![allow(clippy::too_many_arguments)] + +/* automatically generated by rust-bindgen */ +#[repr(C)] +#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct __BindgenBitfieldUnit +where + Storage: AsRef<[u8]> + AsMut<[u8]>, +{ + storage: Storage, + align: [Align; 0], +} +impl __BindgenBitfieldUnit +where + Storage: AsRef<[u8]> + AsMut<[u8]>, +{ + #[inline] + pub fn new(storage: Storage) -> Self { + Self { storage, align: [] } + } + #[inline] + pub fn get_bit(&self, index: usize) -> bool { + debug_assert!(index / 8 < self.storage.as_ref().len()); + let byte_index = index / 8; + let byte = self.storage.as_ref()[byte_index]; + let bit_index = if cfg!(target_endian = "big") { + 7 - (index % 8) + } else { + index % 8 + }; + let mask = 1 << bit_index; + byte & mask == mask + } + #[inline] + pub fn set_bit(&mut self, index: usize, val: bool) { + debug_assert!(index / 8 < self.storage.as_ref().len()); + let byte_index = index / 8; + let byte = &mut self.storage.as_mut()[byte_index]; + let bit_index = if cfg!(target_endian = "big") { + 7 - (index % 8) + } else { + index % 8 + }; + let mask = 1 << bit_index; + if val { + *byte |= mask; + } else { + *byte &= !mask; + } + } + #[inline] + pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { + debug_assert!(bit_width <= 64); + debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); + debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); + let mut val = 0; + for i in 0..(bit_width as usize) { + if self.get_bit(i + bit_offset) { + let index = if cfg!(target_endian = "big") { + bit_width as usize - 1 - i + } else { + i + }; + val |= 1 << index; + } + } + val + } + #[inline] + pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { + debug_assert!(bit_width <= 64); + debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); + debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); + for i in 0..(bit_width as usize) { + let mask = 1 << i; + let val_bit_is_set = val & mask == mask; + let index = if cfg!(target_endian = "big") { + bit_width as usize - 1 - i + } else { + i + }; + self.set_bit(index + bit_offset, val_bit_is_set); + } + } +} +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::std::marker::PhantomData, [T; 0]); +impl __IncompleteArrayField { + #[inline] + pub fn new() -> Self { + __IncompleteArrayField(::std::marker::PhantomData, []) + } + #[inline] + pub unsafe fn as_ptr(&self) -> *const T { + ::std::mem::transmute(self) + } + #[inline] + pub unsafe fn as_mut_ptr(&mut self) -> *mut T { + ::std::mem::transmute(self) + } + #[inline] + pub unsafe fn as_slice(&self, len: usize) -> &[T] { + ::std::slice::from_raw_parts(self.as_ptr(), len) + } + #[inline] + pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { + ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) + } +} +impl ::std::fmt::Debug for __IncompleteArrayField { + fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + fmt.write_str("__IncompleteArrayField") + } +} +impl ::std::clone::Clone for __IncompleteArrayField { + #[inline] + fn clone(&self) -> Self { + Self::new() + } +} +pub type wchar_t = ::std::os::raw::c_int; +pub type __int8_t = ::std::os::raw::c_schar; +pub type __uint8_t = ::std::os::raw::c_uchar; +pub type __uint16_t = ::std::os::raw::c_ushort; +pub type __int32_t = ::std::os::raw::c_int; +pub type __uint32_t = ::std::os::raw::c_uint; +pub type __int64_t = ::std::os::raw::c_long; +pub type __uint64_t = ::std::os::raw::c_ulong; +pub type __dev_t = ::std::os::raw::c_ulong; +pub type __uid_t = ::std::os::raw::c_uint; +pub type __ino64_t = ::std::os::raw::c_ulong; +pub type __off_t = ::std::os::raw::c_long; +pub type __off64_t = ::std::os::raw::c_long; +pub type __pid_t = ::std::os::raw::c_int; +pub type __clock_t = ::std::os::raw::c_long; +pub type __ssize_t = ::std::os::raw::c_long; +pub type __sig_atomic_t = ::std::os::raw::c_int; +pub type ino_t = __ino64_t; +pub type dev_t = __dev_t; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct __sigset_t { + pub __val: [::std::os::raw::c_ulong; 16usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union __atomic_wide_counter { + pub __value64: ::std::os::raw::c_ulonglong, + pub __value32: __atomic_wide_counter__bindgen_ty_1, + _bindgen_union_align: u64, +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct __atomic_wide_counter__bindgen_ty_1 { + pub __low: ::std::os::raw::c_uint, + pub __high: ::std::os::raw::c_uint, +} +impl Default for __atomic_wide_counter { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_internal_list { + pub __prev: *mut __pthread_internal_list, + pub __next: *mut __pthread_internal_list, +} +impl Default for __pthread_internal_list { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type __pthread_list_t = __pthread_internal_list; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __pthread_mutex_s { + pub __lock: ::std::os::raw::c_int, + pub __count: ::std::os::raw::c_uint, + pub __owner: ::std::os::raw::c_int, + pub __nusers: ::std::os::raw::c_uint, + pub __kind: ::std::os::raw::c_int, + pub __spins: ::std::os::raw::c_short, + pub __elision: ::std::os::raw::c_short, + pub __list: __pthread_list_t, +} +impl Default for __pthread_mutex_s { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct __pthread_cond_s { + pub __wseq: __atomic_wide_counter, + pub __g1_start: __atomic_wide_counter, + pub __g_refs: [::std::os::raw::c_uint; 2usize], + pub __g_size: [::std::os::raw::c_uint; 2usize], + pub __g1_orig_size: ::std::os::raw::c_uint, + pub __wrefs: ::std::os::raw::c_uint, + pub __g_signals: [::std::os::raw::c_uint; 2usize], +} +impl Default for __pthread_cond_s { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_condattr_t { + pub __size: [::std::os::raw::c_char; 4usize], + pub __align: ::std::os::raw::c_int, + _bindgen_union_align: u32, +} +impl Default for pthread_condattr_t { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type pthread_key_t = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_mutex_t { + pub __data: __pthread_mutex_s, + pub __size: [::std::os::raw::c_char; 40usize], + pub __align: ::std::os::raw::c_long, + _bindgen_union_align: [u64; 5usize], +} +impl Default for pthread_mutex_t { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pthread_cond_t { + pub __data: __pthread_cond_s, + pub __size: [::std::os::raw::c_char; 48usize], + pub __align: ::std::os::raw::c_longlong, + _bindgen_union_align: [u64; 6usize], +} +impl Default for pthread_cond_t { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type FILE = _IO_FILE; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_marker { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_codecvt { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_wide_data { + _unused: [u8; 0], +} +pub type _IO_lock_t = ::std::os::raw::c_void; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _IO_FILE { + pub _flags: ::std::os::raw::c_int, + pub _IO_read_ptr: *mut ::std::os::raw::c_char, + pub _IO_read_end: *mut ::std::os::raw::c_char, + pub _IO_read_base: *mut ::std::os::raw::c_char, + pub _IO_write_base: *mut ::std::os::raw::c_char, + pub _IO_write_ptr: *mut ::std::os::raw::c_char, + pub _IO_write_end: *mut ::std::os::raw::c_char, + pub _IO_buf_base: *mut ::std::os::raw::c_char, + pub _IO_buf_end: *mut ::std::os::raw::c_char, + pub _IO_save_base: *mut ::std::os::raw::c_char, + pub _IO_backup_base: *mut ::std::os::raw::c_char, + pub _IO_save_end: *mut ::std::os::raw::c_char, + pub _markers: *mut _IO_marker, + pub _chain: *mut _IO_FILE, + pub _fileno: ::std::os::raw::c_int, + pub _flags2: ::std::os::raw::c_int, + pub _old_offset: __off_t, + pub _cur_column: ::std::os::raw::c_ushort, + pub _vtable_offset: ::std::os::raw::c_schar, + pub _shortbuf: [::std::os::raw::c_char; 1usize], + pub _lock: *mut _IO_lock_t, + pub _offset: __off64_t, + pub _codecvt: *mut _IO_codecvt, + pub _wide_data: *mut _IO_wide_data, + pub _freeres_list: *mut _IO_FILE, + pub _freeres_buf: *mut ::std::os::raw::c_void, + pub __pad5: usize, + pub _mode: ::std::os::raw::c_int, + pub _unused2: [::std::os::raw::c_char; 20usize], +} +impl Default for _IO_FILE { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type Py_ssize_t = isize; +pub type Py_hash_t = Py_ssize_t; +pub type Py_uhash_t = usize; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct PyMemAllocatorEx { + pub ctx: *mut ::std::os::raw::c_void, + pub malloc: ::std::option::Option< + unsafe extern "C" fn( + ctx: *mut ::std::os::raw::c_void, + size: usize, + ) -> *mut ::std::os::raw::c_void, + >, + pub calloc: ::std::option::Option< + unsafe extern "C" fn( + ctx: *mut ::std::os::raw::c_void, + nelem: usize, + elsize: usize, + ) -> *mut ::std::os::raw::c_void, + >, + pub realloc: ::std::option::Option< + unsafe extern "C" fn( + ctx: *mut ::std::os::raw::c_void, + ptr: *mut ::std::os::raw::c_void, + new_size: usize, + ) -> *mut ::std::os::raw::c_void, + >, + pub free: ::std::option::Option< + unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, ptr: *mut ::std::os::raw::c_void), + >, +} +impl Default for PyMemAllocatorEx { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type PyObject = _object; +pub type PyLongObject = _longobject; +pub type PyTypeObject = _typeobject; +pub type PyFrameObject = _frame; +pub type PyThreadState = _ts; +pub type PyInterpreterState = _is; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct Py_buffer { + pub buf: *mut ::std::os::raw::c_void, + pub obj: *mut PyObject, + pub len: Py_ssize_t, + pub itemsize: Py_ssize_t, + pub readonly: ::std::os::raw::c_int, + pub ndim: ::std::os::raw::c_int, + pub format: *mut ::std::os::raw::c_char, + pub shape: *mut Py_ssize_t, + pub strides: *mut Py_ssize_t, + pub suboffsets: *mut Py_ssize_t, + pub internal: *mut ::std::os::raw::c_void, +} +impl Default for Py_buffer { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type getbufferproc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyObject, + arg2: *mut Py_buffer, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int, +>; +pub type releasebufferproc = + ::std::option::Option; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _object { + pub __bindgen_anon_1: _object__bindgen_ty_1, + pub ob_type: *mut PyTypeObject, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union _object__bindgen_ty_1 { + pub ob_refcnt: Py_ssize_t, + pub ob_refcnt_split: [u32; 2usize], + _bindgen_union_align: u64, +} +impl Default for _object__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _object { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyVarObject { + pub ob_base: PyObject, + pub ob_size: Py_ssize_t, +} +impl Default for PyVarObject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type unaryfunc = + ::std::option::Option *mut PyObject>; +pub type binaryfunc = ::std::option::Option< + unsafe extern "C" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject, +>; +pub type ternaryfunc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyObject, + arg2: *mut PyObject, + arg3: *mut PyObject, + ) -> *mut PyObject, +>; +pub type inquiry = + ::std::option::Option ::std::os::raw::c_int>; +pub type lenfunc = ::std::option::Option Py_ssize_t>; +pub type ssizeargfunc = ::std::option::Option< + unsafe extern "C" fn(arg1: *mut PyObject, arg2: Py_ssize_t) -> *mut PyObject, +>; +pub type ssizeobjargproc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyObject, + arg2: Py_ssize_t, + arg3: *mut PyObject, + ) -> ::std::os::raw::c_int, +>; +pub type objobjargproc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyObject, + arg2: *mut PyObject, + arg3: *mut PyObject, + ) -> ::std::os::raw::c_int, +>; +pub type objobjproc = ::std::option::Option< + unsafe extern "C" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> ::std::os::raw::c_int, +>; +pub type visitproc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyObject, + arg2: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +pub type traverseproc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyObject, + arg2: visitproc, + arg3: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +pub type freefunc = ::std::option::Option; +pub type destructor = ::std::option::Option; +pub type getattrfunc = ::std::option::Option< + unsafe extern "C" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_char) -> *mut PyObject, +>; +pub type getattrofunc = ::std::option::Option< + unsafe extern "C" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject, +>; +pub type setattrfunc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyObject, + arg2: *mut ::std::os::raw::c_char, + arg3: *mut PyObject, + ) -> ::std::os::raw::c_int, +>; +pub type setattrofunc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyObject, + arg2: *mut PyObject, + arg3: *mut PyObject, + ) -> ::std::os::raw::c_int, +>; +pub type reprfunc = + ::std::option::Option *mut PyObject>; +pub type hashfunc = ::std::option::Option Py_hash_t>; +pub type richcmpfunc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyObject, + arg2: *mut PyObject, + arg3: ::std::os::raw::c_int, + ) -> *mut PyObject, +>; +pub type getiterfunc = + ::std::option::Option *mut PyObject>; +pub type iternextfunc = + ::std::option::Option *mut PyObject>; +pub type descrgetfunc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyObject, + arg2: *mut PyObject, + arg3: *mut PyObject, + ) -> *mut PyObject, +>; +pub type descrsetfunc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyObject, + arg2: *mut PyObject, + arg3: *mut PyObject, + ) -> ::std::os::raw::c_int, +>; +pub type initproc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyObject, + arg2: *mut PyObject, + arg3: *mut PyObject, + ) -> ::std::os::raw::c_int, +>; +pub type newfunc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyTypeObject, + arg2: *mut PyObject, + arg3: *mut PyObject, + ) -> *mut PyObject, +>; +pub type allocfunc = ::std::option::Option< + unsafe extern "C" fn(arg1: *mut PyTypeObject, arg2: Py_ssize_t) -> *mut PyObject, +>; +pub type vectorcallfunc = ::std::option::Option< + unsafe extern "C" fn( + callable: *mut PyObject, + args: *const *mut PyObject, + nargsf: usize, + kwnames: *mut PyObject, + ) -> *mut PyObject, +>; +pub const PySendResult_PYGEN_RETURN: PySendResult = 0; +pub const PySendResult_PYGEN_ERROR: PySendResult = -1; +pub const PySendResult_PYGEN_NEXT: PySendResult = 1; +pub type PySendResult = i32; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct PyNumberMethods { + pub nb_add: binaryfunc, + pub nb_subtract: binaryfunc, + pub nb_multiply: binaryfunc, + pub nb_remainder: binaryfunc, + pub nb_divmod: binaryfunc, + pub nb_power: ternaryfunc, + pub nb_negative: unaryfunc, + pub nb_positive: unaryfunc, + pub nb_absolute: unaryfunc, + pub nb_bool: inquiry, + pub nb_invert: unaryfunc, + pub nb_lshift: binaryfunc, + pub nb_rshift: binaryfunc, + pub nb_and: binaryfunc, + pub nb_xor: binaryfunc, + pub nb_or: binaryfunc, + pub nb_int: unaryfunc, + pub nb_reserved: *mut ::std::os::raw::c_void, + pub nb_float: unaryfunc, + pub nb_inplace_add: binaryfunc, + pub nb_inplace_subtract: binaryfunc, + pub nb_inplace_multiply: binaryfunc, + pub nb_inplace_remainder: binaryfunc, + pub nb_inplace_power: ternaryfunc, + pub nb_inplace_lshift: binaryfunc, + pub nb_inplace_rshift: binaryfunc, + pub nb_inplace_and: binaryfunc, + pub nb_inplace_xor: binaryfunc, + pub nb_inplace_or: binaryfunc, + pub nb_floor_divide: binaryfunc, + pub nb_true_divide: binaryfunc, + pub nb_inplace_floor_divide: binaryfunc, + pub nb_inplace_true_divide: binaryfunc, + pub nb_index: unaryfunc, + pub nb_matrix_multiply: binaryfunc, + pub nb_inplace_matrix_multiply: binaryfunc, +} +impl Default for PyNumberMethods { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct PySequenceMethods { + pub sq_length: lenfunc, + pub sq_concat: binaryfunc, + pub sq_repeat: ssizeargfunc, + pub sq_item: ssizeargfunc, + pub was_sq_slice: *mut ::std::os::raw::c_void, + pub sq_ass_item: ssizeobjargproc, + pub was_sq_ass_slice: *mut ::std::os::raw::c_void, + pub sq_contains: objobjproc, + pub sq_inplace_concat: binaryfunc, + pub sq_inplace_repeat: ssizeargfunc, +} +impl Default for PySequenceMethods { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct PyMappingMethods { + pub mp_length: lenfunc, + pub mp_subscript: binaryfunc, + pub mp_ass_subscript: objobjargproc, +} +impl Default for PyMappingMethods { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type sendfunc = ::std::option::Option< + unsafe extern "C" fn( + iter: *mut PyObject, + value: *mut PyObject, + result: *mut *mut PyObject, + ) -> PySendResult, +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct PyAsyncMethods { + pub am_await: unaryfunc, + pub am_aiter: unaryfunc, + pub am_anext: unaryfunc, + pub am_send: sendfunc, +} +impl Default for PyAsyncMethods { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct PyBufferProcs { + pub bf_getbuffer: getbufferproc, + pub bf_releasebuffer: releasebufferproc, +} +impl Default for PyBufferProcs { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _typeobject { + pub ob_base: PyVarObject, + pub tp_name: *const ::std::os::raw::c_char, + pub tp_basicsize: Py_ssize_t, + pub tp_itemsize: Py_ssize_t, + pub tp_dealloc: destructor, + pub tp_vectorcall_offset: Py_ssize_t, + pub tp_getattr: getattrfunc, + pub tp_setattr: setattrfunc, + pub tp_as_async: *mut PyAsyncMethods, + pub tp_repr: reprfunc, + pub tp_as_number: *mut PyNumberMethods, + pub tp_as_sequence: *mut PySequenceMethods, + pub tp_as_mapping: *mut PyMappingMethods, + pub tp_hash: hashfunc, + pub tp_call: ternaryfunc, + pub tp_str: reprfunc, + pub tp_getattro: getattrofunc, + pub tp_setattro: setattrofunc, + pub tp_as_buffer: *mut PyBufferProcs, + pub tp_flags: ::std::os::raw::c_ulong, + pub tp_doc: *const ::std::os::raw::c_char, + pub tp_traverse: traverseproc, + pub tp_clear: inquiry, + pub tp_richcompare: richcmpfunc, + pub tp_weaklistoffset: Py_ssize_t, + pub tp_iter: getiterfunc, + pub tp_iternext: iternextfunc, + pub tp_methods: *mut PyMethodDef, + pub tp_members: *mut PyMemberDef, + pub tp_getset: *mut PyGetSetDef, + pub tp_base: *mut PyTypeObject, + pub tp_dict: *mut PyObject, + pub tp_descr_get: descrgetfunc, + pub tp_descr_set: descrsetfunc, + pub tp_dictoffset: Py_ssize_t, + pub tp_init: initproc, + pub tp_alloc: allocfunc, + pub tp_new: newfunc, + pub tp_free: freefunc, + pub tp_is_gc: inquiry, + pub tp_bases: *mut PyObject, + pub tp_mro: *mut PyObject, + pub tp_cache: *mut PyObject, + pub tp_subclasses: *mut ::std::os::raw::c_void, + pub tp_weaklist: *mut PyObject, + pub tp_del: destructor, + pub tp_version_tag: ::std::os::raw::c_uint, + pub tp_finalize: destructor, + pub tp_vectorcall: vectorcallfunc, + pub tp_watched: ::std::os::raw::c_uchar, +} +impl Default for _typeobject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _specialization_cache { + pub getitem: *mut PyObject, + pub getitem_version: u32, +} +impl Default for _specialization_cache { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _heaptypeobject { + pub ht_type: PyTypeObject, + pub as_async: PyAsyncMethods, + pub as_number: PyNumberMethods, + pub as_mapping: PyMappingMethods, + pub as_sequence: PySequenceMethods, + pub as_buffer: PyBufferProcs, + pub ht_name: *mut PyObject, + pub ht_slots: *mut PyObject, + pub ht_qualname: *mut PyObject, + pub ht_cached_keys: *mut _dictkeysobject, + pub ht_module: *mut PyObject, + pub _ht_tpname: *mut ::std::os::raw::c_char, + pub _spec_cache: _specialization_cache, +} +impl Default for _heaptypeobject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type PyHeapTypeObject = _heaptypeobject; +pub type PyType_WatchCallback = + ::std::option::Option ::std::os::raw::c_int>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct PyObjectArenaAllocator { + pub ctx: *mut ::std::os::raw::c_void, + pub alloc: ::std::option::Option< + unsafe extern "C" fn( + ctx: *mut ::std::os::raw::c_void, + size: usize, + ) -> *mut ::std::os::raw::c_void, + >, + pub free: ::std::option::Option< + unsafe extern "C" fn( + ctx: *mut ::std::os::raw::c_void, + ptr: *mut ::std::os::raw::c_void, + size: usize, + ), + >, +} +impl Default for PyObjectArenaAllocator { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyBytesObject { + pub ob_base: PyVarObject, + pub ob_shash: Py_hash_t, + pub ob_sval: [::std::os::raw::c_char; 1usize], +} +impl Default for PyBytesObject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type Py_UCS4 = u32; +pub type Py_UCS2 = u16; +pub type Py_UCS1 = u8; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyASCIIObject { + pub ob_base: PyObject, + pub length: Py_ssize_t, + pub hash: Py_hash_t, + pub state: PyASCIIObject__bindgen_ty_1, +} +#[repr(C)] +#[repr(align(4))] +#[derive(Debug, Default, Copy, Clone)] +pub struct PyASCIIObject__bindgen_ty_1 { + pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u8>, +} +impl PyASCIIObject__bindgen_ty_1 { + #[inline] + pub fn interned(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 2u8) as u32) } + } + #[inline] + pub fn set_interned(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(0usize, 2u8, val as u64) + } + } + #[inline] + pub fn kind(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 3u8) as u32) } + } + #[inline] + pub fn set_kind(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(2usize, 3u8, val as u64) + } + } + #[inline] + pub fn compact(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) } + } + #[inline] + pub fn set_compact(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(5usize, 1u8, val as u64) + } + } + #[inline] + pub fn ascii(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) } + } + #[inline] + pub fn set_ascii(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(6usize, 1u8, val as u64) + } + } + #[inline] + pub fn new_bitfield_1( + interned: ::std::os::raw::c_uint, + kind: ::std::os::raw::c_uint, + compact: ::std::os::raw::c_uint, + ascii: ::std::os::raw::c_uint, + ) -> __BindgenBitfieldUnit<[u8; 4usize], u8> { + let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u8> = + Default::default(); + __bindgen_bitfield_unit.set(0usize, 2u8, { + let interned: u32 = unsafe { ::std::mem::transmute(interned) }; + interned as u64 + }); + __bindgen_bitfield_unit.set(2usize, 3u8, { + let kind: u32 = unsafe { ::std::mem::transmute(kind) }; + kind as u64 + }); + __bindgen_bitfield_unit.set(5usize, 1u8, { + let compact: u32 = unsafe { ::std::mem::transmute(compact) }; + compact as u64 + }); + __bindgen_bitfield_unit.set(6usize, 1u8, { + let ascii: u32 = unsafe { ::std::mem::transmute(ascii) }; + ascii as u64 + }); + __bindgen_bitfield_unit + } +} +impl Default for PyASCIIObject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyCompactUnicodeObject { + pub _base: PyASCIIObject, + pub utf8_length: Py_ssize_t, + pub utf8: *mut ::std::os::raw::c_char, +} +impl Default for PyCompactUnicodeObject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyUnicodeObject { + pub _base: PyCompactUnicodeObject, + pub data: PyUnicodeObject__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union PyUnicodeObject__bindgen_ty_1 { + pub any: *mut ::std::os::raw::c_void, + pub latin1: *mut Py_UCS1, + pub ucs2: *mut Py_UCS2, + pub ucs4: *mut Py_UCS4, + _bindgen_union_align: u64, +} +impl Default for PyUnicodeObject__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for PyUnicodeObject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type digit = u32; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _PyLongValue { + pub lv_tag: usize, + pub ob_digit: [digit; 1usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _longobject { + pub ob_base: PyObject, + pub long_value: _PyLongValue, +} +impl Default for _longobject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyFloatObject { + pub ob_base: PyObject, + pub ob_fval: f64, +} +impl Default for PyFloatObject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyTupleObject { + pub ob_base: PyVarObject, + pub ob_item: [*mut PyObject; 1usize], +} +impl Default for PyTupleObject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyListObject { + pub ob_base: PyVarObject, + pub ob_item: *mut *mut PyObject, + pub allocated: Py_ssize_t, +} +impl Default for PyListObject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type PyDictKeysObject = _dictkeysobject; +pub type PyDictValues = _dictvalues; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyDictObject { + pub ob_base: PyObject, + pub ma_used: Py_ssize_t, + pub ma_version_tag: u64, + pub ma_keys: *mut PyDictKeysObject, + pub ma_values: *mut PyDictValues, +} +impl Default for PyDictObject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub const PyDict_WatchEvent_PyDict_EVENT_ADDED: PyDict_WatchEvent = 0; +pub const PyDict_WatchEvent_PyDict_EVENT_MODIFIED: PyDict_WatchEvent = 1; +pub const PyDict_WatchEvent_PyDict_EVENT_DELETED: PyDict_WatchEvent = 2; +pub const PyDict_WatchEvent_PyDict_EVENT_CLONED: PyDict_WatchEvent = 3; +pub const PyDict_WatchEvent_PyDict_EVENT_CLEARED: PyDict_WatchEvent = 4; +pub const PyDict_WatchEvent_PyDict_EVENT_DEALLOCATED: PyDict_WatchEvent = 5; +pub type PyDict_WatchEvent = u32; +pub type PyDict_WatchCallback = ::std::option::Option< + unsafe extern "C" fn( + event: PyDict_WatchEvent, + dict: *mut PyObject, + key: *mut PyObject, + new_value: *mut PyObject, + ) -> ::std::os::raw::c_int, +>; +pub type PyCFunction = ::std::option::Option< + unsafe extern "C" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject, +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct PyMethodDef { + pub ml_name: *const ::std::os::raw::c_char, + pub ml_meth: PyCFunction, + pub ml_flags: ::std::os::raw::c_int, + pub ml_doc: *const ::std::os::raw::c_char, +} +impl Default for PyMethodDef { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyFunctionObject { + pub ob_base: PyObject, + pub func_globals: *mut PyObject, + pub func_builtins: *mut PyObject, + pub func_name: *mut PyObject, + pub func_qualname: *mut PyObject, + pub func_code: *mut PyObject, + pub func_defaults: *mut PyObject, + pub func_kwdefaults: *mut PyObject, + pub func_closure: *mut PyObject, + pub func_doc: *mut PyObject, + pub func_dict: *mut PyObject, + pub func_weakreflist: *mut PyObject, + pub func_module: *mut PyObject, + pub func_annotations: *mut PyObject, + pub func_typeparams: *mut PyObject, + pub vectorcall: vectorcallfunc, + pub func_version: u32, +} +impl Default for PyFunctionObject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub const PyFunction_WatchEvent_PyFunction_EVENT_CREATE: PyFunction_WatchEvent = 0; +pub const PyFunction_WatchEvent_PyFunction_EVENT_DESTROY: PyFunction_WatchEvent = 1; +pub const PyFunction_WatchEvent_PyFunction_EVENT_MODIFY_CODE: PyFunction_WatchEvent = 2; +pub const PyFunction_WatchEvent_PyFunction_EVENT_MODIFY_DEFAULTS: PyFunction_WatchEvent = 3; +pub const PyFunction_WatchEvent_PyFunction_EVENT_MODIFY_KWDEFAULTS: PyFunction_WatchEvent = 4; +pub type PyFunction_WatchEvent = u32; +pub type PyFunction_WatchCallback = ::std::option::Option< + unsafe extern "C" fn( + event: PyFunction_WatchEvent, + func: *mut PyFunctionObject, + new_value: *mut PyObject, + ) -> ::std::os::raw::c_int, +>; +pub type Py_OpenCodeHookFunction = ::std::option::Option< + unsafe extern "C" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject, +>; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _Py_LocalMonitors { + pub tools: [u8; 15usize], +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _Py_GlobalMonitors { + pub tools: [u8; 15usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union _Py_CODEUNIT { + pub cache: u16, + pub op: _Py_CODEUNIT__bindgen_ty_1, + _bindgen_union_align: u16, +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _Py_CODEUNIT__bindgen_ty_1 { + pub code: u8, + pub arg: u8, +} +impl Default for _Py_CODEUNIT { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _PyCoCached { + pub _co_code: *mut PyObject, + pub _co_varnames: *mut PyObject, + pub _co_cellvars: *mut PyObject, + pub _co_freevars: *mut PyObject, +} +impl Default for _PyCoCached { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _PyCoLineInstrumentationData { + pub original_opcode: u8, + pub line_delta: i8, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _PyCoMonitoringData { + pub local_monitors: _Py_LocalMonitors, + pub active_monitors: _Py_LocalMonitors, + pub tools: *mut u8, + pub lines: *mut _PyCoLineInstrumentationData, + pub line_tools: *mut u8, + pub per_instruction_opcodes: *mut u8, + pub per_instruction_tools: *mut u8, +} +impl Default for _PyCoMonitoringData { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyCodeObject { + pub ob_base: PyVarObject, + pub co_consts: *mut PyObject, + pub co_names: *mut PyObject, + pub co_exceptiontable: *mut PyObject, + pub co_flags: ::std::os::raw::c_int, + pub co_argcount: ::std::os::raw::c_int, + pub co_posonlyargcount: ::std::os::raw::c_int, + pub co_kwonlyargcount: ::std::os::raw::c_int, + pub co_stacksize: ::std::os::raw::c_int, + pub co_firstlineno: ::std::os::raw::c_int, + pub co_nlocalsplus: ::std::os::raw::c_int, + pub co_framesize: ::std::os::raw::c_int, + pub co_nlocals: ::std::os::raw::c_int, + pub co_ncellvars: ::std::os::raw::c_int, + pub co_nfreevars: ::std::os::raw::c_int, + pub co_version: u32, + pub co_localsplusnames: *mut PyObject, + pub co_localspluskinds: *mut PyObject, + pub co_filename: *mut PyObject, + pub co_name: *mut PyObject, + pub co_qualname: *mut PyObject, + pub co_linetable: *mut PyObject, + pub co_weakreflist: *mut PyObject, + pub _co_cached: *mut _PyCoCached, + pub _co_instrumentation_version: u64, + pub _co_monitoring: *mut _PyCoMonitoringData, + pub _co_firsttraceable: ::std::os::raw::c_int, + pub co_extra: *mut ::std::os::raw::c_void, + pub co_code_adaptive: [::std::os::raw::c_char; 1usize], +} +impl Default for PyCodeObject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub const PyCodeEvent_PY_CODE_EVENT_CREATE: PyCodeEvent = 0; +pub const PyCodeEvent_PY_CODE_EVENT_DESTROY: PyCodeEvent = 1; +pub type PyCodeEvent = u32; +pub type PyCode_WatchCallback = ::std::option::Option< + unsafe extern "C" fn(event: PyCodeEvent, co: *mut PyCodeObject) -> ::std::os::raw::c_int, +>; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PySliceObject { + pub ob_base: PyObject, + pub start: *mut PyObject, + pub stop: *mut PyObject, + pub step: *mut PyObject, +} +impl Default for PySliceObject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct PyWideStringList { + pub length: Py_ssize_t, + pub items: *mut *mut wchar_t, +} +impl Default for PyWideStringList { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct PyPreConfig { + pub _config_init: ::std::os::raw::c_int, + pub parse_argv: ::std::os::raw::c_int, + pub isolated: ::std::os::raw::c_int, + pub use_environment: ::std::os::raw::c_int, + pub configure_locale: ::std::os::raw::c_int, + pub coerce_c_locale: ::std::os::raw::c_int, + pub coerce_c_locale_warn: ::std::os::raw::c_int, + pub utf8_mode: ::std::os::raw::c_int, + pub dev_mode: ::std::os::raw::c_int, + pub allocator: ::std::os::raw::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct PyConfig { + pub _config_init: ::std::os::raw::c_int, + pub isolated: ::std::os::raw::c_int, + pub use_environment: ::std::os::raw::c_int, + pub dev_mode: ::std::os::raw::c_int, + pub install_signal_handlers: ::std::os::raw::c_int, + pub use_hash_seed: ::std::os::raw::c_int, + pub hash_seed: ::std::os::raw::c_ulong, + pub faulthandler: ::std::os::raw::c_int, + pub tracemalloc: ::std::os::raw::c_int, + pub perf_profiling: ::std::os::raw::c_int, + pub import_time: ::std::os::raw::c_int, + pub code_debug_ranges: ::std::os::raw::c_int, + pub show_ref_count: ::std::os::raw::c_int, + pub dump_refs: ::std::os::raw::c_int, + pub dump_refs_file: *mut wchar_t, + pub malloc_stats: ::std::os::raw::c_int, + pub filesystem_encoding: *mut wchar_t, + pub filesystem_errors: *mut wchar_t, + pub pycache_prefix: *mut wchar_t, + pub parse_argv: ::std::os::raw::c_int, + pub orig_argv: PyWideStringList, + pub argv: PyWideStringList, + pub xoptions: PyWideStringList, + pub warnoptions: PyWideStringList, + pub site_import: ::std::os::raw::c_int, + pub bytes_warning: ::std::os::raw::c_int, + pub warn_default_encoding: ::std::os::raw::c_int, + pub inspect: ::std::os::raw::c_int, + pub interactive: ::std::os::raw::c_int, + pub optimization_level: ::std::os::raw::c_int, + pub parser_debug: ::std::os::raw::c_int, + pub write_bytecode: ::std::os::raw::c_int, + pub verbose: ::std::os::raw::c_int, + pub quiet: ::std::os::raw::c_int, + pub user_site_directory: ::std::os::raw::c_int, + pub configure_c_stdio: ::std::os::raw::c_int, + pub buffered_stdio: ::std::os::raw::c_int, + pub stdio_encoding: *mut wchar_t, + pub stdio_errors: *mut wchar_t, + pub check_hash_pycs_mode: *mut wchar_t, + pub use_frozen_modules: ::std::os::raw::c_int, + pub safe_path: ::std::os::raw::c_int, + pub int_max_str_digits: ::std::os::raw::c_int, + pub pathconfig_warnings: ::std::os::raw::c_int, + pub program_name: *mut wchar_t, + pub pythonpath_env: *mut wchar_t, + pub home: *mut wchar_t, + pub platlibdir: *mut wchar_t, + pub module_search_paths_set: ::std::os::raw::c_int, + pub module_search_paths: PyWideStringList, + pub stdlib_dir: *mut wchar_t, + pub executable: *mut wchar_t, + pub base_executable: *mut wchar_t, + pub prefix: *mut wchar_t, + pub base_prefix: *mut wchar_t, + pub exec_prefix: *mut wchar_t, + pub base_exec_prefix: *mut wchar_t, + pub skip_source_first_line: ::std::os::raw::c_int, + pub run_command: *mut wchar_t, + pub run_module: *mut wchar_t, + pub run_filename: *mut wchar_t, + pub _install_importlib: ::std::os::raw::c_int, + pub _init_main: ::std::os::raw::c_int, + pub _is_python_build: ::std::os::raw::c_int, +} +impl Default for PyConfig { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type Py_tracefunc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyObject, + arg2: *mut PyFrameObject, + arg3: ::std::os::raw::c_int, + arg4: *mut PyObject, + ) -> ::std::os::raw::c_int, +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _PyCFrame { + pub current_frame: *mut _PyInterpreterFrame, + pub previous: *mut _PyCFrame, +} +impl Default for _PyCFrame { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _err_stackitem { + pub exc_value: *mut PyObject, + pub previous_item: *mut _err_stackitem, +} +impl Default for _err_stackitem { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type _PyErr_StackItem = _err_stackitem; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _stack_chunk { + pub previous: *mut _stack_chunk, + pub size: usize, + pub top: usize, + pub data: [*mut PyObject; 1usize], +} +impl Default for _stack_chunk { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type _PyStackChunk = _stack_chunk; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _py_trashcan { + pub delete_nesting: ::std::os::raw::c_int, + pub delete_later: *mut PyObject, +} +impl Default for _py_trashcan { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _ts { + pub prev: *mut PyThreadState, + pub next: *mut PyThreadState, + pub interp: *mut PyInterpreterState, + pub _status: _ts__bindgen_ty_1, + pub py_recursion_remaining: ::std::os::raw::c_int, + pub py_recursion_limit: ::std::os::raw::c_int, + pub c_recursion_remaining: ::std::os::raw::c_int, + pub recursion_headroom: ::std::os::raw::c_int, + pub tracing: ::std::os::raw::c_int, + pub what_event: ::std::os::raw::c_int, + pub cframe: *mut _PyCFrame, + pub c_profilefunc: Py_tracefunc, + pub c_tracefunc: Py_tracefunc, + pub c_profileobj: *mut PyObject, + pub c_traceobj: *mut PyObject, + pub current_exception: *mut PyObject, + pub exc_info: *mut _PyErr_StackItem, + pub dict: *mut PyObject, + pub gilstate_counter: ::std::os::raw::c_int, + pub async_exc: *mut PyObject, + pub thread_id: ::std::os::raw::c_ulong, + pub native_thread_id: ::std::os::raw::c_ulong, + pub trash: _py_trashcan, + pub on_delete: ::std::option::Option, + pub on_delete_data: *mut ::std::os::raw::c_void, + pub coroutine_origin_tracking_depth: ::std::os::raw::c_int, + pub async_gen_firstiter: *mut PyObject, + pub async_gen_finalizer: *mut PyObject, + pub context: *mut PyObject, + pub context_ver: u64, + pub id: u64, + pub datastack_chunk: *mut _PyStackChunk, + pub datastack_top: *mut *mut PyObject, + pub datastack_limit: *mut *mut PyObject, + pub exc_state: _PyErr_StackItem, + pub root_cframe: _PyCFrame, +} +#[repr(C)] +#[repr(align(4))] +#[derive(Debug, Default, Copy, Clone)] +pub struct _ts__bindgen_ty_1 { + pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u8>, +} +impl _ts__bindgen_ty_1 { + #[inline] + pub fn initialized(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) } + } + #[inline] + pub fn set_initialized(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(0usize, 1u8, val as u64) + } + } + #[inline] + pub fn bound(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) } + } + #[inline] + pub fn set_bound(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(1usize, 1u8, val as u64) + } + } + #[inline] + pub fn unbound(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) } + } + #[inline] + pub fn set_unbound(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(2usize, 1u8, val as u64) + } + } + #[inline] + pub fn bound_gilstate(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) } + } + #[inline] + pub fn set_bound_gilstate(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(3usize, 1u8, val as u64) + } + } + #[inline] + pub fn active(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) } + } + #[inline] + pub fn set_active(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(4usize, 1u8, val as u64) + } + } + #[inline] + pub fn finalizing(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) } + } + #[inline] + pub fn set_finalizing(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(5usize, 1u8, val as u64) + } + } + #[inline] + pub fn cleared(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) } + } + #[inline] + pub fn set_cleared(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(6usize, 1u8, val as u64) + } + } + #[inline] + pub fn finalized(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) } + } + #[inline] + pub fn set_finalized(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(7usize, 1u8, val as u64) + } + } + #[inline] + pub fn new_bitfield_1( + initialized: ::std::os::raw::c_uint, + bound: ::std::os::raw::c_uint, + unbound: ::std::os::raw::c_uint, + bound_gilstate: ::std::os::raw::c_uint, + active: ::std::os::raw::c_uint, + finalizing: ::std::os::raw::c_uint, + cleared: ::std::os::raw::c_uint, + finalized: ::std::os::raw::c_uint, + ) -> __BindgenBitfieldUnit<[u8; 4usize], u8> { + let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u8> = + Default::default(); + __bindgen_bitfield_unit.set(0usize, 1u8, { + let initialized: u32 = unsafe { ::std::mem::transmute(initialized) }; + initialized as u64 + }); + __bindgen_bitfield_unit.set(1usize, 1u8, { + let bound: u32 = unsafe { ::std::mem::transmute(bound) }; + bound as u64 + }); + __bindgen_bitfield_unit.set(2usize, 1u8, { + let unbound: u32 = unsafe { ::std::mem::transmute(unbound) }; + unbound as u64 + }); + __bindgen_bitfield_unit.set(3usize, 1u8, { + let bound_gilstate: u32 = unsafe { ::std::mem::transmute(bound_gilstate) }; + bound_gilstate as u64 + }); + __bindgen_bitfield_unit.set(4usize, 1u8, { + let active: u32 = unsafe { ::std::mem::transmute(active) }; + active as u64 + }); + __bindgen_bitfield_unit.set(5usize, 1u8, { + let finalizing: u32 = unsafe { ::std::mem::transmute(finalizing) }; + finalizing as u64 + }); + __bindgen_bitfield_unit.set(6usize, 1u8, { + let cleared: u32 = unsafe { ::std::mem::transmute(cleared) }; + cleared as u64 + }); + __bindgen_bitfield_unit.set(7usize, 1u8, { + let finalized: u32 = unsafe { ::std::mem::transmute(finalized) }; + finalized as u64 + }); + __bindgen_bitfield_unit + } +} +impl Default for _ts { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type _PyFrameEvalFunction = ::std::option::Option< + unsafe extern "C" fn( + tstate: *mut PyThreadState, + arg1: *mut _PyInterpreterFrame, + arg2: ::std::os::raw::c_int, + ) -> *mut PyObject, +>; +pub type _PyCrossInterpreterData = _xid; +pub type xid_newobjectfunc = ::std::option::Option< + unsafe extern "C" fn(arg1: *mut _PyCrossInterpreterData) -> *mut PyObject, +>; +pub type xid_freefunc = + ::std::option::Option; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _xid { + pub data: *mut ::std::os::raw::c_void, + pub obj: *mut PyObject, + pub interp: i64, + pub new_object: xid_newobjectfunc, + pub free: xid_freefunc, +} +impl Default for _xid { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type crossinterpdatafunc = ::std::option::Option< + unsafe extern "C" fn( + tstate: *mut PyThreadState, + arg1: *mut PyObject, + arg2: *mut _PyCrossInterpreterData, + ) -> ::std::os::raw::c_int, +>; +pub type getter = ::std::option::Option< + unsafe extern "C" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject, +>; +pub type setter = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut PyObject, + arg2: *mut PyObject, + arg3: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct PyGetSetDef { + pub name: *const ::std::os::raw::c_char, + pub get: getter, + pub set: setter, + pub doc: *const ::std::os::raw::c_char, + pub closure: *mut ::std::os::raw::c_void, +} +impl Default for PyGetSetDef { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct PyMemberDef { + pub name: *const ::std::os::raw::c_char, + pub type_: ::std::os::raw::c_int, + pub offset: Py_ssize_t, + pub flags: ::std::os::raw::c_int, + pub doc: *const ::std::os::raw::c_char, +} +impl Default for PyMemberDef { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type wrapperfunc = ::std::option::Option< + unsafe extern "C" fn( + self_: *mut PyObject, + args: *mut PyObject, + wrapped: *mut ::std::os::raw::c_void, + ) -> *mut PyObject, +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct wrapperbase { + pub name: *const ::std::os::raw::c_char, + pub offset: ::std::os::raw::c_int, + pub function: *mut ::std::os::raw::c_void, + pub wrapper: wrapperfunc, + pub doc: *const ::std::os::raw::c_char, + pub flags: ::std::os::raw::c_int, + pub name_strobj: *mut PyObject, +} +impl Default for wrapperbase { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type _PyTime_t = i64; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyBaseExceptionObject { + pub ob_base: PyObject, + pub dict: *mut PyObject, + pub args: *mut PyObject, + pub notes: *mut PyObject, + pub traceback: *mut PyObject, + pub context: *mut PyObject, + pub cause: *mut PyObject, + pub suppress_context: ::std::os::raw::c_char, +} +impl Default for PyBaseExceptionObject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type PyThread_type_lock = *mut ::std::os::raw::c_void; +pub type Py_tss_t = _Py_tss_t; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _Py_tss_t { + pub _is_initialized: ::std::os::raw::c_int, + pub _key: pthread_key_t, +} +pub type PyContext = _pycontextobject; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _PyArg_Parser { + pub initialized: ::std::os::raw::c_int, + pub format: *const ::std::os::raw::c_char, + pub keywords: *const *const ::std::os::raw::c_char, + pub fname: *const ::std::os::raw::c_char, + pub custom_msg: *const ::std::os::raw::c_char, + pub pos: ::std::os::raw::c_int, + pub min: ::std::os::raw::c_int, + pub max: ::std::os::raw::c_int, + pub kwtuple: *mut PyObject, + pub next: *mut _PyArg_Parser, +} +impl Default for _PyArg_Parser { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type atexit_datacallbackfunc = + ::std::option::Option; +pub type Py_AuditHookFunction = ::std::option::Option< + unsafe extern "C" fn( + arg1: *const ::std::os::raw::c_char, + arg2: *mut PyObject, + arg3: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _inittab { + pub name: *const ::std::os::raw::c_char, + pub initfunc: ::std::option::Option *mut PyObject>, +} +impl Default for _inittab { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ast_state { + pub initialized: ::std::os::raw::c_int, + pub recursion_depth: ::std::os::raw::c_int, + pub recursion_limit: ::std::os::raw::c_int, + pub AST_type: *mut PyObject, + pub Add_singleton: *mut PyObject, + pub Add_type: *mut PyObject, + pub And_singleton: *mut PyObject, + pub And_type: *mut PyObject, + pub AnnAssign_type: *mut PyObject, + pub Assert_type: *mut PyObject, + pub Assign_type: *mut PyObject, + pub AsyncFor_type: *mut PyObject, + pub AsyncFunctionDef_type: *mut PyObject, + pub AsyncWith_type: *mut PyObject, + pub Attribute_type: *mut PyObject, + pub AugAssign_type: *mut PyObject, + pub Await_type: *mut PyObject, + pub BinOp_type: *mut PyObject, + pub BitAnd_singleton: *mut PyObject, + pub BitAnd_type: *mut PyObject, + pub BitOr_singleton: *mut PyObject, + pub BitOr_type: *mut PyObject, + pub BitXor_singleton: *mut PyObject, + pub BitXor_type: *mut PyObject, + pub BoolOp_type: *mut PyObject, + pub Break_type: *mut PyObject, + pub Call_type: *mut PyObject, + pub ClassDef_type: *mut PyObject, + pub Compare_type: *mut PyObject, + pub Constant_type: *mut PyObject, + pub Continue_type: *mut PyObject, + pub Del_singleton: *mut PyObject, + pub Del_type: *mut PyObject, + pub Delete_type: *mut PyObject, + pub DictComp_type: *mut PyObject, + pub Dict_type: *mut PyObject, + pub Div_singleton: *mut PyObject, + pub Div_type: *mut PyObject, + pub Eq_singleton: *mut PyObject, + pub Eq_type: *mut PyObject, + pub ExceptHandler_type: *mut PyObject, + pub Expr_type: *mut PyObject, + pub Expression_type: *mut PyObject, + pub FloorDiv_singleton: *mut PyObject, + pub FloorDiv_type: *mut PyObject, + pub For_type: *mut PyObject, + pub FormattedValue_type: *mut PyObject, + pub FunctionDef_type: *mut PyObject, + pub FunctionType_type: *mut PyObject, + pub GeneratorExp_type: *mut PyObject, + pub Global_type: *mut PyObject, + pub GtE_singleton: *mut PyObject, + pub GtE_type: *mut PyObject, + pub Gt_singleton: *mut PyObject, + pub Gt_type: *mut PyObject, + pub IfExp_type: *mut PyObject, + pub If_type: *mut PyObject, + pub ImportFrom_type: *mut PyObject, + pub Import_type: *mut PyObject, + pub In_singleton: *mut PyObject, + pub In_type: *mut PyObject, + pub Interactive_type: *mut PyObject, + pub Invert_singleton: *mut PyObject, + pub Invert_type: *mut PyObject, + pub IsNot_singleton: *mut PyObject, + pub IsNot_type: *mut PyObject, + pub Is_singleton: *mut PyObject, + pub Is_type: *mut PyObject, + pub JoinedStr_type: *mut PyObject, + pub LShift_singleton: *mut PyObject, + pub LShift_type: *mut PyObject, + pub Lambda_type: *mut PyObject, + pub ListComp_type: *mut PyObject, + pub List_type: *mut PyObject, + pub Load_singleton: *mut PyObject, + pub Load_type: *mut PyObject, + pub LtE_singleton: *mut PyObject, + pub LtE_type: *mut PyObject, + pub Lt_singleton: *mut PyObject, + pub Lt_type: *mut PyObject, + pub MatMult_singleton: *mut PyObject, + pub MatMult_type: *mut PyObject, + pub MatchAs_type: *mut PyObject, + pub MatchClass_type: *mut PyObject, + pub MatchMapping_type: *mut PyObject, + pub MatchOr_type: *mut PyObject, + pub MatchSequence_type: *mut PyObject, + pub MatchSingleton_type: *mut PyObject, + pub MatchStar_type: *mut PyObject, + pub MatchValue_type: *mut PyObject, + pub Match_type: *mut PyObject, + pub Mod_singleton: *mut PyObject, + pub Mod_type: *mut PyObject, + pub Module_type: *mut PyObject, + pub Mult_singleton: *mut PyObject, + pub Mult_type: *mut PyObject, + pub Name_type: *mut PyObject, + pub NamedExpr_type: *mut PyObject, + pub Nonlocal_type: *mut PyObject, + pub NotEq_singleton: *mut PyObject, + pub NotEq_type: *mut PyObject, + pub NotIn_singleton: *mut PyObject, + pub NotIn_type: *mut PyObject, + pub Not_singleton: *mut PyObject, + pub Not_type: *mut PyObject, + pub Or_singleton: *mut PyObject, + pub Or_type: *mut PyObject, + pub ParamSpec_type: *mut PyObject, + pub Pass_type: *mut PyObject, + pub Pow_singleton: *mut PyObject, + pub Pow_type: *mut PyObject, + pub RShift_singleton: *mut PyObject, + pub RShift_type: *mut PyObject, + pub Raise_type: *mut PyObject, + pub Return_type: *mut PyObject, + pub SetComp_type: *mut PyObject, + pub Set_type: *mut PyObject, + pub Slice_type: *mut PyObject, + pub Starred_type: *mut PyObject, + pub Store_singleton: *mut PyObject, + pub Store_type: *mut PyObject, + pub Sub_singleton: *mut PyObject, + pub Sub_type: *mut PyObject, + pub Subscript_type: *mut PyObject, + pub TryStar_type: *mut PyObject, + pub Try_type: *mut PyObject, + pub Tuple_type: *mut PyObject, + pub TypeAlias_type: *mut PyObject, + pub TypeIgnore_type: *mut PyObject, + pub TypeVarTuple_type: *mut PyObject, + pub TypeVar_type: *mut PyObject, + pub UAdd_singleton: *mut PyObject, + pub UAdd_type: *mut PyObject, + pub USub_singleton: *mut PyObject, + pub USub_type: *mut PyObject, + pub UnaryOp_type: *mut PyObject, + pub While_type: *mut PyObject, + pub With_type: *mut PyObject, + pub YieldFrom_type: *mut PyObject, + pub Yield_type: *mut PyObject, + pub __dict__: *mut PyObject, + pub __doc__: *mut PyObject, + pub __match_args__: *mut PyObject, + pub __module__: *mut PyObject, + pub _attributes: *mut PyObject, + pub _fields: *mut PyObject, + pub alias_type: *mut PyObject, + pub annotation: *mut PyObject, + pub arg: *mut PyObject, + pub arg_type: *mut PyObject, + pub args: *mut PyObject, + pub argtypes: *mut PyObject, + pub arguments_type: *mut PyObject, + pub asname: *mut PyObject, + pub ast: *mut PyObject, + pub attr: *mut PyObject, + pub bases: *mut PyObject, + pub body: *mut PyObject, + pub boolop_type: *mut PyObject, + pub bound: *mut PyObject, + pub cases: *mut PyObject, + pub cause: *mut PyObject, + pub cls: *mut PyObject, + pub cmpop_type: *mut PyObject, + pub col_offset: *mut PyObject, + pub comparators: *mut PyObject, + pub comprehension_type: *mut PyObject, + pub context_expr: *mut PyObject, + pub conversion: *mut PyObject, + pub ctx: *mut PyObject, + pub decorator_list: *mut PyObject, + pub defaults: *mut PyObject, + pub elt: *mut PyObject, + pub elts: *mut PyObject, + pub end_col_offset: *mut PyObject, + pub end_lineno: *mut PyObject, + pub exc: *mut PyObject, + pub excepthandler_type: *mut PyObject, + pub expr_context_type: *mut PyObject, + pub expr_type: *mut PyObject, + pub finalbody: *mut PyObject, + pub format_spec: *mut PyObject, + pub func: *mut PyObject, + pub generators: *mut PyObject, + pub guard: *mut PyObject, + pub handlers: *mut PyObject, + pub id: *mut PyObject, + pub ifs: *mut PyObject, + pub is_async: *mut PyObject, + pub items: *mut PyObject, + pub iter: *mut PyObject, + pub key: *mut PyObject, + pub keys: *mut PyObject, + pub keyword_type: *mut PyObject, + pub keywords: *mut PyObject, + pub kind: *mut PyObject, + pub kw_defaults: *mut PyObject, + pub kwarg: *mut PyObject, + pub kwd_attrs: *mut PyObject, + pub kwd_patterns: *mut PyObject, + pub kwonlyargs: *mut PyObject, + pub left: *mut PyObject, + pub level: *mut PyObject, + pub lineno: *mut PyObject, + pub lower: *mut PyObject, + pub match_case_type: *mut PyObject, + pub mod_type: *mut PyObject, + pub module: *mut PyObject, + pub msg: *mut PyObject, + pub name: *mut PyObject, + pub names: *mut PyObject, + pub op: *mut PyObject, + pub operand: *mut PyObject, + pub operator_type: *mut PyObject, + pub ops: *mut PyObject, + pub optional_vars: *mut PyObject, + pub orelse: *mut PyObject, + pub pattern: *mut PyObject, + pub pattern_type: *mut PyObject, + pub patterns: *mut PyObject, + pub posonlyargs: *mut PyObject, + pub rest: *mut PyObject, + pub returns: *mut PyObject, + pub right: *mut PyObject, + pub simple: *mut PyObject, + pub slice: *mut PyObject, + pub step: *mut PyObject, + pub stmt_type: *mut PyObject, + pub subject: *mut PyObject, + pub tag: *mut PyObject, + pub target: *mut PyObject, + pub targets: *mut PyObject, + pub test: *mut PyObject, + pub type_: *mut PyObject, + pub type_comment: *mut PyObject, + pub type_ignore_type: *mut PyObject, + pub type_ignores: *mut PyObject, + pub type_param_type: *mut PyObject, + pub type_params: *mut PyObject, + pub unaryop_type: *mut PyObject, + pub upper: *mut PyObject, + pub value: *mut PyObject, + pub values: *mut PyObject, + pub vararg: *mut PyObject, + pub withitem_type: *mut PyObject, +} +impl Default for ast_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type atexit_callbackfunc = ::std::option::Option; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _atexit_runtime_state { + pub mutex: PyThread_type_lock, + pub callbacks: [atexit_callbackfunc; 32usize], + pub ncallbacks: ::std::os::raw::c_int, +} +impl Default for _atexit_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct atexit_callback { + pub func: atexit_datacallbackfunc, + pub data: *mut ::std::os::raw::c_void, + pub next: *mut atexit_callback, +} +impl Default for atexit_callback { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct atexit_py_callback { + pub func: *mut PyObject, + pub args: *mut PyObject, + pub kwargs: *mut PyObject, +} +impl Default for atexit_py_callback { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct atexit_state { + pub ll_callbacks: *mut atexit_callback, + pub last_ll_callback: *mut atexit_callback, + pub callbacks: *mut *mut atexit_py_callback, + pub ncallbacks: ::std::os::raw::c_int, + pub callback_len: ::std::os::raw::c_int, +} +impl Default for atexit_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _Py_atomic_address { + pub _value: usize, +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _Py_atomic_int { + pub _value: ::std::os::raw::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _gil_runtime_state { + pub interval: ::std::os::raw::c_ulong, + pub last_holder: _Py_atomic_address, + pub locked: _Py_atomic_int, + pub switch_number: ::std::os::raw::c_ulong, + pub cond: pthread_cond_t, + pub mutex: pthread_mutex_t, + pub switch_cond: pthread_cond_t, + pub switch_mutex: pthread_mutex_t, +} +impl Default for _gil_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _pending_calls { + pub busy: ::std::os::raw::c_int, + pub lock: PyThread_type_lock, + pub calls_to_do: _Py_atomic_int, + pub async_exc: ::std::os::raw::c_int, + pub calls: [_pending_calls__pending_call; 32usize], + pub first: ::std::os::raw::c_int, + pub last: ::std::os::raw::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _pending_calls__pending_call { + pub func: ::std::option::Option< + unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int, + >, + pub arg: *mut ::std::os::raw::c_void, +} +impl Default for _pending_calls__pending_call { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _pending_calls { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub const perf_status_t_PERF_STATUS_FAILED: perf_status_t = -1; +pub const perf_status_t_PERF_STATUS_NO_INIT: perf_status_t = 0; +pub const perf_status_t_PERF_STATUS_OK: perf_status_t = 1; +pub type perf_status_t = i32; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct code_arena_st { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct trampoline_api_st { + pub init_state: ::std::option::Option *mut ::std::os::raw::c_void>, + pub write_state: ::std::option::Option< + unsafe extern "C" fn( + state: *mut ::std::os::raw::c_void, + code_addr: *const ::std::os::raw::c_void, + code_size: ::std::os::raw::c_uint, + code: *mut PyCodeObject, + ), + >, + pub free_state: ::std::option::Option< + unsafe extern "C" fn(state: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int, + >, + pub state: *mut ::std::os::raw::c_void, +} +impl Default for trampoline_api_st { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _ceval_runtime_state { + pub perf: _ceval_runtime_state__bindgen_ty_1, + pub signals_pending: _Py_atomic_int, + pub pending_mainthread: _pending_calls, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _ceval_runtime_state__bindgen_ty_1 { + pub status: perf_status_t, + pub extra_code_index: Py_ssize_t, + pub code_arena: *mut code_arena_st, + pub trampoline_api: trampoline_api_st, + pub map_file: *mut FILE, +} +impl Default for _ceval_runtime_state__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _ceval_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _ceval_state { + pub eval_breaker: _Py_atomic_int, + pub gil_drop_request: _Py_atomic_int, + pub recursion_limit: ::std::os::raw::c_int, + pub gil: *mut _gil_runtime_state, + pub own_gil: ::std::os::raw::c_int, + pub gc_scheduled: _Py_atomic_int, + pub pending: _pending_calls, +} +impl Default for _ceval_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct callable_cache { + pub isinstance: *mut PyObject, + pub len: *mut PyObject, + pub list_append: *mut PyObject, + pub object__getattribute__: *mut PyObject, +} +impl Default for callable_cache { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyHamtNode { + pub ob_base: PyObject, +} +impl Default for PyHamtNode { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyHamtObject { + pub ob_base: PyObject, + pub h_root: *mut PyHamtNode, + pub h_weakreflist: *mut PyObject, + pub h_count: Py_ssize_t, +} +impl Default for PyHamtObject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct PyHamtNode_Bitmap { + pub ob_base: PyVarObject, + pub b_bitmap: u32, + pub b_array: [*mut PyObject; 1usize], +} +impl Default for PyHamtNode_Bitmap { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _PyContextTokenMissing { + pub ob_base: PyObject, +} +impl Default for _PyContextTokenMissing { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_context_state { + pub freelist: *mut PyContext, + pub numfree: ::std::os::raw::c_int, +} +impl Default for _Py_context_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _pycontextobject { + pub ob_base: PyObject, + pub ctx_prev: *mut PyContext, + pub ctx_vars: *mut PyHamtObject, + pub ctx_weakreflist: *mut PyObject, + pub ctx_entered: ::std::os::raw::c_int, +} +impl Default for _pycontextobject { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_dict_state { + pub global_version: u64, + pub next_keys_version: u32, + pub free_list: [*mut PyDictObject; 80usize], + pub keys_free_list: [*mut PyDictKeysObject; 80usize], + pub numfree: ::std::os::raw::c_int, + pub keys_numfree: ::std::os::raw::c_int, + pub watchers: [PyDict_WatchCallback; 8usize], +} +impl Default for _Py_dict_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type ULong = u32; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct Bigint { + pub next: *mut Bigint, + pub k: ::std::os::raw::c_int, + pub maxwds: ::std::os::raw::c_int, + pub sign: ::std::os::raw::c_int, + pub wds: ::std::os::raw::c_int, + pub x: [ULong; 1usize], +} +impl Default for Bigint { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _dtoa_state { + pub p5s: *mut Bigint, + pub freelist: [*mut Bigint; 8usize], + pub preallocated: [f64; 288usize], + pub preallocated_next: *mut f64, +} +impl Default for _dtoa_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_exc_state { + pub errnomap: *mut PyObject, + pub memerrors_freelist: *mut PyBaseExceptionObject, + pub memerrors_numfree: ::std::os::raw::c_int, + pub PyExc_ExceptionGroup: *mut PyObject, +} +impl Default for _Py_exc_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub const _py_float_format_type__py_float_format_unknown: _py_float_format_type = 0; +pub const _py_float_format_type__py_float_format_ieee_big_endian: _py_float_format_type = 1; +pub const _py_float_format_type__py_float_format_ieee_little_endian: _py_float_format_type = 2; +pub type _py_float_format_type = u32; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_float_runtime_state { + pub float_format: _py_float_format_type, + pub double_format: _py_float_format_type, +} +impl Default for _Py_float_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_float_state { + pub numfree: ::std::os::raw::c_int, + pub free_list: *mut PyFloatObject, +} +impl Default for _Py_float_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _py_func_state { + pub next_version: u32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_async_gen_state { + pub value_freelist: [*mut _PyAsyncGenWrappedValue; 80usize], + pub value_numfree: ::std::os::raw::c_int, + pub asend_freelist: [*mut PyAsyncGenASend; 80usize], + pub asend_numfree: ::std::os::raw::c_int, +} +impl Default for _Py_async_gen_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct PyGC_Head { + pub _gc_next: usize, + pub _gc_prev: usize, +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct gc_generation { + pub head: PyGC_Head, + pub threshold: ::std::os::raw::c_int, + pub count: ::std::os::raw::c_int, +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct gc_generation_stats { + pub collections: Py_ssize_t, + pub collected: Py_ssize_t, + pub uncollectable: Py_ssize_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _gc_runtime_state { + pub trash_delete_later: *mut PyObject, + pub trash_delete_nesting: ::std::os::raw::c_int, + pub enabled: ::std::os::raw::c_int, + pub debug: ::std::os::raw::c_int, + pub generations: [gc_generation; 3usize], + pub generation0: *mut PyGC_Head, + pub permanent_generation: gc_generation, + pub generation_stats: [gc_generation_stats; 3usize], + pub collecting: ::std::os::raw::c_int, + pub garbage: *mut PyObject, + pub callbacks: *mut PyObject, + pub long_lived_total: Py_ssize_t, + pub long_lived_pending: Py_ssize_t, +} +impl Default for _gc_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings { + pub literals: _Py_global_strings__bindgen_ty_1, + pub identifiers: _Py_global_strings__bindgen_ty_2, + pub ascii: [_Py_global_strings__bindgen_ty_3; 128usize], + pub latin1: [_Py_global_strings__bindgen_ty_4; 128usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1 { + pub _py_anon_dictcomp: _Py_global_strings__bindgen_ty_1__bindgen_ty_1, + pub _py_anon_genexpr: _Py_global_strings__bindgen_ty_1__bindgen_ty_2, + pub _py_anon_lambda: _Py_global_strings__bindgen_ty_1__bindgen_ty_3, + pub _py_anon_listcomp: _Py_global_strings__bindgen_ty_1__bindgen_ty_4, + pub _py_anon_module: _Py_global_strings__bindgen_ty_1__bindgen_ty_5, + pub _py_anon_setcomp: _Py_global_strings__bindgen_ty_1__bindgen_ty_6, + pub _py_anon_string: _Py_global_strings__bindgen_ty_1__bindgen_ty_7, + pub _py_anon_unknown: _Py_global_strings__bindgen_ty_1__bindgen_ty_8, + pub _py_close_br: _Py_global_strings__bindgen_ty_1__bindgen_ty_9, + pub _py_dbl_close_br: _Py_global_strings__bindgen_ty_1__bindgen_ty_10, + pub _py_dbl_open_br: _Py_global_strings__bindgen_ty_1__bindgen_ty_11, + pub _py_dbl_percent: _Py_global_strings__bindgen_ty_1__bindgen_ty_12, + pub _py_defaults: _Py_global_strings__bindgen_ty_1__bindgen_ty_13, + pub _py_dot: _Py_global_strings__bindgen_ty_1__bindgen_ty_14, + pub _py_dot_locals: _Py_global_strings__bindgen_ty_1__bindgen_ty_15, + pub _py_empty: _Py_global_strings__bindgen_ty_1__bindgen_ty_16, + pub _py_generic_base: _Py_global_strings__bindgen_ty_1__bindgen_ty_17, + pub _py_json_decoder: _Py_global_strings__bindgen_ty_1__bindgen_ty_18, + pub _py_kwdefaults: _Py_global_strings__bindgen_ty_1__bindgen_ty_19, + pub _py_list_err: _Py_global_strings__bindgen_ty_1__bindgen_ty_20, + pub _py_newline: _Py_global_strings__bindgen_ty_1__bindgen_ty_21, + pub _py_open_br: _Py_global_strings__bindgen_ty_1__bindgen_ty_22, + pub _py_percent: _Py_global_strings__bindgen_ty_1__bindgen_ty_23, + pub _py_shim_name: _Py_global_strings__bindgen_ty_1__bindgen_ty_24, + pub _py_type_params: _Py_global_strings__bindgen_ty_1__bindgen_ty_25, + pub _py_utf_8: _Py_global_strings__bindgen_ty_1__bindgen_ty_26, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_1 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_2 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_2 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_3 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_3 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_4 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_4 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_5 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_5 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_6 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_6 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_7 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_7 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_8 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_8 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_9 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_9 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_10 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 3usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_10 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_11 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 3usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_11 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_12 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 3usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_12 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_13 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_13 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_14 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_14 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_15 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_15 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_16 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 1usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_16 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_17 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_17 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_18 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_18 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_19 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_19 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_20 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 24usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_20 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_21 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_21 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_22 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_22 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_23 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_23 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_24 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_24 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_25 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_25 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_26 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_26 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _Py_global_strings__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2 { + pub _py_CANCELLED: _Py_global_strings__bindgen_ty_2__bindgen_ty_1, + pub _py_FINISHED: _Py_global_strings__bindgen_ty_2__bindgen_ty_2, + pub _py_False: _Py_global_strings__bindgen_ty_2__bindgen_ty_3, + pub _py_JSONDecodeError: _Py_global_strings__bindgen_ty_2__bindgen_ty_4, + pub _py_PENDING: _Py_global_strings__bindgen_ty_2__bindgen_ty_5, + pub _py_Py_Repr: _Py_global_strings__bindgen_ty_2__bindgen_ty_6, + pub _py_TextIOWrapper: _Py_global_strings__bindgen_ty_2__bindgen_ty_7, + pub _py_True: _Py_global_strings__bindgen_ty_2__bindgen_ty_8, + pub _py_WarningMessage: _Py_global_strings__bindgen_ty_2__bindgen_ty_9, + pub _py__: _Py_global_strings__bindgen_ty_2__bindgen_ty_10, + pub _py__WindowsConsoleIO: _Py_global_strings__bindgen_ty_2__bindgen_ty_11, + pub _py___IOBase_closed: _Py_global_strings__bindgen_ty_2__bindgen_ty_12, + pub _py___abc_tpflags__: _Py_global_strings__bindgen_ty_2__bindgen_ty_13, + pub _py___abs__: _Py_global_strings__bindgen_ty_2__bindgen_ty_14, + pub _py___abstractmethods__: _Py_global_strings__bindgen_ty_2__bindgen_ty_15, + pub _py___add__: _Py_global_strings__bindgen_ty_2__bindgen_ty_16, + pub _py___aenter__: _Py_global_strings__bindgen_ty_2__bindgen_ty_17, + pub _py___aexit__: _Py_global_strings__bindgen_ty_2__bindgen_ty_18, + pub _py___aiter__: _Py_global_strings__bindgen_ty_2__bindgen_ty_19, + pub _py___all__: _Py_global_strings__bindgen_ty_2__bindgen_ty_20, + pub _py___and__: _Py_global_strings__bindgen_ty_2__bindgen_ty_21, + pub _py___anext__: _Py_global_strings__bindgen_ty_2__bindgen_ty_22, + pub _py___annotations__: _Py_global_strings__bindgen_ty_2__bindgen_ty_23, + pub _py___args__: _Py_global_strings__bindgen_ty_2__bindgen_ty_24, + pub _py___asyncio_running_event_loop__: _Py_global_strings__bindgen_ty_2__bindgen_ty_25, + pub _py___await__: _Py_global_strings__bindgen_ty_2__bindgen_ty_26, + pub _py___bases__: _Py_global_strings__bindgen_ty_2__bindgen_ty_27, + pub _py___bool__: _Py_global_strings__bindgen_ty_2__bindgen_ty_28, + pub _py___buffer__: _Py_global_strings__bindgen_ty_2__bindgen_ty_29, + pub _py___build_class__: _Py_global_strings__bindgen_ty_2__bindgen_ty_30, + pub _py___builtins__: _Py_global_strings__bindgen_ty_2__bindgen_ty_31, + pub _py___bytes__: _Py_global_strings__bindgen_ty_2__bindgen_ty_32, + pub _py___call__: _Py_global_strings__bindgen_ty_2__bindgen_ty_33, + pub _py___cantrace__: _Py_global_strings__bindgen_ty_2__bindgen_ty_34, + pub _py___class__: _Py_global_strings__bindgen_ty_2__bindgen_ty_35, + pub _py___class_getitem__: _Py_global_strings__bindgen_ty_2__bindgen_ty_36, + pub _py___classcell__: _Py_global_strings__bindgen_ty_2__bindgen_ty_37, + pub _py___classdict__: _Py_global_strings__bindgen_ty_2__bindgen_ty_38, + pub _py___classdictcell__: _Py_global_strings__bindgen_ty_2__bindgen_ty_39, + pub _py___complex__: _Py_global_strings__bindgen_ty_2__bindgen_ty_40, + pub _py___contains__: _Py_global_strings__bindgen_ty_2__bindgen_ty_41, + pub _py___copy__: _Py_global_strings__bindgen_ty_2__bindgen_ty_42, + pub _py___ctypes_from_outparam__: _Py_global_strings__bindgen_ty_2__bindgen_ty_43, + pub _py___del__: _Py_global_strings__bindgen_ty_2__bindgen_ty_44, + pub _py___delattr__: _Py_global_strings__bindgen_ty_2__bindgen_ty_45, + pub _py___delete__: _Py_global_strings__bindgen_ty_2__bindgen_ty_46, + pub _py___delitem__: _Py_global_strings__bindgen_ty_2__bindgen_ty_47, + pub _py___dict__: _Py_global_strings__bindgen_ty_2__bindgen_ty_48, + pub _py___dictoffset__: _Py_global_strings__bindgen_ty_2__bindgen_ty_49, + pub _py___dir__: _Py_global_strings__bindgen_ty_2__bindgen_ty_50, + pub _py___divmod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_51, + pub _py___doc__: _Py_global_strings__bindgen_ty_2__bindgen_ty_52, + pub _py___enter__: _Py_global_strings__bindgen_ty_2__bindgen_ty_53, + pub _py___eq__: _Py_global_strings__bindgen_ty_2__bindgen_ty_54, + pub _py___exit__: _Py_global_strings__bindgen_ty_2__bindgen_ty_55, + pub _py___file__: _Py_global_strings__bindgen_ty_2__bindgen_ty_56, + pub _py___float__: _Py_global_strings__bindgen_ty_2__bindgen_ty_57, + pub _py___floordiv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_58, + pub _py___format__: _Py_global_strings__bindgen_ty_2__bindgen_ty_59, + pub _py___fspath__: _Py_global_strings__bindgen_ty_2__bindgen_ty_60, + pub _py___ge__: _Py_global_strings__bindgen_ty_2__bindgen_ty_61, + pub _py___get__: _Py_global_strings__bindgen_ty_2__bindgen_ty_62, + pub _py___getattr__: _Py_global_strings__bindgen_ty_2__bindgen_ty_63, + pub _py___getattribute__: _Py_global_strings__bindgen_ty_2__bindgen_ty_64, + pub _py___getinitargs__: _Py_global_strings__bindgen_ty_2__bindgen_ty_65, + pub _py___getitem__: _Py_global_strings__bindgen_ty_2__bindgen_ty_66, + pub _py___getnewargs__: _Py_global_strings__bindgen_ty_2__bindgen_ty_67, + pub _py___getnewargs_ex__: _Py_global_strings__bindgen_ty_2__bindgen_ty_68, + pub _py___getstate__: _Py_global_strings__bindgen_ty_2__bindgen_ty_69, + pub _py___gt__: _Py_global_strings__bindgen_ty_2__bindgen_ty_70, + pub _py___hash__: _Py_global_strings__bindgen_ty_2__bindgen_ty_71, + pub _py___iadd__: _Py_global_strings__bindgen_ty_2__bindgen_ty_72, + pub _py___iand__: _Py_global_strings__bindgen_ty_2__bindgen_ty_73, + pub _py___ifloordiv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_74, + pub _py___ilshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_75, + pub _py___imatmul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_76, + pub _py___imod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_77, + pub _py___import__: _Py_global_strings__bindgen_ty_2__bindgen_ty_78, + pub _py___imul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_79, + pub _py___index__: _Py_global_strings__bindgen_ty_2__bindgen_ty_80, + pub _py___init__: _Py_global_strings__bindgen_ty_2__bindgen_ty_81, + pub _py___init_subclass__: _Py_global_strings__bindgen_ty_2__bindgen_ty_82, + pub _py___instancecheck__: _Py_global_strings__bindgen_ty_2__bindgen_ty_83, + pub _py___int__: _Py_global_strings__bindgen_ty_2__bindgen_ty_84, + pub _py___invert__: _Py_global_strings__bindgen_ty_2__bindgen_ty_85, + pub _py___ior__: _Py_global_strings__bindgen_ty_2__bindgen_ty_86, + pub _py___ipow__: _Py_global_strings__bindgen_ty_2__bindgen_ty_87, + pub _py___irshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_88, + pub _py___isabstractmethod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_89, + pub _py___isub__: _Py_global_strings__bindgen_ty_2__bindgen_ty_90, + pub _py___iter__: _Py_global_strings__bindgen_ty_2__bindgen_ty_91, + pub _py___itruediv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_92, + pub _py___ixor__: _Py_global_strings__bindgen_ty_2__bindgen_ty_93, + pub _py___le__: _Py_global_strings__bindgen_ty_2__bindgen_ty_94, + pub _py___len__: _Py_global_strings__bindgen_ty_2__bindgen_ty_95, + pub _py___length_hint__: _Py_global_strings__bindgen_ty_2__bindgen_ty_96, + pub _py___lltrace__: _Py_global_strings__bindgen_ty_2__bindgen_ty_97, + pub _py___loader__: _Py_global_strings__bindgen_ty_2__bindgen_ty_98, + pub _py___lshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_99, + pub _py___lt__: _Py_global_strings__bindgen_ty_2__bindgen_ty_100, + pub _py___main__: _Py_global_strings__bindgen_ty_2__bindgen_ty_101, + pub _py___matmul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_102, + pub _py___missing__: _Py_global_strings__bindgen_ty_2__bindgen_ty_103, + pub _py___mod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_104, + pub _py___module__: _Py_global_strings__bindgen_ty_2__bindgen_ty_105, + pub _py___mro_entries__: _Py_global_strings__bindgen_ty_2__bindgen_ty_106, + pub _py___mul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_107, + pub _py___name__: _Py_global_strings__bindgen_ty_2__bindgen_ty_108, + pub _py___ne__: _Py_global_strings__bindgen_ty_2__bindgen_ty_109, + pub _py___neg__: _Py_global_strings__bindgen_ty_2__bindgen_ty_110, + pub _py___new__: _Py_global_strings__bindgen_ty_2__bindgen_ty_111, + pub _py___newobj__: _Py_global_strings__bindgen_ty_2__bindgen_ty_112, + pub _py___newobj_ex__: _Py_global_strings__bindgen_ty_2__bindgen_ty_113, + pub _py___next__: _Py_global_strings__bindgen_ty_2__bindgen_ty_114, + pub _py___notes__: _Py_global_strings__bindgen_ty_2__bindgen_ty_115, + pub _py___or__: _Py_global_strings__bindgen_ty_2__bindgen_ty_116, + pub _py___orig_class__: _Py_global_strings__bindgen_ty_2__bindgen_ty_117, + pub _py___origin__: _Py_global_strings__bindgen_ty_2__bindgen_ty_118, + pub _py___package__: _Py_global_strings__bindgen_ty_2__bindgen_ty_119, + pub _py___parameters__: _Py_global_strings__bindgen_ty_2__bindgen_ty_120, + pub _py___path__: _Py_global_strings__bindgen_ty_2__bindgen_ty_121, + pub _py___pos__: _Py_global_strings__bindgen_ty_2__bindgen_ty_122, + pub _py___pow__: _Py_global_strings__bindgen_ty_2__bindgen_ty_123, + pub _py___prepare__: _Py_global_strings__bindgen_ty_2__bindgen_ty_124, + pub _py___qualname__: _Py_global_strings__bindgen_ty_2__bindgen_ty_125, + pub _py___radd__: _Py_global_strings__bindgen_ty_2__bindgen_ty_126, + pub _py___rand__: _Py_global_strings__bindgen_ty_2__bindgen_ty_127, + pub _py___rdivmod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_128, + pub _py___reduce__: _Py_global_strings__bindgen_ty_2__bindgen_ty_129, + pub _py___reduce_ex__: _Py_global_strings__bindgen_ty_2__bindgen_ty_130, + pub _py___release_buffer__: _Py_global_strings__bindgen_ty_2__bindgen_ty_131, + pub _py___repr__: _Py_global_strings__bindgen_ty_2__bindgen_ty_132, + pub _py___reversed__: _Py_global_strings__bindgen_ty_2__bindgen_ty_133, + pub _py___rfloordiv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_134, + pub _py___rlshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_135, + pub _py___rmatmul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_136, + pub _py___rmod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_137, + pub _py___rmul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_138, + pub _py___ror__: _Py_global_strings__bindgen_ty_2__bindgen_ty_139, + pub _py___round__: _Py_global_strings__bindgen_ty_2__bindgen_ty_140, + pub _py___rpow__: _Py_global_strings__bindgen_ty_2__bindgen_ty_141, + pub _py___rrshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_142, + pub _py___rshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_143, + pub _py___rsub__: _Py_global_strings__bindgen_ty_2__bindgen_ty_144, + pub _py___rtruediv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_145, + pub _py___rxor__: _Py_global_strings__bindgen_ty_2__bindgen_ty_146, + pub _py___set__: _Py_global_strings__bindgen_ty_2__bindgen_ty_147, + pub _py___set_name__: _Py_global_strings__bindgen_ty_2__bindgen_ty_148, + pub _py___setattr__: _Py_global_strings__bindgen_ty_2__bindgen_ty_149, + pub _py___setitem__: _Py_global_strings__bindgen_ty_2__bindgen_ty_150, + pub _py___setstate__: _Py_global_strings__bindgen_ty_2__bindgen_ty_151, + pub _py___sizeof__: _Py_global_strings__bindgen_ty_2__bindgen_ty_152, + pub _py___slotnames__: _Py_global_strings__bindgen_ty_2__bindgen_ty_153, + pub _py___slots__: _Py_global_strings__bindgen_ty_2__bindgen_ty_154, + pub _py___spec__: _Py_global_strings__bindgen_ty_2__bindgen_ty_155, + pub _py___str__: _Py_global_strings__bindgen_ty_2__bindgen_ty_156, + pub _py___sub__: _Py_global_strings__bindgen_ty_2__bindgen_ty_157, + pub _py___subclasscheck__: _Py_global_strings__bindgen_ty_2__bindgen_ty_158, + pub _py___subclasshook__: _Py_global_strings__bindgen_ty_2__bindgen_ty_159, + pub _py___truediv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_160, + pub _py___trunc__: _Py_global_strings__bindgen_ty_2__bindgen_ty_161, + pub _py___type_params__: _Py_global_strings__bindgen_ty_2__bindgen_ty_162, + pub _py___typing_is_unpacked_typevartuple__: _Py_global_strings__bindgen_ty_2__bindgen_ty_163, + pub _py___typing_prepare_subst__: _Py_global_strings__bindgen_ty_2__bindgen_ty_164, + pub _py___typing_subst__: _Py_global_strings__bindgen_ty_2__bindgen_ty_165, + pub _py___typing_unpacked_tuple_args__: _Py_global_strings__bindgen_ty_2__bindgen_ty_166, + pub _py___warningregistry__: _Py_global_strings__bindgen_ty_2__bindgen_ty_167, + pub _py___weaklistoffset__: _Py_global_strings__bindgen_ty_2__bindgen_ty_168, + pub _py___weakref__: _Py_global_strings__bindgen_ty_2__bindgen_ty_169, + pub _py___xor__: _Py_global_strings__bindgen_ty_2__bindgen_ty_170, + pub _py__abc_impl: _Py_global_strings__bindgen_ty_2__bindgen_ty_171, + pub _py__abstract_: _Py_global_strings__bindgen_ty_2__bindgen_ty_172, + pub _py__active: _Py_global_strings__bindgen_ty_2__bindgen_ty_173, + pub _py__annotation: _Py_global_strings__bindgen_ty_2__bindgen_ty_174, + pub _py__anonymous_: _Py_global_strings__bindgen_ty_2__bindgen_ty_175, + pub _py__argtypes_: _Py_global_strings__bindgen_ty_2__bindgen_ty_176, + pub _py__as_parameter_: _Py_global_strings__bindgen_ty_2__bindgen_ty_177, + pub _py__asyncio_future_blocking: _Py_global_strings__bindgen_ty_2__bindgen_ty_178, + pub _py__blksize: _Py_global_strings__bindgen_ty_2__bindgen_ty_179, + pub _py__bootstrap: _Py_global_strings__bindgen_ty_2__bindgen_ty_180, + pub _py__check_retval_: _Py_global_strings__bindgen_ty_2__bindgen_ty_181, + pub _py__dealloc_warn: _Py_global_strings__bindgen_ty_2__bindgen_ty_182, + pub _py__feature_version: _Py_global_strings__bindgen_ty_2__bindgen_ty_183, + pub _py__fields_: _Py_global_strings__bindgen_ty_2__bindgen_ty_184, + pub _py__finalizing: _Py_global_strings__bindgen_ty_2__bindgen_ty_185, + pub _py__find_and_load: _Py_global_strings__bindgen_ty_2__bindgen_ty_186, + pub _py__fix_up_module: _Py_global_strings__bindgen_ty_2__bindgen_ty_187, + pub _py__flags_: _Py_global_strings__bindgen_ty_2__bindgen_ty_188, + pub _py__get_sourcefile: _Py_global_strings__bindgen_ty_2__bindgen_ty_189, + pub _py__handle_fromlist: _Py_global_strings__bindgen_ty_2__bindgen_ty_190, + pub _py__initializing: _Py_global_strings__bindgen_ty_2__bindgen_ty_191, + pub _py__io: _Py_global_strings__bindgen_ty_2__bindgen_ty_192, + pub _py__is_text_encoding: _Py_global_strings__bindgen_ty_2__bindgen_ty_193, + pub _py__length_: _Py_global_strings__bindgen_ty_2__bindgen_ty_194, + pub _py__limbo: _Py_global_strings__bindgen_ty_2__bindgen_ty_195, + pub _py__lock_unlock_module: _Py_global_strings__bindgen_ty_2__bindgen_ty_196, + pub _py__loop: _Py_global_strings__bindgen_ty_2__bindgen_ty_197, + pub _py__needs_com_addref_: _Py_global_strings__bindgen_ty_2__bindgen_ty_198, + pub _py__pack_: _Py_global_strings__bindgen_ty_2__bindgen_ty_199, + pub _py__restype_: _Py_global_strings__bindgen_ty_2__bindgen_ty_200, + pub _py__showwarnmsg: _Py_global_strings__bindgen_ty_2__bindgen_ty_201, + pub _py__shutdown: _Py_global_strings__bindgen_ty_2__bindgen_ty_202, + pub _py__slotnames: _Py_global_strings__bindgen_ty_2__bindgen_ty_203, + pub _py__strptime_datetime: _Py_global_strings__bindgen_ty_2__bindgen_ty_204, + pub _py__swappedbytes_: _Py_global_strings__bindgen_ty_2__bindgen_ty_205, + pub _py__type_: _Py_global_strings__bindgen_ty_2__bindgen_ty_206, + pub _py__uninitialized_submodules: _Py_global_strings__bindgen_ty_2__bindgen_ty_207, + pub _py__warn_unawaited_coroutine: _Py_global_strings__bindgen_ty_2__bindgen_ty_208, + pub _py__xoptions: _Py_global_strings__bindgen_ty_2__bindgen_ty_209, + pub _py_a: _Py_global_strings__bindgen_ty_2__bindgen_ty_210, + pub _py_abs_tol: _Py_global_strings__bindgen_ty_2__bindgen_ty_211, + pub _py_access: _Py_global_strings__bindgen_ty_2__bindgen_ty_212, + pub _py_add: _Py_global_strings__bindgen_ty_2__bindgen_ty_213, + pub _py_add_done_callback: _Py_global_strings__bindgen_ty_2__bindgen_ty_214, + pub _py_after_in_child: _Py_global_strings__bindgen_ty_2__bindgen_ty_215, + pub _py_after_in_parent: _Py_global_strings__bindgen_ty_2__bindgen_ty_216, + pub _py_aggregate_class: _Py_global_strings__bindgen_ty_2__bindgen_ty_217, + pub _py_alias: _Py_global_strings__bindgen_ty_2__bindgen_ty_218, + pub _py_append: _Py_global_strings__bindgen_ty_2__bindgen_ty_219, + pub _py_arg: _Py_global_strings__bindgen_ty_2__bindgen_ty_220, + pub _py_argdefs: _Py_global_strings__bindgen_ty_2__bindgen_ty_221, + pub _py_args: _Py_global_strings__bindgen_ty_2__bindgen_ty_222, + pub _py_arguments: _Py_global_strings__bindgen_ty_2__bindgen_ty_223, + pub _py_argv: _Py_global_strings__bindgen_ty_2__bindgen_ty_224, + pub _py_as_integer_ratio: _Py_global_strings__bindgen_ty_2__bindgen_ty_225, + pub _py_ast: _Py_global_strings__bindgen_ty_2__bindgen_ty_226, + pub _py_attribute: _Py_global_strings__bindgen_ty_2__bindgen_ty_227, + pub _py_authorizer_callback: _Py_global_strings__bindgen_ty_2__bindgen_ty_228, + pub _py_autocommit: _Py_global_strings__bindgen_ty_2__bindgen_ty_229, + pub _py_b: _Py_global_strings__bindgen_ty_2__bindgen_ty_230, + pub _py_backtick: _Py_global_strings__bindgen_ty_2__bindgen_ty_231, + pub _py_base: _Py_global_strings__bindgen_ty_2__bindgen_ty_232, + pub _py_before: _Py_global_strings__bindgen_ty_2__bindgen_ty_233, + pub _py_big: _Py_global_strings__bindgen_ty_2__bindgen_ty_234, + pub _py_binary_form: _Py_global_strings__bindgen_ty_2__bindgen_ty_235, + pub _py_block: _Py_global_strings__bindgen_ty_2__bindgen_ty_236, + pub _py_bound: _Py_global_strings__bindgen_ty_2__bindgen_ty_237, + pub _py_buffer: _Py_global_strings__bindgen_ty_2__bindgen_ty_238, + pub _py_buffer_callback: _Py_global_strings__bindgen_ty_2__bindgen_ty_239, + pub _py_buffer_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_240, + pub _py_buffering: _Py_global_strings__bindgen_ty_2__bindgen_ty_241, + pub _py_buffers: _Py_global_strings__bindgen_ty_2__bindgen_ty_242, + pub _py_bufsize: _Py_global_strings__bindgen_ty_2__bindgen_ty_243, + pub _py_builtins: _Py_global_strings__bindgen_ty_2__bindgen_ty_244, + pub _py_byteorder: _Py_global_strings__bindgen_ty_2__bindgen_ty_245, + pub _py_bytes: _Py_global_strings__bindgen_ty_2__bindgen_ty_246, + pub _py_bytes_per_sep: _Py_global_strings__bindgen_ty_2__bindgen_ty_247, + pub _py_c: _Py_global_strings__bindgen_ty_2__bindgen_ty_248, + pub _py_c_call: _Py_global_strings__bindgen_ty_2__bindgen_ty_249, + pub _py_c_exception: _Py_global_strings__bindgen_ty_2__bindgen_ty_250, + pub _py_c_return: _Py_global_strings__bindgen_ty_2__bindgen_ty_251, + pub _py_cached_statements: _Py_global_strings__bindgen_ty_2__bindgen_ty_252, + pub _py_cadata: _Py_global_strings__bindgen_ty_2__bindgen_ty_253, + pub _py_cafile: _Py_global_strings__bindgen_ty_2__bindgen_ty_254, + pub _py_call: _Py_global_strings__bindgen_ty_2__bindgen_ty_255, + pub _py_call_exception_handler: _Py_global_strings__bindgen_ty_2__bindgen_ty_256, + pub _py_call_soon: _Py_global_strings__bindgen_ty_2__bindgen_ty_257, + pub _py_cancel: _Py_global_strings__bindgen_ty_2__bindgen_ty_258, + pub _py_capath: _Py_global_strings__bindgen_ty_2__bindgen_ty_259, + pub _py_category: _Py_global_strings__bindgen_ty_2__bindgen_ty_260, + pub _py_cb_type: _Py_global_strings__bindgen_ty_2__bindgen_ty_261, + pub _py_certfile: _Py_global_strings__bindgen_ty_2__bindgen_ty_262, + pub _py_check_same_thread: _Py_global_strings__bindgen_ty_2__bindgen_ty_263, + pub _py_clear: _Py_global_strings__bindgen_ty_2__bindgen_ty_264, + pub _py_close: _Py_global_strings__bindgen_ty_2__bindgen_ty_265, + pub _py_closed: _Py_global_strings__bindgen_ty_2__bindgen_ty_266, + pub _py_closefd: _Py_global_strings__bindgen_ty_2__bindgen_ty_267, + pub _py_closure: _Py_global_strings__bindgen_ty_2__bindgen_ty_268, + pub _py_co_argcount: _Py_global_strings__bindgen_ty_2__bindgen_ty_269, + pub _py_co_cellvars: _Py_global_strings__bindgen_ty_2__bindgen_ty_270, + pub _py_co_code: _Py_global_strings__bindgen_ty_2__bindgen_ty_271, + pub _py_co_consts: _Py_global_strings__bindgen_ty_2__bindgen_ty_272, + pub _py_co_exceptiontable: _Py_global_strings__bindgen_ty_2__bindgen_ty_273, + pub _py_co_filename: _Py_global_strings__bindgen_ty_2__bindgen_ty_274, + pub _py_co_firstlineno: _Py_global_strings__bindgen_ty_2__bindgen_ty_275, + pub _py_co_flags: _Py_global_strings__bindgen_ty_2__bindgen_ty_276, + pub _py_co_freevars: _Py_global_strings__bindgen_ty_2__bindgen_ty_277, + pub _py_co_kwonlyargcount: _Py_global_strings__bindgen_ty_2__bindgen_ty_278, + pub _py_co_linetable: _Py_global_strings__bindgen_ty_2__bindgen_ty_279, + pub _py_co_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_280, + pub _py_co_names: _Py_global_strings__bindgen_ty_2__bindgen_ty_281, + pub _py_co_nlocals: _Py_global_strings__bindgen_ty_2__bindgen_ty_282, + pub _py_co_posonlyargcount: _Py_global_strings__bindgen_ty_2__bindgen_ty_283, + pub _py_co_qualname: _Py_global_strings__bindgen_ty_2__bindgen_ty_284, + pub _py_co_stacksize: _Py_global_strings__bindgen_ty_2__bindgen_ty_285, + pub _py_co_varnames: _Py_global_strings__bindgen_ty_2__bindgen_ty_286, + pub _py_code: _Py_global_strings__bindgen_ty_2__bindgen_ty_287, + pub _py_command: _Py_global_strings__bindgen_ty_2__bindgen_ty_288, + pub _py_comment_factory: _Py_global_strings__bindgen_ty_2__bindgen_ty_289, + pub _py_compile_mode: _Py_global_strings__bindgen_ty_2__bindgen_ty_290, + pub _py_consts: _Py_global_strings__bindgen_ty_2__bindgen_ty_291, + pub _py_context: _Py_global_strings__bindgen_ty_2__bindgen_ty_292, + pub _py_contravariant: _Py_global_strings__bindgen_ty_2__bindgen_ty_293, + pub _py_cookie: _Py_global_strings__bindgen_ty_2__bindgen_ty_294, + pub _py_copy: _Py_global_strings__bindgen_ty_2__bindgen_ty_295, + pub _py_copyreg: _Py_global_strings__bindgen_ty_2__bindgen_ty_296, + pub _py_coro: _Py_global_strings__bindgen_ty_2__bindgen_ty_297, + pub _py_count: _Py_global_strings__bindgen_ty_2__bindgen_ty_298, + pub _py_covariant: _Py_global_strings__bindgen_ty_2__bindgen_ty_299, + pub _py_cwd: _Py_global_strings__bindgen_ty_2__bindgen_ty_300, + pub _py_d: _Py_global_strings__bindgen_ty_2__bindgen_ty_301, + pub _py_data: _Py_global_strings__bindgen_ty_2__bindgen_ty_302, + pub _py_database: _Py_global_strings__bindgen_ty_2__bindgen_ty_303, + pub _py_decode: _Py_global_strings__bindgen_ty_2__bindgen_ty_304, + pub _py_decoder: _Py_global_strings__bindgen_ty_2__bindgen_ty_305, + pub _py_default: _Py_global_strings__bindgen_ty_2__bindgen_ty_306, + pub _py_defaultaction: _Py_global_strings__bindgen_ty_2__bindgen_ty_307, + pub _py_delete: _Py_global_strings__bindgen_ty_2__bindgen_ty_308, + pub _py_depth: _Py_global_strings__bindgen_ty_2__bindgen_ty_309, + pub _py_detect_types: _Py_global_strings__bindgen_ty_2__bindgen_ty_310, + pub _py_deterministic: _Py_global_strings__bindgen_ty_2__bindgen_ty_311, + pub _py_device: _Py_global_strings__bindgen_ty_2__bindgen_ty_312, + pub _py_dict: _Py_global_strings__bindgen_ty_2__bindgen_ty_313, + pub _py_dictcomp: _Py_global_strings__bindgen_ty_2__bindgen_ty_314, + pub _py_difference_update: _Py_global_strings__bindgen_ty_2__bindgen_ty_315, + pub _py_digest: _Py_global_strings__bindgen_ty_2__bindgen_ty_316, + pub _py_digest_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_317, + pub _py_digestmod: _Py_global_strings__bindgen_ty_2__bindgen_ty_318, + pub _py_dir_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_319, + pub _py_discard: _Py_global_strings__bindgen_ty_2__bindgen_ty_320, + pub _py_dispatch_table: _Py_global_strings__bindgen_ty_2__bindgen_ty_321, + pub _py_displayhook: _Py_global_strings__bindgen_ty_2__bindgen_ty_322, + pub _py_dklen: _Py_global_strings__bindgen_ty_2__bindgen_ty_323, + pub _py_doc: _Py_global_strings__bindgen_ty_2__bindgen_ty_324, + pub _py_dont_inherit: _Py_global_strings__bindgen_ty_2__bindgen_ty_325, + pub _py_dst: _Py_global_strings__bindgen_ty_2__bindgen_ty_326, + pub _py_dst_dir_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_327, + pub _py_duration: _Py_global_strings__bindgen_ty_2__bindgen_ty_328, + pub _py_e: _Py_global_strings__bindgen_ty_2__bindgen_ty_329, + pub _py_eager_start: _Py_global_strings__bindgen_ty_2__bindgen_ty_330, + pub _py_effective_ids: _Py_global_strings__bindgen_ty_2__bindgen_ty_331, + pub _py_element_factory: _Py_global_strings__bindgen_ty_2__bindgen_ty_332, + pub _py_encode: _Py_global_strings__bindgen_ty_2__bindgen_ty_333, + pub _py_encoding: _Py_global_strings__bindgen_ty_2__bindgen_ty_334, + pub _py_end: _Py_global_strings__bindgen_ty_2__bindgen_ty_335, + pub _py_end_lineno: _Py_global_strings__bindgen_ty_2__bindgen_ty_336, + pub _py_end_offset: _Py_global_strings__bindgen_ty_2__bindgen_ty_337, + pub _py_endpos: _Py_global_strings__bindgen_ty_2__bindgen_ty_338, + pub _py_entrypoint: _Py_global_strings__bindgen_ty_2__bindgen_ty_339, + pub _py_env: _Py_global_strings__bindgen_ty_2__bindgen_ty_340, + pub _py_errors: _Py_global_strings__bindgen_ty_2__bindgen_ty_341, + pub _py_event: _Py_global_strings__bindgen_ty_2__bindgen_ty_342, + pub _py_eventmask: _Py_global_strings__bindgen_ty_2__bindgen_ty_343, + pub _py_exc_type: _Py_global_strings__bindgen_ty_2__bindgen_ty_344, + pub _py_exc_value: _Py_global_strings__bindgen_ty_2__bindgen_ty_345, + pub _py_excepthook: _Py_global_strings__bindgen_ty_2__bindgen_ty_346, + pub _py_exception: _Py_global_strings__bindgen_ty_2__bindgen_ty_347, + pub _py_existing_file_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_348, + pub _py_exp: _Py_global_strings__bindgen_ty_2__bindgen_ty_349, + pub _py_extend: _Py_global_strings__bindgen_ty_2__bindgen_ty_350, + pub _py_extra_tokens: _Py_global_strings__bindgen_ty_2__bindgen_ty_351, + pub _py_facility: _Py_global_strings__bindgen_ty_2__bindgen_ty_352, + pub _py_factory: _Py_global_strings__bindgen_ty_2__bindgen_ty_353, + pub _py_false: _Py_global_strings__bindgen_ty_2__bindgen_ty_354, + pub _py_family: _Py_global_strings__bindgen_ty_2__bindgen_ty_355, + pub _py_fanout: _Py_global_strings__bindgen_ty_2__bindgen_ty_356, + pub _py_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_357, + pub _py_fd2: _Py_global_strings__bindgen_ty_2__bindgen_ty_358, + pub _py_fdel: _Py_global_strings__bindgen_ty_2__bindgen_ty_359, + pub _py_fget: _Py_global_strings__bindgen_ty_2__bindgen_ty_360, + pub _py_file: _Py_global_strings__bindgen_ty_2__bindgen_ty_361, + pub _py_file_actions: _Py_global_strings__bindgen_ty_2__bindgen_ty_362, + pub _py_filename: _Py_global_strings__bindgen_ty_2__bindgen_ty_363, + pub _py_fileno: _Py_global_strings__bindgen_ty_2__bindgen_ty_364, + pub _py_filepath: _Py_global_strings__bindgen_ty_2__bindgen_ty_365, + pub _py_fillvalue: _Py_global_strings__bindgen_ty_2__bindgen_ty_366, + pub _py_filters: _Py_global_strings__bindgen_ty_2__bindgen_ty_367, + pub _py_final: _Py_global_strings__bindgen_ty_2__bindgen_ty_368, + pub _py_find_class: _Py_global_strings__bindgen_ty_2__bindgen_ty_369, + pub _py_fix_imports: _Py_global_strings__bindgen_ty_2__bindgen_ty_370, + pub _py_flags: _Py_global_strings__bindgen_ty_2__bindgen_ty_371, + pub _py_flush: _Py_global_strings__bindgen_ty_2__bindgen_ty_372, + pub _py_follow_symlinks: _Py_global_strings__bindgen_ty_2__bindgen_ty_373, + pub _py_format: _Py_global_strings__bindgen_ty_2__bindgen_ty_374, + pub _py_frequency: _Py_global_strings__bindgen_ty_2__bindgen_ty_375, + pub _py_from_param: _Py_global_strings__bindgen_ty_2__bindgen_ty_376, + pub _py_fromlist: _Py_global_strings__bindgen_ty_2__bindgen_ty_377, + pub _py_fromtimestamp: _Py_global_strings__bindgen_ty_2__bindgen_ty_378, + pub _py_fromutc: _Py_global_strings__bindgen_ty_2__bindgen_ty_379, + pub _py_fset: _Py_global_strings__bindgen_ty_2__bindgen_ty_380, + pub _py_func: _Py_global_strings__bindgen_ty_2__bindgen_ty_381, + pub _py_future: _Py_global_strings__bindgen_ty_2__bindgen_ty_382, + pub _py_generation: _Py_global_strings__bindgen_ty_2__bindgen_ty_383, + pub _py_genexpr: _Py_global_strings__bindgen_ty_2__bindgen_ty_384, + pub _py_get: _Py_global_strings__bindgen_ty_2__bindgen_ty_385, + pub _py_get_debug: _Py_global_strings__bindgen_ty_2__bindgen_ty_386, + pub _py_get_event_loop: _Py_global_strings__bindgen_ty_2__bindgen_ty_387, + pub _py_get_loop: _Py_global_strings__bindgen_ty_2__bindgen_ty_388, + pub _py_get_source: _Py_global_strings__bindgen_ty_2__bindgen_ty_389, + pub _py_getattr: _Py_global_strings__bindgen_ty_2__bindgen_ty_390, + pub _py_getstate: _Py_global_strings__bindgen_ty_2__bindgen_ty_391, + pub _py_gid: _Py_global_strings__bindgen_ty_2__bindgen_ty_392, + pub _py_globals: _Py_global_strings__bindgen_ty_2__bindgen_ty_393, + pub _py_groupindex: _Py_global_strings__bindgen_ty_2__bindgen_ty_394, + pub _py_groups: _Py_global_strings__bindgen_ty_2__bindgen_ty_395, + pub _py_handle: _Py_global_strings__bindgen_ty_2__bindgen_ty_396, + pub _py_hash_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_397, + pub _py_header: _Py_global_strings__bindgen_ty_2__bindgen_ty_398, + pub _py_headers: _Py_global_strings__bindgen_ty_2__bindgen_ty_399, + pub _py_hi: _Py_global_strings__bindgen_ty_2__bindgen_ty_400, + pub _py_hook: _Py_global_strings__bindgen_ty_2__bindgen_ty_401, + pub _py_id: _Py_global_strings__bindgen_ty_2__bindgen_ty_402, + pub _py_ident: _Py_global_strings__bindgen_ty_2__bindgen_ty_403, + pub _py_ignore: _Py_global_strings__bindgen_ty_2__bindgen_ty_404, + pub _py_imag: _Py_global_strings__bindgen_ty_2__bindgen_ty_405, + pub _py_importlib: _Py_global_strings__bindgen_ty_2__bindgen_ty_406, + pub _py_in_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_407, + pub _py_incoming: _Py_global_strings__bindgen_ty_2__bindgen_ty_408, + pub _py_indexgroup: _Py_global_strings__bindgen_ty_2__bindgen_ty_409, + pub _py_inf: _Py_global_strings__bindgen_ty_2__bindgen_ty_410, + pub _py_infer_variance: _Py_global_strings__bindgen_ty_2__bindgen_ty_411, + pub _py_inheritable: _Py_global_strings__bindgen_ty_2__bindgen_ty_412, + pub _py_initial: _Py_global_strings__bindgen_ty_2__bindgen_ty_413, + pub _py_initial_bytes: _Py_global_strings__bindgen_ty_2__bindgen_ty_414, + pub _py_initial_value: _Py_global_strings__bindgen_ty_2__bindgen_ty_415, + pub _py_initval: _Py_global_strings__bindgen_ty_2__bindgen_ty_416, + pub _py_inner_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_417, + pub _py_input: _Py_global_strings__bindgen_ty_2__bindgen_ty_418, + pub _py_insert_comments: _Py_global_strings__bindgen_ty_2__bindgen_ty_419, + pub _py_insert_pis: _Py_global_strings__bindgen_ty_2__bindgen_ty_420, + pub _py_instructions: _Py_global_strings__bindgen_ty_2__bindgen_ty_421, + pub _py_intern: _Py_global_strings__bindgen_ty_2__bindgen_ty_422, + pub _py_intersection: _Py_global_strings__bindgen_ty_2__bindgen_ty_423, + pub _py_is_running: _Py_global_strings__bindgen_ty_2__bindgen_ty_424, + pub _py_isatty: _Py_global_strings__bindgen_ty_2__bindgen_ty_425, + pub _py_isinstance: _Py_global_strings__bindgen_ty_2__bindgen_ty_426, + pub _py_isoformat: _Py_global_strings__bindgen_ty_2__bindgen_ty_427, + pub _py_isolation_level: _Py_global_strings__bindgen_ty_2__bindgen_ty_428, + pub _py_istext: _Py_global_strings__bindgen_ty_2__bindgen_ty_429, + pub _py_item: _Py_global_strings__bindgen_ty_2__bindgen_ty_430, + pub _py_items: _Py_global_strings__bindgen_ty_2__bindgen_ty_431, + pub _py_iter: _Py_global_strings__bindgen_ty_2__bindgen_ty_432, + pub _py_iterable: _Py_global_strings__bindgen_ty_2__bindgen_ty_433, + pub _py_iterations: _Py_global_strings__bindgen_ty_2__bindgen_ty_434, + pub _py_join: _Py_global_strings__bindgen_ty_2__bindgen_ty_435, + pub _py_jump: _Py_global_strings__bindgen_ty_2__bindgen_ty_436, + pub _py_keepends: _Py_global_strings__bindgen_ty_2__bindgen_ty_437, + pub _py_key: _Py_global_strings__bindgen_ty_2__bindgen_ty_438, + pub _py_keyfile: _Py_global_strings__bindgen_ty_2__bindgen_ty_439, + pub _py_keys: _Py_global_strings__bindgen_ty_2__bindgen_ty_440, + pub _py_kind: _Py_global_strings__bindgen_ty_2__bindgen_ty_441, + pub _py_kw: _Py_global_strings__bindgen_ty_2__bindgen_ty_442, + pub _py_kw1: _Py_global_strings__bindgen_ty_2__bindgen_ty_443, + pub _py_kw2: _Py_global_strings__bindgen_ty_2__bindgen_ty_444, + pub _py_lambda: _Py_global_strings__bindgen_ty_2__bindgen_ty_445, + pub _py_last: _Py_global_strings__bindgen_ty_2__bindgen_ty_446, + pub _py_last_exc: _Py_global_strings__bindgen_ty_2__bindgen_ty_447, + pub _py_last_node: _Py_global_strings__bindgen_ty_2__bindgen_ty_448, + pub _py_last_traceback: _Py_global_strings__bindgen_ty_2__bindgen_ty_449, + pub _py_last_type: _Py_global_strings__bindgen_ty_2__bindgen_ty_450, + pub _py_last_value: _Py_global_strings__bindgen_ty_2__bindgen_ty_451, + pub _py_latin1: _Py_global_strings__bindgen_ty_2__bindgen_ty_452, + pub _py_leaf_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_453, + pub _py_len: _Py_global_strings__bindgen_ty_2__bindgen_ty_454, + pub _py_length: _Py_global_strings__bindgen_ty_2__bindgen_ty_455, + pub _py_level: _Py_global_strings__bindgen_ty_2__bindgen_ty_456, + pub _py_limit: _Py_global_strings__bindgen_ty_2__bindgen_ty_457, + pub _py_line: _Py_global_strings__bindgen_ty_2__bindgen_ty_458, + pub _py_line_buffering: _Py_global_strings__bindgen_ty_2__bindgen_ty_459, + pub _py_lineno: _Py_global_strings__bindgen_ty_2__bindgen_ty_460, + pub _py_listcomp: _Py_global_strings__bindgen_ty_2__bindgen_ty_461, + pub _py_little: _Py_global_strings__bindgen_ty_2__bindgen_ty_462, + pub _py_lo: _Py_global_strings__bindgen_ty_2__bindgen_ty_463, + pub _py_locale: _Py_global_strings__bindgen_ty_2__bindgen_ty_464, + pub _py_locals: _Py_global_strings__bindgen_ty_2__bindgen_ty_465, + pub _py_logoption: _Py_global_strings__bindgen_ty_2__bindgen_ty_466, + pub _py_loop: _Py_global_strings__bindgen_ty_2__bindgen_ty_467, + pub _py_mapping: _Py_global_strings__bindgen_ty_2__bindgen_ty_468, + pub _py_match: _Py_global_strings__bindgen_ty_2__bindgen_ty_469, + pub _py_max_length: _Py_global_strings__bindgen_ty_2__bindgen_ty_470, + pub _py_maxdigits: _Py_global_strings__bindgen_ty_2__bindgen_ty_471, + pub _py_maxevents: _Py_global_strings__bindgen_ty_2__bindgen_ty_472, + pub _py_maxmem: _Py_global_strings__bindgen_ty_2__bindgen_ty_473, + pub _py_maxsplit: _Py_global_strings__bindgen_ty_2__bindgen_ty_474, + pub _py_maxvalue: _Py_global_strings__bindgen_ty_2__bindgen_ty_475, + pub _py_memLevel: _Py_global_strings__bindgen_ty_2__bindgen_ty_476, + pub _py_memlimit: _Py_global_strings__bindgen_ty_2__bindgen_ty_477, + pub _py_message: _Py_global_strings__bindgen_ty_2__bindgen_ty_478, + pub _py_metaclass: _Py_global_strings__bindgen_ty_2__bindgen_ty_479, + pub _py_metadata: _Py_global_strings__bindgen_ty_2__bindgen_ty_480, + pub _py_method: _Py_global_strings__bindgen_ty_2__bindgen_ty_481, + pub _py_mod: _Py_global_strings__bindgen_ty_2__bindgen_ty_482, + pub _py_mode: _Py_global_strings__bindgen_ty_2__bindgen_ty_483, + pub _py_module: _Py_global_strings__bindgen_ty_2__bindgen_ty_484, + pub _py_module_globals: _Py_global_strings__bindgen_ty_2__bindgen_ty_485, + pub _py_modules: _Py_global_strings__bindgen_ty_2__bindgen_ty_486, + pub _py_mro: _Py_global_strings__bindgen_ty_2__bindgen_ty_487, + pub _py_msg: _Py_global_strings__bindgen_ty_2__bindgen_ty_488, + pub _py_mycmp: _Py_global_strings__bindgen_ty_2__bindgen_ty_489, + pub _py_n: _Py_global_strings__bindgen_ty_2__bindgen_ty_490, + pub _py_n_arg: _Py_global_strings__bindgen_ty_2__bindgen_ty_491, + pub _py_n_fields: _Py_global_strings__bindgen_ty_2__bindgen_ty_492, + pub _py_n_sequence_fields: _Py_global_strings__bindgen_ty_2__bindgen_ty_493, + pub _py_n_unnamed_fields: _Py_global_strings__bindgen_ty_2__bindgen_ty_494, + pub _py_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_495, + pub _py_name_from: _Py_global_strings__bindgen_ty_2__bindgen_ty_496, + pub _py_namespace_separator: _Py_global_strings__bindgen_ty_2__bindgen_ty_497, + pub _py_namespaces: _Py_global_strings__bindgen_ty_2__bindgen_ty_498, + pub _py_narg: _Py_global_strings__bindgen_ty_2__bindgen_ty_499, + pub _py_ndigits: _Py_global_strings__bindgen_ty_2__bindgen_ty_500, + pub _py_new_file_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_501, + pub _py_new_limit: _Py_global_strings__bindgen_ty_2__bindgen_ty_502, + pub _py_newline: _Py_global_strings__bindgen_ty_2__bindgen_ty_503, + pub _py_newlines: _Py_global_strings__bindgen_ty_2__bindgen_ty_504, + pub _py_next: _Py_global_strings__bindgen_ty_2__bindgen_ty_505, + pub _py_nlocals: _Py_global_strings__bindgen_ty_2__bindgen_ty_506, + pub _py_node_depth: _Py_global_strings__bindgen_ty_2__bindgen_ty_507, + pub _py_node_offset: _Py_global_strings__bindgen_ty_2__bindgen_ty_508, + pub _py_ns: _Py_global_strings__bindgen_ty_2__bindgen_ty_509, + pub _py_nstype: _Py_global_strings__bindgen_ty_2__bindgen_ty_510, + pub _py_nt: _Py_global_strings__bindgen_ty_2__bindgen_ty_511, + pub _py_null: _Py_global_strings__bindgen_ty_2__bindgen_ty_512, + pub _py_number: _Py_global_strings__bindgen_ty_2__bindgen_ty_513, + pub _py_obj: _Py_global_strings__bindgen_ty_2__bindgen_ty_514, + pub _py_object: _Py_global_strings__bindgen_ty_2__bindgen_ty_515, + pub _py_offset: _Py_global_strings__bindgen_ty_2__bindgen_ty_516, + pub _py_offset_dst: _Py_global_strings__bindgen_ty_2__bindgen_ty_517, + pub _py_offset_src: _Py_global_strings__bindgen_ty_2__bindgen_ty_518, + pub _py_on_type_read: _Py_global_strings__bindgen_ty_2__bindgen_ty_519, + pub _py_onceregistry: _Py_global_strings__bindgen_ty_2__bindgen_ty_520, + pub _py_only_keys: _Py_global_strings__bindgen_ty_2__bindgen_ty_521, + pub _py_oparg: _Py_global_strings__bindgen_ty_2__bindgen_ty_522, + pub _py_opcode: _Py_global_strings__bindgen_ty_2__bindgen_ty_523, + pub _py_open: _Py_global_strings__bindgen_ty_2__bindgen_ty_524, + pub _py_opener: _Py_global_strings__bindgen_ty_2__bindgen_ty_525, + pub _py_operation: _Py_global_strings__bindgen_ty_2__bindgen_ty_526, + pub _py_optimize: _Py_global_strings__bindgen_ty_2__bindgen_ty_527, + pub _py_options: _Py_global_strings__bindgen_ty_2__bindgen_ty_528, + pub _py_order: _Py_global_strings__bindgen_ty_2__bindgen_ty_529, + pub _py_origin: _Py_global_strings__bindgen_ty_2__bindgen_ty_530, + pub _py_out_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_531, + pub _py_outgoing: _Py_global_strings__bindgen_ty_2__bindgen_ty_532, + pub _py_overlapped: _Py_global_strings__bindgen_ty_2__bindgen_ty_533, + pub _py_owner: _Py_global_strings__bindgen_ty_2__bindgen_ty_534, + pub _py_p: _Py_global_strings__bindgen_ty_2__bindgen_ty_535, + pub _py_pages: _Py_global_strings__bindgen_ty_2__bindgen_ty_536, + pub _py_parent: _Py_global_strings__bindgen_ty_2__bindgen_ty_537, + pub _py_password: _Py_global_strings__bindgen_ty_2__bindgen_ty_538, + pub _py_path: _Py_global_strings__bindgen_ty_2__bindgen_ty_539, + pub _py_pattern: _Py_global_strings__bindgen_ty_2__bindgen_ty_540, + pub _py_peek: _Py_global_strings__bindgen_ty_2__bindgen_ty_541, + pub _py_persistent_id: _Py_global_strings__bindgen_ty_2__bindgen_ty_542, + pub _py_persistent_load: _Py_global_strings__bindgen_ty_2__bindgen_ty_543, + pub _py_person: _Py_global_strings__bindgen_ty_2__bindgen_ty_544, + pub _py_pi_factory: _Py_global_strings__bindgen_ty_2__bindgen_ty_545, + pub _py_pid: _Py_global_strings__bindgen_ty_2__bindgen_ty_546, + pub _py_policy: _Py_global_strings__bindgen_ty_2__bindgen_ty_547, + pub _py_pos: _Py_global_strings__bindgen_ty_2__bindgen_ty_548, + pub _py_pos1: _Py_global_strings__bindgen_ty_2__bindgen_ty_549, + pub _py_pos2: _Py_global_strings__bindgen_ty_2__bindgen_ty_550, + pub _py_posix: _Py_global_strings__bindgen_ty_2__bindgen_ty_551, + pub _py_print_file_and_line: _Py_global_strings__bindgen_ty_2__bindgen_ty_552, + pub _py_priority: _Py_global_strings__bindgen_ty_2__bindgen_ty_553, + pub _py_progress: _Py_global_strings__bindgen_ty_2__bindgen_ty_554, + pub _py_progress_handler: _Py_global_strings__bindgen_ty_2__bindgen_ty_555, + pub _py_progress_routine: _Py_global_strings__bindgen_ty_2__bindgen_ty_556, + pub _py_proto: _Py_global_strings__bindgen_ty_2__bindgen_ty_557, + pub _py_protocol: _Py_global_strings__bindgen_ty_2__bindgen_ty_558, + pub _py_ps1: _Py_global_strings__bindgen_ty_2__bindgen_ty_559, + pub _py_ps2: _Py_global_strings__bindgen_ty_2__bindgen_ty_560, + pub _py_query: _Py_global_strings__bindgen_ty_2__bindgen_ty_561, + pub _py_quotetabs: _Py_global_strings__bindgen_ty_2__bindgen_ty_562, + pub _py_r: _Py_global_strings__bindgen_ty_2__bindgen_ty_563, + pub _py_raw: _Py_global_strings__bindgen_ty_2__bindgen_ty_564, + pub _py_read: _Py_global_strings__bindgen_ty_2__bindgen_ty_565, + pub _py_read1: _Py_global_strings__bindgen_ty_2__bindgen_ty_566, + pub _py_readable: _Py_global_strings__bindgen_ty_2__bindgen_ty_567, + pub _py_readall: _Py_global_strings__bindgen_ty_2__bindgen_ty_568, + pub _py_readinto: _Py_global_strings__bindgen_ty_2__bindgen_ty_569, + pub _py_readinto1: _Py_global_strings__bindgen_ty_2__bindgen_ty_570, + pub _py_readline: _Py_global_strings__bindgen_ty_2__bindgen_ty_571, + pub _py_readonly: _Py_global_strings__bindgen_ty_2__bindgen_ty_572, + pub _py_real: _Py_global_strings__bindgen_ty_2__bindgen_ty_573, + pub _py_reducer_override: _Py_global_strings__bindgen_ty_2__bindgen_ty_574, + pub _py_registry: _Py_global_strings__bindgen_ty_2__bindgen_ty_575, + pub _py_rel_tol: _Py_global_strings__bindgen_ty_2__bindgen_ty_576, + pub _py_release: _Py_global_strings__bindgen_ty_2__bindgen_ty_577, + pub _py_reload: _Py_global_strings__bindgen_ty_2__bindgen_ty_578, + pub _py_repl: _Py_global_strings__bindgen_ty_2__bindgen_ty_579, + pub _py_replace: _Py_global_strings__bindgen_ty_2__bindgen_ty_580, + pub _py_reserved: _Py_global_strings__bindgen_ty_2__bindgen_ty_581, + pub _py_reset: _Py_global_strings__bindgen_ty_2__bindgen_ty_582, + pub _py_resetids: _Py_global_strings__bindgen_ty_2__bindgen_ty_583, + pub _py_return: _Py_global_strings__bindgen_ty_2__bindgen_ty_584, + pub _py_reverse: _Py_global_strings__bindgen_ty_2__bindgen_ty_585, + pub _py_reversed: _Py_global_strings__bindgen_ty_2__bindgen_ty_586, + pub _py_s: _Py_global_strings__bindgen_ty_2__bindgen_ty_587, + pub _py_salt: _Py_global_strings__bindgen_ty_2__bindgen_ty_588, + pub _py_sched_priority: _Py_global_strings__bindgen_ty_2__bindgen_ty_589, + pub _py_scheduler: _Py_global_strings__bindgen_ty_2__bindgen_ty_590, + pub _py_seek: _Py_global_strings__bindgen_ty_2__bindgen_ty_591, + pub _py_seekable: _Py_global_strings__bindgen_ty_2__bindgen_ty_592, + pub _py_selectors: _Py_global_strings__bindgen_ty_2__bindgen_ty_593, + pub _py_self: _Py_global_strings__bindgen_ty_2__bindgen_ty_594, + pub _py_send: _Py_global_strings__bindgen_ty_2__bindgen_ty_595, + pub _py_sep: _Py_global_strings__bindgen_ty_2__bindgen_ty_596, + pub _py_sequence: _Py_global_strings__bindgen_ty_2__bindgen_ty_597, + pub _py_server_hostname: _Py_global_strings__bindgen_ty_2__bindgen_ty_598, + pub _py_server_side: _Py_global_strings__bindgen_ty_2__bindgen_ty_599, + pub _py_session: _Py_global_strings__bindgen_ty_2__bindgen_ty_600, + pub _py_setcomp: _Py_global_strings__bindgen_ty_2__bindgen_ty_601, + pub _py_setpgroup: _Py_global_strings__bindgen_ty_2__bindgen_ty_602, + pub _py_setsid: _Py_global_strings__bindgen_ty_2__bindgen_ty_603, + pub _py_setsigdef: _Py_global_strings__bindgen_ty_2__bindgen_ty_604, + pub _py_setsigmask: _Py_global_strings__bindgen_ty_2__bindgen_ty_605, + pub _py_setstate: _Py_global_strings__bindgen_ty_2__bindgen_ty_606, + pub _py_shape: _Py_global_strings__bindgen_ty_2__bindgen_ty_607, + pub _py_show_cmd: _Py_global_strings__bindgen_ty_2__bindgen_ty_608, + pub _py_signed: _Py_global_strings__bindgen_ty_2__bindgen_ty_609, + pub _py_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_610, + pub _py_sizehint: _Py_global_strings__bindgen_ty_2__bindgen_ty_611, + pub _py_skip_file_prefixes: _Py_global_strings__bindgen_ty_2__bindgen_ty_612, + pub _py_sleep: _Py_global_strings__bindgen_ty_2__bindgen_ty_613, + pub _py_sock: _Py_global_strings__bindgen_ty_2__bindgen_ty_614, + pub _py_sort: _Py_global_strings__bindgen_ty_2__bindgen_ty_615, + pub _py_sound: _Py_global_strings__bindgen_ty_2__bindgen_ty_616, + pub _py_source: _Py_global_strings__bindgen_ty_2__bindgen_ty_617, + pub _py_source_traceback: _Py_global_strings__bindgen_ty_2__bindgen_ty_618, + pub _py_src: _Py_global_strings__bindgen_ty_2__bindgen_ty_619, + pub _py_src_dir_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_620, + pub _py_stacklevel: _Py_global_strings__bindgen_ty_2__bindgen_ty_621, + pub _py_start: _Py_global_strings__bindgen_ty_2__bindgen_ty_622, + pub _py_statement: _Py_global_strings__bindgen_ty_2__bindgen_ty_623, + pub _py_status: _Py_global_strings__bindgen_ty_2__bindgen_ty_624, + pub _py_stderr: _Py_global_strings__bindgen_ty_2__bindgen_ty_625, + pub _py_stdin: _Py_global_strings__bindgen_ty_2__bindgen_ty_626, + pub _py_stdout: _Py_global_strings__bindgen_ty_2__bindgen_ty_627, + pub _py_step: _Py_global_strings__bindgen_ty_2__bindgen_ty_628, + pub _py_steps: _Py_global_strings__bindgen_ty_2__bindgen_ty_629, + pub _py_store_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_630, + pub _py_strategy: _Py_global_strings__bindgen_ty_2__bindgen_ty_631, + pub _py_strftime: _Py_global_strings__bindgen_ty_2__bindgen_ty_632, + pub _py_strict: _Py_global_strings__bindgen_ty_2__bindgen_ty_633, + pub _py_strict_mode: _Py_global_strings__bindgen_ty_2__bindgen_ty_634, + pub _py_string: _Py_global_strings__bindgen_ty_2__bindgen_ty_635, + pub _py_sub_key: _Py_global_strings__bindgen_ty_2__bindgen_ty_636, + pub _py_symmetric_difference_update: _Py_global_strings__bindgen_ty_2__bindgen_ty_637, + pub _py_tabsize: _Py_global_strings__bindgen_ty_2__bindgen_ty_638, + pub _py_tag: _Py_global_strings__bindgen_ty_2__bindgen_ty_639, + pub _py_target: _Py_global_strings__bindgen_ty_2__bindgen_ty_640, + pub _py_target_is_directory: _Py_global_strings__bindgen_ty_2__bindgen_ty_641, + pub _py_task: _Py_global_strings__bindgen_ty_2__bindgen_ty_642, + pub _py_tb_frame: _Py_global_strings__bindgen_ty_2__bindgen_ty_643, + pub _py_tb_lasti: _Py_global_strings__bindgen_ty_2__bindgen_ty_644, + pub _py_tb_lineno: _Py_global_strings__bindgen_ty_2__bindgen_ty_645, + pub _py_tb_next: _Py_global_strings__bindgen_ty_2__bindgen_ty_646, + pub _py_tell: _Py_global_strings__bindgen_ty_2__bindgen_ty_647, + pub _py_template: _Py_global_strings__bindgen_ty_2__bindgen_ty_648, + pub _py_term: _Py_global_strings__bindgen_ty_2__bindgen_ty_649, + pub _py_text: _Py_global_strings__bindgen_ty_2__bindgen_ty_650, + pub _py_threading: _Py_global_strings__bindgen_ty_2__bindgen_ty_651, + pub _py_throw: _Py_global_strings__bindgen_ty_2__bindgen_ty_652, + pub _py_timeout: _Py_global_strings__bindgen_ty_2__bindgen_ty_653, + pub _py_times: _Py_global_strings__bindgen_ty_2__bindgen_ty_654, + pub _py_timetuple: _Py_global_strings__bindgen_ty_2__bindgen_ty_655, + pub _py_top: _Py_global_strings__bindgen_ty_2__bindgen_ty_656, + pub _py_trace_callback: _Py_global_strings__bindgen_ty_2__bindgen_ty_657, + pub _py_traceback: _Py_global_strings__bindgen_ty_2__bindgen_ty_658, + pub _py_trailers: _Py_global_strings__bindgen_ty_2__bindgen_ty_659, + pub _py_translate: _Py_global_strings__bindgen_ty_2__bindgen_ty_660, + pub _py_true: _Py_global_strings__bindgen_ty_2__bindgen_ty_661, + pub _py_truncate: _Py_global_strings__bindgen_ty_2__bindgen_ty_662, + pub _py_twice: _Py_global_strings__bindgen_ty_2__bindgen_ty_663, + pub _py_txt: _Py_global_strings__bindgen_ty_2__bindgen_ty_664, + pub _py_type: _Py_global_strings__bindgen_ty_2__bindgen_ty_665, + pub _py_type_params: _Py_global_strings__bindgen_ty_2__bindgen_ty_666, + pub _py_tz: _Py_global_strings__bindgen_ty_2__bindgen_ty_667, + pub _py_tzname: _Py_global_strings__bindgen_ty_2__bindgen_ty_668, + pub _py_uid: _Py_global_strings__bindgen_ty_2__bindgen_ty_669, + pub _py_unlink: _Py_global_strings__bindgen_ty_2__bindgen_ty_670, + pub _py_unraisablehook: _Py_global_strings__bindgen_ty_2__bindgen_ty_671, + pub _py_uri: _Py_global_strings__bindgen_ty_2__bindgen_ty_672, + pub _py_usedforsecurity: _Py_global_strings__bindgen_ty_2__bindgen_ty_673, + pub _py_value: _Py_global_strings__bindgen_ty_2__bindgen_ty_674, + pub _py_values: _Py_global_strings__bindgen_ty_2__bindgen_ty_675, + pub _py_version: _Py_global_strings__bindgen_ty_2__bindgen_ty_676, + pub _py_volume: _Py_global_strings__bindgen_ty_2__bindgen_ty_677, + pub _py_warnings: _Py_global_strings__bindgen_ty_2__bindgen_ty_678, + pub _py_warnoptions: _Py_global_strings__bindgen_ty_2__bindgen_ty_679, + pub _py_wbits: _Py_global_strings__bindgen_ty_2__bindgen_ty_680, + pub _py_week: _Py_global_strings__bindgen_ty_2__bindgen_ty_681, + pub _py_weekday: _Py_global_strings__bindgen_ty_2__bindgen_ty_682, + pub _py_which: _Py_global_strings__bindgen_ty_2__bindgen_ty_683, + pub _py_who: _Py_global_strings__bindgen_ty_2__bindgen_ty_684, + pub _py_withdata: _Py_global_strings__bindgen_ty_2__bindgen_ty_685, + pub _py_writable: _Py_global_strings__bindgen_ty_2__bindgen_ty_686, + pub _py_write: _Py_global_strings__bindgen_ty_2__bindgen_ty_687, + pub _py_write_through: _Py_global_strings__bindgen_ty_2__bindgen_ty_688, + pub _py_x: _Py_global_strings__bindgen_ty_2__bindgen_ty_689, + pub _py_year: _Py_global_strings__bindgen_ty_2__bindgen_ty_690, + pub _py_zdict: _Py_global_strings__bindgen_ty_2__bindgen_ty_691, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_1 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_2 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_2 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_3 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_3 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_4 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_4 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_5 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_5 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_6 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_6 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_7 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_7 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_8 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_8 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_9 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_9 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_10 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_10 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_11 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_11 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_12 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_12 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_13 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_13 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_14 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_14 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_15 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 20usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_15 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_16 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_16 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_17 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_17 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_18 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_18 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_19 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_19 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_20 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_20 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_21 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_21 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_22 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_22 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_23 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_23 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_24 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_24 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_25 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 31usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_25 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_26 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_26 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_27 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_27 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_28 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_28 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_29 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_29 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_30 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_30 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_31 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_31 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_32 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_32 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_33 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_33 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_34 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_34 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_35 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_35 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_36 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_36 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_37 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_37 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_38 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_38 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_39 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_39 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_40 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_40 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_41 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_41 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_42 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_42 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_43 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 25usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_43 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_44 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_44 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_45 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_45 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_46 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_46 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_47 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_47 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_48 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_48 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_49 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_49 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_50 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_50 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_51 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_51 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_52 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_52 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_53 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_53 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_54 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_54 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_55 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_55 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_56 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_56 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_57 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_57 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_58 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_58 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_59 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_59 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_60 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_60 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_61 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_61 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_62 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_62 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_63 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_63 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_64 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 17usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_64 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_65 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_65 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_66 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_66 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_67 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_67 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_68 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_68 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_69 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_69 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_70 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_70 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_71 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_71 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_72 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_72 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_73 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_73 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_74 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_74 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_75 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_75 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_76 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_76 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_77 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_77 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_78 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_78 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_79 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_79 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_80 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_80 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_81 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_81 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_82 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_82 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_83 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_83 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_84 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_84 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_85 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_85 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_86 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_86 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_87 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_87 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_88 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_88 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_89 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 21usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_89 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_90 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_90 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_91 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_91 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_92 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_92 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_93 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_93 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_94 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_94 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_95 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_95 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_96 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_96 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_97 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_97 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_98 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_98 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_99 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_99 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_100 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_100 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_101 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_101 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_102 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_102 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_103 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_103 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_104 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_104 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_105 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_105 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_106 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_106 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_107 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_107 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_108 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_108 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_109 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_109 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_110 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_110 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_111 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_111 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_112 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_112 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_113 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_113 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_114 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_114 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_115 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_115 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_116 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_116 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_117 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_117 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_118 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_118 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_119 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_119 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_120 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_120 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_121 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_121 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_122 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_122 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_123 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_123 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_124 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_124 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_125 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_125 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_126 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_126 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_127 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_127 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_128 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_128 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_129 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_129 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_130 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_130 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_131 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 19usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_131 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_132 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_132 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_133 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_133 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_134 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_134 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_135 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_135 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_136 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_136 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_137 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_137 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_138 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_138 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_139 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_139 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_140 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_140 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_141 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_141 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_142 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_142 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_143 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_143 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_144 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_144 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_145 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_145 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_146 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_146 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_147 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_147 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_148 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_148 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_149 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_149 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_150 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_150 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_151 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_151 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_152 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_152 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_153 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_153 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_154 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_154 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_155 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_155 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_156 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_156 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_157 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_157 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_158 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_158 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_159 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 17usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_159 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_160 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_160 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_161 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_161 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_162 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_162 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_163 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 36usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_163 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_164 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 25usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_164 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_165 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 17usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_165 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_166 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 31usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_166 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_167 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 20usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_167 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_168 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 19usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_168 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_169 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_169 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_170 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_170 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_171 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_171 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_172 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_172 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_173 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_173 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_174 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_174 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_175 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_175 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_176 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_176 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_177 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_177 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_178 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 25usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_178 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_179 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_179 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_180 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_180 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_181 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_181 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_182 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_182 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_183 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 17usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_183 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_184 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_184 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_185 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_185 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_186 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_186 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_187 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_187 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_188 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_188 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_189 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_189 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_190 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 17usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_190 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_191 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_191 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_192 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_192 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_193 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_193 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_194 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_194 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_195 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_195 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_196 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 20usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_196 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_197 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_197 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_198 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 19usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_198 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_199 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_199 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_200 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_200 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_201 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_201 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_202 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_202 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_203 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_203 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_204 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 19usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_204 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_205 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_205 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_206 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_206 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_207 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 26usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_207 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_208 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 26usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_208 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_209 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_209 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_210 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_210 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_211 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_211 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_212 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_212 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_213 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_213 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_214 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_214 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_215 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_215 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_216 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_216 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_217 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_217 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_218 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_218 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_219 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_219 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_220 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_220 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_221 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_221 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_222 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_222 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_223 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_223 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_224 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_224 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_225 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 17usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_225 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_226 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_226 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_227 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_227 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_228 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 20usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_228 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_229 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_229 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_230 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_230 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_231 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_231 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_232 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_232 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_233 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_233 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_234 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_234 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_235 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_235 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_236 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_236 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_237 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_237 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_238 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_238 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_239 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_239 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_240 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_240 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_241 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_241 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_242 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_242 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_243 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_243 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_244 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_244 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_245 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_245 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_246 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_246 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_247 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_247 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_248 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_248 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_249 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_249 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_250 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_250 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_251 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_251 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_252 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_252 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_253 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_253 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_254 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_254 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_255 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_255 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_256 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 23usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_256 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_257 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_257 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_258 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_258 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_259 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_259 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_260 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_260 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_261 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_261 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_262 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_262 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_263 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_263 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_264 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_264 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_265 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_265 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_266 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_266 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_267 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_267 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_268 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_268 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_269 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_269 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_270 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_270 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_271 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_271 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_272 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_272 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_273 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_273 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_274 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_274 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_275 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_275 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_276 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_276 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_277 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_277 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_278 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_278 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_279 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_279 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_280 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_280 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_281 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_281 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_282 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_282 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_283 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 19usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_283 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_284 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_284 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_285 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_285 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_286 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_286 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_287 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_287 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_288 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_288 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_289 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_289 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_290 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_290 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_291 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_291 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_292 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_292 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_293 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_293 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_294 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_294 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_295 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_295 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_296 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_296 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_297 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_297 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_298 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_298 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_299 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_299 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_300 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_300 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_301 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_301 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_302 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_302 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_303 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_303 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_304 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_304 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_305 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_305 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_306 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_306 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_307 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_307 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_308 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_308 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_309 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_309 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_310 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_310 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_311 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_311 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_312 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_312 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_313 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_313 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_314 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_314 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_315 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_315 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_316 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_316 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_317 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_317 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_318 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_318 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_319 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_319 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_320 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_320 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_321 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_321 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_322 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_322 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_323 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_323 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_324 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_324 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_325 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_325 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_326 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_326 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_327 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_327 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_328 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_328 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_329 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_329 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_330 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_330 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_331 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_331 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_332 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_332 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_333 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_333 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_334 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_334 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_335 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_335 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_336 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_336 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_337 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_337 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_338 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_338 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_339 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_339 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_340 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_340 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_341 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_341 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_342 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_342 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_343 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_343 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_344 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_344 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_345 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_345 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_346 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_346 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_347 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_347 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_348 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 19usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_348 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_349 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_349 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_350 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_350 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_351 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_351 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_352 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_352 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_353 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_353 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_354 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_354 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_355 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_355 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_356 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_356 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_357 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 3usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_357 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_358 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_358 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_359 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_359 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_360 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_360 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_361 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_361 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_362 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_362 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_363 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_363 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_364 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_364 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_365 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_365 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_366 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_366 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_367 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_367 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_368 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_368 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_369 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_369 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_370 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_370 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_371 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_371 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_372 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_372 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_373 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_373 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_374 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_374 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_375 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_375 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_376 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_376 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_377 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_377 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_378 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_378 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_379 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_379 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_380 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_380 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_381 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_381 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_382 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_382 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_383 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_383 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_384 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_384 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_385 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_385 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_386 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_386 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_387 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_387 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_388 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_388 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_389 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_389 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_390 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_390 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_391 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_391 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_392 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_392 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_393 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_393 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_394 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_394 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_395 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_395 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_396 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_396 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_397 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_397 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_398 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_398 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_399 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_399 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_400 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 3usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_400 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_401 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_401 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_402 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 3usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_402 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_403 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_403 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_404 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_404 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_405 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_405 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_406 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_406 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_407 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_407 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_408 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_408 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_409 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_409 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_410 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_410 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_411 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_411 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_412 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_412 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_413 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_413 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_414 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_414 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_415 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_415 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_416 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_416 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_417 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_417 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_418 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_418 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_419 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_419 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_420 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_420 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_421 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_421 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_422 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_422 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_423 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_423 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_424 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_424 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_425 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_425 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_426 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_426 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_427 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_427 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_428 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_428 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_429 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_429 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_430 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_430 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_431 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_431 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_432 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_432 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_433 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_433 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_434 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_434 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_435 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_435 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_436 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_436 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_437 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_437 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_438 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_438 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_439 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_439 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_440 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_440 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_441 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_441 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_442 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 3usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_442 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_443 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_443 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_444 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_444 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_445 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_445 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_446 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_446 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_447 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_447 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_448 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_448 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_449 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_449 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_450 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_450 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_451 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_451 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_452 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_452 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_453 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_453 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_454 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_454 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_455 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_455 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_456 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_456 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_457 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_457 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_458 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_458 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_459 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_459 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_460 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_460 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_461 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_461 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_462 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_462 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_463 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 3usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_463 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_464 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_464 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_465 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_465 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_466 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_466 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_467 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_467 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_468 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_468 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_469 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_469 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_470 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_470 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_471 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_471 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_472 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_472 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_473 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_473 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_474 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_474 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_475 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_475 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_476 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_476 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_477 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_477 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_478 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_478 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_479 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_479 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_480 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_480 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_481 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_481 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_482 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_482 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_483 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_483 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_484 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_484 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_485 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_485 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_486 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_486 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_487 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_487 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_488 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_488 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_489 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_489 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_490 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_490 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_491 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_491 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_492 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_492 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_493 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 18usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_493 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_494 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 17usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_494 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_495 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_495 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_496 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_496 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_497 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 20usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_497 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_498 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_498 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_499 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_499 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_500 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_500 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_501 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_501 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_502 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_502 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_503 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_503 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_504 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_504 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_505 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_505 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_506 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_506 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_507 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_507 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_508 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_508 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_509 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 3usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_509 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_510 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_510 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_511 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 3usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_511 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_512 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_512 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_513 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_513 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_514 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_514 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_515 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_515 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_516 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_516 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_517 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_517 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_518 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_518 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_519 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_519 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_520 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 13usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_520 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_521 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_521 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_522 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_522 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_523 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_523 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_524 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_524 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_525 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_525 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_526 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_526 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_527 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_527 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_528 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_528 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_529 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_529 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_530 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_530 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_531 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_531 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_532 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_532 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_533 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_533 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_534 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_534 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_535 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_535 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_536 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_536 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_537 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_537 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_538 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_538 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_539 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_539 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_540 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_540 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_541 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_541 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_542 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_542 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_543 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_543 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_544 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_544 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_545 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_545 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_546 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_546 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_547 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_547 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_548 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_548 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_549 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_549 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_550 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_550 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_551 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_551 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_552 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 20usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_552 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_553 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_553 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_554 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_554 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_555 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 17usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_555 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_556 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 17usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_556 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_557 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_557 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_558 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_558 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_559 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_559 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_560 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_560 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_561 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_561 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_562 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_562 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_563 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_563 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_564 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_564 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_565 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_565 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_566 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_566 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_567 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_567 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_568 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_568 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_569 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_569 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_570 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_570 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_571 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_571 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_572 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_572 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_573 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_573 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_574 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 17usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_574 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_575 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_575 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_576 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_576 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_577 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_577 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_578 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_578 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_579 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_579 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_580 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_580 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_581 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_581 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_582 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_582 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_583 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_583 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_584 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_584 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_585 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_585 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_586 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_586 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_587 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_587 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_588 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_588 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_589 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_589 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_590 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_590 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_591 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_591 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_592 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_592 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_593 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_593 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_594 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_594 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_595 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_595 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_596 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_596 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_597 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_597 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_598 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_598 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_599 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_599 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_600 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_600 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_601 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_601 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_602 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_602 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_603 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_603 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_604 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_604 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_605 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_605 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_606 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_606 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_607 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_607 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_608 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_608 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_609 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_609 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_610 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_610 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_611 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_611 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_612 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 19usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_612 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_613 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_613 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_614 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_614 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_615 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_615 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_616 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_616 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_617 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_617 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_618 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 17usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_618 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_619 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_619 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_620 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_620 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_621 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_621 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_622 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_622 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_623 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_623 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_624 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_624 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_625 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_625 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_626 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_626 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_627 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_627 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_628 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_628 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_629 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_629 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_630 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 11usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_630 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_631 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_631 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_632 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_632 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_633 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_633 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_634 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_634 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_635 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_635 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_636 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_636 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_637 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 28usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_637 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_638 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_638 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_639 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_639 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_640 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_640 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_641 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 20usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_641 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_642 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_642 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_643 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_643 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_644 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_644 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_645 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_645 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_646 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_646 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_647 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_647 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_648 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_648 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_649 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_649 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_650 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_650 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_651 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_651 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_652 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_652 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_653 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_653 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_654 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_654 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_655 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_655 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_656 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_656 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_657 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_657 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_658 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_658 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_659 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_659 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_660 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 10usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_660 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_661 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_661 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_662 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_662 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_663 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_663 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_664 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_664 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_665 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_665 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_666 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_666 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_667 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 3usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_667 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_668 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_668 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_669 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_669 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_670 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_670 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_671 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 15usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_671 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_672 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_672 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_673 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 16usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_673 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_674 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_674 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_675 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_675 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_676 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_676 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_677 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 7usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_677 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_678 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_678 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_679 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 12usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_679 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_680 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_680 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_681 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_681 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_682 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 8usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_682 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_683 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_683 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_684 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 4usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_684 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_685 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_685 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_686 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 9usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_686 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_687 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_687 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_688 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 14usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_688 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_689 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_689 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_690 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 5usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_690 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_691 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 6usize], +} +impl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_691 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _Py_global_strings__bindgen_ty_2 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_3 { + pub _ascii: PyASCIIObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_3 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_global_strings__bindgen_ty_4 { + pub _latin1: PyCompactUnicodeObject, + pub _data: [u8; 2usize], +} +impl Default for _Py_global_strings__bindgen_ty_4 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _Py_global_strings { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _types_runtime_state { + pub next_version_tag: ::std::os::raw::c_uint, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct type_cache_entry { + pub version: ::std::os::raw::c_uint, + pub name: *mut PyObject, + pub value: *mut PyObject, +} +impl Default for type_cache_entry { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct type_cache { + pub hashtable: [type_cache_entry; 4096usize], +} +impl Default for type_cache { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct static_builtin_state { + pub type_: *mut PyTypeObject, + pub readying: ::std::os::raw::c_int, + pub ready: ::std::os::raw::c_int, + pub tp_dict: *mut PyObject, + pub tp_subclasses: *mut PyObject, + pub tp_weaklist: *mut PyObject, +} +impl Default for static_builtin_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct types_state { + pub next_version_tag: ::std::os::raw::c_uint, + pub type_cache: type_cache, + pub num_builtins_initialized: usize, + pub builtins: [static_builtin_state; 200usize], +} +impl Default for types_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type pytype_slotdef = wrapperbase; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_static_objects { + pub singletons: _Py_static_objects__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_static_objects__bindgen_ty_1 { + pub small_ints: [PyLongObject; 262usize], + pub bytes_empty: PyBytesObject, + pub bytes_characters: [_Py_static_objects__bindgen_ty_1__bindgen_ty_1; 256usize], + pub strings: _Py_global_strings, + pub _tuple_empty_gc_not_used: PyGC_Head, + pub tuple_empty: PyTupleObject, + pub _hamt_bitmap_node_empty_gc_not_used: PyGC_Head, + pub hamt_bitmap_node_empty: PyHamtNode_Bitmap, + pub context_token_missing: _PyContextTokenMissing, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_static_objects__bindgen_ty_1__bindgen_ty_1 { + pub ob: PyBytesObject, + pub eos: ::std::os::raw::c_char, +} +impl Default for _Py_static_objects__bindgen_ty_1__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _Py_static_objects__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _Py_static_objects { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_interp_cached_objects { + pub interned_strings: *mut PyObject, + pub str_replace_inf: *mut PyObject, + pub objreduce: *mut PyObject, + pub type_slots_pname: *mut PyObject, + pub type_slots_ptrs: [*mut pytype_slotdef; 10usize], + pub generic_type: *mut PyTypeObject, + pub typevar_type: *mut PyTypeObject, + pub typevartuple_type: *mut PyTypeObject, + pub paramspec_type: *mut PyTypeObject, + pub paramspecargs_type: *mut PyTypeObject, + pub paramspeckwargs_type: *mut PyTypeObject, +} +impl Default for _Py_interp_cached_objects { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_interp_static_objects { + pub singletons: _Py_interp_static_objects__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_interp_static_objects__bindgen_ty_1 { + pub _not_used: ::std::os::raw::c_int, + pub _hamt_empty_gc_not_used: PyGC_Head, + pub hamt_empty: PyHamtObject, + pub last_resort_memory_error: PyBaseExceptionObject, +} +impl Default for _Py_interp_static_objects__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _Py_interp_static_objects { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_slist_item_s { + pub next: *mut _Py_slist_item_s, +} +impl Default for _Py_slist_item_s { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type _Py_slist_item_t = _Py_slist_item_s; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_slist_t { + pub head: *mut _Py_slist_item_t, +} +impl Default for _Py_slist_t { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_hashtable_entry_t { + pub _Py_slist_item: _Py_slist_item_t, + pub key_hash: Py_uhash_t, + pub key: *mut ::std::os::raw::c_void, + pub value: *mut ::std::os::raw::c_void, +} +impl Default for _Py_hashtable_entry_t { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type _Py_hashtable_hash_func = + ::std::option::Option Py_uhash_t>; +pub type _Py_hashtable_compare_func = ::std::option::Option< + unsafe extern "C" fn( + key1: *const ::std::os::raw::c_void, + key2: *const ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, +>; +pub type _Py_hashtable_destroy_func = + ::std::option::Option; +pub type _Py_hashtable_get_entry_func = ::std::option::Option< + unsafe extern "C" fn( + ht: *mut _Py_hashtable_t, + key: *const ::std::os::raw::c_void, + ) -> *mut _Py_hashtable_entry_t, +>; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_hashtable_allocator_t { + pub malloc: + ::std::option::Option *mut ::std::os::raw::c_void>, + pub free: ::std::option::Option, +} +impl Default for _Py_hashtable_allocator_t { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_hashtable_t { + pub nentries: usize, + pub nbuckets: usize, + pub buckets: *mut _Py_slist_t, + pub get_entry_func: _Py_hashtable_get_entry_func, + pub hash_func: _Py_hashtable_hash_func, + pub compare_func: _Py_hashtable_compare_func, + pub key_destroy_func: _Py_hashtable_destroy_func, + pub value_destroy_func: _Py_hashtable_destroy_func, + pub alloc: _Py_hashtable_allocator_t, +} +impl Default for _Py_hashtable_t { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _time_runtime_state { + pub ticks_per_second_initialized: ::std::os::raw::c_int, + pub ticks_per_second: ::std::os::raw::c_long, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _import_runtime_state { + pub inittab: *mut _inittab, + pub last_module_index: Py_ssize_t, + pub extensions: _import_runtime_state__bindgen_ty_1, + pub pkgcontext: *const ::std::os::raw::c_char, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _import_runtime_state__bindgen_ty_1 { + pub mutex: PyThread_type_lock, + pub hashtable: *mut _Py_hashtable_t, +} +impl Default for _import_runtime_state__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _import_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _import_state { + pub modules: *mut PyObject, + pub modules_by_index: *mut PyObject, + pub importlib: *mut PyObject, + pub override_frozen_modules: ::std::os::raw::c_int, + pub override_multi_interp_extensions_check: ::std::os::raw::c_int, + pub dlopenflags: ::std::os::raw::c_int, + pub import_func: *mut PyObject, + pub lock: _import_state__bindgen_ty_1, + pub find_and_load: _import_state__bindgen_ty_2, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _import_state__bindgen_ty_1 { + pub mutex: PyThread_type_lock, + pub thread: ::std::os::raw::c_ulong, + pub level: ::std::os::raw::c_int, +} +impl Default for _import_state__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _import_state__bindgen_ty_2 { + pub import_level: ::std::os::raw::c_int, + pub accumulated: _PyTime_t, + pub header: ::std::os::raw::c_int, +} +impl Default for _import_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _frame { + pub ob_base: PyObject, + pub f_back: *mut PyFrameObject, + pub f_frame: *mut _PyInterpreterFrame, + pub f_trace: *mut PyObject, + pub f_lineno: ::std::os::raw::c_int, + pub f_trace_lines: ::std::os::raw::c_char, + pub f_trace_opcodes: ::std::os::raw::c_char, + pub f_fast_as_locals: ::std::os::raw::c_char, + pub _f_frame_data: [*mut PyObject; 1usize], +} +impl Default for _frame { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _PyInterpreterFrame { + pub f_code: *mut PyCodeObject, + pub previous: *mut _PyInterpreterFrame, + pub f_funcobj: *mut PyObject, + pub f_globals: *mut PyObject, + pub f_builtins: *mut PyObject, + pub f_locals: *mut PyObject, + pub frame_obj: *mut PyFrameObject, + pub prev_instr: *mut _Py_CODEUNIT, + pub stacktop: ::std::os::raw::c_int, + pub return_offset: u16, + pub owner: ::std::os::raw::c_char, + pub localsplus: [*mut PyObject; 1usize], +} +impl Default for _PyInterpreterFrame { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _Py_list_state { + pub free_list: [*mut PyListObject; 80usize], + pub numfree: ::std::os::raw::c_int, +} +impl Default for _Py_list_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _py_object_runtime_state { + pub _not_used: ::std::os::raw::c_int, +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _py_object_state { + pub _not_used: ::std::os::raw::c_int, +} +pub type pymem_uint = ::std::os::raw::c_uint; +pub type pymem_block = u8; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct pool_header { + pub ref_: pool_header__bindgen_ty_1, + pub freeblock: *mut pymem_block, + pub nextpool: *mut pool_header, + pub prevpool: *mut pool_header, + pub arenaindex: pymem_uint, + pub szidx: pymem_uint, + pub nextoffset: pymem_uint, + pub maxnextoffset: pymem_uint, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union pool_header__bindgen_ty_1 { + pub _padding: *mut pymem_block, + pub count: pymem_uint, + _bindgen_union_align: u64, +} +impl Default for pool_header__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for pool_header { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type poolp = *mut pool_header; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct arena_object { + pub address: usize, + pub pool_address: *mut pymem_block, + pub nfreepools: pymem_uint, + pub ntotalpools: pymem_uint, + pub freepools: *mut pool_header, + pub nextarena: *mut arena_object, + pub prevarena: *mut arena_object, +} +impl Default for arena_object { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _obmalloc_pools { + pub used: [poolp; 64usize], +} +impl Default for _obmalloc_pools { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _obmalloc_mgmt { + pub arenas: *mut arena_object, + pub maxarenas: pymem_uint, + pub unused_arena_objects: *mut arena_object, + pub usable_arenas: *mut arena_object, + pub nfp2lasta: [*mut arena_object; 65usize], + pub narenas_currently_allocated: usize, + pub ntimes_arena_allocated: usize, + pub narenas_highwater: usize, + pub raw_allocated_blocks: Py_ssize_t, +} +impl Default for _obmalloc_mgmt { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct arena_coverage_t { + pub tail_hi: i32, + pub tail_lo: i32, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct arena_map_bot { + pub arenas: [arena_coverage_t; 16384usize], +} +impl Default for arena_map_bot { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct arena_map_mid { + pub ptrs: [*mut arena_map_bot; 32768usize], +} +impl Default for arena_map_mid { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct arena_map_top { + pub ptrs: [*mut arena_map_mid; 32768usize], +} +impl Default for arena_map_top { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type arena_map_top_t = arena_map_top; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _obmalloc_usage { + pub arena_map_root: arena_map_top_t, + pub arena_map_mid_count: ::std::os::raw::c_int, + pub arena_map_bot_count: ::std::os::raw::c_int, +} +impl Default for _obmalloc_usage { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _obmalloc_global_state { + pub dump_debug_stats: ::std::os::raw::c_int, + pub interpreter_leaks: Py_ssize_t, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _obmalloc_state { + pub pools: _obmalloc_pools, + pub mgmt: _obmalloc_mgmt, + pub usage: _obmalloc_usage, +} +impl Default for _obmalloc_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_tuple_state { + pub free_list: [*mut PyTupleObject; 20usize], + pub numfree: [::std::os::raw::c_int; 20usize], +} +impl Default for _Py_tuple_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _fileutils_state { + pub force_ascii: ::std::os::raw::c_int, +} +pub const _Py_error_handler__Py_ERROR_UNKNOWN: _Py_error_handler = 0; +pub const _Py_error_handler__Py_ERROR_STRICT: _Py_error_handler = 1; +pub const _Py_error_handler__Py_ERROR_SURROGATEESCAPE: _Py_error_handler = 2; +pub const _Py_error_handler__Py_ERROR_REPLACE: _Py_error_handler = 3; +pub const _Py_error_handler__Py_ERROR_IGNORE: _Py_error_handler = 4; +pub const _Py_error_handler__Py_ERROR_BACKSLASHREPLACE: _Py_error_handler = 5; +pub const _Py_error_handler__Py_ERROR_SURROGATEPASS: _Py_error_handler = 6; +pub const _Py_error_handler__Py_ERROR_XMLCHARREFREPLACE: _Py_error_handler = 7; +pub const _Py_error_handler__Py_ERROR_OTHER: _Py_error_handler = 8; +pub type _Py_error_handler = u32; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _PyUnicode_Name_CAPI { + pub getname: ::std::option::Option< + unsafe extern "C" fn( + code: Py_UCS4, + buffer: *mut ::std::os::raw::c_char, + buflen: ::std::os::raw::c_int, + with_alias_and_seq: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int, + >, + pub getcode: ::std::option::Option< + unsafe extern "C" fn( + name: *const ::std::os::raw::c_char, + namelen: ::std::os::raw::c_int, + code: *mut Py_UCS4, + with_named_seq: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int, + >, +} +impl Default for _PyUnicode_Name_CAPI { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_unicode_runtime_ids { + pub lock: PyThread_type_lock, + pub next_index: Py_ssize_t, +} +impl Default for _Py_unicode_runtime_ids { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_unicode_runtime_state { + pub ids: _Py_unicode_runtime_ids, +} +impl Default for _Py_unicode_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_unicode_fs_codec { + pub encoding: *mut ::std::os::raw::c_char, + pub utf8: ::std::os::raw::c_int, + pub errors: *mut ::std::os::raw::c_char, + pub error_handler: _Py_error_handler, +} +impl Default for _Py_unicode_fs_codec { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_unicode_ids { + pub size: Py_ssize_t, + pub array: *mut *mut PyObject, +} +impl Default for _Py_unicode_ids { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_unicode_state { + pub fs_codec: _Py_unicode_fs_codec, + pub ucnhash_capi: *mut _PyUnicode_Name_CAPI, + pub ids: _Py_unicode_ids, +} +impl Default for _Py_unicode_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _warnings_runtime_state { + pub filters: *mut PyObject, + pub once_registry: *mut PyObject, + pub default_action: *mut PyObject, + pub filters_version: ::std::os::raw::c_long, +} +impl Default for _warnings_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _Py_long_state { + pub max_str_digits: ::std::os::raw::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _is { + pub next: *mut PyInterpreterState, + pub id: i64, + pub id_refcount: i64, + pub requires_idref: ::std::os::raw::c_int, + pub id_mutex: PyThread_type_lock, + pub _initialized: ::std::os::raw::c_int, + pub finalizing: ::std::os::raw::c_int, + pub monitoring_version: u64, + pub last_restart_version: u64, + pub threads: _is_pythreads, + pub runtime: *mut pyruntimestate, + pub _finalizing: _Py_atomic_address, + pub gc: _gc_runtime_state, + pub sysdict: *mut PyObject, + pub builtins: *mut PyObject, + pub ceval: _ceval_state, + pub imports: _import_state, + pub _gil: _gil_runtime_state, + pub codec_search_path: *mut PyObject, + pub codec_search_cache: *mut PyObject, + pub codec_error_registry: *mut PyObject, + pub codecs_initialized: ::std::os::raw::c_int, + pub config: PyConfig, + pub feature_flags: ::std::os::raw::c_ulong, + pub dict: *mut PyObject, + pub sysdict_copy: *mut PyObject, + pub builtins_copy: *mut PyObject, + pub eval_frame: _PyFrameEvalFunction, + pub func_watchers: [PyFunction_WatchCallback; 8usize], + pub active_func_watchers: u8, + pub co_extra_user_count: Py_ssize_t, + pub co_extra_freefuncs: [freefunc; 255usize], + pub before_forkers: *mut PyObject, + pub after_forkers_parent: *mut PyObject, + pub after_forkers_child: *mut PyObject, + pub warnings: _warnings_runtime_state, + pub atexit: atexit_state, + pub obmalloc: _obmalloc_state, + pub audit_hooks: *mut PyObject, + pub type_watchers: [PyType_WatchCallback; 8usize], + pub code_watchers: [PyCode_WatchCallback; 8usize], + pub active_code_watchers: u8, + pub object_state: _py_object_state, + pub unicode: _Py_unicode_state, + pub float_state: _Py_float_state, + pub long_state: _Py_long_state, + pub dtoa: _dtoa_state, + pub func_state: _py_func_state, + pub slice_cache: *mut PySliceObject, + pub tuple: _Py_tuple_state, + pub list: _Py_list_state, + pub dict_state: _Py_dict_state, + pub async_gen: _Py_async_gen_state, + pub context: _Py_context_state, + pub exc_state: _Py_exc_state, + pub ast: ast_state, + pub types: types_state, + pub callable_cache: callable_cache, + pub interpreter_trampoline: *mut PyCodeObject, + pub monitors: _Py_GlobalMonitors, + pub f_opcode_trace_set: bool, + pub sys_profile_initialized: bool, + pub sys_trace_initialized: bool, + pub sys_profiling_threads: Py_ssize_t, + pub sys_tracing_threads: Py_ssize_t, + pub monitoring_callables: [[*mut PyObject; 17usize]; 8usize], + pub monitoring_tool_names: [*mut PyObject; 8usize], + pub cached_objects: _Py_interp_cached_objects, + pub static_objects: _Py_interp_static_objects, + pub _initial_thread: PyThreadState, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _is_pythreads { + pub next_unique_id: u64, + pub head: *mut PyThreadState, + pub count: ::std::os::raw::c_long, + pub stacksize: usize, +} +impl Default for _is_pythreads { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _is { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _xidregitem { + pub prev: *mut _xidregitem, + pub next: *mut _xidregitem, + pub cls: *mut PyObject, + pub getdata: crossinterpdatafunc, +} +impl Default for _xidregitem { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type sig_atomic_t = __sig_atomic_t; +#[repr(C)] +#[derive(Copy, Clone)] +pub union sigval { + pub sival_int: ::std::os::raw::c_int, + pub sival_ptr: *mut ::std::os::raw::c_void, + _bindgen_union_align: u64, +} +impl Default for sigval { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type __sigval_t = sigval; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo_t { + pub si_signo: ::std::os::raw::c_int, + pub si_errno: ::std::os::raw::c_int, + pub si_code: ::std::os::raw::c_int, + pub __pad0: ::std::os::raw::c_int, + pub _sifields: siginfo_t__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union siginfo_t__bindgen_ty_1 { + pub _pad: [::std::os::raw::c_int; 28usize], + pub _kill: siginfo_t__bindgen_ty_1__bindgen_ty_1, + pub _timer: siginfo_t__bindgen_ty_1__bindgen_ty_2, + pub _rt: siginfo_t__bindgen_ty_1__bindgen_ty_3, + pub _sigchld: siginfo_t__bindgen_ty_1__bindgen_ty_4, + pub _sigfault: siginfo_t__bindgen_ty_1__bindgen_ty_5, + pub _sigpoll: siginfo_t__bindgen_ty_1__bindgen_ty_6, + pub _sigsys: siginfo_t__bindgen_ty_1__bindgen_ty_7, + _bindgen_union_align: [u64; 14usize], +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct siginfo_t__bindgen_ty_1__bindgen_ty_1 { + pub si_pid: __pid_t, + pub si_uid: __uid_t, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo_t__bindgen_ty_1__bindgen_ty_2 { + pub si_tid: ::std::os::raw::c_int, + pub si_overrun: ::std::os::raw::c_int, + pub si_sigval: __sigval_t, +} +impl Default for siginfo_t__bindgen_ty_1__bindgen_ty_2 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo_t__bindgen_ty_1__bindgen_ty_3 { + pub si_pid: __pid_t, + pub si_uid: __uid_t, + pub si_sigval: __sigval_t, +} +impl Default for siginfo_t__bindgen_ty_1__bindgen_ty_3 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct siginfo_t__bindgen_ty_1__bindgen_ty_4 { + pub si_pid: __pid_t, + pub si_uid: __uid_t, + pub si_status: ::std::os::raw::c_int, + pub si_utime: __clock_t, + pub si_stime: __clock_t, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct siginfo_t__bindgen_ty_1__bindgen_ty_5 { + pub si_addr: *mut ::std::os::raw::c_void, + pub si_addr_lsb: ::std::os::raw::c_short, + pub _bounds: siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1 { + pub _addr_bnd: siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, + pub _pkey: __uint32_t, + _bindgen_union_align: [u64; 2usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { + pub _lower: *mut ::std::os::raw::c_void, + pub _upper: *mut ::std::os::raw::c_void, +} +impl Default for siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for siginfo_t__bindgen_ty_1__bindgen_ty_5 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct siginfo_t__bindgen_ty_1__bindgen_ty_6 { + pub si_band: ::std::os::raw::c_long, + pub si_fd: ::std::os::raw::c_int, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct siginfo_t__bindgen_ty_1__bindgen_ty_7 { + pub _call_addr: *mut ::std::os::raw::c_void, + pub _syscall: ::std::os::raw::c_int, + pub _arch: ::std::os::raw::c_uint, +} +impl Default for siginfo_t__bindgen_ty_1__bindgen_ty_7 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for siginfo_t__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for siginfo_t { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type __sighandler_t = ::std::option::Option; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct sigaction { + pub __sigaction_handler: sigaction__bindgen_ty_1, + pub sa_mask: __sigset_t, + pub sa_flags: ::std::os::raw::c_int, + pub sa_restorer: ::std::option::Option, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union sigaction__bindgen_ty_1 { + pub sa_handler: __sighandler_t, + pub sa_sigaction: ::std::option::Option< + unsafe extern "C" fn( + arg1: ::std::os::raw::c_int, + arg2: *mut siginfo_t, + arg3: *mut ::std::os::raw::c_void, + ), + >, + _bindgen_union_align: u64, +} +impl Default for sigaction__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for sigaction { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct stack_t { + pub ss_sp: *mut ::std::os::raw::c_void, + pub ss_flags: ::std::os::raw::c_int, + pub ss_size: usize, +} +impl Default for stack_t { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type _Py_sighandler_t = sigaction; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct faulthandler_user_signal { + pub enabled: ::std::os::raw::c_int, + pub file: *mut PyObject, + pub fd: ::std::os::raw::c_int, + pub all_threads: ::std::os::raw::c_int, + pub chain: ::std::os::raw::c_int, + pub previous: _Py_sighandler_t, + pub interp: *mut PyInterpreterState, +} +impl Default for faulthandler_user_signal { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _faulthandler_runtime_state { + pub fatal_error: _faulthandler_runtime_state__bindgen_ty_1, + pub thread: _faulthandler_runtime_state__bindgen_ty_2, + pub user_signals: *mut faulthandler_user_signal, + pub stack: stack_t, + pub old_stack: stack_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _faulthandler_runtime_state__bindgen_ty_1 { + pub enabled: ::std::os::raw::c_int, + pub file: *mut PyObject, + pub fd: ::std::os::raw::c_int, + pub all_threads: ::std::os::raw::c_int, + pub interp: *mut PyInterpreterState, +} +impl Default for _faulthandler_runtime_state__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _faulthandler_runtime_state__bindgen_ty_2 { + pub file: *mut PyObject, + pub fd: ::std::os::raw::c_int, + pub timeout_us: ::std::os::raw::c_longlong, + pub repeat: ::std::os::raw::c_int, + pub interp: *mut PyInterpreterState, + pub exit: ::std::os::raw::c_int, + pub header: *mut ::std::os::raw::c_char, + pub header_len: usize, + pub cancel_event: PyThread_type_lock, + pub running: PyThread_type_lock, +} +impl Default for _faulthandler_runtime_state__bindgen_ty_2 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _faulthandler_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type identifier = *mut PyObject; +pub type string = *mut PyObject; +pub type constant = *mut PyObject; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct asdl_int_seq { + pub size: Py_ssize_t, + pub elements: *mut *mut ::std::os::raw::c_void, + pub typed_elements: [::std::os::raw::c_int; 1usize], +} +impl Default for asdl_int_seq { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub type expr_ty = *mut _expr; +pub const _expr_context_Load: _expr_context = 1; +pub const _expr_context_Store: _expr_context = 2; +pub const _expr_context_Del: _expr_context = 3; +pub type _expr_context = u32; +pub use self::_expr_context as expr_context_ty; +pub const _boolop_And: _boolop = 1; +pub const _boolop_Or: _boolop = 2; +pub type _boolop = u32; +pub use self::_boolop as boolop_ty; +pub const _operator_Add: _operator = 1; +pub const _operator_Sub: _operator = 2; +pub const _operator_Mult: _operator = 3; +pub const _operator_MatMult: _operator = 4; +pub const _operator_Div: _operator = 5; +pub const _operator_Mod: _operator = 6; +pub const _operator_Pow: _operator = 7; +pub const _operator_LShift: _operator = 8; +pub const _operator_RShift: _operator = 9; +pub const _operator_BitOr: _operator = 10; +pub const _operator_BitXor: _operator = 11; +pub const _operator_BitAnd: _operator = 12; +pub const _operator_FloorDiv: _operator = 13; +pub type _operator = u32; +pub use self::_operator as operator_ty; +pub const _unaryop_Invert: _unaryop = 1; +pub const _unaryop_Not: _unaryop = 2; +pub const _unaryop_UAdd: _unaryop = 3; +pub const _unaryop_USub: _unaryop = 4; +pub type _unaryop = u32; +pub use self::_unaryop as unaryop_ty; +pub type comprehension_ty = *mut _comprehension; +pub type arguments_ty = *mut _arguments; +pub type arg_ty = *mut _arg; +pub type keyword_ty = *mut _keyword; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct asdl_expr_seq { + pub size: Py_ssize_t, + pub elements: *mut *mut ::std::os::raw::c_void, + pub typed_elements: [expr_ty; 1usize], +} +impl Default for asdl_expr_seq { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct asdl_comprehension_seq { + pub size: Py_ssize_t, + pub elements: *mut *mut ::std::os::raw::c_void, + pub typed_elements: [comprehension_ty; 1usize], +} +impl Default for asdl_comprehension_seq { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct asdl_arg_seq { + pub size: Py_ssize_t, + pub elements: *mut *mut ::std::os::raw::c_void, + pub typed_elements: [arg_ty; 1usize], +} +impl Default for asdl_arg_seq { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct asdl_keyword_seq { + pub size: Py_ssize_t, + pub elements: *mut *mut ::std::os::raw::c_void, + pub typed_elements: [keyword_ty; 1usize], +} +impl Default for asdl_keyword_seq { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub const _expr_kind_BoolOp_kind: _expr_kind = 1; +pub const _expr_kind_NamedExpr_kind: _expr_kind = 2; +pub const _expr_kind_BinOp_kind: _expr_kind = 3; +pub const _expr_kind_UnaryOp_kind: _expr_kind = 4; +pub const _expr_kind_Lambda_kind: _expr_kind = 5; +pub const _expr_kind_IfExp_kind: _expr_kind = 6; +pub const _expr_kind_Dict_kind: _expr_kind = 7; +pub const _expr_kind_Set_kind: _expr_kind = 8; +pub const _expr_kind_ListComp_kind: _expr_kind = 9; +pub const _expr_kind_SetComp_kind: _expr_kind = 10; +pub const _expr_kind_DictComp_kind: _expr_kind = 11; +pub const _expr_kind_GeneratorExp_kind: _expr_kind = 12; +pub const _expr_kind_Await_kind: _expr_kind = 13; +pub const _expr_kind_Yield_kind: _expr_kind = 14; +pub const _expr_kind_YieldFrom_kind: _expr_kind = 15; +pub const _expr_kind_Compare_kind: _expr_kind = 16; +pub const _expr_kind_Call_kind: _expr_kind = 17; +pub const _expr_kind_FormattedValue_kind: _expr_kind = 18; +pub const _expr_kind_JoinedStr_kind: _expr_kind = 19; +pub const _expr_kind_Constant_kind: _expr_kind = 20; +pub const _expr_kind_Attribute_kind: _expr_kind = 21; +pub const _expr_kind_Subscript_kind: _expr_kind = 22; +pub const _expr_kind_Starred_kind: _expr_kind = 23; +pub const _expr_kind_Name_kind: _expr_kind = 24; +pub const _expr_kind_List_kind: _expr_kind = 25; +pub const _expr_kind_Tuple_kind: _expr_kind = 26; +pub const _expr_kind_Slice_kind: _expr_kind = 27; +pub type _expr_kind = u32; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _expr { + pub kind: _expr_kind, + pub v: _expr__bindgen_ty_1, + pub lineno: ::std::os::raw::c_int, + pub col_offset: ::std::os::raw::c_int, + pub end_lineno: ::std::os::raw::c_int, + pub end_col_offset: ::std::os::raw::c_int, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union _expr__bindgen_ty_1 { + pub BoolOp: _expr__bindgen_ty_1__bindgen_ty_1, + pub NamedExpr: _expr__bindgen_ty_1__bindgen_ty_2, + pub BinOp: _expr__bindgen_ty_1__bindgen_ty_3, + pub UnaryOp: _expr__bindgen_ty_1__bindgen_ty_4, + pub Lambda: _expr__bindgen_ty_1__bindgen_ty_5, + pub IfExp: _expr__bindgen_ty_1__bindgen_ty_6, + pub Dict: _expr__bindgen_ty_1__bindgen_ty_7, + pub Set: _expr__bindgen_ty_1__bindgen_ty_8, + pub ListComp: _expr__bindgen_ty_1__bindgen_ty_9, + pub SetComp: _expr__bindgen_ty_1__bindgen_ty_10, + pub DictComp: _expr__bindgen_ty_1__bindgen_ty_11, + pub GeneratorExp: _expr__bindgen_ty_1__bindgen_ty_12, + pub Await: _expr__bindgen_ty_1__bindgen_ty_13, + pub Yield: _expr__bindgen_ty_1__bindgen_ty_14, + pub YieldFrom: _expr__bindgen_ty_1__bindgen_ty_15, + pub Compare: _expr__bindgen_ty_1__bindgen_ty_16, + pub Call: _expr__bindgen_ty_1__bindgen_ty_17, + pub FormattedValue: _expr__bindgen_ty_1__bindgen_ty_18, + pub JoinedStr: _expr__bindgen_ty_1__bindgen_ty_19, + pub Constant: _expr__bindgen_ty_1__bindgen_ty_20, + pub Attribute: _expr__bindgen_ty_1__bindgen_ty_21, + pub Subscript: _expr__bindgen_ty_1__bindgen_ty_22, + pub Starred: _expr__bindgen_ty_1__bindgen_ty_23, + pub Name: _expr__bindgen_ty_1__bindgen_ty_24, + pub List: _expr__bindgen_ty_1__bindgen_ty_25, + pub Tuple: _expr__bindgen_ty_1__bindgen_ty_26, + pub Slice: _expr__bindgen_ty_1__bindgen_ty_27, + _bindgen_union_align: [u64; 3usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_1 { + pub op: boolop_ty, + pub values: *mut asdl_expr_seq, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_2 { + pub target: expr_ty, + pub value: expr_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_2 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_3 { + pub left: expr_ty, + pub op: operator_ty, + pub right: expr_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_3 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_4 { + pub op: unaryop_ty, + pub operand: expr_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_4 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_5 { + pub args: arguments_ty, + pub body: expr_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_5 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_6 { + pub test: expr_ty, + pub body: expr_ty, + pub orelse: expr_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_6 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_7 { + pub keys: *mut asdl_expr_seq, + pub values: *mut asdl_expr_seq, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_7 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_8 { + pub elts: *mut asdl_expr_seq, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_8 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_9 { + pub elt: expr_ty, + pub generators: *mut asdl_comprehension_seq, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_9 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_10 { + pub elt: expr_ty, + pub generators: *mut asdl_comprehension_seq, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_10 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_11 { + pub key: expr_ty, + pub value: expr_ty, + pub generators: *mut asdl_comprehension_seq, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_11 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_12 { + pub elt: expr_ty, + pub generators: *mut asdl_comprehension_seq, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_12 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_13 { + pub value: expr_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_13 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_14 { + pub value: expr_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_14 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_15 { + pub value: expr_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_15 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_16 { + pub left: expr_ty, + pub ops: *mut asdl_int_seq, + pub comparators: *mut asdl_expr_seq, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_16 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_17 { + pub func: expr_ty, + pub args: *mut asdl_expr_seq, + pub keywords: *mut asdl_keyword_seq, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_17 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_18 { + pub value: expr_ty, + pub conversion: ::std::os::raw::c_int, + pub format_spec: expr_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_18 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_19 { + pub values: *mut asdl_expr_seq, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_19 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_20 { + pub value: constant, + pub kind: string, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_20 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_21 { + pub value: expr_ty, + pub attr: identifier, + pub ctx: expr_context_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_21 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_22 { + pub value: expr_ty, + pub slice: expr_ty, + pub ctx: expr_context_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_22 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_23 { + pub value: expr_ty, + pub ctx: expr_context_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_23 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_24 { + pub id: identifier, + pub ctx: expr_context_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_24 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_25 { + pub elts: *mut asdl_expr_seq, + pub ctx: expr_context_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_25 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_26 { + pub elts: *mut asdl_expr_seq, + pub ctx: expr_context_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_26 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _expr__bindgen_ty_1__bindgen_ty_27 { + pub lower: expr_ty, + pub upper: expr_ty, + pub step: expr_ty, +} +impl Default for _expr__bindgen_ty_1__bindgen_ty_27 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _expr__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _expr { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _comprehension { + pub target: expr_ty, + pub iter: expr_ty, + pub ifs: *mut asdl_expr_seq, + pub is_async: ::std::os::raw::c_int, +} +impl Default for _comprehension { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _arguments { + pub posonlyargs: *mut asdl_arg_seq, + pub args: *mut asdl_arg_seq, + pub vararg: arg_ty, + pub kwonlyargs: *mut asdl_arg_seq, + pub kw_defaults: *mut asdl_expr_seq, + pub kwarg: arg_ty, + pub defaults: *mut asdl_expr_seq, +} +impl Default for _arguments { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _arg { + pub arg: identifier, + pub annotation: expr_ty, + pub type_comment: string, + pub lineno: ::std::os::raw::c_int, + pub col_offset: ::std::os::raw::c_int, + pub end_lineno: ::std::os::raw::c_int, + pub end_col_offset: ::std::os::raw::c_int, +} +impl Default for _arg { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _keyword { + pub arg: identifier, + pub value: expr_ty, + pub lineno: ::std::os::raw::c_int, + pub col_offset: ::std::os::raw::c_int, + pub end_lineno: ::std::os::raw::c_int, + pub end_col_offset: ::std::os::raw::c_int, +} +impl Default for _keyword { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _parser_runtime_state { + pub _not_used: ::std::os::raw::c_int, + pub dummy_name: _expr, +} +impl Default for _parser_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct debug_alloc_api_t { + pub api_id: ::std::os::raw::c_char, + pub alloc: PyMemAllocatorEx, +} +impl Default for debug_alloc_api_t { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _pymem_allocators { + pub mutex: PyThread_type_lock, + pub standard: _pymem_allocators__bindgen_ty_1, + pub debug: _pymem_allocators__bindgen_ty_2, + pub obj_arena: PyObjectArenaAllocator, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _pymem_allocators__bindgen_ty_1 { + pub raw: PyMemAllocatorEx, + pub mem: PyMemAllocatorEx, + pub obj: PyMemAllocatorEx, +} +impl Default for _pymem_allocators__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _pymem_allocators__bindgen_ty_2 { + pub raw: debug_alloc_api_t, + pub mem: debug_alloc_api_t, + pub obj: debug_alloc_api_t, +} +impl Default for _pymem_allocators__bindgen_ty_2 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _pymem_allocators { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct pyhash_runtime_state { + pub urandom_cache: pyhash_runtime_state__bindgen_ty_1, +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct pyhash_runtime_state__bindgen_ty_1 { + pub fd: ::std::os::raw::c_int, + pub st_dev: dev_t, + pub st_ino: ino_t, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _pythread_runtime_state { + pub initialized: ::std::os::raw::c_int, + pub _condattr_monotonic: _pythread_runtime_state__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _pythread_runtime_state__bindgen_ty_1 { + pub ptr: *mut pthread_condattr_t, + pub val: pthread_condattr_t, +} +impl Default for _pythread_runtime_state__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _pythread_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _signals_runtime_state { + pub handlers: [_signals_runtime_state__bindgen_ty_1; 65usize], + pub wakeup: _signals_runtime_state__bindgen_ty_2, + pub is_tripped: _Py_atomic_int, + pub default_handler: *mut PyObject, + pub ignore_handler: *mut PyObject, + pub unhandled_keyboard_interrupt: ::std::os::raw::c_int, +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _signals_runtime_state__bindgen_ty_1 { + pub tripped: _Py_atomic_int, + pub func: _Py_atomic_address, +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _signals_runtime_state__bindgen_ty_2 { + pub fd: sig_atomic_t, + pub warn_on_full_buffer: ::std::os::raw::c_int, +} +impl Default for _signals_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _PyTraceMalloc_Config { + pub initialized: _PyTraceMalloc_Config__bindgen_ty_1, + pub tracing: ::std::os::raw::c_int, + pub max_nframe: ::std::os::raw::c_int, +} +pub const _PyTraceMalloc_Config_TRACEMALLOC_NOT_INITIALIZED: _PyTraceMalloc_Config__bindgen_ty_1 = + 0; +pub const _PyTraceMalloc_Config_TRACEMALLOC_INITIALIZED: _PyTraceMalloc_Config__bindgen_ty_1 = 1; +pub const _PyTraceMalloc_Config_TRACEMALLOC_FINALIZED: _PyTraceMalloc_Config__bindgen_ty_1 = 2; +pub type _PyTraceMalloc_Config__bindgen_ty_1 = u32; +impl Default for _PyTraceMalloc_Config { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C, packed)] +#[derive(Debug, Copy, Clone)] +pub struct tracemalloc_frame { + pub filename: *mut PyObject, + pub lineno: ::std::os::raw::c_uint, +} +impl Default for tracemalloc_frame { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct tracemalloc_traceback { + pub hash: Py_uhash_t, + pub nframe: u16, + pub total_nframe: u16, + pub frames: [tracemalloc_frame; 1usize], +} +impl Default for tracemalloc_traceback { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _tracemalloc_runtime_state { + pub config: _PyTraceMalloc_Config, + pub allocators: _tracemalloc_runtime_state__bindgen_ty_1, + pub tables_lock: PyThread_type_lock, + pub traced_memory: usize, + pub peak_traced_memory: usize, + pub filenames: *mut _Py_hashtable_t, + pub traceback: *mut tracemalloc_traceback, + pub tracebacks: *mut _Py_hashtable_t, + pub traces: *mut _Py_hashtable_t, + pub domains: *mut _Py_hashtable_t, + pub empty_traceback: tracemalloc_traceback, + pub reentrant_key: Py_tss_t, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _tracemalloc_runtime_state__bindgen_ty_1 { + pub mem: PyMemAllocatorEx, + pub raw: PyMemAllocatorEx, + pub obj: PyMemAllocatorEx, +} +impl Default for _tracemalloc_runtime_state__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for _tracemalloc_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _getargs_runtime_state { + pub mutex: PyThread_type_lock, + pub static_parsers: *mut _PyArg_Parser, +} +impl Default for _getargs_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _gilstate_runtime_state { + pub check_enabled: ::std::os::raw::c_int, + pub autoInterpreterState: *mut PyInterpreterState, +} +impl Default for _gilstate_runtime_state { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Py_AuditHookEntry { + pub next: *mut _Py_AuditHookEntry, + pub hookCFunction: Py_AuditHookFunction, + pub userData: *mut ::std::os::raw::c_void, +} +impl Default for _Py_AuditHookEntry { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct pyruntimestate { + pub _initialized: ::std::os::raw::c_int, + pub preinitializing: ::std::os::raw::c_int, + pub preinitialized: ::std::os::raw::c_int, + pub core_initialized: ::std::os::raw::c_int, + pub initialized: ::std::os::raw::c_int, + pub _finalizing: _Py_atomic_address, + pub interpreters: pyruntimestate_pyinterpreters, + pub main_thread: ::std::os::raw::c_ulong, + pub xidregistry: pyruntimestate__xidregistry, + pub allocators: _pymem_allocators, + pub obmalloc: _obmalloc_global_state, + pub pyhash_state: pyhash_runtime_state, + pub time: _time_runtime_state, + pub threads: _pythread_runtime_state, + pub signals: _signals_runtime_state, + pub autoTSSkey: Py_tss_t, + pub trashTSSkey: Py_tss_t, + pub orig_argv: PyWideStringList, + pub parser: _parser_runtime_state, + pub atexit: _atexit_runtime_state, + pub imports: _import_runtime_state, + pub ceval: _ceval_runtime_state, + pub gilstate: _gilstate_runtime_state, + pub getargs: _getargs_runtime_state, + pub fileutils: _fileutils_state, + pub faulthandler: _faulthandler_runtime_state, + pub tracemalloc: _tracemalloc_runtime_state, + pub preconfig: PyPreConfig, + pub open_code_hook: Py_OpenCodeHookFunction, + pub open_code_userdata: *mut ::std::os::raw::c_void, + pub audit_hooks: pyruntimestate__bindgen_ty_1, + pub object_state: _py_object_runtime_state, + pub float_state: _Py_float_runtime_state, + pub unicode_state: _Py_unicode_runtime_state, + pub types: _types_runtime_state, + pub static_objects: _Py_static_objects, + pub _main_interpreter: PyInterpreterState, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct pyruntimestate_pyinterpreters { + pub mutex: PyThread_type_lock, + pub head: *mut PyInterpreterState, + pub main: *mut PyInterpreterState, + pub next_id: i64, +} +impl Default for pyruntimestate_pyinterpreters { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct pyruntimestate__xidregistry { + pub mutex: PyThread_type_lock, + pub head: *mut _xidregitem, +} +impl Default for pyruntimestate__xidregistry { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct pyruntimestate__bindgen_ty_1 { + pub mutex: PyThread_type_lock, + pub head: *mut _Py_AuditHookEntry, +} +impl Default for pyruntimestate__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for pyruntimestate { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default)] +pub struct _dictkeysobject { + pub dk_refcnt: Py_ssize_t, + pub dk_log2_size: u8, + pub dk_log2_index_bytes: u8, + pub dk_kind: u8, + pub dk_version: u32, + pub dk_usable: Py_ssize_t, + pub dk_nentries: Py_ssize_t, + pub dk_indices: __IncompleteArrayField<::std::os::raw::c_char>, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _dictvalues { + pub values: [*mut PyObject; 1usize], +} +impl Default for _dictvalues { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct _PyAsyncGenWrappedValue { + pub _address: u8, +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct PyAsyncGenASend { + pub _address: u8, +} diff --git a/src/python_data_access.rs b/src/python_data_access.rs index 2ffd66dc..ace11181 100644 --- a/src/python_data_access.rs +++ b/src/python_data_access.rs @@ -59,20 +59,56 @@ pub fn copy_bytes( } /// Copies a i64 from a PyLongObject. Returns the value + if it overflowed -pub fn copy_long(process: &P, addr: usize) -> Result<(i64, bool), Error> { - // this is PyLongObject for a specific version of python, but this works since it's binary compatible - // layout across versions we're targeting - let value = - process.copy_pointer(addr as *const crate::python_bindings::v3_7_0::PyLongObject)?; - let negative: i64 = if value.ob_base.ob_size < 0 { -1 } else { 1 }; - let size = value.ob_base.ob_size * (negative as isize); +pub fn copy_long( + process: &P, + version: &Version, + addr: usize, +) -> Result<(i64, bool), Error> { + let (size, negative, digit, value_size) = match version { + Version { + major: 3, + minor: 12, + .. + } => { + // PyLongObject format changed in python 3.12 + let value = process + .copy_pointer(addr as *const crate::python_bindings::v3_12_0::PyLongObject)?; + let size = value.long_value.lv_tag >> 3; + let negative: i64 = if (value.long_value.lv_tag & 3) == 2 { + -1 + } else { + 1 + }; + ( + size, + negative, + value.long_value.ob_digit[0] as u32, + std::mem::size_of_val(&value), + ) + } + _ => { + // this is PyLongObject for a specific version of python, but this works since it's binary compatible + // layout across versions we're targeting + let value = process + .copy_pointer(addr as *const crate::python_bindings::v3_7_0::PyLongObject)?; + let negative: i64 = if value.ob_base.ob_size < 0 { -1 } else { 1 }; + let size = (value.ob_base.ob_size * (negative as isize)) as usize; + ( + size, + negative, + value.ob_digit[0] as u32, + std::mem::size_of_val(&value), + ) + } + }; + match size { 0 => Ok((0, false)), - 1 => Ok((negative * (value.ob_digit[0] as i64), false)), + 1 => Ok((negative * (digit as i64), false)), #[cfg(target_pointer_width = "64")] 2 => { - let digits: [u32; 2] = process.copy_struct(addr + std::mem::size_of_val(&value) - 8)?; + let digits: [u32; 2] = process.copy_struct(addr + value_size - 8)?; let mut ret: i64 = 0; for i in 0..size { ret += (digits[i as usize] as i64) << (30 * i); @@ -81,7 +117,7 @@ pub fn copy_long(process: &P, addr: usize) -> Result<(i64, boo } #[cfg(target_pointer_width = "32")] 2..=4 => { - let digits: [u16; 4] = process.copy_struct(addr + std::mem::size_of_val(&value) - 4)?; + let digits: [u16; 4] = process.copy_struct(addr + value_size - 4)?; let mut ret: i64 = 0; for i in 0..size { ret += (digits[i as usize] as i64) << (15 * i); @@ -89,7 +125,7 @@ pub fn copy_long(process: &P, addr: usize) -> Result<(i64, boo Ok((negative * ret, false)) } // we don't support arbitrary sized integers yet, signal this by returning that we've overflowed - _ => Ok((value.ob_base.ob_size as i64, true)), + _ => Ok((size as i64, true)), } } @@ -119,15 +155,34 @@ impl<'a, P: ProcessMemory> DictIterator<'a, P> { tp_addr: usize, ) -> Result, Error> { // Handles logic of _PyObject_ManagedDictPointer in python 3.11 - let values_addr: usize = process.copy_struct(addr - 4 * std::mem::size_of::())?; - let dict_addr: usize = process.copy_struct(addr - 3 * std::mem::size_of::())?; + let mut values_addr: usize = + process.copy_struct(addr - 4 * std::mem::size_of::())?; + let mut dict_addr: usize = process.copy_struct(addr - 3 * std::mem::size_of::())?; + + // for python 3.12, the values/dict are combined into a single tagged pointer + if version.major == 3 && version.minor == 12 { + if dict_addr & 1 == 0 { + values_addr = 0; + } else { + values_addr = dict_addr + 1; + dict_addr = 0; + } + } if values_addr != 0 { - let ht: crate::python_bindings::v3_11_0::PyHeapTypeObject = - process.copy_struct(tp_addr)?; - let keys: crate::python_bindings::v3_11_0::PyDictKeysObject = - process.copy_struct(ht.ht_cached_keys as usize)?; - let entries_addr = ht.ht_cached_keys as usize + let ht_cached_keys = if version.major == 3 && version.minor == 12 { + let ht: crate::python_bindings::v3_12_0::PyHeapTypeObject = + process.copy_struct(tp_addr)?; + ht.ht_cached_keys as usize + } else { + let ht: crate::python_bindings::v3_11_0::PyHeapTypeObject = + process.copy_struct(tp_addr)?; + ht.ht_cached_keys as usize + }; + + let keys: crate::python_bindings::v3_12_0::PyDictKeysObject = + process.copy_struct(ht_cached_keys as usize)?; + let entries_addr = ht_cached_keys as usize + (1 << keys.dk_log2_index_bytes) + std::mem::size_of_val(&keys); Ok(DictIterator { @@ -153,7 +208,7 @@ impl<'a, P: ProcessMemory> DictIterator<'a, P> { match version { Version { major: 3, - minor: 11, + minor: 11..=12, .. } => { let dict: crate::python_bindings::v3_11_0::PyDictObject = @@ -319,7 +374,7 @@ where format_int(copy_int(process, addr)?) } else if flags & PY_TPFLAGS_LONG_SUBCLASS != 0 { // we don't handle arbitrary sized integer values (max is 2**60) - let (value, overflowed) = copy_long(process, addr)?; + let (value, overflowed) = copy_long(process, version, addr)?; if overflowed { if value > 0 { "+bigint".to_owned() diff --git a/src/python_interpreters.rs b/src/python_interpreters.rs index cae9e85d..609ca7ba 100644 --- a/src/python_interpreters.rs +++ b/src/python_interpreters.rs @@ -12,7 +12,7 @@ This means we can't dereference them directly. // these bindings are automatically generated by rust bindgen // using the generate_bindings.py script use crate::python_bindings::{ - v2_7_15, v3_10_0, v3_11_0, v3_3_7, v3_5_5, v3_6_6, v3_7_0, v3_8_0, v3_9_5, + v2_7_15, v3_10_0, v3_11_0, v3_12_0, v3_3_7, v3_5_5, v3_6_6, v3_7_0, v3_8_0, v3_9_5, }; pub trait InterpreterState { @@ -244,6 +244,109 @@ macro_rules! PythonCodeObjectImpl { }; } +fn read_varint(index: &mut usize, table: &[u8]) -> usize { + let mut ret: usize; + let mut byte = table[*index]; + let mut shift = 0; + *index += 1; + ret = (byte & 63) as usize; + + while byte & 64 != 0 { + byte = table[*index]; + *index += 1; + shift += 6; + ret += ((byte & 63) as usize) << shift; + } + ret +} + +fn read_signed_varint(index: &mut usize, table: &[u8]) -> isize { + let unsigned_val = read_varint(index, table); + if unsigned_val & 1 != 0 { + -((unsigned_val >> 1) as isize) + } else { + (unsigned_val >> 1) as isize + } +} + +// Use for 3.11 and 3.12 +macro_rules! CompactCodeObjectImpl { + ($py: ident, $bytesobject: ident, $stringobject: ident) => { + impl CodeObject for $py::PyCodeObject { + type BytesObject = $py::$bytesobject; + type StringObject = $py::$stringobject; + type TupleObject = $py::PyTupleObject; + + fn name(&self) -> *mut Self::StringObject { + self.co_name as *mut Self::StringObject + } + fn filename(&self) -> *mut Self::StringObject { + self.co_filename as *mut Self::StringObject + } + fn line_table(&self) -> *mut Self::BytesObject { + self.co_linetable as *mut Self::BytesObject + } + fn first_lineno(&self) -> i32 { + self.co_firstlineno + } + fn nlocals(&self) -> i32 { + self.co_nlocals + } + fn argcount(&self) -> i32 { + self.co_argcount + } + fn varnames(&self) -> *mut Self::TupleObject { + self.co_localsplusnames as *mut Self::TupleObject + } + + fn get_line_number(&self, lasti: i32, table: &[u8]) -> i32 { + // unpack compressed table format from python 3.11 + // https://github.com/python/cpython/pull/91666/files + let lasti = lasti - offset_of(self, &self.co_code_adaptive) as i32; + let mut line_number: i32 = self.first_lineno(); + let mut bytecode_address: i32 = 0; + + let mut index: usize = 0; + loop { + if index >= table.len() { + break; + } + let byte = table[index]; + index += 1; + + let delta = ((byte & 7) as i32) + 1; + bytecode_address += delta * 2; + let code = (byte >> 3) & 15; + let line_delta = match code { + 15 => 0, + 14 => { + let delta = read_signed_varint(&mut index, table); + read_varint(&mut index, table); // end line + read_varint(&mut index, table); // start column + read_varint(&mut index, table); // end column + delta + } + 13 => read_signed_varint(&mut index, table), + 10..=12 => { + index += 2; // start column / end column + (code - 10).into() + } + _ => { + index += 1; // column + 0 + } + }; + line_number += line_delta as i32; + if bytecode_address >= lasti { + break; + } + } + line_number + } + } + }; +} + // String/Byte/List/Tuple handling for Python 3.3+ macro_rules! Python3Impl { ($py: ident) => { @@ -301,6 +404,94 @@ macro_rules! Python3Impl { } }; } + +// Python 3.12 +// TODO: this shares some similarities with python 3.11, we should refactor to a common macro +Python3Impl!(v3_12_0); + +impl InterpreterState for v3_12_0::PyInterpreterState { + type ThreadState = v3_12_0::PyThreadState; + type Object = v3_12_0::PyObject; + type StringObject = v3_12_0::PyUnicodeObject; + type ListObject = v3_12_0::PyListObject; + type TupleObject = v3_12_0::PyTupleObject; + fn head(&self) -> *mut Self::ThreadState { + self.threads.head + } + fn modules(&self) -> *mut Self::Object { + self.imports.modules + } +} + +impl ThreadState for v3_12_0::PyThreadState { + type FrameObject = v3_12_0::_PyInterpreterFrame; + type InterpreterState = v3_12_0::PyInterpreterState; + fn frame_address(&self) -> Option { + // There must be a way to get the offset here without actually creating the object + let cframe: v3_12_0::_PyCFrame = Default::default(); + let current_frame_offset = offset_of(&cframe, &cframe.current_frame); + Some(self.cframe as usize + current_frame_offset) + } + fn frame(&self, addr: Option) -> *mut Self::FrameObject { + addr.unwrap() as *mut Self::FrameObject + } + fn thread_id(&self) -> u64 { + self.thread_id as u64 + } + fn native_thread_id(&self) -> Option { + Some(self.native_thread_id as u64) + } + fn next(&self) -> *mut Self { + self.next + } + fn interp(&self) -> *mut Self::InterpreterState { + self.interp + } +} + +impl FrameObject for v3_12_0::_PyInterpreterFrame { + type CodeObject = v3_12_0::PyCodeObject; + fn code(&self) -> *mut Self::CodeObject { + self.f_code + } + fn lasti(&self) -> i32 { + // this returns the delta from the co_code, but we need to adjust for the + // offset from co_code.co_code_adaptive. This is slightly easier to do in the + // get_line_number code, so will adjust there + let co_code = self.f_code as *const _ as *const u8; + unsafe { (self.prev_instr as *const u8).offset_from(co_code) as i32 } + } + fn back(&self) -> *mut Self { + self.previous + } + fn is_entry(&self) -> bool { + // https://github.com/python/cpython/pull/108036#issuecomment-1684458828 + const FRAME_OWNED_BY_CSTACK: ::std::os::raw::c_char = 3; + self.owner == FRAME_OWNED_BY_CSTACK + } +} + +impl Object for v3_12_0::PyObject { + type TypeObject = v3_12_0::PyTypeObject; + fn ob_type(&self) -> *mut Self::TypeObject { + self.ob_type as *mut Self::TypeObject + } +} + +impl TypeObject for v3_12_0::PyTypeObject { + fn name(&self) -> *const ::std::os::raw::c_char { + self.tp_name + } + fn dictoffset(&self) -> isize { + self.tp_dictoffset + } + fn flags(&self) -> usize { + self.tp_flags as usize + } +} + +CompactCodeObjectImpl!(v3_12_0, PyBytesObject, PyUnicodeObject); + // Python 3.11 // Python3.11 is sufficiently different from previous versions that we can't use the macros above // to generate implementations of these traits. @@ -385,103 +576,7 @@ impl TypeObject for v3_11_0::PyTypeObject { } } -fn read_varint(index: &mut usize, table: &[u8]) -> usize { - let mut ret: usize; - let mut byte = table[*index]; - let mut shift = 0; - *index += 1; - ret = (byte & 63) as usize; - - while byte & 64 != 0 { - byte = table[*index]; - *index += 1; - shift += 6; - ret += ((byte & 63) as usize) << shift; - } - ret -} - -fn read_signed_varint(index: &mut usize, table: &[u8]) -> isize { - let unsigned_val = read_varint(index, table); - if unsigned_val & 1 != 0 { - -((unsigned_val >> 1) as isize) - } else { - (unsigned_val >> 1) as isize - } -} - -impl CodeObject for v3_11_0::PyCodeObject { - type BytesObject = v3_11_0::PyBytesObject; - type StringObject = v3_11_0::PyUnicodeObject; - type TupleObject = v3_11_0::PyTupleObject; - - fn name(&self) -> *mut Self::StringObject { - self.co_name as *mut Self::StringObject - } - fn filename(&self) -> *mut Self::StringObject { - self.co_filename as *mut Self::StringObject - } - fn line_table(&self) -> *mut Self::BytesObject { - self.co_linetable as *mut Self::BytesObject - } - fn first_lineno(&self) -> i32 { - self.co_firstlineno - } - fn nlocals(&self) -> i32 { - self.co_nlocals - } - fn argcount(&self) -> i32 { - self.co_argcount - } - fn varnames(&self) -> *mut Self::TupleObject { - self.co_localsplusnames as *mut Self::TupleObject - } - - fn get_line_number(&self, lasti: i32, table: &[u8]) -> i32 { - // unpack compressed table format from python 3.11 - // https://github.com/python/cpython/pull/91666/files - let lasti = lasti - offset_of(self, &self.co_code_adaptive) as i32; - let mut line_number: i32 = self.first_lineno(); - let mut bytecode_address: i32 = 0; - - let mut index: usize = 0; - loop { - if index >= table.len() { - break; - } - let byte = table[index]; - index += 1; - - let delta = ((byte & 7) as i32) + 1; - bytecode_address += delta * 2; - let code = (byte >> 3) & 15; - let line_delta = match code { - 15 => 0, - 14 => { - let delta = read_signed_varint(&mut index, table); - read_varint(&mut index, table); // end line - read_varint(&mut index, table); // start column - read_varint(&mut index, table); // end column - delta - } - 13 => read_signed_varint(&mut index, table), - 10..=12 => { - index += 2; // start column / end column - (code - 10).into() - } - _ => { - index += 1; // column - 0 - } - }; - line_number += line_delta as i32; - if bytecode_address >= lasti { - break; - } - } - line_number - } -} +CompactCodeObjectImpl!(v3_11_0, PyBytesObject, PyUnicodeObject); // Python 3.10 Python3Impl!(v3_10_0); diff --git a/src/python_process_info.rs b/src/python_process_info.rs index 74b482e7..2270556c 100644 --- a/src/python_process_info.rs +++ b/src/python_process_info.rs @@ -17,7 +17,7 @@ use remoteprocess::ProcessMemory; use crate::binary_parser::{parse_binary, BinaryInfo}; use crate::config::Config; use crate::python_bindings::{ - pyruntime, v2_7_15, v3_10_0, v3_11_0, v3_3_7, v3_5_5, v3_6_6, v3_7_0, v3_8_0, v3_9_5, + pyruntime, v2_7_15, v3_10_0, v3_11_0, v3_12_0, v3_3_7, v3_5_5, v3_6_6, v3_7_0, v3_8_0, v3_9_5, }; use crate::python_interpreters::{InterpreterState, ThreadState}; use crate::stack_trace::get_stack_traces; @@ -345,7 +345,7 @@ where match version { Version { major: 3, - minor: 7..=11, + minor: 7..=12, .. } => { if let Some(&addr) = python_info.get_symbol("_PyRuntime") { @@ -519,6 +519,11 @@ where minor: 11, .. } => check::(addrs, maps, process), + Version { + major: 3, + minor: 12, + .. + } => check::(addrs, maps, process), _ => Err(format_err!("Unsupported version of Python: {}", version)), } } @@ -531,7 +536,7 @@ pub fn get_threadstate_address( let threadstate_address = match version { Version { major: 3, - minor: 7..=11, + minor: 7..=12, .. } => match python_info.get_symbol("_PyRuntime") { Some(&addr) => { diff --git a/src/python_spy.rs b/src/python_spy.rs index 2b2a6fec..531616ab 100644 --- a/src/python_spy.rs +++ b/src/python_spy.rs @@ -12,7 +12,7 @@ use crate::config::{Config, LockingStrategy}; #[cfg(feature = "unwind")] use crate::native_stack_trace::NativeStack; use crate::python_bindings::{ - v2_7_15, v3_10_0, v3_11_0, v3_3_7, v3_5_5, v3_6_6, v3_7_0, v3_8_0, v3_9_5, + v2_7_15, v3_10_0, v3_11_0, v3_12_0, v3_3_7, v3_5_5, v3_6_6, v3_7_0, v3_8_0, v3_9_5, }; use crate::python_data_access::format_variable; use crate::python_interpreters::{InterpreterState, ThreadState}; @@ -170,6 +170,11 @@ impl PythonSpy { minor: 11, .. } => self._get_stack_traces::(), + Version { + major: 3, + minor: 12, + .. + } => self._get_stack_traces::(), _ => Err(format_err!( "Unsupported version of Python: {}", self.version diff --git a/src/python_threading.rs b/src/python_threading.rs index d60acd6d..5959e343 100644 --- a/src/python_threading.rs +++ b/src/python_threading.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use anyhow::Error; -use crate::python_bindings::{v3_10_0, v3_11_0, v3_6_6, v3_7_0, v3_8_0, v3_9_5}; +use crate::python_bindings::{v3_10_0, v3_11_0, v3_12_0, v3_6_6, v3_7_0, v3_8_0, v3_9_5}; use crate::python_data_access::{copy_long, copy_string, DictIterator, PY_TPFLAGS_MANAGED_DICT}; use crate::python_interpreters::{InterpreterState, Object, TypeObject}; use crate::python_spy::PythonSpy; @@ -33,7 +33,7 @@ pub fn thread_names_from_interpreter( if name == "_active" { for i in DictIterator::from(process, version, value)? { let (key, value) = i?; - let (threadid, _) = copy_long(process, key)?; + let (threadid, _) = copy_long(process, version, key)?; let thread: I::Object = process.copy_struct(value)?; let thread_type = process.copy_pointer(thread.ob_type())?; @@ -109,6 +109,11 @@ pub fn thread_name_lookup(process: &PythonSpy) -> Option> { minor: 11, .. } => _thread_name_lookup::(process), + Version { + major: 3, + minor: 12, + .. + } => _thread_name_lookup::(process), _ => return None, }; err.ok() diff --git a/src/stack_trace.rs b/src/stack_trace.rs index a0d45632..dce648e9 100644 --- a/src/stack_trace.rs +++ b/src/stack_trace.rs @@ -133,6 +133,13 @@ where .context("Failed to copy PyCodeObject")?; let filename = copy_string(code.filename(), process).context("Failed to copy filename")?; + + // skip entries in python 3.12+ + if filename == "" { + frame_ptr = frame.back(); + continue; + } + let name = copy_string(code.name(), process).context("Failed to copy function name")?; let line = match lineno { diff --git a/src/version.rs b/src/version.rs index 946febc7..71528a2a 100644 --- a/src/version.rs +++ b/src/version.rs @@ -16,7 +16,7 @@ impl Version { pub fn scan_bytes(data: &[u8]) -> Result { lazy_static! { static ref RE: Regex = Regex::new( - r"((2|3)\.(3|4|5|6|7|8|9|10|11)\.(\d{1,2}))((a|b|c|rc)\d{1,2})?(\+(?:[0-9a-z-]+(?:[.][0-9a-z-]+)*)?)? (.{1,64})" + r"((2|3)\.(3|4|5|6|7|8|9|10|11|12)\.(\d{1,2}))((a|b|c|rc)\d{1,2})?(\+(?:[0-9a-z-]+(?:[.][0-9a-z-]+)*)?)? (.{1,64})" ) .unwrap(); } diff --git a/tests/integration_test.py b/tests/integration_test.py index e8f1dcb9..19dd5172 100644 --- a/tests/integration_test.py +++ b/tests/integration_test.py @@ -8,14 +8,20 @@ import tempfile import unittest from collections import defaultdict, namedtuple -from distutils.spawn import find_executable +from shutil import which Frame = namedtuple("Frame", ["file", "name", "line", "col"]) # disable gil checks on windows - just rely on active # (doesn't seem to be working quite right - TODO: investigate) GIL = ["--gil"] if not sys.platform.startswith("win") else [] -PYSPY = find_executable("py-spy") + +# also disable GIL checks on python 3.12+ for now +if sys.version_info.major == 3 or sys.version_info.minor >= 12: + GIL = [] + + +PYSPY = which("py-spy") class TestPyspy(unittest.TestCase): @@ -63,7 +69,8 @@ def _sample_process(self, script_name, options=None, include_profile_name=False) def test_longsleep(self): # running with the gil flag should have ~ no samples returned profile = self._sample_process(_get_script("longsleep.py"), GIL) - assert sum(profile.values()) <= 5 + print(profile) + assert sum(profile.values()) <= 10 # running with the idle flag should have > 95% of samples in the sleep call profile = self._sample_process(_get_script("longsleep.py"), ["--idle"]) From e9e456443ce332b1e3db34129c47be3b91bc83d2 Mon Sep 17 00:00:00 2001 From: Jiang Liu Date: Sun, 13 Oct 2024 02:36:55 +0800 Subject: [PATCH 13/27] Remove duplicated strings in ignore_frame()::ignorable[] (#694) Remove duplicated strings in ignore_frame()::ignorable[]. Signed-off-by: Jiang Liu --- src/cython.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/cython.rs b/src/cython.rs index 3497f614..e45082bb 100644 --- a/src/cython.rs +++ b/src/cython.rs @@ -127,7 +127,6 @@ pub fn ignore_frame(name: &str) -> bool { "__Pyx_PyFunction_FastCallDict", "__Pyx_PyObject_CallOneArg", "__Pyx_PyObject_Call", - "__Pyx_PyObject_Call", "__pyx_FusedFunction_call", ]; From 695e38823d7dbac94192cfe5b86aa6f41a13b95d Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Sat, 12 Oct 2024 13:37:29 -0500 Subject: [PATCH 14/27] Add libunwind dependency note to readme (#695) --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e8b80ca9..dde06d18 100755 --- a/README.md +++ b/README.md @@ -22,7 +22,9 @@ pip install py-spy You can also download prebuilt binaries from the [GitHub Releases Page](https://github.com/benfred/py-spy/releases). -If you're a Rust user, py-spy can also be installed with: ```cargo install py-spy```. +If you're a Rust user, py-spy can also be installed with: ```cargo install py-spy```. Note this +builds py-spy from source and requires `libunwind` on Linux and Window, e.g., +`apt install libunwind-dev`. On macOS, [py-spy is in Homebrew](https://formulae.brew.sh/formula/py-spy#default) and can be installed with ```brew install py-spy```. From 6ff51b65cf4a50aeb001fab2e4ce2dd3f41a3922 Mon Sep 17 00:00:00 2001 From: Karoline Pauls <43616133+karolinepauls@users.noreply.github.com> Date: Tue, 15 Oct 2024 01:22:34 +0100 Subject: [PATCH 15/27] test_coredump: fix unaligned pointer dereference (#657) --- src/coredump.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/coredump.rs b/src/coredump.rs index 834a2d49..7df1e010 100644 --- a/src/coredump.rs +++ b/src/coredump.rs @@ -88,26 +88,30 @@ impl CoreDump { let mut status = Vec::new(); for note in notes.flatten() { if note.n_type == goblin::elf::note::NT_PRPSINFO { - psinfo = Some(unsafe { *(note.desc.as_ptr() as *const elfcore::elf_prpsinfo) }); + psinfo = Some(unsafe { + std::ptr::read_unaligned(note.desc.as_ptr() as *const elfcore::elf_prpsinfo) + }); } else if note.n_type == goblin::elf::note::NT_PRSTATUS { - let thread_status = - unsafe { *(note.desc.as_ptr() as *const elfcore::elf_prstatus) }; + let thread_status: elfcore::elf_prstatus = unsafe { + std::ptr::read_unaligned(note.desc.as_ptr() as *const elfcore::elf_prstatus) + }; status.push(thread_status); } else if note.n_type == goblin::elf::note::NT_FILE { let data = note.desc; let ptrs = data.as_ptr() as *const usize; - let count = unsafe { *ptrs }; - let _page_size = unsafe { *ptrs.offset(1) }; + let count = unsafe { std::ptr::read_unaligned(ptrs) }; + let _page_size = unsafe { std::ptr::read_unaligned(ptrs.offset(1)) }; let string_table = &data[(std::mem::size_of::() * (2 + count * 3))..]; for (i, filename) in string_table.split(|chr| *chr == 0).enumerate() { if i < count { let i = i as isize; - let start = unsafe { *ptrs.offset(i * 3 + 2) }; - let _end = unsafe { *ptrs.offset(i * 3 + 3) }; - let _page_offset = unsafe { *ptrs.offset(i * 3 + 4) }; + let start = unsafe { std::ptr::read_unaligned(ptrs.offset(i * 3 + 2)) }; + let _end = unsafe { std::ptr::read_unaligned(ptrs.offset(i * 3 + 3)) }; + let _page_offset = + unsafe { std::ptr::read_unaligned(ptrs.offset(i * 3 + 4)) }; let pathname = Path::new(&OsStr::from_bytes(filename)).to_path_buf(); filenames.insert(start, pathname); From f01b43ae4c4e5f9b326e55a2f6a994877a9a430e Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Tue, 15 Oct 2024 15:48:08 -0500 Subject: [PATCH 16/27] Format YAML files with prettier (#698) --- .github/release-drafter.yml | 42 ++--- .github/workflows/build.yml | 192 ++++++++++++++--------- .github/workflows/update_python_test.yml | 16 +- .pre-commit-config.yaml | 45 +++--- 4 files changed, 170 insertions(+), 125 deletions(-) diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 321fc83f..774b162a 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -1,40 +1,40 @@ categories: - - title: '⚠ Breaking Changes' + - title: "⚠ Breaking Changes" labels: - - 'breaking' - - title: '🚀 Features' + - "breaking" + - title: "🚀 Features" labels: - - 'feature' - - 'enhancement' - - title: '🐛 Bug Fixes' + - "feature" + - "enhancement" + - title: "🐛 Bug Fixes" labels: - - 'fix' - - 'bugfix' - - 'bug' - - title: '📄 Documentation' + - "fix" + - "bugfix" + - "bug" + - title: "📄 Documentation" labels: - - 'documentation' - - title: '🧰 Maintenance' - label: - - 'chore' - - 'ci' - - 'dependencies' + - "documentation" + - title: "🧰 Maintenance" + label: + - "chore" + - "ci" + - "dependencies" exclude-labels: - - 'skip-changelog' + - "skip-changelog" -change-template: '- $TITLE @$AUTHOR (#$NUMBER)' +change-template: "- $TITLE @$AUTHOR (#$NUMBER)" change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks. version-resolver: major: labels: - - 'major' + - "major" minor: labels: - - 'minor' + - "minor" patch: labels: - - 'patch' + - "patch" default: patch template: | ## Changes diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fd432dd8..3996e0a5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,11 +3,11 @@ name: Build on: workflow_dispatch: push: - branches: [ master ] + branches: [master] tags: - v* pull_request: - branches: [ master ] + branches: [master] env: CARGO_TERM_COLOR: always @@ -30,58 +30,58 @@ jobs: matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - - uses: actions/checkout@v3 - - uses: Swatinem/rust-cache@v2 - - name: Install Dependencies - run: sudo apt install libunwind-dev - if: runner.os == 'Linux' - - uses: actions/setup-python@v4 - with: - python-version: 3.9 - - name: Build - run: cargo build --release --verbose --examples - - uses: actions/setup-python@v4 - with: - python-version: 3.9 - - name: Test - id: test - continue-on-error: true - run: cargo test --release - - name: Test (retry#1) - id: test1 - run: cargo test --release - if: steps.test.outcome=='failure' - continue-on-error: true - - name: Test (retry#2) - run: cargo test --release - if: steps.test1.outcome=='failure' - - name: Build Wheel - run: | - pip install --upgrade maturin - maturin build --release -o dist --all-features - if: runner.os == 'Windows' - - name: Build Wheel - universal2 - env: - DEVELOPER_DIR: /Applications/Xcode.app/Contents/Developer - SDKROOT: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk - MACOSX_DEPLOYMENT_TARGET: 10.9 - run: | - rustup target add aarch64-apple-darwin - rustup target add x86_64-apple-darwin - pip install --upgrade maturin - maturin build --release -o dist - maturin build --release -o dist --target universal2-apple-darwin - if: matrix.os == 'macos-latest' - - name: Rename Wheels - run: | - python3 -c "import shutil; import glob; wheels = glob.glob('dist/*.whl'); [shutil.move(wheel, wheel.replace('py3', 'py2.py3')) for wheel in wheels if 'py2' not in wheel]" - if: runner.os != 'Linux' - - name: Upload wheels - uses: actions/upload-artifact@v3 - with: - name: wheels - path: dist - if: runner.os != 'Linux' + - uses: actions/checkout@v3 + - uses: Swatinem/rust-cache@v2 + - name: Install Dependencies + run: sudo apt install libunwind-dev + if: runner.os == 'Linux' + - uses: actions/setup-python@v4 + with: + python-version: 3.9 + - name: Build + run: cargo build --release --verbose --examples + - uses: actions/setup-python@v4 + with: + python-version: 3.9 + - name: Test + id: test + continue-on-error: true + run: cargo test --release + - name: Test (retry#1) + id: test1 + run: cargo test --release + if: steps.test.outcome=='failure' + continue-on-error: true + - name: Test (retry#2) + run: cargo test --release + if: steps.test1.outcome=='failure' + - name: Build Wheel + run: | + pip install --upgrade maturin + maturin build --release -o dist --all-features + if: runner.os == 'Windows' + - name: Build Wheel - universal2 + env: + DEVELOPER_DIR: /Applications/Xcode.app/Contents/Developer + SDKROOT: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk + MACOSX_DEPLOYMENT_TARGET: 10.9 + run: | + rustup target add aarch64-apple-darwin + rustup target add x86_64-apple-darwin + pip install --upgrade maturin + maturin build --release -o dist + maturin build --release -o dist --target universal2-apple-darwin + if: matrix.os == 'macos-latest' + - name: Rename Wheels + run: | + python3 -c "import shutil; import glob; wheels = glob.glob('dist/*.whl'); [shutil.move(wheel, wheel.replace('py3', 'py2.py3')) for wheel in wheels if 'py2' not in wheel]" + if: runner.os != 'Linux' + - name: Upload wheels + uses: actions/upload-artifact@v3 + with: + name: wheels + path: dist + if: runner.os != 'Linux' build-linux-cross: runs-on: ubuntu-latest @@ -96,28 +96,28 @@ jobs: RUSTUP_HOME: /root/.rustup CARGO_HOME: /root/.cargo steps: - - uses: actions/checkout@v3 - - uses: Swatinem/rust-cache@v2 - - name: Build - run: | - python3 -m pip install --upgrade maturin - maturin build --release -o dist --target $RUST_MUSL_CROSS_TARGET --features unwind - maturin sdist -o dist - if: matrix.target == 'x86_64-musl' - - name: Build - run: | - python3 -m pip install --upgrade maturin - maturin build --release -o dist --target $RUST_MUSL_CROSS_TARGET - maturin sdist -o dist - if: matrix.target != 'x86_64-musl' - - name: Rename Wheels - run: | - python3 -c "import shutil; import glob; wheels = glob.glob('dist/*.whl'); [shutil.move(wheel, wheel.replace('py3', 'py2.py3')) for wheel in wheels if 'py2' not in wheel]" - - name: Upload wheels - uses: actions/upload-artifact@v3 - with: - name: wheels - path: dist + - uses: actions/checkout@v3 + - uses: Swatinem/rust-cache@v2 + - name: Build + run: | + python3 -m pip install --upgrade maturin + maturin build --release -o dist --target $RUST_MUSL_CROSS_TARGET --features unwind + maturin sdist -o dist + if: matrix.target == 'x86_64-musl' + - name: Build + run: | + python3 -m pip install --upgrade maturin + maturin build --release -o dist --target $RUST_MUSL_CROSS_TARGET + maturin sdist -o dist + if: matrix.target != 'x86_64-musl' + - name: Rename Wheels + run: | + python3 -c "import shutil; import glob; wheels = glob.glob('dist/*.whl'); [shutil.move(wheel, wheel.replace('py3', 'py2.py3')) for wheel in wheels if 'py2' not in wheel]" + - name: Upload wheels + uses: actions/upload-artifact@v3 + with: + name: wheels + path: dist build-freebsd: runs-on: ubuntu-22.04 @@ -183,7 +183,45 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.6.7, 3.6.15, 3.7.1, 3.7.17, 3.8.0, 3.8.18, 3.9.0, 3.9.20, 3.10.0, 3.10.1, 3.10.2, 3.10.3, 3.10.4, 3.10.5, 3.10.6, 3.10.7, 3.10.8, 3.10.9, 3.10.10, 3.10.11, 3.10.12, 3.10.13, 3.10.14, 3.10.15, 3.11.0, 3.11.1, 3.11.2, 3.11.3, 3.11.4, 3.11.5, 3.11.6, 3.11.7, 3.11.8, 3.11.9, 3.11.10, 3.12.0] + python-version: + [ + 3.6.7, + 3.6.15, + 3.7.1, + 3.7.17, + 3.8.0, + 3.8.18, + 3.9.0, + 3.9.20, + 3.10.0, + 3.10.1, + 3.10.2, + 3.10.3, + 3.10.4, + 3.10.5, + 3.10.6, + 3.10.7, + 3.10.8, + 3.10.9, + 3.10.10, + 3.10.11, + 3.10.12, + 3.10.13, + 3.10.14, + 3.10.15, + 3.11.0, + 3.11.1, + 3.11.2, + 3.11.3, + 3.11.4, + 3.11.5, + 3.11.6, + 3.11.7, + 3.11.8, + 3.11.9, + 3.11.10, + 3.12.0, + ] # TODO: also test windows os: [ubuntu-20.04, macos-13] # some versions of python can't be tested on GHA with osx because of SIP: diff --git a/.github/workflows/update_python_test.yml b/.github/workflows/update_python_test.yml index 7f12fc9e..1c904ccf 100644 --- a/.github/workflows/update_python_test.yml +++ b/.github/workflows/update_python_test.yml @@ -2,7 +2,7 @@ name: Update Python Test Versions on: workflow_dispatch: schedule: - - cron: "0 1 * * *" + - cron: "0 1 * * *" jobs: update-dep: runs-on: ubuntu-latest @@ -17,12 +17,14 @@ jobs: run: pip install --upgrade requests - name: Scan for new python versions run: python ci/update_python_test_versions.py + - name: Format results + run: npx prettier --write ".github/workflows/update_python_test.yml" - name: Create Pull Request uses: peter-evans/create-pull-request@v4 with: - commit-message: Update tested python versions - title: Update tested python versions - branch: update-python-versions - labels: | - skip-changelog - dependencies + commit-message: Update tested python versions + title: Update tested python versions + branch: update-python-versions + labels: | + skip-changelog + dependencies diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e7e6d301..ed50cf58 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,21 +1,26 @@ repos: - - repo: https://github.com/codespell-project/codespell - rev: v2.2.4 - hooks: - - id: codespell - additional_dependencies: [tomli] - args: ["--toml", "pyproject.toml"] - exclude: (?x)^(ci/testdata.*|images.*)$ - - repo: https://github.com/doublify/pre-commit-rust - rev: v1.0 - hooks: - - id: fmt - - id: cargo-check - - repo: local - hooks: - - id: cargo-clippy - name: cargo clippy - entry: cargo clippy -- -D warnings - language: system - files: \.rs$ - pass_filenames: false + - repo: https://github.com/codespell-project/codespell + rev: v2.2.4 + hooks: + - id: codespell + additional_dependencies: [tomli] + args: ["--toml", "pyproject.toml"] + exclude: (?x)^(ci/testdata.*|images.*)$ + - repo: https://github.com/doublify/pre-commit-rust + rev: v1.0 + hooks: + - id: fmt + - id: cargo-check + - repo: local + hooks: + - id: cargo-clippy + name: cargo clippy + entry: cargo clippy -- -D warnings + language: system + files: \.rs$ + pass_filenames: false + - repo: https://github.com/rbubley/mirrors-prettier + rev: v3.3.3 + hooks: + - id: prettier + types: [yaml] From 94fb024a26a3f35a59bf360f65f3632dc695dbfe Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Tue, 15 Oct 2024 15:49:22 -0500 Subject: [PATCH 17/27] Add custom error message for use of `--native` on unsupported platforms (#700) --- src/config.rs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/config.rs b/src/config.rs index 709516eb..de742d28 100644 --- a/src/config.rs +++ b/src/config.rs @@ -160,12 +160,16 @@ impl Config { .help("PID of a running python program to spy on") .takes_value(true); - #[cfg(feature = "unwind")] - let native = Arg::new("native") + let mut native = Arg::new("native") .short('n') .long("native") .help("Collect stack traces from native extensions written in Cython, C or C++"); + // Only show `--native` on platforms where it's supported + if !cfg!(feature = "unwind") { + native = native.hide(true); + } + #[cfg(not(target_os="freebsd"))] let nonblocking = Arg::new("nonblocking") .long("nonblocking") @@ -327,12 +331,8 @@ impl Config { .help("Shell type"), ); - // add native unwinding if appropriate - #[cfg(feature = "unwind")] let record = record.arg(native.clone()); - #[cfg(feature = "unwind")] let top = top.arg(native.clone()); - #[cfg(feature = "unwind")] let dump = dump.arg(native.clone()); // Nonblocking isn't an option for freebsd, remove @@ -361,6 +361,14 @@ impl Config { let (subcommand, matches) = matches.subcommand().unwrap(); + // Check if `--native` was used on an unsupported platform + if !cfg!(feature = "unwind") && matches.contains_id("native") { + eprintln!( + "Collecting stack traces from native extensions (`--native`) is not supported on your platform." + ); + std::process::exit(1); + } + match subcommand { "record" => { config.sampling_rate = matches.value_of_t("rate")?; From 64dfe73b4bd48ec02ef02297abe95547b27b23f3 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Tue, 15 Oct 2024 16:35:06 -0500 Subject: [PATCH 18/27] Upgrade `libproc` and `remoteprocess` to fix builds on macOS (#699) * Upgrade `remoteprocess` * Upgrade `libproc` --- Cargo.lock | 143 ++++++++++++++++++++--------------------------------- 1 file changed, 54 insertions(+), 89 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b5ba6312..74ca8164 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "cpp_demangle", "fallible-iterator", @@ -139,45 +139,43 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "bindgen" -version = "0.64.0" +version = "0.68.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4" +checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "cexpr", "clang-sys", "lazy_static", "lazycell", + "log", "peeking_take_while", + "prettyplease", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", - "syn 1.0.109", + "syn 2.0.38", + "which", ] [[package]] name = "bindgen" -version = "0.68.1" +version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ "bitflags 2.4.1", "cexpr", "clang-sys", - "lazy_static", - "lazycell", - "log", - "peeking_take_while", - "prettyplease", + "itertools", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", "syn 2.0.38", - "which", ] [[package]] @@ -206,9 +204,9 @@ checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" @@ -433,6 +431,17 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "derive_more" +version = "0.99.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + [[package]] name = "either" version = "1.8.1" @@ -464,17 +473,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" -[[package]] -name = "errno" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" -dependencies = [ - "errno-dragonfly", - "libc", - "winapi", -] - [[package]] name = "errno" version = "0.3.1" @@ -498,9 +496,9 @@ dependencies = [ [[package]] name = "fallible-iterator" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fastrand" @@ -534,9 +532,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" dependencies = [ "fallible-iterator", "stable_deref_trait", @@ -548,17 +546,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" -[[package]] -name = "goblin" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6b4de4a8eb6c46a8c77e1d3be942cb9a8bf073c22374578e5ba4b08ed0ff68" -dependencies = [ - "log", - "plain", - "scroll", -] - [[package]] name = "goblin" version = "0.7.1" @@ -729,6 +716,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.6" @@ -780,23 +776,12 @@ checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" [[package]] name = "libproc" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b18cbf29f8ff3542ba22bdce9ac610fcb75d74bb4e2b306b2a2762242025b4f" -dependencies = [ - "bindgen 0.64.0", - "errno 0.2.8", - "libc", -] - -[[package]] -name = "libproc" -version = "0.14.2" +version = "0.14.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229004ebba9d1d5caf41623f1523b6d52abb47d9f6ab87f7e6fc992e3b854aef" +checksum = "e78a09b56be5adbcad5aa1197371688dc6bb249a26da3bca2011ee2fb987ebfb" dependencies = [ - "bindgen 0.68.1", - "errno 0.3.1", + "bindgen 0.70.1", + "errno", "libc", ] @@ -945,9 +930,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.31.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "flate2", "memchr", @@ -1055,7 +1040,7 @@ dependencies = [ "anyhow", "bindgen 0.68.1", "libc", - "libproc 0.14.2", + "libproc", "mach2", "winapi", ] @@ -1072,7 +1057,7 @@ dependencies = [ "cpp_demangle", "ctrlc", "env_logger", - "goblin 0.7.1", + "goblin", "indicatif", "inferno", "lazy_static", @@ -1198,15 +1183,15 @@ checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" [[package]] name = "remoteprocess" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91114d769bd6dffc9565c01bbba121ca223efba7fdbc4c57b63fd91c1ea8478e" +checksum = "8928e7901c7fc6f1f8d697d77a9da0f749f96454714a8d097662531640647409" dependencies = [ "addr2line", - "goblin 0.6.1", + "goblin", "lazy_static", "libc", - "libproc 0.13.0", + "libproc", "log", "mach", "mach_o_sys", @@ -1247,7 +1232,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4eb579851244c2c03e7c24f501c3432bed80b8f720af1d6e5b0e0f01555a035" dependencies = [ "bitflags 1.3.2", - "errno 0.3.1", + "errno", "io-lifetimes", "libc", "linux-raw-sys", @@ -1256,12 +1241,12 @@ dependencies = [ [[package]] name = "ruzstd" -version = "0.3.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a15e661f0f9dac21f3494fe5d23a6338c0ac116a2d22c2b63010acd89467ffe" +checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d" dependencies = [ "byteorder", - "thiserror", + "derive_more", "twox-hash", ] @@ -1434,26 +1419,6 @@ dependencies = [ "terminal_size", ] -[[package]] -name = "thiserror" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - [[package]] name = "time" version = "0.1.45" From 3b6f7832c2f16e03c8218956d5c959979f3f7736 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Wed, 16 Oct 2024 11:08:50 -0500 Subject: [PATCH 19/27] Use new musl cross build Docker images (#702) --- .github/workflows/build.yml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3996e0a5..ffa9aa1a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -89,9 +89,15 @@ jobs: strategy: fail-fast: false matrix: - target: [i686-musl, armv7-musleabihf, aarch64-musl, x86_64-musl] + target: + [ + i686-unknown-linux-musl, + armv7-unknown-linux-musleabihf, + aarch64-unknown-linux-musl, + x86_64-unknown-linux-musl, + ] container: - image: docker://benfred/rust-musl-cross:${{ matrix.target }} + image: ghcr.io/benfred/rust-musl-cross:${{ matrix.target }} env: RUSTUP_HOME: /root/.rustup CARGO_HOME: /root/.cargo @@ -101,15 +107,15 @@ jobs: - name: Build run: | python3 -m pip install --upgrade maturin - maturin build --release -o dist --target $RUST_MUSL_CROSS_TARGET --features unwind + maturin build --release -o dist --target ${{ matrix.target }} --features unwind maturin sdist -o dist - if: matrix.target == 'x86_64-musl' + if: matrix.target == 'x86_64-unknown-linux-musl' - name: Build run: | python3 -m pip install --upgrade maturin - maturin build --release -o dist --target $RUST_MUSL_CROSS_TARGET + maturin build --release -o dist --target ${{ matrix.target }} maturin sdist -o dist - if: matrix.target != 'x86_64-musl' + if: matrix.target != 'x86_64-unknown-linux-musl' - name: Rename Wheels run: | python3 -c "import shutil; import glob; wheels = glob.glob('dist/*.whl'); [shutil.move(wheel, wheel.replace('py3', 'py2.py3')) for wheel in wheels if 'py2' not in wheel]" From 889a68bb98d342211b667b5338d44ddd50e41e3f Mon Sep 17 00:00:00 2001 From: Ben Frederickson Date: Wed, 16 Oct 2024 11:27:42 -0700 Subject: [PATCH 20/27] update_python_test_versions fixes (#707) update_python_test_versions.py needed update to handle python 3.12, and to match recent yaml format changes. --- .github/workflows/build.yml | 36 ++++++++------ .github/workflows/update_python_test.yml | 2 +- ci/update_python_test_versions.py | 62 +++++++++++++++--------- 3 files changed, 61 insertions(+), 39 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ffa9aa1a..9dd86160 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -188,6 +188,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: fail-fast: false + # automatically generated by ci/update_python_test_versions.py matrix: python-version: [ @@ -200,20 +201,6 @@ jobs: 3.9.0, 3.9.20, 3.10.0, - 3.10.1, - 3.10.2, - 3.10.3, - 3.10.4, - 3.10.5, - 3.10.6, - 3.10.7, - 3.10.8, - 3.10.9, - 3.10.10, - 3.10.11, - 3.10.12, - 3.10.13, - 3.10.14, 3.10.15, 3.11.0, 3.11.1, @@ -227,6 +214,13 @@ jobs: 3.11.9, 3.11.10, 3.12.0, + 3.12.1, + 3.12.2, + 3.12.3, + 3.12.4, + 3.12.5, + 3.12.6, + 3.12.7, ] # TODO: also test windows os: [ubuntu-20.04, macos-13] @@ -256,6 +250,20 @@ jobs: python-version: 3.11.10 - os: macos-13 python-version: 3.12.0 + - os: macos-13 + python-version: 3.12.1 + - os: macos-13 + python-version: 3.12.2 + - os: macos-13 + python-version: 3.12.3 + - os: macos-13 + python-version: 3.12.4 + - os: macos-13 + python-version: 3.12.5 + - os: macos-13 + python-version: 3.12.6 + - os: macos-13 + python-version: 3.12.7 steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/update_python_test.yml b/.github/workflows/update_python_test.yml index 1c904ccf..1a9b3d3c 100644 --- a/.github/workflows/update_python_test.yml +++ b/.github/workflows/update_python_test.yml @@ -14,7 +14,7 @@ jobs: with: python-version: 3.9 - name: Install - run: pip install --upgrade requests + run: pip install --upgrade requests yaml - name: Scan for new python versions run: python ci/update_python_test_versions.py - name: Format results diff --git a/ci/update_python_test_versions.py b/ci/update_python_test_versions.py index 6a53286d..adba5fc9 100644 --- a/ci/update_python_test_versions.py +++ b/ci/update_python_test_versions.py @@ -1,6 +1,7 @@ from collections import defaultdict import requests import pathlib +import yaml import re @@ -37,10 +38,10 @@ def get_github_python_versions(): # for older versions of python, don't test all patches # (just test first and last) to keep the test matrix down - if (major == 2 or minor < 10): + if major == 2 or minor <= 10: patches = [patches[0], patches[-1]] - if (major == 3 and minor >= 12): + if major == 3 and minor >= 13: continue versions.extend(f"{major}.{minor}.{patch}" for patch in patches) @@ -48,36 +49,49 @@ def get_github_python_versions(): return versions -if __name__ == "__main__": - versions = sorted( - get_github_python_versions(), key=parse_version) - build_yml = ( +def update_python_test_versions(): + versions = sorted(get_github_python_versions(), key=parse_version) + build_yml_path = ( pathlib.Path(__file__).parent.parent / ".github" / "workflows" / "build.yml" ) + build_yml = yaml.safe_load(open(".github/workflows/build.yml")) + test_matrix = build_yml["jobs"]["test-wheels"]["strategy"]["matrix"] + existing_python_versions = test_matrix["python-version"] + if versions == existing_python_versions: + return + + print("Adding new versions") + print("Old:", existing_python_versions) + print("New:", versions) + + # we can't use the yaml package to update the GHA script, since + # the data in build_yml is treated as an unordered dictionary. + # instead modify the file in place + lines = list(open(build_yml_path)) + first_line = lines.index( + " # automatically generated by ci/update_python_test_versions.py\n" + ) - transformed = [] - for line in open(build_yml): - if line.startswith(" python-version: ["): - newversions = f" python-version: [{', '.join(v for v in versions)}]\n" - if newversions != line: - print("Adding new versions") - print("Old:", line) - print("New:", newversions) - line = newversions - transformed.append(line) + first_version_line = lines.index(" [\n", first_line) + last_version_line = lines.index(" ]\n", first_version_line) + new_versions = [f" {v},\n" for v in versions] + lines = lines[: first_version_line + 1] + new_versions + lines[last_version_line:] - # also automatically exclude v3.11.* from running on OSX, + # also automatically exclude >= v3.11.* from running on OSX, # since it currently fails in GHA on SIP errors exclusions = [] for v in versions: - if v.startswith("3.11"): + if v.startswith("3.11") or v.startswith("3.12"): exclusions.append(" - os: macos-13\n") exclusions.append(f" python-version: {v}\n") - test_wheels = transformed.index(" test-wheels:\n") - first_line = transformed.index(" exclude:\n", test_wheels) - last_line = transformed.index("\n", first_line) - transformed = transformed[:first_line+1] + exclusions + transformed[last_line:] + first_exclude_line = lines.index(" exclude:\n", first_line) + last_exclude_line = lines.index("\n", first_exclude_line) + lines = lines[: first_exclude_line + 1] + exclusions + lines[last_exclude_line:] + + with open(build_yml_path, "w") as o: + o.write("".join(lines)) - with open(build_yml, "w") as o: - o.write("".join(transformed)) + +if __name__ == "__main__": + update_python_test_versions() From 5a9293a03b4ff77d0a5e8e542921835f58672f75 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Wed, 16 Oct 2024 13:28:12 -0500 Subject: [PATCH 21/27] Move `.cargo/config` to undeprecated location (#705) --- .cargo/{config => config.toml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .cargo/{config => config.toml} (100%) diff --git a/.cargo/config b/.cargo/config.toml similarity index 100% rename from .cargo/config rename to .cargo/config.toml From 0bb4fe8072a76b7705642c0b43ea3fa92deeb4ec Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Wed, 16 Oct 2024 13:32:22 -0500 Subject: [PATCH 22/27] Bump FreeBSD Rust toolchain from 1.73.0 to 1.80.1 (#706) --- ci/Vagrantfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/Vagrantfile b/ci/Vagrantfile index c22b36ac..cc5b9724 100644 --- a/ci/Vagrantfile +++ b/ci/Vagrantfile @@ -21,7 +21,7 @@ Vagrant.configure("2") do |config| chsh -s /usr/local/bin/bash vagrant pw groupmod wheel -m vagrant su -l vagrant <<'EOF' - curl https://sh.rustup.rs -sSf | sh -s -- -y --profile minimal --default-toolchain 1.73.0 + curl https://sh.rustup.rs -sSf | sh -s -- -y --profile minimal --default-toolchain 1.80.1 EOF SHELL end From 264dbd70dd636f1ac7b84e3f1b2dd9dba208fafb Mon Sep 17 00:00:00 2001 From: Ben Frederickson Date: Wed, 16 Oct 2024 12:03:02 -0700 Subject: [PATCH 23/27] Fix update_python_test.yml --- .github/workflows/update_python_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update_python_test.yml b/.github/workflows/update_python_test.yml index 1a9b3d3c..90a2bba3 100644 --- a/.github/workflows/update_python_test.yml +++ b/.github/workflows/update_python_test.yml @@ -14,7 +14,7 @@ jobs: with: python-version: 3.9 - name: Install - run: pip install --upgrade requests yaml + run: pip install --upgrade requests pyyaml - name: Scan for new python versions run: python ci/update_python_test_versions.py - name: Format results From 0f02aecb7fb3a320676cf629af3e059753d92310 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Fri, 18 Oct 2024 19:16:26 -0500 Subject: [PATCH 24/27] Update dependencies (#704) Uses `cargo update` to update all dependencies --- Cargo.lock | 774 ++++++++++++++++++++++++++++------------------------- 1 file changed, 409 insertions(+), 365 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 74ca8164..35f0a049 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,28 +18,29 @@ dependencies = [ ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom", "once_cell", "version_check", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -61,64 +62,64 @@ dependencies = [ [[package]] name = "anstream" -version = "0.3.2" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.0" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.0" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "1.0.1" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "atty" @@ -133,9 +134,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "bindgen" @@ -143,7 +144,7 @@ version = "0.68.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.6.0", "cexpr", "clang-sys", "lazy_static", @@ -156,7 +157,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.38", + "syn 2.0.79", "which", ] @@ -166,7 +167,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.6.0", "cexpr", "clang-sys", "itertools", @@ -175,7 +176,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.38", + "syn 2.0.79", ] [[package]] @@ -186,21 +187,21 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.13.1" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" [[package]] name = "byteorder" @@ -210,9 +211,12 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.0.79" +version = "1.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945" +dependencies = [ + "shlex", +] [[package]] name = "cexpr" @@ -229,26 +233,31 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", - "time", "wasm-bindgen", - "winapi", + "windows-targets 0.52.6", ] [[package]] name = "clang-sys" -version = "1.6.1" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", @@ -267,7 +276,7 @@ dependencies = [ "clap_lex 0.2.4", "indexmap 1.9.3", "once_cell", - "strsim", + "strsim 0.10.0", "termcolor", "terminal_size", "textwrap", @@ -275,26 +284,24 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.2" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "401a4694d2bf92537b6867d94de48c4842089645fdcdf6c71865b175d836e9c2" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ "clap_builder", - "clap_derive 4.3.2", - "once_cell", + "clap_derive 4.5.18", ] [[package]] name = "clap_builder" -version = "4.3.1" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72394f3339a76daf211e57d4bcb374410f3965dcc606dd0e03738c7888766980" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstream", "anstyle", - "bitflags 1.3.2", - "clap_lex 0.5.0", - "strsim", + "clap_lex 0.7.2", + "strsim 0.11.1", ] [[package]] @@ -312,7 +319,7 @@ version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro-error", "proc-macro2", "quote", @@ -321,14 +328,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.3.2" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.79", ] [[package]] @@ -342,90 +349,87 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "console" -version = "0.15.7" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" dependencies = [ "encode_unicode", "lazy_static", "libc", "unicode-width", - "windows-sys 0.45.0", + "windows-sys 0.52.0", ] [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpp_demangle" -version = "0.4.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c76f98bdfc7f66172e6c7065f981ebb576ffc903fe4c0561d9f0c2509226dc6" +checksum = "96e58d342ad113c2b878f16d5d034c03be492ae460cdbc02b7f0f2284d310c7d" dependencies = [ "cfg-if", ] [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" -dependencies = [ - "cfg-if", -] +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "ctrlc" -version = "3.4.0" +version = "3.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a011bbe2c35ce9c1f143b7af6f94f29a167beb4cd1d29e6740ce836f723120e" +checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" dependencies = [ - "nix", - "windows-sys 0.48.0", + "nix 0.29.0", + "windows-sys 0.59.0", ] [[package]] name = "dashmap" -version = "5.4.0" +version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ "cfg-if", - "hashbrown 0.12.3", + "crossbeam-utils", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", @@ -439,14 +443,14 @@ checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.79", ] [[package]] name = "either" -version = "1.8.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "encode_unicode" @@ -454,11 +458,20 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +[[package]] +name = "env_filter" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +dependencies = [ + "log", +] + [[package]] name = "env_logger" -version = "0.10.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" dependencies = [ "humantime", "is-terminal", @@ -467,6 +480,16 @@ dependencies = [ "termcolor", ] +[[package]] +name = "env_logger" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +dependencies = [ + "env_filter", + "log", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -475,23 +498,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -502,18 +514,15 @@ checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fastrand" -version = "1.9.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", "miniz_oxide", @@ -521,13 +530,13 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", ] [[package]] @@ -574,9 +583,15 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.2" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hashbrown" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" [[package]] name = "heck" @@ -584,6 +599,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -595,9 +616,24 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.1" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] [[package]] name = "humantime" @@ -607,16 +643,16 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -640,19 +676,19 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.2" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.2", + "hashbrown 0.15.0", ] [[package]] name = "indicatif" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ "console", "instant", @@ -663,17 +699,17 @@ dependencies = [ [[package]] name = "inferno" -version = "0.11.17" +version = "0.11.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50453ec3a6555fad17b1cd1a80d16af5bc7cb35094f64e429fd46549018c6a3" +checksum = "232929e1d75fe899576a3d5c7416ad0d88dbfbb3c3d6aa00873a7408a50ddb88" dependencies = [ "ahash", - "clap 4.3.2", + "clap 4.5.20", "crossbeam-channel", "crossbeam-utils", "dashmap", - "env_logger", - "indexmap 2.0.2", + "env_logger 0.11.5", + "indexmap 2.6.0", "is-terminal", "itoa", "log", @@ -686,9 +722,9 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] @@ -699,23 +735,28 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi 0.3.9", "libc", "windows-sys 0.48.0", ] [[package]] name = "is-terminal" -version = "0.4.7" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix", - "windows-sys 0.48.0", + "hermit-abi 0.4.0", + "libc", + "windows-sys 0.52.0", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itertools" version = "0.13.0" @@ -727,24 +768,24 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.63" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f37a4a5928311ac501dee68b3c7613a1037d0edb30c8e5427bd832d55d1b790" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lazycell" @@ -754,25 +795,25 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.146" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "winapi", + "windows-targets 0.52.6", ] [[package]] name = "libm" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libproc" @@ -791,11 +832,17 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -803,15 +850,15 @@ dependencies = [ [[package]] name = "log" -version = "0.4.18" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518ef76f2f87365916b142844c16d8fefd85039bc5699050210a7778ee1cd1de" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03f1160296536f10c833a82dca22267d5486734230d47bf00bf435885814ba1e" +checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" dependencies = [ "hashbrown 0.13.2", ] @@ -827,9 +874,9 @@ dependencies = [ [[package]] name = "mach2" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8" +checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" dependencies = [ "libc", ] @@ -842,9 +889,9 @@ checksum = "3e854583a83f20cf329bb9283366335387f7db59d640d1412167e05fedb98826" [[package]] name = "memchr" -version = "2.5.0" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap" @@ -873,23 +920,34 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] name = "nix" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", - "static_assertions", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "cfg_aliases", + "libc", ] [[package]] @@ -914,9 +972,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -941,27 +999,27 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "os_str_bytes" -version = "6.5.0" +version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.0", + "windows-targets 0.52.6", ] [[package]] @@ -978,24 +1036,27 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "portable-atomic" -version = "1.5.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b559898e0b4931ed2d3b959ab0c2da4d99cc644c4b0b1a35b4d344027f474023" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "prettyplease" -version = "0.2.15" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.38", + "syn 2.0.79", ] [[package]] @@ -1024,9 +1085,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" dependencies = [ "unicode-ident", ] @@ -1056,7 +1117,7 @@ dependencies = [ "console", "cpp_demangle", "ctrlc", - "env_logger", + "env_logger 0.10.2", "goblin", "indicatif", "inferno", @@ -1096,9 +1157,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.28" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1157,18 +1218,30 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", ] [[package]] name = "regex" -version = "1.8.4" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -1177,9 +1250,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "remoteprocess" @@ -1196,7 +1269,7 @@ dependencies = [ "mach", "mach_o_sys", "memmap", - "nix", + "nix 0.26.4", "object", "proc-maps", "read-process-memory", @@ -1206,18 +1279,18 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.36" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ec2d3e3fc7a92ced357df9cebd5a10b6fb2aa1ee797bf7e9ce2f17dffc8f59" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" dependencies = [ "bytemuck", ] [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -1227,18 +1300,31 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustix" -version = "0.37.25" +version = "0.37.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4eb579851244c2c03e7c24f501c3432bed80b8f720af1d6e5b0e0f01555a035" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" dependencies = [ "bitflags 1.3.2", "errno", "io-lifetimes", "libc", - "linux-raw-sys", + "linux-raw-sys 0.3.8", "windows-sys 0.48.0", ] +[[package]] +name = "rustix" +version = "0.38.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys 0.4.14", + "windows-sys 0.52.0", +] + [[package]] name = "ruzstd" version = "0.5.0" @@ -1252,15 +1338,15 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scroll" @@ -1273,39 +1359,43 @@ dependencies = [ [[package]] name = "scroll_derive" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdbda6ac5cd1321e724fa9cee216f3a61885889b896f073b8f82322789c5250e" +checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.79", ] [[package]] name = "serde" -version = "1.0.163" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +dependencies = [ + "serde_derive", +] [[package]] name = "serde_derive" -version = "1.0.163" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.79", ] [[package]] name = "serde_json" -version = "1.0.96" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -1318,9 +1408,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "smallvec" -version = "1.10.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "stable_deref_trait" @@ -1346,6 +1436,12 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "syn" version = "1.0.109" @@ -1359,9 +1455,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.38" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -1370,23 +1466,22 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.6.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ - "autocfg", "cfg-if", "fastrand", - "redox_syscall", - "rustix", - "windows-sys 0.48.0", + "once_cell", + "rustix 0.38.37", + "windows-sys 0.59.0", ] [[package]] name = "termcolor" -version = "1.2.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] @@ -1397,7 +1492,7 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" dependencies = [ - "rustix", + "rustix 0.37.27", "windows-sys 0.48.0", ] @@ -1412,24 +1507,13 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "terminal_size", ] -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - [[package]] name = "twox-hash" version = "1.6.3" @@ -1442,33 +1526,27 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wasi" @@ -1478,34 +1556,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.86" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.86" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.79", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.86" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1513,32 +1592,33 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.86" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.86" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "which" -version = "4.4.0" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ "either", - "libc", + "home", "once_cell", + "rustix 0.38.37", ] [[package]] @@ -1573,30 +1653,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.48.0" +name = "windows-core" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.52.6", ] [[package]] name = "windows-sys" -version = "0.45.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.42.2", + "windows-targets 0.48.5", ] [[package]] name = "windows-sys" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.52.6", ] [[package]] @@ -1610,32 +1690,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" -dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -1656,15 +1721,9 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" @@ -1674,15 +1733,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" @@ -1692,15 +1745,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" @@ -1716,15 +1763,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" @@ -1734,15 +1775,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" @@ -1752,15 +1787,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" @@ -1770,18 +1799,33 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" +name = "zerocopy" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] From bffb3fc06ffa44209c201321c88d112563cdb687 Mon Sep 17 00:00:00 2001 From: andrewjcg Date: Mon, 28 Oct 2024 15:55:22 -0400 Subject: [PATCH 25/27] Upgrade from memmap to memmap2 (#678) The former appears to be unmaintained: https://github.com/danburkert/memmap-rs/issues/90 --- Cargo.lock | 13 +++++++++++-- Cargo.toml | 2 +- src/binary_parser.rs | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 35f0a049..6d6acf0c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,7 +11,7 @@ dependencies = [ "cpp_demangle", "fallible-iterator", "gimli", - "memmap2", + "memmap2 0.5.10", "object", "rustc-demangle", "smallvec", @@ -912,6 +912,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memmap2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +dependencies = [ + "libc", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -1125,7 +1134,7 @@ dependencies = [ "libc", "log", "lru", - "memmap", + "memmap2 0.9.4", "proc-maps", "py-spy-testdata", "rand", diff --git a/Cargo.toml b/Cargo.toml index 59482f68..388dbd9e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ lru = "0.10" regex = ">=1.6.0" tempfile = "3.6.0" proc-maps = "0.3.2" -memmap = "0.7.0" +memmap2 = "0.9.4" cpp_demangle = "0.4" serde = {version="1.0", features=["rc"]} serde_derive = "1.0" diff --git a/src/binary_parser.rs b/src/binary_parser.rs index ace9ab45..76584475 100644 --- a/src/binary_parser.rs +++ b/src/binary_parser.rs @@ -4,7 +4,7 @@ use std::path::Path; use anyhow::Error; use goblin::Object; -use memmap::Mmap; +use memmap2::Mmap; pub struct BinaryInfo { pub symbols: HashMap, From 78f9a1f4d264f6b6c2927e1b7791d9d1dbc4d1f6 Mon Sep 17 00:00:00 2001 From: Ben Frederickson Date: Mon, 28 Oct 2024 14:20:43 -0700 Subject: [PATCH 26/27] Update remoteprocess/proc-maps/goblin dependencies (#712) --- Cargo.lock | 144 ++++++++++++----------------------------------------- Cargo.toml | 8 +-- 2 files changed, 37 insertions(+), 115 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6d6acf0c..a6af5e6b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,17 +4,18 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "cpp_demangle", "fallible-iterator", "gimli", - "memmap2 0.5.10", + "memmap2", "object", "rustc-demangle", "smallvec", + "typed-arena", ] [[package]] @@ -138,29 +139,6 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" -[[package]] -name = "bindgen" -version = "0.68.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" -dependencies = [ - "bitflags 2.6.0", - "cexpr", - "clang-sys", - "lazy_static", - "lazycell", - "log", - "peeking_take_while", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn 2.0.79", - "which", -] - [[package]] name = "bindgen" version = "0.70.1" @@ -171,6 +149,8 @@ dependencies = [ "cexpr", "clang-sys", "itertools", + "log", + "prettyplease", "proc-macro2", "quote", "regex", @@ -435,17 +415,6 @@ dependencies = [ "parking_lot_core", ] -[[package]] -name = "derive_more" -version = "0.99.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - [[package]] name = "either" version = "1.13.0" @@ -541,9 +510,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" dependencies = [ "fallible-iterator", "stable_deref_trait", @@ -557,9 +526,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "goblin" -version = "0.7.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27c1b4369c2cd341b5de549380158b105a04c331be5db9110eef7b6d2742134" +checksum = "53ab3f32d1d77146981dea5d6b1e8fe31eedcb7013e5e00d6ccd1259a4b4d923" dependencies = [ "log", "plain", @@ -626,15 +595,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" -[[package]] -name = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys 0.52.0", -] - [[package]] name = "humantime" version = "2.1.0" @@ -787,12 +747,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "libc" version = "0.2.159" @@ -821,7 +775,7 @@ version = "0.14.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78a09b56be5adbcad5aa1197371688dc6bb249a26da3bca2011ee2fb987ebfb" dependencies = [ - "bindgen 0.70.1", + "bindgen", "errno", "libc", ] @@ -893,25 +847,6 @@ version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" -[[package]] -name = "memmap" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "memmap2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] - [[package]] name = "memmap2" version = "0.9.4" @@ -997,9 +932,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.32.2" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "flate2", "memchr", @@ -1031,12 +966,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - [[package]] name = "plain" version = "0.2.3" @@ -1103,12 +1032,12 @@ dependencies = [ [[package]] name = "proc-maps" -version = "0.3.2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ec8fdc22cb95c02f6a26a91fb1cd60a7a115916c2ed3b09d0a312e11785bd57" +checksum = "3db44c5aa60e193a25fcd93bb9ed27423827e8f118897866f946e2cf936c44fb" dependencies = [ "anyhow", - "bindgen 0.68.1", + "bindgen", "libc", "libproc", "mach2", @@ -1134,7 +1063,7 @@ dependencies = [ "libc", "log", "lru", - "memmap2 0.9.4", + "memmap2", "proc-maps", "py-spy-testdata", "rand", @@ -1265,11 +1194,12 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "remoteprocess" -version = "0.4.13" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8928e7901c7fc6f1f8d697d77a9da0f749f96454714a8d097662531640647409" +checksum = "e6194770c7afc1d2ca42acde19267938eb7d52ccb5b727f1a2eafa8d4d00ff20" dependencies = [ "addr2line", + "cfg-if", "goblin", "lazy_static", "libc", @@ -1277,7 +1207,7 @@ dependencies = [ "log", "mach", "mach_o_sys", - "memmap", + "memmap2", "nix 0.26.4", "object", "proc-maps", @@ -1336,12 +1266,10 @@ dependencies = [ [[package]] name = "ruzstd" -version = "0.5.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d" +checksum = "99c3938e133aac070997ddc684d4b393777d293ba170f2988c8fd5ea2ad4ce21" dependencies = [ - "byteorder", - "derive_more", "twox-hash", ] @@ -1359,18 +1287,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scroll" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" +checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" dependencies = [ "scroll_derive", ] [[package]] name = "scroll_derive" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" +checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", @@ -1533,6 +1461,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + [[package]] name = "unicode-ident" version = "1.0.13" @@ -1618,18 +1552,6 @@ version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.37", -] - [[package]] name = "winapi" version = "0.3.9" diff --git a/Cargo.toml b/Cargo.toml index 388dbd9e..187464fb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,15 +22,15 @@ console = "0.15" ctrlc = "3" indicatif = "0.17" env_logger = "0.10" -goblin = "0.7.1" -inferno = "0.11.17" +goblin = "0.9.2" +inferno = "0.11.21" lazy_static = "1.4.0" libc = "0.2" log = "0.4" lru = "0.10" regex = ">=1.6.0" tempfile = "3.6.0" -proc-maps = "0.3.2" +proc-maps = "0.4.0" memmap2 = "0.9.4" cpp_demangle = "0.4" serde = {version="1.0", features=["rc"]} @@ -38,7 +38,7 @@ serde_derive = "1.0" serde_json = "1.0" rand = "0.8" rand_distr = "0.4" -remoteprocess = {version="0.4.12", features=["unwind"]} +remoteprocess = {version="0.5.0", features=["unwind"]} chrono = "0.4.26" [dev-dependencies] From 114e6981d0f7263019c16d7d477e5e13b6f8b56a Mon Sep 17 00:00:00 2001 From: Ben Frederickson Date: Wed, 30 Oct 2024 13:33:04 -0700 Subject: [PATCH 27/27] Detect GIL on python 3.12 (#713) Use the InterpreterState._gil member to figure out both if the gil is locked, and if so which thread is holding the GIL --- src/coredump.rs | 3 ++- src/python_interpreters.rs | 18 ++++++++++++++---- src/python_process_info.rs | 12 +++++++++++- src/python_spy.rs | 16 +++++++++------- src/stack_trace.rs | 6 +++++- src/utils.rs | 4 ++++ 6 files changed, 45 insertions(+), 14 deletions(-) diff --git a/src/coredump.rs b/src/coredump.rs index 7df1e010..e0118437 100644 --- a/src/coredump.rs +++ b/src/coredump.rs @@ -246,7 +246,8 @@ impl PythonCoreDump { // lets us figure out which thread has the GIL let config = Config::default(); - let threadstate_address = get_threadstate_address(&python_info, &version, &config)?; + let threadstate_address = + get_threadstate_address(interpreter_address, &python_info, &version, &config)?; info!("found threadstate at 0x{:016x}", threadstate_address); Ok(PythonCoreDump { diff --git a/src/python_interpreters.rs b/src/python_interpreters.rs index 609ca7ba..bd055791 100644 --- a/src/python_interpreters.rs +++ b/src/python_interpreters.rs @@ -14,6 +14,7 @@ This means we can't dereference them directly. use crate::python_bindings::{ v2_7_15, v3_10_0, v3_11_0, v3_12_0, v3_3_7, v3_5_5, v3_6_6, v3_7_0, v3_8_0, v3_9_5, }; +use crate::utils::offset_of; pub trait InterpreterState { type ThreadState: ThreadState; @@ -22,6 +23,7 @@ pub trait InterpreterState { type ListObject: ListObject; type TupleObject: TupleObject; fn head(&self) -> *mut Self::ThreadState; + fn gil_locked(&self) -> Option; fn modules(&self) -> *mut Self::Object; } @@ -100,10 +102,6 @@ pub trait TypeObject { fn flags(&self) -> usize; } -fn offset_of(object: *const T, member: *const M) -> usize { - member as usize - object as usize -} - /// This macro provides a common impl for PyThreadState/PyFrameObject/PyCodeObject traits /// (this code is identical across python versions, we are only abstracting the struct layouts here). /// String handling changes substantially between python versions, and is handled separately. @@ -115,9 +113,13 @@ macro_rules! PythonCommonImpl { type StringObject = $py::$stringobject; type ListObject = $py::PyListObject; type TupleObject = $py::PyTupleObject; + fn head(&self) -> *mut Self::ThreadState { self.tstate_head } + fn gil_locked(&self) -> Option { + None + } fn modules(&self) -> *mut Self::Object { self.modules } @@ -415,9 +417,14 @@ impl InterpreterState for v3_12_0::PyInterpreterState { type StringObject = v3_12_0::PyUnicodeObject; type ListObject = v3_12_0::PyListObject; type TupleObject = v3_12_0::PyTupleObject; + fn head(&self) -> *mut Self::ThreadState { self.threads.head } + fn gil_locked(&self) -> Option { + Some(self._gil.locked._value != 0) + } + fn modules(&self) -> *mut Self::Object { self.imports.modules } @@ -506,6 +513,9 @@ impl InterpreterState for v3_11_0::PyInterpreterState { fn head(&self) -> *mut Self::ThreadState { self.threads.head } + fn gil_locked(&self) -> Option { + None + } fn modules(&self) -> *mut Self::Object { self.modules } diff --git a/src/python_process_info.rs b/src/python_process_info.rs index 2270556c..5ecb4cc2 100644 --- a/src/python_process_info.rs +++ b/src/python_process_info.rs @@ -529,6 +529,7 @@ where } pub fn get_threadstate_address( + interpreter_address: usize, python_info: &PythonProcessInfo, version: &Version, config: &Config, @@ -536,7 +537,16 @@ pub fn get_threadstate_address( let threadstate_address = match version { Version { major: 3, - minor: 7..=12, + minor: 12, + .. + } => { + let interp: v3_12_0::_is = Default::default(); + let offset = crate::utils::offset_of(&interp, &interp._gil.last_holder._value); + interpreter_address + offset + } + Version { + major: 3, + minor: 7..=11, .. } => match python_info.get_symbol("_PyRuntime") { Some(&addr) => { diff --git a/src/python_spy.rs b/src/python_spy.rs index 531616ab..40361577 100644 --- a/src/python_spy.rs +++ b/src/python_spy.rs @@ -62,7 +62,8 @@ impl PythonSpy { info!("Found interpreter at 0x{:016x}", interpreter_address); // lets us figure out which thread has the GIL - let threadstate_address = get_threadstate_address(&python_info, &version, config)?; + let threadstate_address = + get_threadstate_address(interpreter_address, &python_info, &version, config)?; #[cfg(feature = "unwind")] let native = if config.native { @@ -206,18 +207,19 @@ impl PythonSpy { None }; - // TODO: hoist most of this code out to stack_trace.rs, and - // then annotate the output of that with things like native stack traces etc - // have moved in gil / locals etc - let gil_thread_id = - get_gil_threadid::(self.threadstate_address, &self.process)?; - // Get the python interpreter, and loop over all the python threads let interp: I = self .process .copy_struct(self.interpreter_address) .context("Failed to copy PyInterpreterState from process")?; + // get the threadid of the gil if appropriate + let gil_thread_id = if interp.gil_locked().unwrap_or(true) { + get_gil_threadid::(self.threadstate_address, &self.process)? + } else { + 0 + }; + let mut traces = Vec::new(); let mut threads = interp.head(); while !threads.is_null() { diff --git a/src/stack_trace.rs b/src/stack_trace.rs index dce648e9..27d44a96 100644 --- a/src/stack_trace.rs +++ b/src/stack_trace.rs @@ -77,7 +77,11 @@ where I: InterpreterState, P: ProcessMemory, { - let gil_thread_id = get_gil_threadid::(threadstate_address, process)?; + let gil_thread_id = if interpreter.gil_locked().unwrap_or(true) { + get_gil_threadid::(threadstate_address, process)? + } else { + 0 + }; let mut ret = Vec::new(); let mut threads = interpreter.head(); diff --git a/src/utils.rs b/src/utils.rs index 2ca1374f..a354f151 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -20,3 +20,7 @@ pub fn resolve_filename(filename: &str, modulename: &str) -> Option { None } + +pub fn offset_of(object: *const T, member: *const M) -> usize { + member as usize - object as usize +}