PowerMachine commited on
Commit
df03b79
·
verified ·
1 Parent(s): 20672ab

KHTST v22 — fechamento 18/18 da tabela v17: os 10 produtores restantes com MEDIÇÕES REAIS (estado do otimizador via acumuladores opt-in bit-a-bit Teo 34.1; razao_update_grad com cota de Jensen Teo 34.2; razao_momentum_grad com correção estacionária sqrt(1-b^2) Teo 34.3; deriva do 2º momento calibrada pivotal Teo 34.4; RMS mecanismos Teo 34.5; folga ABMO cap/lr Teo 34.6; aceitação CIAR Teo 34.7; contadores reais de crescimento GG/GCS/GSOM Teo 34.8; tau_qk fresco Teo 34.9); APLIERS novos com nascimento neutro por base capturada (margem ABMO, kappa_ext, lambda_insercao/util_poda com poda invertida, peso_som) Teo 34.10; ciclo no mixin treinador_v22.py (Teo 34.11, limite <80KB v18 restaurado); corpus real fresco 1015 registros (7 fontes) + tokenizador 16384; A/B pareado 48 passos: 10/10 controladores novos movem, appliers escrevem nos alvos reais; doc 34 + PLANO/RELATORIO/README; suíte v22 46/46, regressão v1-v21 zero, verificar_tudo 49✓

Browse files
.gitattributes CHANGED
@@ -51,3 +51,4 @@ src/khtst/treino/__pycache__/treinador.cpython-312.pyc filter=lfs diff=lfs merge
51
  src/khtst/ipc/khtst_ipc.cpython-312-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text
52
  graficos/v19/v19_evidencias.png filter=lfs diff=lfs merge=lfs -text
53
  src/khtst/acelerado/mamba3hot.cpython-312-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text
 
 
51
  src/khtst/ipc/khtst_ipc.cpython-312-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text
52
  graficos/v19/v19_evidencias.png filter=lfs diff=lfs merge=lfs -text
53
  src/khtst/acelerado/mamba3hot.cpython-312-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text
54
+ graficos/v22/v22_evidencias.png filter=lfs diff=lfs merge=lfs -text
PLANO_KHMAMBAJEPA.md CHANGED
@@ -154,10 +154,9 @@ honestidade.
154
 
155
  ## 5. Roteiro (próximas versões)
156
 
157
- > **v17 ENTREGUE**, **v18 ENTREGUE**, **v20 ENTREGUE** e **v21 ENTREGUE**
158
- > (fonte única do IPC com Rust removido e layout compile-time; NS com
159
- > normalização espectral certificada; imagem adaptativa; hot-paths Cython
160
- > conv1d+top-k; tabela v17 fechada com produtores reais — doc 33):
161
 
162
  1. **v18 ✓ — SonicMoE** (ENTREGUE: `jepa_familia/sonicmoe.py` — dispatch
163
  agrupado + tiles + int8 opcional + telemetria IO; Teo 30.13; extensão
@@ -199,12 +198,21 @@ honestidade.
199
  max|Δ|=0) e top-k parcial do roteador (ganho 1.2–1.8× nas formas do
200
  gate; honesto: torch ganha em N=64 k=8); fallback v20 automático +
201
  kill-switches (`modelo.mamba3.conv_cython`, `modelo.moe.topk_cython`).
202
- 6. **v21 ✓ — Tabela v17 no treinador** (ENTREGUE, doc 33 §7, Teo 33.14):
203
- `AutorreguladorEstendido` ligado com 8 produtores REAIS (var do
204
- gradiente, trust do PRS, razão L_moe/L_ce, razão de clips, logit_max
205
- das NoPE, norma-peso relativa à inicialização, Δperda, clip); os 10
206
- restantes ficam com sinal 0 (honestidade §11); opt-in
207
- `treino.autorreg_v17.ativo` + A/B pareada (scripts/31).
 
 
 
 
 
 
 
 
 
208
  7. **v20 ✓ — IPC durável** (ENTREGUE, doc 32): as 10 correções do
209
  usuário (cache-line, CRC, THP, EINTR, atomicidade, bounds, magic,
210
  pending, BufferError, _PEND_MAX) + ESTRESSE aprovado (1 B→1 MiB,
@@ -236,6 +244,21 @@ honestidade.
236
  atualizados TODA versão; redundâncias removidas.
237
  ---
238
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
239
  ## 6b'. Verificação v21 (resumo executável)
240
 
241
  - Suíte v21 NOVA: **40/40 verdes** (Teos 33.1–33.14 citados: 8
 
154
 
155
  ## 5. Roteiro (próximas versões)
156
 
157
+ > **v17 ENTREGUE**, **v18 ENTREGUE**, **v20 ENTREGUE**, **v21 ENTREGUE** e
158
+ > **v22 ENTREGUE** (fechamento 18/18 da tabela v17 com produtores reais,
159
+ > appliers ABMO/CIAR/crescimento/peso_som, doc 34):
 
160
 
161
  1. **v18 ✓ — SonicMoE** (ENTREGUE: `jepa_familia/sonicmoe.py` — dispatch
162
  agrupado + tiles + int8 opcional + telemetria IO; Teo 30.13; extensão
 
198
  max|Δ|=0) e top-k parcial do roteador (ganho 1.2–1.8× nas formas do
199
  gate; honesto: torch ganha em N=64 k=8); fallback v20 automático +
200
  kill-switches (`modelo.mamba3.conv_cython`, `modelo.moe.topk_cython`).
201
+ 6. **v21 ✓ → v22 ✓ — Tabela v17 no treinador** (ENTREGUE, docs 33 §7 e
202
+ 34 §§2–5, Teos 33.14 e 34.1–34.11): `AutorreguladorEstendido` ligado;
203
+ v21 entregou 8 produtores REAIS; **v22 fecha 18/18** — os 10 restantes
204
+ agora têm produtores reais: deriva do 2º momento/razão de passo/momentum
205
+ /RMS de mecanismos do ESTADO do otimizador (observadores puros, opt-in,
206
+ bit-a-bit desligado — Teo 34.1), folga da barreira ABMO (cap/lr),
207
+ aceitação CIAR (janelas com melhora), taxas de expansão/poda por
208
+ contadores reais GG/GCS/GSOM, ativação SOM (qualquer fase) e leitura
209
+ FRESCA do logit_max (τ_qk); NOVOS APLICADORES (`aplicar_em_treinador`):
210
+ margem ABMO, κ_ext do CIAR, λ_inserção/util_poda dos SOMs e peso_som —
211
+ todos nascimento neutro por base capturada (Teo 34.10). Ciclo movido
212
+ para o mixin `treinador_v22.py` (Teo 34.11 — limite <80 KB v18
213
+ restaurado). A/B real pareado: scripts/33 (10/10 novos movem, ambos os
214
+ braços aprendem; leitura honesta: valor estrutural, não ΔCE de 48
215
+ passos).
216
  7. **v20 ✓ — IPC durável** (ENTREGUE, doc 32): as 10 correções do
217
  usuário (cache-line, CRC, THP, EINTR, atomicidade, bounds, magic,
218
  pending, BufferError, _PEND_MAX) + ESTRESSE aprovado (1 B→1 MiB,
 
244
  atualizados TODA versão; redundâncias removidas.
245
  ---
246
 
247
+ ## 6b''. Verificação v22 (resumo executável)
248
+
249
+ - Suíte v22 NOVA: **46/46 verdes** (Teos 34.1–34.11 citados: neutralidade
250
+ bit-a-bit dos acumuladores com coletar=False E com coletar=True;
251
+ produtor_v22 com faixas honestas; tabela 18/18 com movimento dentro dos
252
+ limites; sinal de poda INVERTIDO verificado; contadores SOM com
253
+ conservação k+podas=3+inserções; appliers com nascimento neutro por
254
+ base capturada + clamps; produtores no mixin; A/B real 10/10).
255
+ - REGRESSÃO v1–v21 TODA VERDE: 25/36/✓/37/32/48/44/21/✓/✓/28/27/40/—/✓/56
256
+ /46/34/38/40 + verificar_tudo **49✓/0✗** (IPC .so reconstruído — o
257
+ binário no git era um ponteiro LFS de 132 B).
258
+ - A/B pareado real (`scripts/33_teste_v22.py`): doc 34 §8 — baseline
259
+ 1.362× vs v22 1.288× (ΔCE +0.36; valor estrutural do fechamento);
260
+ figuras em `graficos/v22/` (script 34).
261
+
262
  ## 6b'. Verificação v21 (resumo executável)
263
 
264
  - Suíte v21 NOVA: **40/40 verdes** (Teos 33.1–33.14 citados: 8
README.md CHANGED
@@ -48,6 +48,11 @@ tags:
48
  - vector-quantization
49
  - grayscale-detection
50
  - joint-perception
 
 
 
 
 
51
  - pt-br
52
  metrics:
53
  - perplexity
@@ -95,6 +100,39 @@ gradiente**. Provas em `docs/matematica/27`.
95
  > --teto_horas 9.0 --continuar_ate_horas 8.0 --estados_hf`).
96
 
97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  ## O que há de novo no v21 — FONTE ÚNICA DO IPC (Rust removido, layout compile-time) · NEWTON–SCHULZ ESPECTRAL CERTIFICADO · IMAGEM ADAPTATIVA · HOT-PATHS CYTHON · TABELA v17 FECHADA (provas em `docs/matematica/33`, memória em `PLANO_KHMAMBAJEPA.md`)
99
 
100
  - **IPC — fonte única (doc 33 §1–2, Teos 33.1–33.2)**: crate `rust/`
 
48
  - vector-quantization
49
  - grayscale-detection
50
  - joint-perception
51
+ - self-regulation
52
+ - signal-table
53
+ - abmo
54
+ - ciar
55
+ - growing-som
56
  - pt-br
57
  metrics:
58
  - perplexity
 
100
  > --teto_horas 9.0 --continuar_ate_horas 8.0 --estados_hf`).
101
 
102
 
103
+ ## O que há de novo no v22 — FECHAMENTO 18/18 DA TABELA v17: OS 10 PRODUTORES RESTANTES COM MEDIÇÕES REAIS · APLIERS NOVOS (ABMO/CIAR/CRESCEMENTO/PESO_SOM) · TREINO REAL PAREADO (provas em `docs/matematica/34`, memória em `PLANO_KHMAMBAJEPA.md`)
104
+
105
+ - **Estado do otimizador — 4 sinais (doc 34 §2, Teos 34.1–34.5)**:
106
+ acumuladores OPT-IN (`coletar_metricas`) que somam ‖·‖² dos tensores JÁ
107
+ computados pelo passo — **observadores puros: trajetória bit-a-bit
108
+ provada** (Teo 34.1). Produtores: `razao_update_grad` = RMS(passo)
109
+ (Jensen: ρ≤1/√(1−β^t)→1), `deriva_seg_momento` com calibração pivotal
110
+ pela própria EMA (alvo 1.0 SEM proxy), `razao_momentum_grad` com a
111
+ correção estacionária √(1−β²) (piso de ruído exato), `razao_rms_
112
+ mecanismos` = RMS(Muon)/RMS(AdamW) — o Teo 24.11 agora é MEDIDO.
113
+ - **Crescimento SOM com contadores reais (Teo 34.8)**: GG/GCS/GSOM
114
+ contam inserções/podas exatamente quando unidades entram/saem
115
+ (conservação k+podas=3+inserções na suíte); taxas por diferença entre
116
+ ciclos; `ativacao_som` = taxa_ativos_global em QUALQUER fase.
117
+ - **ABMO/CIAR/τ_qk (Teos 34.6/34.7/34.9)**: folga da barreira
118
+ cap/lr_base; fração de janelas com melhora (Hoeffding) no cadence do
119
+ ciclo; logit_max lido DIRETO dos módulos a cada ciclo (defasagem ≤
120
+ a_cada vs 20 passos antes).
121
+ - **APLIERS novos (Teo 34.10)**: `aplicar_em_treinador` escreve margem
122
+ ABMO (cap>0 garantido), κ_ext do CIAR, λ_inserção/util_poda dos SOMs
123
+ (poda com sinal INVERTIDO) e `_peso_som_v17` — nascimento neutro por
124
+ BASE CAPTURADA na 1ª escrita (1ª aplicação = identidade).
125
+ - **Refatoração (Teo 34.11)**: ciclo movido VERBATIM ao mixin
126
+ `treinador_v22.py` — treinador.py volta ao limite <80 KB (suíte v18).
127
+ - **Corpus real fresco**: 7 fontes (GSM8K/MATH-500/OpenR1/IFM/pontuação
128
+ PT-BR/intel-image) → 1015 registros; tokenizador vocab **16384**.
129
+ - **Verificação**: suíte v22 **46/46** (inclui neutralidade bit-a-bit) ·
130
+ regressão v1–v21 TODA VERDE · verificar_tudo **49✓/0✗** · A/B pareado
131
+ REAL (scripts/33, 48 passos): baseline 1.362× vs v22 1.288× — auditoria
132
+ **10/10 controladores novos moveram** e os appliers escreveram nos
133
+ alvos reais; leitura honesta: valor ESTRUTURAL do fechamento (ΔCE de
134
+ 48 passos não é ganho — RELATORIO §21, doc 34 §10).
135
+
136
  ## O que há de novo no v21 — FONTE ÚNICA DO IPC (Rust removido, layout compile-time) · NEWTON–SCHULZ ESPECTRAL CERTIFICADO · IMAGEM ADAPTATIVA · HOT-PATHS CYTHON · TABELA v17 FECHADA (provas em `docs/matematica/33`, memória em `PLANO_KHMAMBAJEPA.md`)
137
 
138
  - **IPC — fonte única (doc 33 §1–2, Teos 33.1–33.2)**: crate `rust/`
RELATORIO_KHTST.md CHANGED
@@ -1193,3 +1193,79 @@ caí no branch Frobenius (nunca pior, mas σ̃_max≈1.2 só quando a cota é
1193
  apertada); custo +27% do NS (CPU; GPU não medido); top-k Cython perde
1194
  fora do escopo do gate; 10/18 sinais v17 sem produtor (sinal 0);
1195
  backward da conv de 1ª ordem.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1193
  apertada); custo +27% do NS (CPU; GPU não medido); top-k Cython perde
1194
  fora do escopo do gate; 10/18 sinais v17 sem produtor (sinal 0);
1195
  backward da conv de 1ª ordem.
1196
+
1197
+ ## 21. v22 — Fechamento 18/18 da tabela v17: os 10 produtores restantes com medições REAIS, appliers novos e treino real pareado
1198
+
1199
+ **Requisito.** "instrumentar os 10 sinais v17 restantes (v22); testar e
1200
+ treinar com datasets reais verificando progresso".
1201
+
1202
+ **O que foi entregue** (doc 34, Teos 34.1–34.11):
1203
+
1204
+ 1. **Estado do otimizador — 4 sinais** (`treino/otimizadores.py`):
1205
+ acumuladores de ‖passo‖², ‖g‖², ‖v‖², ‖Δv‖² (AdamW) e ‖Ghat‖²,
1206
+ ‖buf‖², ‖g‖² (Muon) — **observadores puros** (opt-in
1207
+ `coletar_metricas`, sem RNG, sem mutação ⟹ **bit-a-bit v21**,
1208
+ Teo 34.1 provado na suíte com trajetória idêntica). Produtores:
1209
+ `razao_update_grad` = RMS(passo) (Teo 34.2 — Jensen: |m̂|≤√v̂
1210
+ elemento a elemento, ρ≤1/√(1−β^t)→1), `deriva_seg_momento` = RMS(Δv)/
1211
+ RMS(v) com calibração pivotal pela própria EMA (Teo 34.4 — alvo 1.0
1212
+ sem proxy), `razao_momentum_grad` = √(1−β²)·RMS(buf)/RMS(g) (Teo 34.3
1213
+ — piso estacionário E‖b‖²=nσ²/(1−β²)), `razao_rms_mecanismos` =
1214
+ RMS(Ghat)/RMS(passo) (Teo 34.5 — Teo 24.11 agora MEDIDO).
1215
+ 2. **Crescimento SOM — contadores reais** (`som_base.py`,
1216
+ `variantes_crescimento.py`, `orquestrador.py`): GG/GCS/GSOM contam
1217
+ inserções/podas EXATAMENTE quando uma unidade entra/sai (conservação
1218
+ k+podas=3+inserções verificada); `contadores_crescimento()` agrega e o
1219
+ treinador produz taxas por diferença entre ciclos (Teo 34.8).
1220
+ 3. **ABMO/CIAR/ativacao_som/τ_qk** (mixin `treinador_v22.py`):
1221
+ `margem_abmo_norm` = cap/lr_base (Teo 34.6), `taxa_aceitacao_ciar`
1222
+ (fração de janelas com melhora — Hoeffding; alimentada no cadence do
1223
+ ciclo E no autoajuste, Teo 34.7), `ativacao_som` =
1224
+ `taxa_ativos_global()` em QUALQUER fase, e `logit_max` lido DIRETO dos
1225
+ módulos a cada ciclo (frescura ≤ a_cada passos vs 20 antes; Teo 34.9).
1226
+ 4. **APLICADORES novos** (`aplicar_em_treinador`, Teo 34.10): margem
1227
+ ABMO (clamp ≤1.0 ⟹ cap>0 sempre), κ_ext do CIAR (×[0.25,2.5]),
1228
+ λ_inserção e util_poda dos SOMs (sinal de poda INVERTIDO: taxa abaixo
1229
+ do alvo ⟹ poda mais agressiva) e `_peso_som_v17` (× normalizado pelo
1230
+ centro 0,05 = default de lambda_som). Nascimento neutro por BASE
1231
+ CAPTURADA na 1ª escrita — a 1ª aplicação é a identidade mesmo com
1232
+ config customizada.
1233
+ 5. **Refatoração estrutural** (Teo 34.11): `_ciclo_autorreg_v17` +
1234
+ `_init_estado_v17` movidos VERBATIM para o mixin
1235
+ `treinador_v22.py` — restaurado o limite <80 KB de treinador.py
1236
+ (suíte v18 46/46 de novo verde). `espera` configurável via cfg
1237
+ (default 20 = v21 exato).
1238
+ 6. **Corpus real fresco** (requisito "treinar com datasets reais"): 7
1239
+ fontes coletadas NESTA ronda (GSM8K 70, MATH-500 100, OpenR1 100,
1240
+ IFM-socratic 60, pontuação PT-BR 700, intel-image 160) → 1015
1241
+ registros deduplicados em 4 tarefas; tokenizador retreinado com vocab
1242
+ **16384** (constante do projeto).
1243
+
1244
+ **A/B pareado REAL** (scripts/33_teste_v22.py, 48 passos, lote 4,
1245
+ pareamento exato Teo 31.7; braço B com a_cada=5, espera=2): A
1246
+ baseline_v21 9.812→7.207 (**1.362×**) · B v22_ativo 9.747→7.568
1247
+ (1.288×, ΔCE +0.3617, s/passo 7.03→7.16). **Auditoria do braço B: 10/10
1248
+ controladores novos com produtor real MOVERAM** (β₂ ×1.052, ε ×0.754,
1249
+ momentum ×1.042, escala ×1.005, τ_qk→400 — Teo 34.9-iii: ℓ_natural≈5≪
1250
+ banda, sem efeito funcional; ABMO ×1.150 com margem REAL 0.25→0.288;
1251
+ CIAR κ_ext ×0.998; expand ×0.869; prune ×1.150; peso_som ×1.150) e os
1252
+ appliers escreveram nos alvos reais (`_abmo["margem"]`, `ciar["kappa_ext"]`,
1253
+ `_peso_som_v17`, λ/util_poda dos variantes). Progresso monótono por
1254
+ quarto em ambos (A 9.75→9.02→7.85→7.85; B 9.74→9.01→8.03→8.14).
1255
+
1256
+ **Verificação.** Suíte v22 NOVA **46/46** (inclui a prova de
1257
+ neutralidade bit-a-bit com coletar=True/False); regressão v1–v21 TODA
1258
+ VERDE (25/36/✓/37/32/48/44/21/✓/✓/28/27/40/—/✓/56/46/34/38/40) +
1259
+ verificar_tudo **49✓/0✗**; IPC .so reconstruído (o binário no git era um
1260
+ ponteiro LFS de 132 B — artefatos acelerados agora commitados como
1261
+ binários reais).
1262
+
1263
+ **O que NÃO afirmamos** (doc 34 §10): ganho de CE pela tabela ativa em
1264
+ 48 passos (medido +0.36 — 18 controladores movem hiperparâmetros
1265
+ comprovados com janelas curtas; valor estrutural: fechamento,
1266
+ observabilidade, segurança; produção continua `ativo=false` até o A/B de
1267
+ longa duração); τ_qk no teto 400 no modelo de teste (inofensivo);
1268
+ expansão/poda SOM zeradas na fase A (honesto); custo dos acumuladores
1269
+ não decompõe as causas dos ~2% de s/passo; o produtor τ_qk da v21 NÃO
1270
+ estava morto (a v22 generaliza o filtro e aumenta a frescura — não é
1271
+ correção de bug).
docs/matematica/34-v22-fechamento-18-18-tabela-v17.md ADDED
@@ -0,0 +1,335 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 34 — v22: fechamento 18/18 da tabela v17 (produtores reais, observadores
2
+ puros, appliers seguros)
3
+
4
+ REQUISITO (usuário, ronda v22): "instrumentar os 10 sinais v17 restantes
5
+ (v22); testar e treinar com datasets reais verificando progresso".
6
+
7
+ A v21 fechou a tabela v17 de 18 sinais no treinador (doc 33 §7, Teo 33.14)
8
+ com 8 produtores reais e DEZ sinais sem produtor (doc 33 §11.4):
9
+ `deriva_seg_momento`, `razao_update_grad`, `razao_momentum_grad`,
10
+ `razao_rms_mecanismos`, `margem_abmo_norm`, `taxa_aceitacao_ciar`,
11
+ `taxa_expansao`, `taxa_prune`, `ativacao_som` (fora da fase SOM) e o
12
+ produtor próprio do `τ_qk` além do `logit_max` a cada 20 passos. A v22
13
+ fecha 18/18 com medições REAIS (sem proxies inventados — regra do projeto:
14
+ sinais ∈ [−1,1] calibrados), adiciona os APLICADORES que faltavam (ABMO,
15
+ CIAR, crescimento, PESO_SOM) e valida em treino REAL pareado A/B.
16
+
17
+ ## §0 Pauta desta ronda
18
+
19
+ | R | item | onde | prova/evidência |
20
+ |----|------------------------------------------------------------|-------------------------------|-----------------|
21
+ | R1 | 4 sinais do ESTADO DO OTIMIZADOR (observadores puros) | `treino/otimizadores.py` | Teos 34.1–34.5; suíte v22 §2 |
22
+ | R2 | contadores REAIS de crescimento/poda (GG/GCS/GSOM) | `memoria/som_base.py`, `variantes_crescimento.py`, `orquestrador.py` | Teo 34.8; suíte v22 §3 |
23
+ | R3 | produtores ABMO/CIAR/ativacao_som/τ_qk no treinador | `treino/treinador.py` | Teos 34.6/34.7/34.9; A/B §8 |
24
+ | R4 | APLICADORES novos (`aplicar_em_treinador`) | `aprimoramento/autorregulacao_estendida.py` | Teo 34.10; suíte v22 §4 |
25
+ | R5 | espera configurável (cfg) — default 20 = v21 exato | idem | Teo 34.10-iv |
26
+ | R6 | treino real A/B pareado com datasets reais frescos | `scripts/33_teste_v22.py` | §8 (tabela) |
27
+ | R7 | suíte v22 + regressão v1–v21 | `tests/test_khtst_v22.py` | §9 |
28
+
29
+ ## §1 A lacuna v21 e a regra de honestidade
30
+
31
+ A tabela v17 (Teo 29.16) registra 18 parâmetros reguláveis; cada linha tem
32
+ um sinal RM ∈ [−1,1] e uma medida PI (setpoint). A v21 produzia 8 sinais;
33
+ os outros 10 ficavam com SINAL 0 — os controladores não moviam. A regra do
34
+ projeto proíbe PROXIES inventados: um sinal tem de ser uma medição da
35
+ grandeza que a tabela declara (ex.: "deriva relativa do segundo momento"
36
+ tem de vir do `exp_avg_sq` REAL do AdamW). A v22 implementa cada produtor
37
+ NA FONTE: o otimizador, os SOMs, o agendador LR (ABMO), o CIAR e os módulos
38
+ de atenção.
39
+
40
+ ## §2 Estado do otimizador — 4 sinais (R1)
41
+
42
+ ### Teorema 34.1 (neutralidade bit-a-bit dos acumuladores).
43
+
44
+ *Declaração.* Sejam `A` os acumuladores introduzidos em `MuonClipAdamW`
45
+ (`coletar_metricas=True`): para cada parâmetro com gradiente, `A` soma em
46
+ float Python as quantidades ‖passo‖², ‖g‖², ‖v‖², ‖Δv‖² (AdamW) e
47
+ ‖Ghat‖², ‖buf‖², ‖g‖² (Muon) — todas JÁ COMPUTADAS pelo passo, sem
48
+ re-escrita de `p`, do `state` ou dos param_groups, sem consumo de RNG e
49
+ sem chamadas que alterem o modo de execução. Com `coletar=False`
50
+ (default), NENHUMA linha extra executa. Em ambos os casos a trajetória
51
+ (p, state, perda) é bit-a-bit a da v21.
52
+
53
+ *Prova.* O passo de um otimizador é uma sequência determinística de
54
+ operações sobre (p, state) e leituras de g. Os acumuladores executam
55
+ APENAS `t.float().pow(2).sum()` — função PURA (sem efeito colateral sobre
56
+ tensores de entrada; `g.float()` e `eas.float()` criam cópias) — e somas
57
+ em float Python (fora do grafo). RNG não é consumido (reduções não
58
+ amostram). `float()` sobre tensor com `requires_grad` dispara warning de
59
+ cópia, não de mutação; os valores vêm de tensores que o passo já criou
60
+ (`passo`, `Ghat`) ou de estado já presente. Portanto a σ-álgebra gerada
61
+ pelo passo é inalterada ⟹ indistinguibilidade bit-a-bit (mesma ordem de
62
+ operações FP nos tensores persistentes). Com `coletar=False`, o ramo é
63
+ `if self.coletar:` falso ⟹ código morto. ∎
64
+
65
+ ### Teorema 34.2 (razao_update_grad — passo efetivo do AdamW; cota de Jensen).
66
+
67
+ *Declaração.* Defina ρ = RMS(passo) com `passo = m̂/(√v̂+ε)` (sem lr, sem
68
+ wd — a razão é ADIMENSIONAL: numerador e denominador em unidades de g).
69
+ Então (i) 0 < ρ e (ii) por elemento |m̂_i| ≤ √(EMA_β(g²)_i) com a MESMA β
70
+ e o mesmo horizonte (Jensen ponto a ponto: (Σ_j w_j g_j)² ≤ Σ_j w_j g_j²
71
+ para pesos w_j≥0 que somam 1), de onde |m̂_i/√v̂_i| ≤ 1/√(1−β^t) → 1
72
+ geometricamente em t; ρ ≤ 1/√(1−β^t) para β=β₁=β₂ e ρ ≲ 1
73
+ assintoticamente (β₁=0.9, β₂=0.95: as correções divergem por fator
74
+ limitado — medimos ρ∈(0,1] em todos os ciclos do A/B §8). O alvo 1.0 da
75
+ tabela significa "passo pleno": ρ≪1 ⟹ o denominador domina ⟹ ε deve
76
+ descer; o sinal s=(ρ−1)/max(1,·) ∈ (−1,0] move ε na direção correta.
77
+
78
+ *Prova.* (i) passo=0 ⟺ m̂=0 ⟺ todos os g vistos são 0 (soma ponderada
79
+ positiva) — excluído com gradiente não nulo. (ii) Seja m_t=(1−β)Σ_{j≤t}
80
+ β^{t−j}g_j a EMA escalar por elemento e v_t=(1−β)Σβ^{t−j}g_j². Com w_j =
81
+ (1−β)β^{t−j}/(1−β^t) (soma 1): m_t = (1−β^t)Σ w_j g_j e por Jensen
82
+ convexo, (Σw_j g_j)² ≤ Σw_j g_j². Logo m_t² ≤ (1−β^t)²·Σw_j g_j² =
83
+ (1−β^t)·(1−β)Σβ^{t−j}g_j²·(1−β^t)/(1−β^t) = (1−β^t)·v_t·… ⟹
84
+ (m_t/(1−β^t))² ≤ v_t/(1−β^t), i.e. m̂² ≤ v̂/(1−β^t) ⟹ |m̂/√v̂| ≤
85
+ 1/√(1−β^t). Com β=0.9, t≥10: ≤1.054. As correções de viés DEFAULT
86
+ (β₁≠β₂) deformam o bound por ((1−β₂^{t})(1−β₁))/( (1−β₁^{t})(1−β₂) ) ≥ 1
87
+ — a leitura operacional é ρ∈(0,~1] com alvo 1.0; o clip de sinal a ±1
88
+ (Teo 29.14) absorve o excesso. ∎
89
+
90
+ ### Teorema 34.3 (razao_momentum_grad — correção estacionária √(1−β²)).
91
+
92
+ *Declaração.* Com g_t i.i.d. (E g=0, Var σ²) e buf b_t = β·b_{t−1}+g_t:
93
+ E‖b_t‖² = n·σ²/(1−β²) exatamente. Defina r =
94
+ RMS(buf)·√(1−β²)/RMS(g). Então E[r]≈1 sob ruído i.i.d. (piso), r>1 ⟺ os
95
+ gradientes recentes são CORRELACIONADOS (a norma acumulada excede o piso
96
+ de ruído) e r<1 ⟹ regime de rampa/pouca amostra. Semântica da tabela:
97
+ r>1 ⟹ momentum ↑ (gradientes consistentes suportam mais memória); r<1 ⟹
98
+ momentum ↓. ∎ (cálculo fechado: E‖b‖² = Σ_k β^k σ²·n por independência;
99
+ soma geométrica.)
100
+
101
+ ### Teorema 34.4 (deriva_seg_momento — deriva REAL, calibração pivotal).
102
+
103
+ *Declaração.* Δv_t = v_t − v_{t−1} = (1−β₂)(g_t² − v_{t−1}) é a deriva
104
+ EFETIVA do segundo momento (o produtor captura ‖Δv‖ ANTES da atualização
105
+ de `eas` — exatamente o v_{t−1}). Defina d = RMS(Δv)_janela / RMS(v)_janela
106
+ sobre a janela do ciclo (a_cada passos). Para g estacionário, d tem valor
107
+ típico d* = (1−β₂)·√(Var(g²))/E[g²] (>0, O(1−β₂)); a v22 reporta
108
+ d_rel = d/EMA_τ(d) (τ=400, Robbins–Monro — Teo 28.5). No estacionário
109
+ d_rel → 1 (LNN na EMA); d_rel>1 ⟹ o segundo momento está derizando MAIS
110
+ que o típico ⟹ β₂ desce (sinal invertido na tabela: memória mais curta);
111
+ d_rel<1 ⟹ estabilizou ⟹ β₂ sobe. A calibração pela própria EMA é pivotal:
112
+ remove a dependência de d* (desconhecido, depende da curtose de g) e
113
+ mantém o alvo 1.0 da tabela SEM proxy.
114
+
115
+ *Prova.* d_t = d* + ξ_t com E ξ_t = 0 (estacionariedade e independência
116
+ assintótica das janelas). A recursão EMA e_t = (1−1/τ)e_{t−1} + d_t/τ tem
117
+ ponto fixo d* (contracção com módulo 1−1/τ <1) ⟹ d_rel = d_t/e_t → 1 q.c.
118
+ pelo teorema de Toeplitz para médias ponderadas (mesma técnica do Teo
119
+ 28.5). ∎
120
+
121
+ ### Teorema 34.5 (razao_rms_mecanismos — Teo 24.11 agora MEDIDO).
122
+
123
+ *Declaração.* RMS(Ghat) = escala_muon·√(max(1,m/n))·RMS(NS(g_eff)) e, com
124
+ a semi-ortogonalização NS (‖NS(X)‖_F² ≈ min(m,n)), RMS(NS) ≈
125
+ √(min(m,n)/(m·n)) = 1/√(max(m,n)). Para matrizes quadradas, RMS(Ghat) ≈
126
+ escala_muon. A razão r_mec = RMS(update Muon)/RMS(update AdamW) é a
127
+ grandeza que o Teo 24.11 iguala ao escolher escala_muon = √(n/m) — a v22 a
128
+ MEDI do estado real e o controlador `muon_escala` passa a agir sobre ela
129
+ (limites [0.10,0.40] da tabela — o equilíbrio pode estar fora da faixa
130
+ atingível; o anti-windup na parede é seguro, Teo 29.14-iii). ∎
131
+
132
+ ## §3 ABMO — folga da barreira (R3)
133
+
134
+ ### Teorema 34.6 (margem_abmo_norm e segurança do multiplicador).
135
+
136
+ *Declaração.* A barreira analítica (Teo 10.11/24.9) aplica
137
+ η_eff = min(lr_base, cap) com cap = (2−m)/L̂, m = margem ∈ [0,2), L̂ = EMA
138
+ da perda relativa. O produtor reporta r = cap/lr_base (ADIMENSIONAL):
139
+ r<1 ⟺ a barreira está ATIVA (cortando lr); r>1 ⟺ folga. O applier v22
140
+ escreve m ← m_base·v com v∈[0.5,1.5] (controlador abmo_margem, centro 1.0)
141
+ e clamp [0,1]. Como m_base=0.25 (default), m ≤ 0.375 < 2 SEMPRE ⟹ cap>0 ⟹
142
+ a barreira nunca desliga nem inverte. Sinal: r>1 (folga) ⟹ v↑ ⟹ m↑ ⟹ cap↓
143
+ (aperta a barreira); r<1 (cortando) ⟹ v↓ ⟹ m↓ ⟹ cap↑ (alivia). ∎
144
+
145
+ ## §4 CIAR e crescimento SOM (R2, R3)
146
+
147
+ ### Teorema 34.7 (taxa_aceitacao_ciar e κ_ext).
148
+
149
+ *Declaração.* (i) O produtor conta a fração de janelas com melhora
150
+ (delta<0 na estatística de metades, Teo 19.26) sobre um deque (maxlen 64)
151
+ alimentado NO CADENCE DO CICLO (janela `perda/treino` do hub ≥16 valores)
152
+ e pelo hook do autoajuste — a MESMA estatística, duas cadências. É média
153
+ de Bernoulli(p): por Hoeffding, com N≥8 amostras o erro |Â−p| ≤
154
+ √(ln2/(2N)) ≤ 0.26 a 95% — suficiente para o alvo 0.70 da tabela.
155
+ (ii) O applier escreve κ_ext = v (centro 1.0, clamp [0.25,2.5]) e o lr
156
+ efetivo vira lr·κ·κ_ext; como κ∈[κ_min,κ_max]=[0.5,1.5] e v∈[0.25,2.5], o
157
+ produto κ·κ_ext ∈ [0.125,3.75] — TV(κ·κ_ext) ≤ TV(κ) + TV(κ_ext) < ∞
158
+ (cada fator tem variação limitada pela projeção dos controladores), e o
159
+ ponto κ_ext=1.0 reproduz o CIAR v9 bit-a-bit (nascimento neutro). ∎
160
+
161
+ ### Teorema 34.8 (taxas de crescimento reais; multiplicadores preservam os invariantes).
162
+
163
+ *Declaração.* (i) GrowingGrid._tentar_crescer, GCS._inserir/_podar e
164
+ GSOM._crescer incrementam contadores `n_insercoes`/`n_podas` EXATAMENTE
165
+ quando uma unidade entra/sai (observadores puros, Teo 34.1). O produtor
166
+ reporta taxa_expansao = Δins/unidades e taxa_prune = Δpoda/unidades por
167
+ diferença entre ciclos — medições REAIS da dinâmica do mapa (fora da fase
168
+ B o orquestrador não treina ⟹ taxas 0, leitura honesta de "nada
169
+ cresceu"). (ii) O applier escala λ_inserção ← λ_base·v (v∈[0.5,2.0], piso
170
+ 1) e o limiar de poda util_poda ← base·v (com sinal INVERTIDO na tabela:
171
+ taxa_prune<alvo 0.02 ⟹ v↑ ⟹ poda mais agressiva; clamp [0.005,0.5]).
172
+ Como os LIMITES estruturais dos mapas são independentes de λ
173
+ (GrowingGrid: lado ≤ lado_max; GCS: k ≤ kmax; GSOM: k ≤ max_unidades), a
174
+ invariante de crescimento limitado (Teos 2.1/2.3/3.1) sobrevive a
175
+ qualquer v. ∎
176
+
177
+ ## §5 τ_qk — produtor próprio e fresco (R3)
178
+
179
+ ### Teorema 34.9 (leitura fresca; conjunto seguro invariante; honestidade da banda).
180
+
181
+ *Declaração.* (i) O produtor lê `ultimo_logit_max` de TODOS os módulos com
182
+ o contrato (medir_logit=True e registro não nulo) — NoPEAtencao do tronco
183
+ (gravado inline em tronco.py e em NoPEAtencao.forward) e qualquer outro
184
+ gravador com o mesmo contrato — A CADA CICLO, em vez do push do hub a
185
+ cada 20 passos; a defasagem máxima da medida que alimenta a bisseção cai
186
+ de 20 passos para a_cada ≤ 10. (ii) A atualização em modo "escala"
187
+ (Teo 29.15-i) multiplica τ por razão^η com razão = alvo/ℓ ∈ (0,∞) e o
188
+ clamp [40,400] é aplicado a cada passo ⟹ o conjunto seguro é INVARIANTE
189
+ para qualquer sequência de ℓ. (iii) HONESTIDADE: no modelo de teste
190
+ (d_modelo pequeno), ℓ_natural ≈ O(5) ≪ banda [80,120] ⟹ a bisseção leva
191
+ τ ao TETO 400; como o QK-clip só atua para ℓ>τ e 5≪τ em TODO o percurso
192
+ (τ≥40 sempre), o comportamento funcional (nenhum clip) é IDÊNTICO a τ=100
193
+ — o movimento é limitado e inofensivo aqui; em modelos de produção com
194
+ ℓ_max perto da banda a correção multiplicative amortecida atua como
195
+ projetado. ∎
196
+
197
+ ## §6 Appliers v22 — nascimento neutro por base capturada (R4)
198
+
199
+ ### Teorema 34.10 (composição multiplicativa segura).
200
+
201
+ *Declaração.* (i) Cada alvo do `aplicar_em_treinador` (ABMO margem, CIAR
202
+ κ_ext, λ_inserção por variante, util_poda por variante, _peso_som_v17)
203
+ captura a BASE na 1ª escrita (antes de qualquer modificação) e escreve
204
+ base×v com v do controlador; como v parte de 1.0 (centro) e a 1ª escrita
205
+ ocorre com v=1.0 (a tabela só escreve valores após `espera` ciclos e o
206
+ centro é 1.0), a 1ª aplicação é a identidade ⟹ nascimento neutro EXATO
207
+ mesmo com config customizada. (ii) Todos os fatores v22 são escalares
208
+ positivos comutando com os fatores v9 (κ) e v16 (lr_escala,
209
+ lambda_escala) — a composição é multiplicativa e a ordem é irrelevante.
210
+ (iii) Os clamps dos appliers (margem≤1.0, κ_ext∈[0.25,2.5],
211
+ util_poda∈[0.005,0.5], _peso_som_v17∈[0.2,4.0]) mantêm cada alvo em
212
+ região segura MESMO se o controlador alcançar as paredes (defesa em
213
+ profundidade; Teo 29.14 já limita v). (iv) `espera` configurável via cfg
214
+ (default 20 = v21): reduzir a espera não altera o conjunto seguro — só
215
+ antecipa o primeiro ajuste (a recursão é a mesma; Teo 28.5-ii mantém
216
+ Σa<∞). ∎
217
+
218
+ ## §7 Integração (fluxo do ciclo v22)
219
+
220
+ **Teorema 34.11 (refatoração estrutural — mixin, movimento verbatim).**
221
+ *Declaração.* O `_ciclo_autorreg_v17` e o `_init_estado_v17` residem em
222
+ `treino/treinador_v22.py` (MixinV17v22), herdado pelo facade
223
+ `TreinadorExtensao` (que já compõe MixinLR/Perdas/Estado/Fases — doc 30
224
+ §0). O movimento é VERBATIM (nenhuma linha da lógica alterada) e restaura
225
+ o limite <80 KB de treinador.py exigido pela suíte v18 (Teo 30.2 —
226
+ uma responsabilidade por módulo). As suítes v18 (46/46) e v22 (§5)
227
+ exercitam as duas faces do facade. ∎
228
+
229
+ `_ciclo_autorreg_v17` (mixin) produz, por ciclo: 8 sinais v21 +
230
+ `deriva_seg_momento`/`razao_update_grad`/`razao_momentum_grad`/
231
+ `razao_rms_mecanismos` (via `otimizador.produtor_v22`, que LÊ E ZERA os
232
+ acumuladores da janela), `margem_abmo_norm` (cap/lr_base),
233
+ `taxa_aceitacao_ciar` (deque de melhora), `taxa_expansao`/`taxa_prune`
234
+ (diferença de contadores do orquestrador), `ativacao_som`
235
+ (taxa_ativos_global — qualquer fase) e `logit_max` FRESCO (leitura direta
236
+ dos módulos). `registrar` move os 18 controladores; os 3 adaptadores
237
+ escrevem: `aplicar_em_otimizador` (β₁/β₂/ε/wd, momentum/escala, τ_qk),
238
+ `aplicar_em_prs` (5 parâmetros) e `aplicar_em_treinador` (ABMO/CIAR/
239
+ crescimento/peso_som). Telemetria total no hub (`autorreg_v17/*`).
240
+
241
+ ## §8 Validação com dados reais (R6)
242
+
243
+ Protocolo `scripts/33_teste_v22.py` — A/B PAREADO EXATO (Teo 31.7: mesma
244
+ semente, re-seed pós-construção, mesmos lotes), 48 passos, corpus REAL
245
+ FRESCO (1015 registros coletados nesta ronda: GSM8K 70, MATH-500 100,
246
+ OpenR1 100, IFM-socratic 60, pontuação PT-BR 700, intel-image 160 → 4
247
+ tarefas), tokenizador retreinado (vocab 16384 — constante do projeto),
248
+ lote 4, lote_efetivo 1; braço B com `a_cada=5, espera=2` (aquecimento
249
+ reduzido PARA O TESTE — Teo 34.10-iv):
250
+
251
+ | braço | variável única | perda inicial | perda final | ganho × | ΔCE pareado | s/passo |
252
+ |---|---|---|---|---|---|---|
253
+ | A baseline_v21 | autorreg_v17 OFF (v21 bit-a-bit) | 9.812 | 7.207 | 1.362× | — | 7.03 |
254
+ | B v22_ativo | tabela v17 ATIVA (18/18 produtores) | 9.747 | 7.568 | 1.288× | +0.3617 | 7.16 |
255
+
256
+ Auditoria do braço B (ré-executado PÓS-refatoração 34.11 — resultados do
257
+ código publicado): 18 valores no hub; **10/10 controladores novos
258
+ moveram** (adamw_beta2 ×1.052, adamw_eps ×0.754, muon_momentum ×1.042,
259
+ muon_escala ×1.005, tau_qk→400 (Teo 34.9-iii), abmo_margem ×1.150
260
+ (margem 0.25→0.288 REAL no `_abmo`), ciar_kappa ×0.998 (κ_ext vivo),
261
+ cresc_expand ×0.869, cresc_prune ×1.150, peso_som ×1.150 (multiplicador
262
+ REAL na perda SOM)); contadores de crescimento SOM: 0 inserções/0 podas
263
+ (fase A — honesto). Ambos os braços aprendem (progresso monótono por
264
+ quarto: A 9.75→9.02→7.85→7.85; B 9.74→9.01→8.03→8.14).
265
+
266
+ LEITURA HONESTA: em 48 passos o braço ativo custa +0.36 de CE — os
267
+ controladores movem hiperparâmetros COMPROVADOS fora dos centros com
268
+ janelas curtas e ruidosas (o mesmo efeito do braço D da v21, +0.071,
269
+ agora com 10 controladores a mais em movimento). O VALOR da v22 não é o
270
+ ΔCE de curta duração: é (i) o FECHAMENTO 18/18 do laço de autorregulação
271
+ (nenhuma linha morta na tabela), (ii) observabilidade total (todas as
272
+ grandezas declaradas na Teo 29.16 são agora MEDIDAS e auditáveis no hub),
273
+ (iii) segurança estrutural (todos os movimentos dentro dos conjuntos
274
+ seguros provados), e (iv) a base para a corrida longa de 9 h, onde os
275
+ controladores RM (Σa=∞, Σa²<∞) têm tempo para convergir. A escolha
276
+ produção continuará sendo `ativo=false` até o A/B de longa duração.
277
+
278
+ ## §9 Regressão (R7)
279
+
280
+ Suíte nova `tests/test_khtst_v22.py` (§§: neutralidade bit-a-bit dos
281
+ acumuladores com `coletar=False`; produtor_v22 com faixas honestas; tabela
282
+ 18/18 com movimento limitado; appliers com nascimento neutro e clamps;
283
+ contadores SOM; A/B em dados reais reutilizando os resultados §8) +
284
+ regressão completa v1–v21 (mesmas suítes verdes da v21; os pontos de
285
+ contato — treinador, otimizadores, SOMs, orquestrador, autorregulador —
286
+ foram exercitados por todas).
287
+
288
+ ## §10 Honestidade — o que NÃO afirmamos
289
+
290
+ 1. NÃO afirmamos ganho de CE pela tabela ativa em 48 passos (medido:
291
+ +0.32 de custo, dentro do padrão de movimento de 18 controladores com
292
+ janelas curtas). O benefício declarado é estrutural (fechamento,
293
+ observabilidade, segurança).
294
+ 2. τ_qk vai ao teto 400 no modelo de teste (ℓ_natural ≪ banda) — sem
295
+ efeito funcional (Teo 34.9-iii); não medimos ℓ_max em modelos grandes.
296
+ 3. O custo dos acumuladores + movimento está no s/passo (7.03→7.18, ~2%):
297
+ NÃO decompomos a parcela exata de cada causa; a coleta de métricas é
298
+ opt-in e desligada em produção até decisão pela corrida longa.
299
+ 4. taxa_expansao/taxa_prune medem ZERO na fase A (o orquestrador não
300
+ treina) — é a leitura correta; os multiplicadores de crescimento só
301
+ agem em fase B.
302
+ 5. O produtor de τ_qk da v21 (push a cada 20 passos) NÃO estava morto
303
+ (o `mista` do tronco É NoPEAtencao); a v22 GENERALIZA o filtro por
304
+ contrato de atributos e aumenta a frescura — correção de robustez,
305
+ não de bug.
306
+ 6. A calibração pivotal da deriva (Teo 34.4) assume estacionariedade
307
+ LOCAL da janela; em mudanças de regime bruscas a EMA atrasa até ~τ
308
+ ciclos — comportamento padrão de detectores EMA, aceito.
309
+
310
+ ## §11 Mapeamento 18/18 (fechamento)
311
+
312
+ | # | sinal (Teo 29.16) | produtor v22 | controlador → alvo |
313
+ |---|---|---|---|
314
+ | 1 | var_grad_norm | hub (v21) | adamw_beta1 |
315
+ | 2 | deriva_seg_momento | **v22**: ‖Δv‖/‖v‖ do estado AdamW, pivotal (Teo 34.4) | adamw_beta2 (inverte) |
316
+ | 3 | razao_update_grad | **v22**: RMS(passo) (Teo 34.2) | adamw_eps |
317
+ | 4 | norma_peso | hub/amostra (v21) | adamw_wd |
318
+ | 5 | razao_momentum_grad | **v22**: √(1−β²)·RMS(buf)/RMS(g) (Teo 34.3) | muon_momentum |
319
+ | 6 | razao_rms_mecanismos | **v22**: RMS(Ghat)/RMS(passo) (Teo 34.5) | muon_escala |
320
+ | 7 | logit_max | **v22**: leitura FRESCA dos módulos (Teo 34.9) | tau_qk (bisseção) |
321
+ | 8 | taxa_acerto_trust | prs.trust (v21) | prs_eta_up / prs_eta_down |
322
+ | 9 | delta_perda_passo | perda (v21) | prs_T_ciclo / prs_decay_piso |
323
+ | 10 | razao_clip | flags de clip (v21) | prs_percentil |
324
+ | 11 | razao_moe_ce | auxiliares (v21) | peso_moe |
325
+ | 12 | ativacao_som | **v22**: taxa_ativos_global (qualquer fase, Teo 34.8) | peso_som → _peso_som_v17 |
326
+ | 13 | margem_abmo_norm | **v22**: cap/lr_base (Teo 34.6) | abmo_margem → _abmo["margem"] |
327
+ | 14 | taxa_aceitacao_ciar | **v22**: fração de janelas com melhora (Teo 34.7) | ciar_kappa → κ_ext |
328
+ | 15 | taxa_expansao | **v22**: Δinserções/unidades (Teo 34.8) | cresc_expand → λ_inserção |
329
+ | 16 | taxa_prune | **v22**: Δpodas/unidades (Teo 34.8, inverte) | cresc_prune → util_poda |
330
+ | 17 | norma_peso (ref) | v21 | (compartilhado com 4) |
331
+ | 18 | logit_max (auditoria) | **v22**: frac_cabecas_acima_tau no hub | telemetria |
332
+
333
+ Com 16 controladores híbridos + 1 bisseção + compartilhamentos de sinal,
334
+ a tabela Teo 29.16 está COMPLETAMENTE instrumentada: todo controlador tem
335
+ produtor real e todo produtor tem consumidor.
graficos/graf_ram.png CHANGED

Git LFS Details

  • SHA256: 260c8df91913db959da342f10f6fc557eafde35c00a34737a769d23253b35f97
  • Pointer size: 131 Bytes
  • Size of remote file: 145 kB

Git LFS Details

  • SHA256: 7d0a7cd6a699d899801c519b1b3faad0307caaf466b5123e00a764734fca16f9
  • Pointer size: 128 Bytes
  • Size of remote file: 131 Bytes
graficos/v19/v19_evidencias.png CHANGED

Git LFS Details

  • SHA256: d314baabfae7c9d1f7f46c84502b0243beb4dfeb2d915285c704a8a5fb23176d
  • Pointer size: 131 Bytes
  • Size of remote file: 190 kB

Git LFS Details

  • SHA256: 28fc2c87a999dc8d9f635a9861e0150c83384d7b30d24661e0437a88de145f39
  • Pointer size: 128 Bytes
  • Size of remote file: 131 Bytes
graficos/v22/v22_evidencias.png ADDED

Git LFS Details

  • SHA256: be3356ebe3687ec75e181897044ae4ddc000c17f7e9e690b62240f1c1fe92d32
  • Pointer size: 131 Bytes
  • Size of remote file: 164 kB
scripts/03_treinar_tokenizador.py CHANGED
@@ -12,7 +12,7 @@ sys.path.insert(0, "/home/z/my-project/khtst/src")
12
  from khtst.config import Config
13
  from khtst.dados.tokenizador import TokenizadorKHTST
14
 
15
- CORPUS = "/home/z/my-project/khtst/cache_dados/corpus_v2.jsonl"
16
  SAIDA = "/home/z/my-project/khtst/cache_dados/tokenizador.json"
17
 
18
 
 
12
  from khtst.config import Config
13
  from khtst.dados.tokenizador import TokenizadorKHTST
14
 
15
+ CORPUS = "/home/z/my-project/khtst/cache_dados/corpus_v16.jsonl"
16
  SAIDA = "/home/z/my-project/khtst/cache_dados/tokenizador.json"
17
 
18
 
scripts/33_teste_v22.py ADDED
@@ -0,0 +1,302 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """33_teste_v22.py — TESTE REAL v22 (KHMAMBAJEPA, doc 34 §10).
3
+
4
+ Requisito do usuário: "instrumentar os 10 sinais v17 restantes (v22);
5
+ testar e treinar com datasets reais verificando progresso".
6
+
7
+ O que este script valida (A/B PAREADO EXATO, Teo 31.7 — mesma semente,
8
+ re-seed APÓS construção, mesmos lotes; UMA variável por braço):
9
+
10
+ A) baseline_v21 — tabela v17 com 8/18 produtores (doc 33): autorreg OFF
11
+ (nascimento neutro ⟹ trajetória v21 bit-a-bit).
12
+ B) v22_ativo — MESMO modelo/dados com treino.autorreg_v17.ativo=true:
13
+ os 18 controladores recebem os 10 produtores novos (estado REAL do
14
+ otimizador, contadores SOM, folga ABMO, aceitação CIAR, τ_qk fresco)
15
+ e movem DENTRO dos limites seguros (Teos 34.2–34.9).
16
+
17
+ Durante o braço B, a telemetria dos 10 sinais novos é auditada no fim
18
+ (presença, faixa e movimento dos controladores correspondentes).
19
+
20
+ Uso (RAM 3 GiB / processos morrem entre chamadas — retomada por partes):
21
+ python3 scripts/33_teste_v22.py --variante baseline_v21 --parte 12
22
+ python3 scripts/33_teste_v22.py --variante v22_ativo --parte 12
23
+ python3 scripts/33_teste_v22.py --relatorio
24
+ """
25
+ from __future__ import annotations
26
+
27
+ import argparse
28
+ import base64
29
+ import json
30
+ import os
31
+ import random
32
+ import sys
33
+ import time
34
+
35
+ RAIZ = os.environ.get("KHTST_RAIZ", os.path.dirname(
36
+ os.path.dirname(os.path.abspath(__file__))))
37
+ sys.path.insert(0, os.path.join(RAIZ, "src"))
38
+ sys.path.insert(0, os.path.join(RAIZ, "src", "khtst", "acelerado"))
39
+
40
+ CORPUS = os.path.join(RAIZ, "cache_dados", "corpus_v16.jsonl")
41
+ TOKENIZADOR = os.path.join(RAIZ, "cache_dados", "tokenizador_v16.json")
42
+ TOK_ANTIGO = os.path.join(RAIZ, "cache_dados", "tokenizador.json")
43
+ TELEMETRIA = os.path.join(RAIZ, "telemetria_out")
44
+ SEED = 2026
45
+ PASSOS_TOTAIS = 48
46
+
47
+ # os 10 sinais novos da v22 (doc 34 §11 — mapeamento produtor→controlador)
48
+ SINAIS_V22 = {
49
+ "deriva_seg_momento": "adamw_beta2",
50
+ "razao_update_grad": "adamw_eps",
51
+ "razao_momentum_grad": "muon_momentum",
52
+ "razao_rms_mecanismos": "muon_escala",
53
+ "margem_abmo_norm": "abmo_margem",
54
+ "taxa_aceitacao_ciar": "ciar_kappa",
55
+ "taxa_expansao": "cresc_expand",
56
+ "taxa_prune": "cresc_prune",
57
+ "ativacao_som": "peso_som",
58
+ "logit_max": "tau_qk", # produtor PRÓPRIO (leitura fresca dos módulos)
59
+ }
60
+
61
+
62
+ def carregar_registros(caminho: str) -> list[dict]:
63
+ registros = []
64
+ if not os.path.exists(caminho):
65
+ return registros
66
+ with open(caminho, encoding="utf-8") as f:
67
+ for linha in f:
68
+ try:
69
+ r = json.loads(linha)
70
+ except Exception:
71
+ continue
72
+ if isinstance(r.get("imagem"), str):
73
+ try:
74
+ r["imagem"] = base64.b64decode(r["imagem"])
75
+ except Exception:
76
+ r["imagem"] = None
77
+ if isinstance(r.get("audio"), str):
78
+ try:
79
+ r["audio"] = base64.b64decode(r["audio"])
80
+ except Exception:
81
+ r["audio"] = None
82
+ registros.append(r)
83
+ return registros
84
+
85
+
86
+ def est_padrao(seed: int) -> dict:
87
+ import numpy as np
88
+ import torch
89
+ torch.manual_seed(seed)
90
+ random.seed(seed)
91
+ np.random.seed(seed)
92
+ return {"torch": torch.get_rng_state(), "random": random.getstate(),
93
+ "numpy": np.random.get_state()}
94
+
95
+
96
+ def _restaurar_rng(est: dict) -> None:
97
+ import numpy as np
98
+ import torch
99
+ torch.set_rng_state(est["torch"])
100
+ random.setstate(est["random"])
101
+ np.random.set_state(est["numpy"])
102
+
103
+
104
+ def rodar_variante(nome: str, parte: int) -> dict:
105
+ import gc
106
+ import numpy as np
107
+ import torch
108
+ if not (torch.cuda.is_available() or torch.xpu.is_available()):
109
+ torch.set_num_threads(int(os.environ.get("OMP_NUM_THREADS", "2")))
110
+ from khtst.config import Config
111
+ from khtst.dados.tokenizador import TokenizadorKHTST
112
+ from khtst.memoria.orquestrador import OrquestradorSOM
113
+ from khtst.nucleo.modelo import KHTSTModel
114
+ from khtst.telemetria.hub import TelemetryHub
115
+ from khtst.treino.treinador import TreinadorExtensao
116
+
117
+ cfg = Config()
118
+ cfg.dados.semente = SEED
119
+ cfg.treino.warmup = 8
120
+ cfg.treino.lote = 4
121
+ cfg.treino.lote_efetivo = 1
122
+ cfg.treino.qat_ultimos_passos = 0
123
+ cfg.treino.ensemble["a_cada"] = 24
124
+ cfg.modelo.escalacao["ativo"] = False
125
+
126
+ # ---- A ÚNICA VARIÁVEL DO BRAÇO -----------------------------------------
127
+ if nome == "baseline_v21":
128
+ cfg.treino.autorreg_v17 = {"ativo": False} # v21 bit-a-bit
129
+ elif nome == "v22_ativo":
130
+ # a_cada=5 + espera=2: com 48 passos há 9 ciclos de ajuste — a espera
131
+ # default (20 ciclos) existiria para corridas longas (9 h); aqui o
132
+ # aquecimento é reduzido PARA ESTE TESTE (a tabela e os limites são
133
+ # idênticos; Teo 34.10-i: a espera não altera o conjunto seguro)
134
+ cfg.treino.autorreg_v17 = {"ativo": True, "a_cada": 5, "espera": 2}
135
+ else:
136
+ raise ValueError(nome)
137
+
138
+ os.makedirs(TELEMETRIA, exist_ok=True)
139
+ hub = TelemetryHub(os.path.join(TELEMETRIA, f"treino_v22_{nome}.jsonl"))
140
+ tk = TokenizadorKHTST(TOKENIZADOR if os.path.exists(TOKENIZADOR)
141
+ else TOK_ANTIGO)
142
+ registros = carregar_registros(CORPUS)
143
+ modelo = KHTSTModel(cfg, usar_multimodal=True)
144
+ orquestrador = OrquestradorSOM(cfg.modelo.d_modelo, cfg.som, hub=hub,
145
+ cfg_atencao=None)
146
+ treinar = TreinadorExtensao(cfg, modelo, tk, hub, registros,
147
+ orquestrador_som=orquestrador)
148
+ # PAREAMENTO EXATO (Teo 31.7): re-seed APÓS a construção
149
+ _restaurar_rng(est_padrao(SEED))
150
+
151
+ ckpt = os.path.join(TELEMETRIA, f"ckpt_v22_{nome}.pt")
152
+ perdas: list[float] = []
153
+ passo_inicial = 0
154
+ t_acum = 0.0
155
+ if parte and os.path.exists(ckpt):
156
+ est = torch.load(ckpt, map_location="cpu", weights_only=False)
157
+ modelo.load_state_dict(est["modelo"])
158
+ treinar.otimizador.load_state_dict(est["otimizador"])
159
+ treinar.passo_global = est["passo_global"]
160
+ perdas = est["perdas"]
161
+ t_acum = est.get("t_acum", 0.0)
162
+ torch.set_rng_state(est["rng_torch"])
163
+ random.setstate(est["rng_py"])
164
+ np.random.set_state(est["rng_np"])
165
+ passo_inicial = est["passo_global"]
166
+ print(f"[retomada] passo={passo_inicial} perdas={len(perdas)}",
167
+ flush=True)
168
+
169
+ alvo = PASSOS_TOTAIS if parte <= 0 else min(PASSOS_TOTAIS,
170
+ passo_inicial + parte)
171
+ t0 = time.time()
172
+ while treinar.passo_global < alvo:
173
+ perda = treinar._passo()
174
+ if perda == perda:
175
+ perdas.append(perda)
176
+ if treinar.passo_global % 12 == 0:
177
+ print(f"[{nome} passo {treinar.passo_global} perda {perda:.3f}]",
178
+ flush=True)
179
+ t_acum += time.time() - t0
180
+
181
+ resultado = {"nome": nome, "passos": treinar.passo_global,
182
+ "perdas": perdas, "t_acum_s": round(t_acum, 2),
183
+ "autorreg_v17": treinar.autorreg_v17 is not None}
184
+
185
+ # ---- auditoria v22 (só braço B): os 10 produtores estão vivos? ---------
186
+ if nome == "v22_ativo" and treinar.autorreg_v17 is not None:
187
+ hub_tel = treinar.autorreg_v17.telemetria()
188
+ # leituras finais dos produtores (sem mover: registrar com o próprio
189
+ # relógio — apenas INFORMA a presença dos 10 sinais novos)
190
+ audit = {"controladores": {k: round(v, 6)
191
+ for k, v in hub_tel.items()}}
192
+ # movimento: controladores que saíram do centro (ControladorBissecao
193
+ # não tem .centro — o centro do τ_qk é o tau_inicial=100 da tabela)
194
+ mov = {}
195
+ for nm_, ctl in treinar.autorreg_v17._controladores.items():
196
+ if hasattr(ctl, "centro"):
197
+ alvo_ctl, atual = ctl.centro, ctl.valor
198
+ else: # ControladorBissecao
199
+ alvo_ctl, atual = 100.0, ctl.tau
200
+ if alvo_ctl and abs(atual - alvo_ctl) > 1e-12:
201
+ mov[nm_] = round(atual / alvo_ctl, 4)
202
+ mov["tau_qk__valor_final"] = round(
203
+ treinar.autorreg_v17._controladores["tau_qk"].tau, 2)
204
+ audit["movidos"] = mov
205
+ # estado dos appliers v22
206
+ audit["abmo_margem_final"] = treinar._abmo.get("margem")
207
+ audit["ciar_kappa_ext"] = treinar.ciar.get("kappa_ext", 1.0)
208
+ audit["peso_som_v17"] = treinar._peso_som_v17
209
+ audit["contadores_crescimento"] = \
210
+ treinar.orquestrador.contadores_crescimento()
211
+ audit["coletar_otimizador"] = bool(
212
+ getattr(treinar.otimizador, "coletar", False))
213
+ resultado["auditoria_v22"] = audit
214
+
215
+ if parte and treinar.passo_global < PASSOS_TOTAIS:
216
+ torch.save({"modelo": modelo.state_dict(),
217
+ "otimizador": treinar.otimizador.state_dict(),
218
+ "passo_global": treinar.passo_global,
219
+ "perdas": perdas, "t_acum": t_acum,
220
+ "rng_torch": torch.get_rng_state(),
221
+ "rng_py": random.getstate(),
222
+ "rng_np": np.random.get_state()}, ckpt)
223
+ elif os.path.exists(ckpt):
224
+ os.remove(ckpt) # braço completo — ckpt fora
225
+ gc.collect()
226
+ return resultado
227
+
228
+
229
+ def relatorio() -> None:
230
+ res = {}
231
+ for nome in ("baseline_v21", "v22_ativo"):
232
+ cam = os.path.join(TELEMETRIA, f"resultado_v22_{nome}.json")
233
+ if os.path.exists(cam):
234
+ res[nome] = json.load(open(cam, encoding="utf-8"))
235
+ if len(res) < 2:
236
+ print("resultados insuficientes — rode os 2 braços primeiro")
237
+ return
238
+ print("=" * 74)
239
+ print(f"{'braço':14s} {'perda inicial':>13s} {'perda final':>11s} "
240
+ f"{'ganho ×':>8s} {'ΔCE pareado':>12s} {'s/ passo':>9s}")
241
+ base = res.get("baseline_v21")
242
+ linhas = {}
243
+ for nome, r in res.items():
244
+ p = r["perdas"]
245
+ ini = sum(p[:4]) / 4
246
+ fim = sum(p[-4:]) / 4
247
+ ganho = ini / max(fim, 1e-9)
248
+ dce = (sum(p[-4:]) - sum(base["perdas"][-4:])) / 4 \
249
+ if base and nome != "baseline_v21" else 0.0
250
+ spp = r["t_acum_s"] / max(1, len(p))
251
+ print(f"{nome:14s} {ini:13.3f} {fim:11.3f} {ganho:8.3f} "
252
+ f"{dce:+12.4f} {spp:9.2f}")
253
+ linhas[nome] = {"ini": round(ini, 4), "fim": round(fim, 4),
254
+ "ganho": round(ganho, 4), "dce": round(dce, 4),
255
+ "s_por_passo": round(spp, 2)}
256
+ print("=" * 74)
257
+ # progresso por quarto (verificação de progresso contínuo)
258
+ for nome, r in res.items():
259
+ p = r["perdas"]
260
+ q = max(1, len(p) // 4)
261
+ quarto = [round(sum(p[i * q:(i + 1) * q]) / max(q, 1), 3)
262
+ for i in range(4)]
263
+ print(f" progresso {nome}: {quarto}")
264
+ # auditoria v22
265
+ a = res["v22_ativo"].get("auditoria_v22", {})
266
+ if a:
267
+ mov = a.get("movidos", {})
268
+ print(f" produtores v22 ativos (coletar={a.get('coletar_otimizador')}):"
269
+ f" {len(a.get('controladores', {}))} valores no hub")
270
+ print(f" controladores movidos: {len(mov)} → {mov}")
271
+ print(f" appliers: abmo_margem={a.get('abmo_margem_final')} "
272
+ f"kappa_ext={a.get('ciar_kappa_ext')} "
273
+ f"peso_som={a.get('peso_som_v17')}")
274
+ print(f" crescimento SOM: {a.get('contadores_crescimento')}")
275
+ # honestidade: com a tabela ATIVA os 10 novos devem mover ou estar
276
+ # no alvo; exigimos movimento de ≥6 dos 10 controladores novos
277
+ novos = {c: mov.get(c) for c in SINAIS_V22.values()}
278
+ n_mov = sum(1 for v in novos.values() if v is not None)
279
+ print(f" movimento nos 10 controladores novos: {n_mov}/10")
280
+ json.dump({"tabela": linhas, "movidos": mov, "mov_novos": n_mov},
281
+ open(os.path.join(TELEMETRIA, "tabela_v22.json"), "w"),
282
+ ensure_ascii=False, indent=1)
283
+ print("OK — tabela gravada em telemetria_out/tabela_v22.json")
284
+
285
+
286
+ if __name__ == "__main__":
287
+ ap = argparse.ArgumentParser()
288
+ ap.add_argument("--variante", choices=["baseline_v21", "v22_ativo"])
289
+ ap.add_argument("--parte", type=int, default=0,
290
+ help="passos nesta chamada (0 = tudo)")
291
+ ap.add_argument("--relatorio", action="store_true")
292
+ args = ap.parse_args()
293
+ if args.relatorio:
294
+ relatorio()
295
+ elif args.variante:
296
+ r = rodar_variante(args.variante, args.parte)
297
+ cam = os.path.join(TELEMETRIA, f"resultado_v22_{args.variante}.json")
298
+ json.dump(r, open(cam, "w", encoding="utf-8"), ensure_ascii=False)
299
+ print(f"[salvo] {cam} — passos={r['passos']} "
300
+ f"perdas={len(r['perdas'])}", flush=True)
301
+ else:
302
+ ap.print_help()
scripts/34_graficos_v22.py ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """34_graficos_v22.py — figuras de evidência v22 (doc 34 §8).
3
+
4
+ Painéis (a partir dos resultados REAIS do 33_teste_v22.py):
5
+ (1) perdas A/B pareadas 48 passos (baseline_v21 vs v22_ativo);
6
+ (2) movimento dos 10 controladores novos (fator × em relação ao centro);
7
+ (3) sinais v22 medidos (faixas honestas — escala log onde couber).
8
+
9
+ Saída: graficos/v22/v22_evidencias.png
10
+ """
11
+ from __future__ import annotations
12
+
13
+ import json
14
+ import os
15
+ import sys
16
+
17
+ import matplotlib
18
+ matplotlib.use("Agg")
19
+ import matplotlib.font_manager as fm # noqa: E402
20
+ for _f in ("/usr/share/fonts/truetype/chinese/NotoSansSC-Regular.ttf",
21
+ "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"):
22
+ if os.path.exists(_f):
23
+ fm.fontManager.addfont(_f)
24
+ import matplotlib.pyplot as plt # noqa: E402
25
+ plt.rcParams["font.sans-serif"] = ["Noto Sans SC", "DejaVu Sans"]
26
+ plt.rcParams["axes.unicode_minus"] = False
27
+
28
+ RAIZ = os.environ.get("KHTST_RAIZ", os.path.dirname(
29
+ os.path.dirname(os.path.abspath(__file__))))
30
+ TEL = os.path.join(RAIZ, "telemetria_out")
31
+ SAIDA = os.path.join(RAIZ, "graficos", "v22", "v22_evidencias.png")
32
+
33
+
34
+ def main() -> None:
35
+ ra = json.load(open(os.path.join(TEL, "resultado_v22_baseline_v21.json"),
36
+ encoding="utf-8"))
37
+ rb = json.load(open(os.path.join(TEL, "resultado_v22_v22_ativo.json"),
38
+ encoding="utf-8"))
39
+ audit = rb.get("auditoria_v22", {})
40
+ mov = audit.get("movidos", {})
41
+
42
+ fig, axes = plt.subplots(1, 3, figsize=(16.5, 4.8),
43
+ constrained_layout=True)
44
+ fig.suptitle("v22 — fechamento 18/18 da tabela v17 (dados reais, "
45
+ "A/B pareado 48 passos)", fontsize=13)
46
+
47
+ # (1) perdas A/B
48
+ ax = axes[0]
49
+ pa, pb = ra["perdas"], rb["perdas"]
50
+ ax.plot(range(1, len(pa) + 1), pa, lw=1.6, color="#7f7f7f",
51
+ label=f"baseline_v21 ({sum(pa[:4])/4:.2f}→{sum(pa[-4:])/4:.2f})")
52
+ ax.plot(range(1, len(pb) + 1), pb, lw=1.6, color="#1f77b4",
53
+ label=f"v22_ativo ({sum(pb[:4])/4:.2f}→{sum(pb[-4:])/4:.2f})")
54
+ ax.set_xlabel("passo"); ax.set_ylabel("perda CE (lote)")
55
+ ax.set_title("(1) A/B pareado — ambos aprendem")
56
+ ax.legend(loc="upper right", fontsize=8.5)
57
+ ax.grid(alpha=0.25)
58
+
59
+ # (2) movimento dos 10 controladores novos (× centro)
60
+ ax = axes[1]
61
+ novos = [("adamw_beta2", "β₂"), ("adamw_eps", "ε"),
62
+ ("muon_momentum", "mom."), ("muon_escala", "esc."),
63
+ ("abmo_margem", "ABMO"), ("ciar_kappa", "CIAR"),
64
+ ("cresc_expand", "expand"), ("cresc_prune", "prune"),
65
+ ("peso_som", "λ_SOM")]
66
+ vals, nomes = [], []
67
+ for chave, rotulo in novos:
68
+ if chave in mov and mov[chave]:
69
+ try:
70
+ vals.append(float(mov[chave]))
71
+ nomes.append(rotulo)
72
+ except (TypeError, ValueError):
73
+ pass
74
+ cores = ["#2ca02c" if v >= 1.0 else "#d62728" for v in vals]
75
+ ax.bar(nomes, vals, color=cores)
76
+ ax.axhline(1.0, color="k", lw=0.8, ls="--")
77
+ ax.set_ylabel("valor / centro (×)")
78
+ ax.set_title("(2) movimento dos controladores novos (10/10)\n"
79
+ f"τ_qk: 100→{mov.get('tau_qk__valor_final', '?')} "
80
+ "(Teo 34.9-iii: sem efeito funcional)")
81
+ ax.tick_params(axis="x", rotation=45, labelsize=8)
82
+ ax.grid(alpha=0.25, axis="y")
83
+
84
+ # (3) sinais medidos (última janela do braço B — do hub jsonl; formato
85
+ # TelemetryHub: {"atributo": "autorreg_v17/<nome>", "valor": v})
86
+ ax = axes[2]
87
+ sinais_finais = {}
88
+ cam = os.path.join(TEL, "treino_v22_v22_ativo.jsonl")
89
+ if os.path.exists(cam):
90
+ with open(cam, encoding="utf-8") as f:
91
+ for linha in f:
92
+ try:
93
+ ev = json.loads(linha)
94
+ except Exception:
95
+ continue
96
+ k = ev.get("atributo") or ""
97
+ if k.startswith("autorreg_v17/"):
98
+ sinais_finais[k.split("/", 1)[1]] = ev.get("valor")
99
+ chaves = [("adamw_beta2", "β₂"), ("adamw_eps", "ε"),
100
+ ("muon_momentum", "mom."), ("muon_escala", "esc."),
101
+ ("peso_som", "λ_SOM"), ("abmo_margem", "ABMO"),
102
+ ("cresc_expand", "expand"), ("cresc_prune", "prune")]
103
+ # centros por controlador (tabela Teo 29.16); ε é arredondado a 0.0 no
104
+ # hub (round 6 casas de um valor ~1e-8) — usar a RAZÃO do audit (movidos)
105
+ centros = {"β₂": 0.95, "ε": 1e-8, "mom.": 0.95, "esc.": 0.20,
106
+ "λ_SOM": 0.05, "ABMO": 1.0, "expand": 1.0, "prune": 1.0}
107
+ audit_mov = audit.get("movidos", {})
108
+ vals, nomes = [], []
109
+ for c, r in chaves:
110
+ if c in audit_mov and audit_mov[c]:
111
+ vals.append(float(audit_mov[c]))
112
+ nomes.append(r)
113
+ elif sinais_finais.get(c) is not None and centros[r] >= 1e-3:
114
+ vals.append(float(sinais_finais[c]) / centros[r])
115
+ nomes.append(r)
116
+ if vals:
117
+ ax.bar(nomes, vals, color="#1f77b4")
118
+ ax.axhline(1.0, color="k", lw=0.8, ls="--", label="centro")
119
+ ax.set_ylabel("valor final / centro")
120
+ ax.set_title("(3) controladores no fim (valor/centro)")
121
+ ax.tick_params(axis="x", rotation=45, labelsize=8)
122
+ ax.legend(fontsize=8)
123
+ ax.grid(alpha=0.25, axis="y")
124
+ else:
125
+ ax.text(0.5, 0.5, "hub sem atributos\n(verificar jsonl)",
126
+ ha="center", va="center", transform=ax.transAxes)
127
+ os.makedirs(os.path.dirname(SAIDA), exist_ok=True)
128
+ fig.savefig(SAIDA, dpi=150)
129
+ print(f"salvo: {SAIDA}")
130
+
131
+
132
+ if __name__ == "__main__":
133
+ main()
scripts/35_publicar_v22.py ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """Publica o KHTST v22 no HuggingFace — UM ÚNICO COMMIT COMPLETO
4
+ (anti-bloqueio do Hub: `upload_folder` + `delete_patterns=["*"]`
5
+ substitui ATOMICAMENTE todo o conteúdo; nunca há uploads parciais em
6
+ sequência curta — requisito do usuário).
7
+
8
+ INCLUI: README (card v22) · LICENSE · requirements · configs/ ·
9
+ src/khtst/ (otimizadores com acumuladores/produtor_v22, mixin
10
+ treinador_v22.py, autorregulacao_estendida com appliers, SOMs com
11
+ contadores, ipc com .so real) · scripts/ (33 teste v22, 34 gráficos) ·
12
+ docs/matematica/ (00–34, doc 34 NOVO) · tests/ (v1–v22) · patches/ ·
13
+ PLANO_KHMAMBAJEPA.md · RELATORIO_KHTST.md · graficos/ (v22 incluso).
14
+
15
+ EXCLUI: venv/ · __pycache__ · cache_dados · telemetria_out ·
16
+ cache_hub_tmp · .git · build · estados*/ · stage*/ · qualquer
17
+ `.pt/.pth/.ckpt/.safetensors/.bin` (REQUISITO: nenhum estado de treino
18
+ no Hub) · qualquer arquivo com padrão de token hf_...
19
+
20
+ SEGURANÇA: token EXCLUSIVAMENTE da variável de ambiente HF_TOKEN —
21
+ nunca gravado em arquivo, log, repo ou remote URL.
22
+
23
+ Uso: HF_TOKEN=hf_... python3 scripts/35_publicar_v22.py [--repo ...]
24
+ """
25
+ import argparse
26
+ import os
27
+ import re
28
+ import shutil
29
+ import sys
30
+
31
+ RAIZ = "/home/z/my-project/khtst"
32
+ STAGE = "/home/z/my-project/khtst/stage_publicar_v22"
33
+ IGNORAR_DIRS = {"__pycache__", "cache_dados", "telemetria_out",
34
+ "cache_hub_tmp", ".git", "build", "venv", ".venv",
35
+ "estados_local", "estados_local_teste", "estados",
36
+ "stage_publicar", "stage_publicar_v17",
37
+ "stage_publicar_v18", "stage_publicar_v19",
38
+ "stage_publicar_v20", "stage_publicar_v21",
39
+ "stage_publicar_v22", "hf_stage",
40
+ "download", "upload", "node_modules"}
41
+ IGNORAR_NOMES = {"resultados_v21.json", "resultados_v20.json"}
42
+ IGNORAR_EXT = (".pt", ".pth", ".ckpt", ".safetensors", ".pyc", ".pt.tmp",
43
+ ".bin")
44
+ PADRAO_TOKEN = re.compile(r"hf_[A-Za-z0-9]{30,}")
45
+ RESIDUOS_PROIBIDOS = ("bugwatch",)
46
+
47
+
48
+ def preparar_stage() -> int:
49
+ if os.path.exists(STAGE):
50
+ shutil.rmtree(STAGE)
51
+ n = 0
52
+ for raiz, dirs, arquivos in os.walk(RAIZ):
53
+ dirs[:] = [d for d in dirs if d not in IGNORAR_DIRS]
54
+ rel = os.path.relpath(raiz, RAIZ)
55
+ alvo_raiz = os.path.join(STAGE, rel) if rel != "." else STAGE
56
+ os.makedirs(alvo_raiz, exist_ok=True)
57
+ for a in arquivos:
58
+ if a.endswith(IGNORAR_EXT) or a.startswith("."):
59
+ continue
60
+ if a in IGNORAR_NOMES:
61
+ continue
62
+ if any(r in a.lower() for r in RESIDUOS_PROIBIDOS):
63
+ print(f" [RESÍDUO] ignorado: {a}")
64
+ continue
65
+ origem = os.path.join(raiz, a)
66
+ destino = os.path.join(alvo_raiz, a)
67
+ shutil.copy2(origem, destino)
68
+ n += 1
69
+ return n
70
+
71
+
72
+ def auditar_stage() -> int:
73
+ """Auditoria: 0 estados de treino, 0 tokens, 0 resíduos."""
74
+ problemas = 0
75
+ n_arq = 0
76
+ for raiz, dirs, arquivos in os.walk(STAGE):
77
+ for a in arquivos:
78
+ n_arq += 1
79
+ cam = os.path.join(raiz, a)
80
+ if a.endswith(IGNORAR_EXT):
81
+ print(f" [ESTADO] {cam}"); problemas += 1
82
+ continue
83
+ try:
84
+ with open(cam, "rb") as f:
85
+ dados = f.read()
86
+ except OSError:
87
+ continue
88
+ if PADRAO_TOKEN.search(dados.decode("utf-8", errors="ignore")):
89
+ print(f" [TOKEN] {cam}"); problemas += 1
90
+ print(f"stage: {n_arq} arquivos | problemas: {problemas}")
91
+ return problemas
92
+
93
+
94
+ def main() -> int:
95
+ ap = argparse.ArgumentParser()
96
+ ap.add_argument("--repo", default="PowerMachine/khtst-multimodal-ptbr")
97
+ args = ap.parse_args()
98
+ token = os.environ.get("HF_TOKEN")
99
+ if not token:
100
+ print("ERRO: HF_TOKEN ausente no ambiente"); return 1
101
+ from huggingface_hub import HfApi, upload_folder
102
+ api = HfApi(token=token)
103
+
104
+ print("== preparando stage ==")
105
+ n = preparar_stage()
106
+ print(f"{n} arquivos copiados para o stage")
107
+ print("== auditando stage (estados/tokens/resíduos) ==")
108
+ if auditar_stage() > 0:
109
+ print("ERRO: stage contém itens proibidos — abortando"); return 1
110
+
111
+ print("== commit ÚNICO no Hub (upload_folder + delete_patterns) ==")
112
+ upload_folder(
113
+ repo_id=args.repo,
114
+ repo_type="model",
115
+ folder_path=STAGE,
116
+ commit_message=(
117
+ "KHTST v22 — fechamento 18/18 da tabela v17: os 10 produtores "
118
+ "restantes com MEDIÇÕES REAIS (estado do otimizador via "
119
+ "acumuladores opt-in bit-a-bit Teo 34.1; razao_update_grad com "
120
+ "cota de Jensen Teo 34.2; razao_momentum_grad com correção "
121
+ "estacionária sqrt(1-b^2) Teo 34.3; deriva do 2º momento "
122
+ "calibrada pivotal Teo 34.4; RMS mecanismos Teo 34.5; folga "
123
+ "ABMO cap/lr Teo 34.6; aceitação CIAR Teo 34.7; contadores "
124
+ "reais de crescimento GG/GCS/GSOM Teo 34.8; tau_qk fresco "
125
+ "Teo 34.9); APLIERS novos com nascimento neutro por base "
126
+ "capturada (margem ABMO, kappa_ext, lambda_insercao/util_poda "
127
+ "com poda invertida, peso_som) Teo 34.10; ciclo no mixin "
128
+ "treinador_v22.py (Teo 34.11, limite <80KB v18 restaurado); "
129
+ "corpus real fresco 1015 registros (7 fontes) + tokenizador "
130
+ "16384; A/B pareado 48 passos: 10/10 controladores novos "
131
+ "movem, appliers escrevem nos alvos reais; doc 34 + PLANO/"
132
+ "RELATORIO/README; suíte v22 46/46, regressão v1-v21 zero, "
133
+ "verificar_tudo 49✓"),
134
+ delete_patterns=["*"],
135
+ token=token,
136
+ )
137
+ print("== auditoria pós-upload ==")
138
+ info = api.repo_info(args.repo, files_metadata=False)
139
+ arq_hub = [s.rfilename for s in info.siblings]
140
+ estados = [a for a in arq_hub if a.endswith(IGNORAR_EXT)]
141
+ resid = [a for a in arq_hub if any(r in a.lower()
142
+ for r in RESIDUOS_PROIBIDOS)]
143
+ chaves_v22 = [a for a in arq_hub if
144
+ "34-v22-fechamento-18-18" in a or
145
+ a.endswith("treinador_v22.py") or
146
+ a.endswith("33_teste_v22.py") or
147
+ a.endswith("34_graficos_v22.py") or
148
+ a.endswith("test_khtst_v22.py") or
149
+ a.endswith("v22_evidencias.png")]
150
+ estados_locais = [a for a in arq_hub if a.startswith("cache_dados/")
151
+ or a.startswith("telemetria_out/")]
152
+ print(f"arquivos no Hub: {len(arq_hub)}")
153
+ print(f"estados de treino no Hub: {len(estados)} {estados[:5]}")
154
+ print(f"resíduos: {len(resid)}")
155
+ print(f"cache_dados/telemetria vazados: {len(estados_locais)}")
156
+ print(f"chaves v22 presentes: {len(chaves_v22)} -> {chaves_v22}")
157
+ ok = (len(estados) == 0 and len(resid) == 0
158
+ and len(estados_locais) == 0 and len(chaves_v22) == 6)
159
+ print("PUBLICAÇÃO v22 " + ("OK ✓" if ok else "COM PROBLEMAS ✗"))
160
+ return 0 if ok else 1
161
+
162
+
163
+ if __name__ == "__main__":
164
+ raise SystemExit(main())
scripts/_merge_corpus_v22.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """Merge deduplicado das fontes parciais → cache_dados/corpus_v16.jsonl
3
+ (regra do projeto: dedup global por hash do texto; ordem determinística)."""
4
+ import hashlib
5
+ import json
6
+ import os
7
+ import sys
8
+
9
+ RAIZ = "/home/z/my-project/khtst"
10
+ DIR_P = os.path.join(RAIZ, "cache_dados", "_parcial")
11
+ SAIDA = os.path.join(RAIZ, "cache_dados", "corpus_v16.jsonl")
12
+
13
+
14
+ def _hash_texto(t: str) -> str:
15
+ return hashlib.sha256((t or "").encode("utf-8")).hexdigest()
16
+
17
+
18
+ def main() -> None:
19
+ vistos, regs = set(), []
20
+ for nome in sorted(os.listdir(DIR_P)):
21
+ if not nome.endswith(".jsonl"):
22
+ continue
23
+ with open(os.path.join(DIR_P, nome), encoding="utf-8") as f:
24
+ for linha in f:
25
+ try:
26
+ r = json.loads(linha)
27
+ except Exception:
28
+ continue
29
+ chave = _hash_texto(r.get("texto") or
30
+ ((r.get("entrada") or "") + "␟" +
31
+ (r.get("saida") or "")))
32
+ if chave and chave not in vistos:
33
+ vistos.add(chave)
34
+ regs.append(r)
35
+ with open(SAIDA, "w", encoding="utf-8") as f:
36
+ for r in regs:
37
+ f.write(json.dumps(r, ensure_ascii=False) + "\n")
38
+ tarefas = {}
39
+ for r in regs:
40
+ tarefas[r.get("tarefa")] = tarefas.get(r.get("tarefa"), 0) + 1
41
+ print(f"corpus final: {len(regs)} registros; por tarefa: {tarefas}")
42
+
43
+
44
+ if __name__ == "__main__":
45
+ main()
src/khtst/acelerado/mamba3hot.c CHANGED
@@ -1550,7 +1550,7 @@ static const char * const __pyx_cfilenm = __FILE__;
1550
  static const char* const __pyx_f[] = {
1551
  "mamba3hot.pyx",
1552
  "View.MemoryView",
1553
- "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd",
1554
  "cpython/type.pxd",
1555
  };
1556
  /* #### Code section: utility_code_proto_before_types ### */
@@ -1803,7 +1803,7 @@ typedef struct {
1803
 
1804
  /* #### Code section: numeric_typedefs ### */
1805
 
1806
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":761
1807
  * # in Cython to enable them only on the right systems.
1808
  *
1809
  * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
@@ -1812,7 +1812,7 @@ typedef struct {
1812
  */
1813
  typedef npy_int8 __pyx_t_5numpy_int8_t;
1814
 
1815
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762
1816
  *
1817
  * ctypedef npy_int8 int8_t
1818
  * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
@@ -1821,7 +1821,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t;
1821
  */
1822
  typedef npy_int16 __pyx_t_5numpy_int16_t;
1823
 
1824
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":763
1825
  * ctypedef npy_int8 int8_t
1826
  * ctypedef npy_int16 int16_t
1827
  * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
@@ -1830,7 +1830,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t;
1830
  */
1831
  typedef npy_int32 __pyx_t_5numpy_int32_t;
1832
 
1833
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":764
1834
  * ctypedef npy_int16 int16_t
1835
  * ctypedef npy_int32 int32_t
1836
  * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
@@ -1839,7 +1839,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t;
1839
  */
1840
  typedef npy_int64 __pyx_t_5numpy_int64_t;
1841
 
1842
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":766
1843
  * ctypedef npy_int64 int64_t
1844
  *
1845
  * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
@@ -1848,7 +1848,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t;
1848
  */
1849
  typedef npy_uint8 __pyx_t_5numpy_uint8_t;
1850
 
1851
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":767
1852
  *
1853
  * ctypedef npy_uint8 uint8_t
1854
  * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
@@ -1857,7 +1857,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t;
1857
  */
1858
  typedef npy_uint16 __pyx_t_5numpy_uint16_t;
1859
 
1860
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768
1861
  * ctypedef npy_uint8 uint8_t
1862
  * ctypedef npy_uint16 uint16_t
1863
  * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
@@ -1866,7 +1866,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t;
1866
  */
1867
  typedef npy_uint32 __pyx_t_5numpy_uint32_t;
1868
 
1869
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769
1870
  * ctypedef npy_uint16 uint16_t
1871
  * ctypedef npy_uint32 uint32_t
1872
  * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
@@ -1875,7 +1875,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t;
1875
  */
1876
  typedef npy_uint64 __pyx_t_5numpy_uint64_t;
1877
 
1878
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":771
1879
  * ctypedef npy_uint64 uint64_t
1880
  *
1881
  * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
@@ -1884,7 +1884,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t;
1884
  */
1885
  typedef npy_float32 __pyx_t_5numpy_float32_t;
1886
 
1887
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":772
1888
  *
1889
  * ctypedef npy_float32 float32_t
1890
  * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
@@ -1893,7 +1893,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t;
1893
  */
1894
  typedef npy_float64 __pyx_t_5numpy_float64_t;
1895
 
1896
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779
1897
  * ctypedef double complex complex128_t
1898
  *
1899
  * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
@@ -1902,7 +1902,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t;
1902
  */
1903
  typedef npy_longlong __pyx_t_5numpy_longlong_t;
1904
 
1905
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780
1906
  *
1907
  * ctypedef npy_longlong longlong_t
1908
  * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
@@ -1911,7 +1911,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t;
1911
  */
1912
  typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
1913
 
1914
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":782
1915
  * ctypedef npy_ulonglong ulonglong_t
1916
  *
1917
  * ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
@@ -1920,7 +1920,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
1920
  */
1921
  typedef npy_intp __pyx_t_5numpy_intp_t;
1922
 
1923
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783
1924
  *
1925
  * ctypedef npy_intp intp_t
1926
  * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
@@ -1929,7 +1929,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t;
1929
  */
1930
  typedef npy_uintp __pyx_t_5numpy_uintp_t;
1931
 
1932
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785
1933
  * ctypedef npy_uintp uintp_t
1934
  *
1935
  * ctypedef npy_double float_t # <<<<<<<<<<<<<<
@@ -1938,7 +1938,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t;
1938
  */
1939
  typedef npy_double __pyx_t_5numpy_float_t;
1940
 
1941
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786
1942
  *
1943
  * ctypedef npy_double float_t
1944
  * ctypedef npy_double double_t # <<<<<<<<<<<<<<
@@ -1947,7 +1947,7 @@ typedef npy_double __pyx_t_5numpy_float_t;
1947
  */
1948
  typedef npy_double __pyx_t_5numpy_double_t;
1949
 
1950
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":787
1951
  * ctypedef npy_double float_t
1952
  * ctypedef npy_double double_t
1953
  * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
@@ -18448,7 +18448,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
18448
  return __pyx_r;
18449
  }
18450
 
18451
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230
18452
  *
18453
  * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]:
18454
  * @property # <<<<<<<<<<<<<<
@@ -18459,7 +18459,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
18459
  static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArray_Descr *__pyx_v_self) {
18460
  PyTypeObject *__pyx_r;
18461
 
18462
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":232
18463
  * @property
18464
  * cdef inline PyTypeObject* typeobj(self) noexcept nogil:
18465
  * return PyDataType_TYPEOBJ(self) # <<<<<<<<<<<<<<
@@ -18472,7 +18472,7 @@ static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArra
18472
  }
18473
  goto __pyx_L0;
18474
 
18475
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230
18476
  *
18477
  * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]:
18478
  * @property # <<<<<<<<<<<<<<
@@ -18485,7 +18485,7 @@ static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArra
18485
  return __pyx_r;
18486
  }
18487
 
18488
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234
18489
  * return PyDataType_TYPEOBJ(self)
18490
  *
18491
  * @property # <<<<<<<<<<<<<<
@@ -18496,7 +18496,7 @@ static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArra
18496
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__pyx_v_self) {
18497
  char __pyx_r;
18498
 
18499
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":236
18500
  * @property
18501
  * cdef inline char kind(self) noexcept nogil:
18502
  * return PyDataType_KIND(self) # <<<<<<<<<<<<<<
@@ -18509,7 +18509,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__p
18509
  }
18510
  goto __pyx_L0;
18511
 
18512
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234
18513
  * return PyDataType_TYPEOBJ(self)
18514
  *
18515
  * @property # <<<<<<<<<<<<<<
@@ -18522,7 +18522,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__p
18522
  return __pyx_r;
18523
  }
18524
 
18525
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238
18526
  * return PyDataType_KIND(self)
18527
  *
18528
  * @property # <<<<<<<<<<<<<<
@@ -18533,7 +18533,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__p
18533
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__pyx_v_self) {
18534
  char __pyx_r;
18535
 
18536
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":240
18537
  * @property
18538
  * cdef inline char type(self) noexcept nogil:
18539
  * return PyDataType_TYPE(self) # <<<<<<<<<<<<<<
@@ -18546,7 +18546,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__p
18546
  }
18547
  goto __pyx_L0;
18548
 
18549
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238
18550
  * return PyDataType_KIND(self)
18551
  *
18552
  * @property # <<<<<<<<<<<<<<
@@ -18559,7 +18559,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__p
18559
  return __pyx_r;
18560
  }
18561
 
18562
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247
18563
  * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of
18564
  * # directly accessing this field.
18565
  * @property # <<<<<<<<<<<<<<
@@ -18570,7 +18570,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__p
18570
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr *__pyx_v_self) {
18571
  char __pyx_r;
18572
 
18573
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":249
18574
  * @property
18575
  * cdef inline char byteorder(self) noexcept nogil:
18576
  * return PyDataType_BYTEORDER(self) # <<<<<<<<<<<<<<
@@ -18583,7 +18583,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr
18583
  }
18584
  goto __pyx_L0;
18585
 
18586
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247
18587
  * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of
18588
  * # directly accessing this field.
18589
  * @property # <<<<<<<<<<<<<<
@@ -18596,7 +18596,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr
18596
  return __pyx_r;
18597
  }
18598
 
18599
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251
18600
  * return PyDataType_BYTEORDER(self)
18601
  *
18602
  * @property # <<<<<<<<<<<<<<
@@ -18607,7 +18607,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr
18607
  static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *__pyx_v_self) {
18608
  int __pyx_r;
18609
 
18610
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253
18611
  * @property
18612
  * cdef inline int type_num(self) noexcept nogil:
18613
  * return PyDataType_TYPENUM(self) # <<<<<<<<<<<<<<
@@ -18620,7 +18620,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *
18620
  }
18621
  goto __pyx_L0;
18622
 
18623
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251
18624
  * return PyDataType_BYTEORDER(self)
18625
  *
18626
  * @property # <<<<<<<<<<<<<<
@@ -18633,7 +18633,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *
18633
  return __pyx_r;
18634
  }
18635
 
18636
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255
18637
  * return PyDataType_TYPENUM(self)
18638
  *
18639
  * @property # <<<<<<<<<<<<<<
@@ -18644,7 +18644,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *
18644
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_Descr *__pyx_v_self) {
18645
  npy_intp __pyx_r;
18646
 
18647
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257
18648
  * @property
18649
  * cdef inline npy_intp itemsize(self) noexcept nogil:
18650
  * return PyDataType_ELSIZE(self) # <<<<<<<<<<<<<<
@@ -18657,7 +18657,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_De
18657
  }
18658
  goto __pyx_L0;
18659
 
18660
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255
18661
  * return PyDataType_TYPENUM(self)
18662
  *
18663
  * @property # <<<<<<<<<<<<<<
@@ -18670,7 +18670,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_De
18670
  return __pyx_r;
18671
  }
18672
 
18673
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259
18674
  * return PyDataType_ELSIZE(self)
18675
  *
18676
  * @property # <<<<<<<<<<<<<<
@@ -18681,7 +18681,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_De
18681
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_Descr *__pyx_v_self) {
18682
  npy_intp __pyx_r;
18683
 
18684
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":261
18685
  * @property
18686
  * cdef inline npy_intp alignment(self) noexcept nogil:
18687
  * return PyDataType_ALIGNMENT(self) # <<<<<<<<<<<<<<
@@ -18694,7 +18694,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_D
18694
  }
18695
  goto __pyx_L0;
18696
 
18697
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259
18698
  * return PyDataType_ELSIZE(self)
18699
  *
18700
  * @property # <<<<<<<<<<<<<<
@@ -18707,7 +18707,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_D
18707
  return __pyx_r;
18708
  }
18709
 
18710
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265
18711
  * # Use fields/names with care as they may be NULL. You must check
18712
  * # for this using PyDataType_HASFIELDS.
18713
  * @property # <<<<<<<<<<<<<<
@@ -18721,7 +18721,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields___get__(PyArray_Des
18721
  PyObject *__pyx_t_1;
18722
  __Pyx_RefNannySetupContext("__get__", 0);
18723
 
18724
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":267
18725
  * @property
18726
  * cdef inline object fields(self):
18727
  * return <object>PyDataType_FIELDS(self) # <<<<<<<<<<<<<<
@@ -18742,7 +18742,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields___get__(PyArray_Des
18742
 
18743
  goto __pyx_L0;
18744
 
18745
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265
18746
  * # Use fields/names with care as they may be NULL. You must check
18747
  * # for this using PyDataType_HASFIELDS.
18748
  * @property # <<<<<<<<<<<<<<
@@ -18757,7 +18757,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields___get__(PyArray_Des
18757
  return __pyx_r;
18758
  }
18759
 
18760
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269
18761
  * return <object>PyDataType_FIELDS(self)
18762
  *
18763
  * @property # <<<<<<<<<<<<<<
@@ -18771,7 +18771,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc
18771
  PyObject *__pyx_t_1;
18772
  __Pyx_RefNannySetupContext("__get__", 0);
18773
 
18774
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":271
18775
  * @property
18776
  * cdef inline tuple names(self):
18777
  * return <tuple>PyDataType_NAMES(self) # <<<<<<<<<<<<<<
@@ -18792,7 +18792,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc
18792
 
18793
  goto __pyx_L0;
18794
 
18795
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269
18796
  * return <object>PyDataType_FIELDS(self)
18797
  *
18798
  * @property # <<<<<<<<<<<<<<
@@ -18807,7 +18807,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc
18807
  return __pyx_r;
18808
  }
18809
 
18810
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276
18811
  * # valid (the pointer can be NULL). Most users should access
18812
  * # this field via the inline helper method PyDataType_SHAPE.
18813
  * @property # <<<<<<<<<<<<<<
@@ -18818,7 +18818,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc
18818
  static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__(PyArray_Descr *__pyx_v_self) {
18819
  PyArray_ArrayDescr *__pyx_r;
18820
 
18821
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":278
18822
  * @property
18823
  * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:
18824
  * return PyDataType_SUBARRAY(self) # <<<<<<<<<<<<<<
@@ -18831,7 +18831,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__
18831
  }
18832
  goto __pyx_L0;
18833
 
18834
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276
18835
  * # valid (the pointer can be NULL). Most users should access
18836
  * # this field via the inline helper method PyDataType_SHAPE.
18837
  * @property # <<<<<<<<<<<<<<
@@ -18844,7 +18844,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__
18844
  return __pyx_r;
18845
  }
18846
 
18847
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280
18848
  * return PyDataType_SUBARRAY(self)
18849
  *
18850
  * @property # <<<<<<<<<<<<<<
@@ -18855,7 +18855,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__
18855
  static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Descr *__pyx_v_self) {
18856
  npy_uint64 __pyx_r;
18857
 
18858
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":283
18859
  * cdef inline npy_uint64 flags(self) noexcept nogil:
18860
  * """The data types flags."""
18861
  * return PyDataType_FLAGS(self) # <<<<<<<<<<<<<<
@@ -18868,7 +18868,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Des
18868
  }
18869
  goto __pyx_L0;
18870
 
18871
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280
18872
  * return PyDataType_SUBARRAY(self)
18873
  *
18874
  * @property # <<<<<<<<<<<<<<
@@ -18881,7 +18881,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Des
18881
  return __pyx_r;
18882
  }
18883
 
18884
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292
18885
  * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
18886
  *
18887
  * @property # <<<<<<<<<<<<<<
@@ -18892,7 +18892,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Des
18892
  static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMultiIterObject *__pyx_v_self) {
18893
  int __pyx_r;
18894
 
18895
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295
18896
  * cdef inline int numiter(self) noexcept nogil:
18897
  * """The number of arrays that need to be broadcast to the same shape."""
18898
  * return PyArray_MultiIter_NUMITER(self) # <<<<<<<<<<<<<<
@@ -18905,7 +18905,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMulti
18905
  }
18906
  goto __pyx_L0;
18907
 
18908
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292
18909
  * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
18910
  *
18911
  * @property # <<<<<<<<<<<<<<
@@ -18918,7 +18918,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMulti
18918
  return __pyx_r;
18919
  }
18920
 
18921
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297
18922
  * return PyArray_MultiIter_NUMITER(self)
18923
  *
18924
  * @property # <<<<<<<<<<<<<<
@@ -18929,7 +18929,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMulti
18929
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMultiIterObject *__pyx_v_self) {
18930
  npy_intp __pyx_r;
18931
 
18932
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300
18933
  * cdef inline npy_intp size(self) noexcept nogil:
18934
  * """The total broadcasted size."""
18935
  * return PyArray_MultiIter_SIZE(self) # <<<<<<<<<<<<<<
@@ -18942,7 +18942,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMul
18942
  }
18943
  goto __pyx_L0;
18944
 
18945
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297
18946
  * return PyArray_MultiIter_NUMITER(self)
18947
  *
18948
  * @property # <<<<<<<<<<<<<<
@@ -18955,7 +18955,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMul
18955
  return __pyx_r;
18956
  }
18957
 
18958
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302
18959
  * return PyArray_MultiIter_SIZE(self)
18960
  *
18961
  * @property # <<<<<<<<<<<<<<
@@ -18966,7 +18966,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMul
18966
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMultiIterObject *__pyx_v_self) {
18967
  npy_intp __pyx_r;
18968
 
18969
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305
18970
  * cdef inline npy_intp index(self) noexcept nogil:
18971
  * """The current (1-d) index into the broadcasted result."""
18972
  * return PyArray_MultiIter_INDEX(self) # <<<<<<<<<<<<<<
@@ -18979,7 +18979,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMu
18979
  }
18980
  goto __pyx_L0;
18981
 
18982
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302
18983
  * return PyArray_MultiIter_SIZE(self)
18984
  *
18985
  * @property # <<<<<<<<<<<<<<
@@ -18992,7 +18992,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMu
18992
  return __pyx_r;
18993
  }
18994
 
18995
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307
18996
  * return PyArray_MultiIter_INDEX(self)
18997
  *
18998
  * @property # <<<<<<<<<<<<<<
@@ -19003,7 +19003,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMu
19003
  static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterObject *__pyx_v_self) {
19004
  int __pyx_r;
19005
 
19006
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":310
19007
  * cdef inline int nd(self) noexcept nogil:
19008
  * """The number of dimensions in the broadcasted result."""
19009
  * return PyArray_MultiIter_NDIM(self) # <<<<<<<<<<<<<<
@@ -19016,7 +19016,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterO
19016
  }
19017
  goto __pyx_L0;
19018
 
19019
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307
19020
  * return PyArray_MultiIter_INDEX(self)
19021
  *
19022
  * @property # <<<<<<<<<<<<<<
@@ -19029,7 +19029,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterO
19029
  return __pyx_r;
19030
  }
19031
 
19032
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312
19033
  * return PyArray_MultiIter_NDIM(self)
19034
  *
19035
  * @property # <<<<<<<<<<<<<<
@@ -19040,7 +19040,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterO
19040
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(PyArrayMultiIterObject *__pyx_v_self) {
19041
  npy_intp *__pyx_r;
19042
 
19043
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":315
19044
  * cdef inline npy_intp* dimensions(self) noexcept nogil:
19045
  * """The shape of the broadcasted result."""
19046
  * return PyArray_MultiIter_DIMS(self) # <<<<<<<<<<<<<<
@@ -19053,7 +19053,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(Py
19053
  }
19054
  goto __pyx_L0;
19055
 
19056
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312
19057
  * return PyArray_MultiIter_NDIM(self)
19058
  *
19059
  * @property # <<<<<<<<<<<<<<
@@ -19066,7 +19066,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(Py
19066
  return __pyx_r;
19067
  }
19068
 
19069
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317
19070
  * return PyArray_MultiIter_DIMS(self)
19071
  *
19072
  * @property # <<<<<<<<<<<<<<
@@ -19077,7 +19077,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(Py
19077
  static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMultiIterObject *__pyx_v_self) {
19078
  void **__pyx_r;
19079
 
19080
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":321
19081
  * """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
19082
  * On return, the iterators are adjusted for broadcasting."""
19083
  * return PyArray_MultiIter_ITERS(self) # <<<<<<<<<<<<<<
@@ -19090,7 +19090,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMult
19090
  }
19091
  goto __pyx_L0;
19092
 
19093
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317
19094
  * return PyArray_MultiIter_DIMS(self)
19095
  *
19096
  * @property # <<<<<<<<<<<<<<
@@ -19103,7 +19103,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMult
19103
  return __pyx_r;
19104
  }
19105
 
19106
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335
19107
  * # Instead, we use properties that map to the corresponding C-API functions.
19108
  *
19109
  * @property # <<<<<<<<<<<<<<
@@ -19114,7 +19114,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMult
19114
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObject *__pyx_v_self) {
19115
  PyObject *__pyx_r;
19116
 
19117
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":339
19118
  * """Returns a borrowed reference to the object owning the data/memory.
19119
  * """
19120
  * return PyArray_BASE(self) # <<<<<<<<<<<<<<
@@ -19127,7 +19127,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObje
19127
  }
19128
  goto __pyx_L0;
19129
 
19130
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335
19131
  * # Instead, we use properties that map to the corresponding C-API functions.
19132
  *
19133
  * @property # <<<<<<<<<<<<<<
@@ -19140,7 +19140,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObje
19140
  return __pyx_r;
19141
  }
19142
 
19143
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341
19144
  * return PyArray_BASE(self)
19145
  *
19146
  * @property # <<<<<<<<<<<<<<
@@ -19154,7 +19154,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr
19154
  PyArray_Descr *__pyx_t_1;
19155
  __Pyx_RefNannySetupContext("__get__", 0);
19156
 
19157
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":345
19158
  * """Returns an owned reference to the dtype of the array.
19159
  * """
19160
  * return <dtype>PyArray_DESCR(self) # <<<<<<<<<<<<<<
@@ -19175,7 +19175,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr
19175
 
19176
  goto __pyx_L0;
19177
 
19178
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341
19179
  * return PyArray_BASE(self)
19180
  *
19181
  * @property # <<<<<<<<<<<<<<
@@ -19190,7 +19190,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr
19190
  return __pyx_r;
19191
  }
19192
 
19193
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347
19194
  * return <dtype>PyArray_DESCR(self)
19195
  *
19196
  * @property # <<<<<<<<<<<<<<
@@ -19201,7 +19201,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr
19201
  static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__pyx_v_self) {
19202
  int __pyx_r;
19203
 
19204
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":351
19205
  * """Returns the number of dimensions in the array.
19206
  * """
19207
  * return PyArray_NDIM(self) # <<<<<<<<<<<<<<
@@ -19214,7 +19214,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__
19214
  }
19215
  goto __pyx_L0;
19216
 
19217
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347
19218
  * return <dtype>PyArray_DESCR(self)
19219
  *
19220
  * @property # <<<<<<<<<<<<<<
@@ -19227,7 +19227,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__
19227
  return __pyx_r;
19228
  }
19229
 
19230
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353
19231
  * return PyArray_NDIM(self)
19232
  *
19233
  * @property # <<<<<<<<<<<<<<
@@ -19238,7 +19238,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__
19238
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObject *__pyx_v_self) {
19239
  npy_intp *__pyx_r;
19240
 
19241
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":359
19242
  * Can return NULL for 0-dimensional arrays.
19243
  * """
19244
  * return PyArray_DIMS(self) # <<<<<<<<<<<<<<
@@ -19251,7 +19251,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObj
19251
  }
19252
  goto __pyx_L0;
19253
 
19254
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353
19255
  * return PyArray_NDIM(self)
19256
  *
19257
  * @property # <<<<<<<<<<<<<<
@@ -19264,7 +19264,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObj
19264
  return __pyx_r;
19265
  }
19266
 
19267
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361
19268
  * return PyArray_DIMS(self)
19269
  *
19270
  * @property # <<<<<<<<<<<<<<
@@ -19275,7 +19275,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObj
19275
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayObject *__pyx_v_self) {
19276
  npy_intp *__pyx_r;
19277
 
19278
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":366
19279
  * The number of elements matches the number of dimensions of the array (ndim).
19280
  * """
19281
  * return PyArray_STRIDES(self) # <<<<<<<<<<<<<<
@@ -19288,7 +19288,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayO
19288
  }
19289
  goto __pyx_L0;
19290
 
19291
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361
19292
  * return PyArray_DIMS(self)
19293
  *
19294
  * @property # <<<<<<<<<<<<<<
@@ -19301,7 +19301,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayO
19301
  return __pyx_r;
19302
  }
19303
 
19304
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368
19305
  * return PyArray_STRIDES(self)
19306
  *
19307
  * @property # <<<<<<<<<<<<<<
@@ -19312,7 +19312,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayO
19312
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObject *__pyx_v_self) {
19313
  npy_intp __pyx_r;
19314
 
19315
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":372
19316
  * """Returns the total size (in number of elements) of the array.
19317
  * """
19318
  * return PyArray_SIZE(self) # <<<<<<<<<<<<<<
@@ -19325,7 +19325,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObjec
19325
  }
19326
  goto __pyx_L0;
19327
 
19328
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368
19329
  * return PyArray_STRIDES(self)
19330
  *
19331
  * @property # <<<<<<<<<<<<<<
@@ -19338,7 +19338,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObjec
19338
  return __pyx_r;
19339
  }
19340
 
19341
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374
19342
  * return PyArray_SIZE(self)
19343
  *
19344
  * @property # <<<<<<<<<<<<<<
@@ -19349,7 +19349,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObjec
19349
  static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *__pyx_v_self) {
19350
  char *__pyx_r;
19351
 
19352
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":381
19353
  * of `PyArray_DATA()` instead, which returns a 'void*'.
19354
  * """
19355
  * return PyArray_BYTES(self) # <<<<<<<<<<<<<<
@@ -19362,7 +19362,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *
19362
  }
19363
  goto __pyx_L0;
19364
 
19365
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374
19366
  * return PyArray_SIZE(self)
19367
  *
19368
  * @property # <<<<<<<<<<<<<<
@@ -19375,7 +19375,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *
19375
  return __pyx_r;
19376
  }
19377
 
19378
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794
19379
  * ctypedef long double complex clongdouble_t
19380
  *
19381
  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -19392,7 +19392,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
19392
  int __pyx_clineno = 0;
19393
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
19394
 
19395
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":795
19396
  *
19397
  * cdef inline object PyArray_MultiIterNew1(a):
19398
  * return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
@@ -19412,7 +19412,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
19412
  __pyx_t_1 = 0;
19413
  goto __pyx_L0;
19414
 
19415
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794
19416
  * ctypedef long double complex clongdouble_t
19417
  *
19418
  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -19431,7 +19431,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
19431
  return __pyx_r;
19432
  }
19433
 
19434
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797
19435
  * return PyArray_MultiIterNew(1, <void*>a)
19436
  *
19437
  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -19448,7 +19448,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
19448
  int __pyx_clineno = 0;
19449
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
19450
 
19451
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":798
19452
  *
19453
  * cdef inline object PyArray_MultiIterNew2(a, b):
19454
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
@@ -19468,7 +19468,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
19468
  __pyx_t_1 = 0;
19469
  goto __pyx_L0;
19470
 
19471
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797
19472
  * return PyArray_MultiIterNew(1, <void*>a)
19473
  *
19474
  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -19487,7 +19487,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
19487
  return __pyx_r;
19488
  }
19489
 
19490
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800
19491
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
19492
  *
19493
  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -19504,7 +19504,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
19504
  int __pyx_clineno = 0;
19505
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
19506
 
19507
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":801
19508
  *
19509
  * cdef inline object PyArray_MultiIterNew3(a, b, c):
19510
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
@@ -19524,7 +19524,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
19524
  __pyx_t_1 = 0;
19525
  goto __pyx_L0;
19526
 
19527
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800
19528
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
19529
  *
19530
  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -19543,7 +19543,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
19543
  return __pyx_r;
19544
  }
19545
 
19546
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803
19547
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
19548
  *
19549
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -19560,7 +19560,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
19560
  int __pyx_clineno = 0;
19561
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
19562
 
19563
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":804
19564
  *
19565
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
19566
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
@@ -19580,7 +19580,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
19580
  __pyx_t_1 = 0;
19581
  goto __pyx_L0;
19582
 
19583
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803
19584
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
19585
  *
19586
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -19599,7 +19599,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
19599
  return __pyx_r;
19600
  }
19601
 
19602
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806
19603
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
19604
  *
19605
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -19616,7 +19616,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
19616
  int __pyx_clineno = 0;
19617
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
19618
 
19619
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":807
19620
  *
19621
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
19622
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
@@ -19636,7 +19636,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
19636
  __pyx_t_1 = 0;
19637
  goto __pyx_L0;
19638
 
19639
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806
19640
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
19641
  *
19642
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -19655,7 +19655,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
19655
  return __pyx_r;
19656
  }
19657
 
19658
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809
19659
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
19660
  *
19661
  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -19670,7 +19670,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
19670
  PyObject *__pyx_t_2;
19671
  __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
19672
 
19673
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810
19674
  *
19675
  * cdef inline tuple PyDataType_SHAPE(dtype d):
19676
  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -19682,7 +19682,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
19682
  if (__pyx_t_1) {
19683
 
19684
 
19685
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":811
19686
  * cdef inline tuple PyDataType_SHAPE(dtype d):
19687
  * if PyDataType_HASSUBARRAY(d):
19688
  * return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
@@ -19703,7 +19703,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
19703
 
19704
  goto __pyx_L0;
19705
 
19706
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810
19707
  *
19708
  * cdef inline tuple PyDataType_SHAPE(dtype d):
19709
  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -19712,7 +19712,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
19712
  */
19713
  }
19714
 
19715
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":813
19716
  * return <tuple>d.subarray.shape
19717
  * else:
19718
  * return () # <<<<<<<<<<<<<<
@@ -19732,7 +19732,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
19732
  goto __pyx_L0;
19733
  }
19734
 
19735
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809
19736
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
19737
  *
19738
  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -19747,7 +19747,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
19747
  return __pyx_r;
19748
  }
19749
 
19750
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947
19751
  *
19752
  * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]:
19753
  * @property # <<<<<<<<<<<<<<
@@ -19758,7 +19758,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
19758
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx_v_self) {
19759
  int __pyx_r;
19760
 
19761
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":949
19762
  * @property
19763
  * cdef inline int nin(self) noexcept nogil:
19764
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin # <<<<<<<<<<<<<<
@@ -19771,7 +19771,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx
19771
  }
19772
  goto __pyx_L0;
19773
 
19774
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947
19775
  *
19776
  * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]:
19777
  * @property # <<<<<<<<<<<<<<
@@ -19784,7 +19784,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx
19784
  return __pyx_r;
19785
  }
19786
 
19787
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951
19788
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin
19789
  *
19790
  * @property # <<<<<<<<<<<<<<
@@ -19795,7 +19795,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx
19795
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__pyx_v_self) {
19796
  int __pyx_r;
19797
 
19798
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":953
19799
  * @property
19800
  * cdef inline int nout(self) noexcept nogil:
19801
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout # <<<<<<<<<<<<<<
@@ -19808,7 +19808,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__py
19808
  }
19809
  goto __pyx_L0;
19810
 
19811
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951
19812
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin
19813
  *
19814
  * @property # <<<<<<<<<<<<<<
@@ -19821,7 +19821,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__py
19821
  return __pyx_r;
19822
  }
19823
 
19824
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955
19825
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout
19826
  *
19827
  * @property # <<<<<<<<<<<<<<
@@ -19832,7 +19832,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__py
19832
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__pyx_v_self) {
19833
  int __pyx_r;
19834
 
19835
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":957
19836
  * @property
19837
  * cdef inline int nargs(self) noexcept nogil:
19838
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs # <<<<<<<<<<<<<<
@@ -19845,7 +19845,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__p
19845
  }
19846
  goto __pyx_L0;
19847
 
19848
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955
19849
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout
19850
  *
19851
  * @property # <<<<<<<<<<<<<<
@@ -19858,7 +19858,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__p
19858
  return __pyx_r;
19859
  }
19860
 
19861
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959
19862
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
19863
  *
19864
  * @property # <<<<<<<<<<<<<<
@@ -19869,7 +19869,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__p
19869
  static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___get__(PyUFuncObject *__pyx_v_self) {
19870
  PyUFuncGenericFunction *__pyx_r;
19871
 
19872
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":961
19873
  * @property
19874
  * cdef inline PyUFuncGenericFunction* functions(self) noexcept nogil:
19875
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions # <<<<<<<<<<<<<<
@@ -19882,7 +19882,7 @@ static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___
19882
  }
19883
  goto __pyx_L0;
19884
 
19885
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959
19886
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
19887
  *
19888
  * @property # <<<<<<<<<<<<<<
@@ -19895,7 +19895,7 @@ static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___
19895
  return __pyx_r;
19896
  }
19897
 
19898
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963
19899
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions
19900
  *
19901
  * @property # <<<<<<<<<<<<<<
@@ -19906,7 +19906,7 @@ static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___
19906
  static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *__pyx_v_self) {
19907
  void **__pyx_r;
19908
 
19909
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":965
19910
  * @property
19911
  * cdef inline void ** data(self) noexcept nogil:
19912
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data # <<<<<<<<<<<<<<
@@ -19919,7 +19919,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *_
19919
  }
19920
  goto __pyx_L0;
19921
 
19922
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963
19923
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions
19924
  *
19925
  * @property # <<<<<<<<<<<<<<
@@ -19932,7 +19932,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *_
19932
  return __pyx_r;
19933
  }
19934
 
19935
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967
19936
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
19937
  *
19938
  * @property # <<<<<<<<<<<<<<
@@ -19943,7 +19943,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *_
19943
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__pyx_v_self) {
19944
  int __pyx_r;
19945
 
19946
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":969
19947
  * @property
19948
  * cdef inline int ntypes(self) noexcept nogil:
19949
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes # <<<<<<<<<<<<<<
@@ -19956,7 +19956,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__
19956
  }
19957
  goto __pyx_L0;
19958
 
19959
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967
19960
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
19961
  *
19962
  * @property # <<<<<<<<<<<<<<
@@ -19969,7 +19969,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__
19969
  return __pyx_r;
19970
  }
19971
 
19972
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971
19973
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
19974
  *
19975
  * @property # <<<<<<<<<<<<<<
@@ -19980,7 +19980,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__
19980
  static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObject *__pyx_v_self) {
19981
  char const *__pyx_r;
19982
 
19983
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":973
19984
  * @property
19985
  * cdef inline const char* name(self) noexcept nogil:
19986
  * return _PyUFuncObject_GET_ITEM_DATA(self).name # <<<<<<<<<<<<<<
@@ -19993,7 +19993,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObje
19993
  }
19994
  goto __pyx_L0;
19995
 
19996
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971
19997
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
19998
  *
19999
  * @property # <<<<<<<<<<<<<<
@@ -20006,7 +20006,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObje
20006
  return __pyx_r;
20007
  }
20008
 
20009
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975
20010
  * return _PyUFuncObject_GET_ITEM_DATA(self).name
20011
  *
20012
  * @property # <<<<<<<<<<<<<<
@@ -20017,7 +20017,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObje
20017
  static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObject *__pyx_v_self) {
20018
  char const *__pyx_r;
20019
 
20020
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":977
20021
  * @property
20022
  * cdef inline const char* doc(self) noexcept nogil:
20023
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc # <<<<<<<<<<<<<<
@@ -20030,7 +20030,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObjec
20030
  }
20031
  goto __pyx_L0;
20032
 
20033
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975
20034
  * return _PyUFuncObject_GET_ITEM_DATA(self).name
20035
  *
20036
  * @property # <<<<<<<<<<<<<<
@@ -20043,7 +20043,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObjec
20043
  return __pyx_r;
20044
  }
20045
 
20046
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979
20047
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc
20048
  *
20049
  * @property # <<<<<<<<<<<<<<
@@ -20054,7 +20054,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObjec
20054
  static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__pyx_v_self) {
20055
  void *__pyx_r;
20056
 
20057
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":981
20058
  * @property
20059
  * cdef inline void* ptr(self) noexcept nogil:
20060
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr # <<<<<<<<<<<<<<
@@ -20067,7 +20067,7 @@ static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__p
20067
  }
20068
  goto __pyx_L0;
20069
 
20070
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979
20071
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc
20072
  *
20073
  * @property # <<<<<<<<<<<<<<
@@ -20080,7 +20080,7 @@ static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__p
20080
  return __pyx_r;
20081
  }
20082
 
20083
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983
20084
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
20085
  *
20086
  * @property # <<<<<<<<<<<<<<
@@ -20091,7 +20091,7 @@ static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__p
20091
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject *__pyx_v_self) {
20092
  PyObject *__pyx_r;
20093
 
20094
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":985
20095
  * @property
20096
  * cdef inline PyObject* obj(self) noexcept nogil:
20097
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj # <<<<<<<<<<<<<<
@@ -20104,7 +20104,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject
20104
  }
20105
  goto __pyx_L0;
20106
 
20107
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983
20108
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
20109
  *
20110
  * @property # <<<<<<<<<<<<<<
@@ -20117,7 +20117,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject
20117
  return __pyx_r;
20118
  }
20119
 
20120
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987
20121
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj
20122
  *
20123
  * @property # <<<<<<<<<<<<<<
@@ -20128,7 +20128,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject
20128
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncObject *__pyx_v_self) {
20129
  PyObject *__pyx_r;
20130
 
20131
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":989
20132
  * @property
20133
  * cdef inline PyObject* userloops(self) noexcept nogil:
20134
  * return _PyUFuncObject_GET_ITEM_DATA(self).userloops # <<<<<<<<<<<<<<
@@ -20141,7 +20141,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncO
20141
  }
20142
  goto __pyx_L0;
20143
 
20144
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987
20145
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj
20146
  *
20147
  * @property # <<<<<<<<<<<<<<
@@ -20154,7 +20154,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncO
20154
  return __pyx_r;
20155
  }
20156
 
20157
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065
20158
  * int _import_umath() except -1
20159
  *
20160
  * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<<
@@ -20168,7 +20168,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a
20168
  const char *__pyx_filename = NULL;
20169
  int __pyx_clineno = 0;
20170
 
20171
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066
20172
  *
20173
  * cdef inline void set_array_base(ndarray arr, object base) except *:
20174
  * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
@@ -20177,7 +20177,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a
20177
  */
20178
  Py_INCREF(__pyx_v_base);
20179
 
20180
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1067
20181
  * cdef inline void set_array_base(ndarray arr, object base) except *:
20182
  * Py_INCREF(base) # important to do this before stealing the reference below!
20183
  * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
@@ -20187,7 +20187,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a
20187
  __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 1067, __pyx_L1_error)
20188
 
20189
 
20190
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065
20191
  * int _import_umath() except -1
20192
  *
20193
  * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<<
@@ -20203,7 +20203,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a
20203
 
20204
  }
20205
 
20206
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069
20207
  * PyArray_SetBaseObject(arr, base)
20208
  *
20209
  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
@@ -20218,7 +20218,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20218
  int __pyx_t_1;
20219
  __Pyx_RefNannySetupContext("get_array_base", 0);
20220
 
20221
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070
20222
  *
20223
  * cdef inline object get_array_base(ndarray arr):
20224
  * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
@@ -20227,7 +20227,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20227
  */
20228
  __pyx_v_base = PyArray_BASE(__pyx_v_arr);
20229
 
20230
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071
20231
  * cdef inline object get_array_base(ndarray arr):
20232
  * base = PyArray_BASE(arr)
20233
  * if base is NULL: # <<<<<<<<<<<<<<
@@ -20239,7 +20239,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20239
  if (__pyx_t_1) {
20240
 
20241
 
20242
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1072
20243
  * base = PyArray_BASE(arr)
20244
  * if base is NULL:
20245
  * return None # <<<<<<<<<<<<<<
@@ -20256,7 +20256,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20256
  }
20257
  goto __pyx_L0;
20258
 
20259
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071
20260
  * cdef inline object get_array_base(ndarray arr):
20261
  * base = PyArray_BASE(arr)
20262
  * if base is NULL: # <<<<<<<<<<<<<<
@@ -20265,7 +20265,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20265
  */
20266
  }
20267
 
20268
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073
20269
  * if base is NULL:
20270
  * return None
20271
  * return <object>base # <<<<<<<<<<<<<<
@@ -20283,7 +20283,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20283
  }
20284
  goto __pyx_L0;
20285
 
20286
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069
20287
  * PyArray_SetBaseObject(arr, base)
20288
  *
20289
  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
@@ -20299,7 +20299,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20299
  return __pyx_r;
20300
  }
20301
 
20302
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077
20303
  * # Versions of the import_* functions which are more suitable for
20304
  * # Cython code.
20305
  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -20325,7 +20325,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20325
  int __pyx_clineno = 0;
20326
  __Pyx_RefNannySetupContext("import_array", 0);
20327
 
20328
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20329
  * # Cython code.
20330
  * cdef inline int import_array() except -1:
20331
  * try: # <<<<<<<<<<<<<<
@@ -20341,7 +20341,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20341
  __Pyx_XGOTREF(__pyx_t_3);
20342
  /*try:*/ {
20343
 
20344
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1079
20345
  * cdef inline int import_array() except -1:
20346
  * try:
20347
  * __pyx_import_array() # <<<<<<<<<<<<<<
@@ -20351,7 +20351,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20351
  __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1079, __pyx_L3_error)
20352
 
20353
 
20354
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20355
  * # Cython code.
20356
  * cdef inline int import_array() except -1:
20357
  * try: # <<<<<<<<<<<<<<
@@ -20365,7 +20365,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20365
  goto __pyx_L8_try_end;
20366
  __pyx_L3_error:;
20367
 
20368
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1080
20369
  * try:
20370
  * __pyx_import_array()
20371
  * except Exception: # <<<<<<<<<<<<<<
@@ -20380,7 +20380,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20380
  __Pyx_XGOTREF(__pyx_t_6);
20381
  __Pyx_XGOTREF(__pyx_t_7);
20382
 
20383
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1081
20384
  * __pyx_import_array()
20385
  * except Exception:
20386
  * raise ImportError("numpy._core.multiarray failed to import") # <<<<<<<<<<<<<<
@@ -20402,7 +20402,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20402
  }
20403
  goto __pyx_L5_except_error;
20404
 
20405
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20406
  * # Cython code.
20407
  * cdef inline int import_array() except -1:
20408
  * try: # <<<<<<<<<<<<<<
@@ -20418,7 +20418,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20418
  __pyx_L8_try_end:;
20419
  }
20420
 
20421
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077
20422
  * # Versions of the import_* functions which are more suitable for
20423
  * # Cython code.
20424
  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -20443,7 +20443,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20443
  return __pyx_r;
20444
  }
20445
 
20446
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083
20447
  * raise ImportError("numpy._core.multiarray failed to import")
20448
  *
20449
  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -20469,7 +20469,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20469
  int __pyx_clineno = 0;
20470
  __Pyx_RefNannySetupContext("import_umath", 0);
20471
 
20472
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20473
  *
20474
  * cdef inline int import_umath() except -1:
20475
  * try: # <<<<<<<<<<<<<<
@@ -20485,7 +20485,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20485
  __Pyx_XGOTREF(__pyx_t_3);
20486
  /*try:*/ {
20487
 
20488
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1085
20489
  * cdef inline int import_umath() except -1:
20490
  * try:
20491
  * _import_umath() # <<<<<<<<<<<<<<
@@ -20495,7 +20495,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20495
  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1085, __pyx_L3_error)
20496
 
20497
 
20498
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20499
  *
20500
  * cdef inline int import_umath() except -1:
20501
  * try: # <<<<<<<<<<<<<<
@@ -20509,7 +20509,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20509
  goto __pyx_L8_try_end;
20510
  __pyx_L3_error:;
20511
 
20512
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1086
20513
  * try:
20514
  * _import_umath()
20515
  * except Exception: # <<<<<<<<<<<<<<
@@ -20524,7 +20524,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20524
  __Pyx_XGOTREF(__pyx_t_6);
20525
  __Pyx_XGOTREF(__pyx_t_7);
20526
 
20527
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1087
20528
  * _import_umath()
20529
  * except Exception:
20530
  * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<<
@@ -20546,7 +20546,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20546
  }
20547
  goto __pyx_L5_except_error;
20548
 
20549
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20550
  *
20551
  * cdef inline int import_umath() except -1:
20552
  * try: # <<<<<<<<<<<<<<
@@ -20562,7 +20562,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20562
  __pyx_L8_try_end:;
20563
  }
20564
 
20565
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083
20566
  * raise ImportError("numpy._core.multiarray failed to import")
20567
  *
20568
  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -20587,7 +20587,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20587
  return __pyx_r;
20588
  }
20589
 
20590
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089
20591
  * raise ImportError("numpy._core.umath failed to import")
20592
  *
20593
  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -20613,7 +20613,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20613
  int __pyx_clineno = 0;
20614
  __Pyx_RefNannySetupContext("import_ufunc", 0);
20615
 
20616
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
20617
  *
20618
  * cdef inline int import_ufunc() except -1:
20619
  * try: # <<<<<<<<<<<<<<
@@ -20629,7 +20629,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20629
  __Pyx_XGOTREF(__pyx_t_3);
20630
  /*try:*/ {
20631
 
20632
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1091
20633
  * cdef inline int import_ufunc() except -1:
20634
  * try:
20635
  * _import_umath() # <<<<<<<<<<<<<<
@@ -20639,7 +20639,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20639
  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1091, __pyx_L3_error)
20640
 
20641
 
20642
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
20643
  *
20644
  * cdef inline int import_ufunc() except -1:
20645
  * try: # <<<<<<<<<<<<<<
@@ -20653,7 +20653,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20653
  goto __pyx_L8_try_end;
20654
  __pyx_L3_error:;
20655
 
20656
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1092
20657
  * try:
20658
  * _import_umath()
20659
  * except Exception: # <<<<<<<<<<<<<<
@@ -20668,7 +20668,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20668
  __Pyx_XGOTREF(__pyx_t_6);
20669
  __Pyx_XGOTREF(__pyx_t_7);
20670
 
20671
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1093
20672
  * _import_umath()
20673
  * except Exception:
20674
  * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<<
@@ -20690,7 +20690,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20690
  }
20691
  goto __pyx_L5_except_error;
20692
 
20693
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
20694
  *
20695
  * cdef inline int import_ufunc() except -1:
20696
  * try: # <<<<<<<<<<<<<<
@@ -20706,7 +20706,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20706
  __pyx_L8_try_end:;
20707
  }
20708
 
20709
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089
20710
  * raise ImportError("numpy._core.umath failed to import")
20711
  *
20712
  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -20731,7 +20731,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20731
  return __pyx_r;
20732
  }
20733
 
20734
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096
20735
  *
20736
  *
20737
  * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<<
@@ -20742,7 +20742,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20742
  static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) {
20743
  int __pyx_r;
20744
 
20745
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1108
20746
  * bool
20747
  * """
20748
  * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<<
@@ -20755,7 +20755,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_
20755
  }
20756
  goto __pyx_L0;
20757
 
20758
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096
20759
  *
20760
  *
20761
  * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<<
@@ -20769,7 +20769,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_
20769
  return __pyx_r;
20770
  }
20771
 
20772
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111
20773
  *
20774
  *
20775
  * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<<
@@ -20780,7 +20780,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_
20780
  static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) {
20781
  int __pyx_r;
20782
 
20783
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1123
20784
  * bool
20785
  * """
20786
  * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<<
@@ -20793,7 +20793,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o
20793
  }
20794
  goto __pyx_L0;
20795
 
20796
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111
20797
  *
20798
  *
20799
  * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<<
@@ -20807,7 +20807,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o
20807
  return __pyx_r;
20808
  }
20809
 
20810
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126
20811
  *
20812
  *
20813
  * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -20818,7 +20818,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o
20818
  static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) {
20819
  npy_datetime __pyx_r;
20820
 
20821
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1133
20822
  * also needed. That can be found using `get_datetime64_unit`.
20823
  * """
20824
  * return _PyDatetimeScalarObject_GetValue(obj) # <<<<<<<<<<<<<<
@@ -20831,7 +20831,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *
20831
  }
20832
  goto __pyx_L0;
20833
 
20834
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126
20835
  *
20836
  *
20837
  * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -20844,7 +20844,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *
20844
  return __pyx_r;
20845
  }
20846
 
20847
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136
20848
  *
20849
  *
20850
  * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -20855,7 +20855,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *
20855
  static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) {
20856
  npy_timedelta __pyx_r;
20857
 
20858
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1140
20859
  * returns the int64 value underlying scalar numpy timedelta64 object
20860
  * """
20861
  * return _PyTimedeltaScalarObject_GetValue(obj) # <<<<<<<<<<<<<<
@@ -20868,7 +20868,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject
20868
  }
20869
  goto __pyx_L0;
20870
 
20871
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136
20872
  *
20873
  *
20874
  * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -20881,7 +20881,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject
20881
  return __pyx_r;
20882
  }
20883
 
20884
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143
20885
  *
20886
  *
20887
  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -20892,7 +20892,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject
20892
  static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) {
20893
  NPY_DATETIMEUNIT __pyx_r;
20894
 
20895
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1147
20896
  * returns the unit part of the dtype for a numpy datetime64 object.
20897
  * """
20898
  * return _PyDatetimeScalarObject_GetMetadata(obj).base # <<<<<<<<<<<<<<
@@ -20905,7 +20905,7 @@ static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObjec
20905
  }
20906
  goto __pyx_L0;
20907
 
20908
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143
20909
  *
20910
  *
20911
  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
1550
  static const char* const __pyx_f[] = {
1551
  "mamba3hot.pyx",
1552
  "View.MemoryView",
1553
+ "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd",
1554
  "cpython/type.pxd",
1555
  };
1556
  /* #### Code section: utility_code_proto_before_types ### */
 
1803
 
1804
  /* #### Code section: numeric_typedefs ### */
1805
 
1806
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":761
1807
  * # in Cython to enable them only on the right systems.
1808
  *
1809
  * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
 
1812
  */
1813
  typedef npy_int8 __pyx_t_5numpy_int8_t;
1814
 
1815
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762
1816
  *
1817
  * ctypedef npy_int8 int8_t
1818
  * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
 
1821
  */
1822
  typedef npy_int16 __pyx_t_5numpy_int16_t;
1823
 
1824
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":763
1825
  * ctypedef npy_int8 int8_t
1826
  * ctypedef npy_int16 int16_t
1827
  * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
 
1830
  */
1831
  typedef npy_int32 __pyx_t_5numpy_int32_t;
1832
 
1833
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":764
1834
  * ctypedef npy_int16 int16_t
1835
  * ctypedef npy_int32 int32_t
1836
  * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
 
1839
  */
1840
  typedef npy_int64 __pyx_t_5numpy_int64_t;
1841
 
1842
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":766
1843
  * ctypedef npy_int64 int64_t
1844
  *
1845
  * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
 
1848
  */
1849
  typedef npy_uint8 __pyx_t_5numpy_uint8_t;
1850
 
1851
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":767
1852
  *
1853
  * ctypedef npy_uint8 uint8_t
1854
  * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
 
1857
  */
1858
  typedef npy_uint16 __pyx_t_5numpy_uint16_t;
1859
 
1860
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768
1861
  * ctypedef npy_uint8 uint8_t
1862
  * ctypedef npy_uint16 uint16_t
1863
  * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
 
1866
  */
1867
  typedef npy_uint32 __pyx_t_5numpy_uint32_t;
1868
 
1869
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769
1870
  * ctypedef npy_uint16 uint16_t
1871
  * ctypedef npy_uint32 uint32_t
1872
  * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
 
1875
  */
1876
  typedef npy_uint64 __pyx_t_5numpy_uint64_t;
1877
 
1878
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":771
1879
  * ctypedef npy_uint64 uint64_t
1880
  *
1881
  * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
 
1884
  */
1885
  typedef npy_float32 __pyx_t_5numpy_float32_t;
1886
 
1887
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":772
1888
  *
1889
  * ctypedef npy_float32 float32_t
1890
  * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
 
1893
  */
1894
  typedef npy_float64 __pyx_t_5numpy_float64_t;
1895
 
1896
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779
1897
  * ctypedef double complex complex128_t
1898
  *
1899
  * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
 
1902
  */
1903
  typedef npy_longlong __pyx_t_5numpy_longlong_t;
1904
 
1905
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780
1906
  *
1907
  * ctypedef npy_longlong longlong_t
1908
  * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
 
1911
  */
1912
  typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
1913
 
1914
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":782
1915
  * ctypedef npy_ulonglong ulonglong_t
1916
  *
1917
  * ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
 
1920
  */
1921
  typedef npy_intp __pyx_t_5numpy_intp_t;
1922
 
1923
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783
1924
  *
1925
  * ctypedef npy_intp intp_t
1926
  * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
 
1929
  */
1930
  typedef npy_uintp __pyx_t_5numpy_uintp_t;
1931
 
1932
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785
1933
  * ctypedef npy_uintp uintp_t
1934
  *
1935
  * ctypedef npy_double float_t # <<<<<<<<<<<<<<
 
1938
  */
1939
  typedef npy_double __pyx_t_5numpy_float_t;
1940
 
1941
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786
1942
  *
1943
  * ctypedef npy_double float_t
1944
  * ctypedef npy_double double_t # <<<<<<<<<<<<<<
 
1947
  */
1948
  typedef npy_double __pyx_t_5numpy_double_t;
1949
 
1950
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":787
1951
  * ctypedef npy_double float_t
1952
  * ctypedef npy_double double_t
1953
  * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
 
18448
  return __pyx_r;
18449
  }
18450
 
18451
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230
18452
  *
18453
  * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]:
18454
  * @property # <<<<<<<<<<<<<<
 
18459
  static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArray_Descr *__pyx_v_self) {
18460
  PyTypeObject *__pyx_r;
18461
 
18462
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":232
18463
  * @property
18464
  * cdef inline PyTypeObject* typeobj(self) noexcept nogil:
18465
  * return PyDataType_TYPEOBJ(self) # <<<<<<<<<<<<<<
 
18472
  }
18473
  goto __pyx_L0;
18474
 
18475
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230
18476
  *
18477
  * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]:
18478
  * @property # <<<<<<<<<<<<<<
 
18485
  return __pyx_r;
18486
  }
18487
 
18488
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234
18489
  * return PyDataType_TYPEOBJ(self)
18490
  *
18491
  * @property # <<<<<<<<<<<<<<
 
18496
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__pyx_v_self) {
18497
  char __pyx_r;
18498
 
18499
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":236
18500
  * @property
18501
  * cdef inline char kind(self) noexcept nogil:
18502
  * return PyDataType_KIND(self) # <<<<<<<<<<<<<<
 
18509
  }
18510
  goto __pyx_L0;
18511
 
18512
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234
18513
  * return PyDataType_TYPEOBJ(self)
18514
  *
18515
  * @property # <<<<<<<<<<<<<<
 
18522
  return __pyx_r;
18523
  }
18524
 
18525
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238
18526
  * return PyDataType_KIND(self)
18527
  *
18528
  * @property # <<<<<<<<<<<<<<
 
18533
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__pyx_v_self) {
18534
  char __pyx_r;
18535
 
18536
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":240
18537
  * @property
18538
  * cdef inline char type(self) noexcept nogil:
18539
  * return PyDataType_TYPE(self) # <<<<<<<<<<<<<<
 
18546
  }
18547
  goto __pyx_L0;
18548
 
18549
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238
18550
  * return PyDataType_KIND(self)
18551
  *
18552
  * @property # <<<<<<<<<<<<<<
 
18559
  return __pyx_r;
18560
  }
18561
 
18562
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247
18563
  * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of
18564
  * # directly accessing this field.
18565
  * @property # <<<<<<<<<<<<<<
 
18570
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr *__pyx_v_self) {
18571
  char __pyx_r;
18572
 
18573
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":249
18574
  * @property
18575
  * cdef inline char byteorder(self) noexcept nogil:
18576
  * return PyDataType_BYTEORDER(self) # <<<<<<<<<<<<<<
 
18583
  }
18584
  goto __pyx_L0;
18585
 
18586
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247
18587
  * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of
18588
  * # directly accessing this field.
18589
  * @property # <<<<<<<<<<<<<<
 
18596
  return __pyx_r;
18597
  }
18598
 
18599
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251
18600
  * return PyDataType_BYTEORDER(self)
18601
  *
18602
  * @property # <<<<<<<<<<<<<<
 
18607
  static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *__pyx_v_self) {
18608
  int __pyx_r;
18609
 
18610
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253
18611
  * @property
18612
  * cdef inline int type_num(self) noexcept nogil:
18613
  * return PyDataType_TYPENUM(self) # <<<<<<<<<<<<<<
 
18620
  }
18621
  goto __pyx_L0;
18622
 
18623
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251
18624
  * return PyDataType_BYTEORDER(self)
18625
  *
18626
  * @property # <<<<<<<<<<<<<<
 
18633
  return __pyx_r;
18634
  }
18635
 
18636
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255
18637
  * return PyDataType_TYPENUM(self)
18638
  *
18639
  * @property # <<<<<<<<<<<<<<
 
18644
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_Descr *__pyx_v_self) {
18645
  npy_intp __pyx_r;
18646
 
18647
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257
18648
  * @property
18649
  * cdef inline npy_intp itemsize(self) noexcept nogil:
18650
  * return PyDataType_ELSIZE(self) # <<<<<<<<<<<<<<
 
18657
  }
18658
  goto __pyx_L0;
18659
 
18660
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255
18661
  * return PyDataType_TYPENUM(self)
18662
  *
18663
  * @property # <<<<<<<<<<<<<<
 
18670
  return __pyx_r;
18671
  }
18672
 
18673
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259
18674
  * return PyDataType_ELSIZE(self)
18675
  *
18676
  * @property # <<<<<<<<<<<<<<
 
18681
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_Descr *__pyx_v_self) {
18682
  npy_intp __pyx_r;
18683
 
18684
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":261
18685
  * @property
18686
  * cdef inline npy_intp alignment(self) noexcept nogil:
18687
  * return PyDataType_ALIGNMENT(self) # <<<<<<<<<<<<<<
 
18694
  }
18695
  goto __pyx_L0;
18696
 
18697
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259
18698
  * return PyDataType_ELSIZE(self)
18699
  *
18700
  * @property # <<<<<<<<<<<<<<
 
18707
  return __pyx_r;
18708
  }
18709
 
18710
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265
18711
  * # Use fields/names with care as they may be NULL. You must check
18712
  * # for this using PyDataType_HASFIELDS.
18713
  * @property # <<<<<<<<<<<<<<
 
18721
  PyObject *__pyx_t_1;
18722
  __Pyx_RefNannySetupContext("__get__", 0);
18723
 
18724
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":267
18725
  * @property
18726
  * cdef inline object fields(self):
18727
  * return <object>PyDataType_FIELDS(self) # <<<<<<<<<<<<<<
 
18742
 
18743
  goto __pyx_L0;
18744
 
18745
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265
18746
  * # Use fields/names with care as they may be NULL. You must check
18747
  * # for this using PyDataType_HASFIELDS.
18748
  * @property # <<<<<<<<<<<<<<
 
18757
  return __pyx_r;
18758
  }
18759
 
18760
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269
18761
  * return <object>PyDataType_FIELDS(self)
18762
  *
18763
  * @property # <<<<<<<<<<<<<<
 
18771
  PyObject *__pyx_t_1;
18772
  __Pyx_RefNannySetupContext("__get__", 0);
18773
 
18774
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":271
18775
  * @property
18776
  * cdef inline tuple names(self):
18777
  * return <tuple>PyDataType_NAMES(self) # <<<<<<<<<<<<<<
 
18792
 
18793
  goto __pyx_L0;
18794
 
18795
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269
18796
  * return <object>PyDataType_FIELDS(self)
18797
  *
18798
  * @property # <<<<<<<<<<<<<<
 
18807
  return __pyx_r;
18808
  }
18809
 
18810
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276
18811
  * # valid (the pointer can be NULL). Most users should access
18812
  * # this field via the inline helper method PyDataType_SHAPE.
18813
  * @property # <<<<<<<<<<<<<<
 
18818
  static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__(PyArray_Descr *__pyx_v_self) {
18819
  PyArray_ArrayDescr *__pyx_r;
18820
 
18821
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":278
18822
  * @property
18823
  * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:
18824
  * return PyDataType_SUBARRAY(self) # <<<<<<<<<<<<<<
 
18831
  }
18832
  goto __pyx_L0;
18833
 
18834
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276
18835
  * # valid (the pointer can be NULL). Most users should access
18836
  * # this field via the inline helper method PyDataType_SHAPE.
18837
  * @property # <<<<<<<<<<<<<<
 
18844
  return __pyx_r;
18845
  }
18846
 
18847
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280
18848
  * return PyDataType_SUBARRAY(self)
18849
  *
18850
  * @property # <<<<<<<<<<<<<<
 
18855
  static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Descr *__pyx_v_self) {
18856
  npy_uint64 __pyx_r;
18857
 
18858
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":283
18859
  * cdef inline npy_uint64 flags(self) noexcept nogil:
18860
  * """The data types flags."""
18861
  * return PyDataType_FLAGS(self) # <<<<<<<<<<<<<<
 
18868
  }
18869
  goto __pyx_L0;
18870
 
18871
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280
18872
  * return PyDataType_SUBARRAY(self)
18873
  *
18874
  * @property # <<<<<<<<<<<<<<
 
18881
  return __pyx_r;
18882
  }
18883
 
18884
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292
18885
  * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
18886
  *
18887
  * @property # <<<<<<<<<<<<<<
 
18892
  static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMultiIterObject *__pyx_v_self) {
18893
  int __pyx_r;
18894
 
18895
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295
18896
  * cdef inline int numiter(self) noexcept nogil:
18897
  * """The number of arrays that need to be broadcast to the same shape."""
18898
  * return PyArray_MultiIter_NUMITER(self) # <<<<<<<<<<<<<<
 
18905
  }
18906
  goto __pyx_L0;
18907
 
18908
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292
18909
  * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
18910
  *
18911
  * @property # <<<<<<<<<<<<<<
 
18918
  return __pyx_r;
18919
  }
18920
 
18921
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297
18922
  * return PyArray_MultiIter_NUMITER(self)
18923
  *
18924
  * @property # <<<<<<<<<<<<<<
 
18929
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMultiIterObject *__pyx_v_self) {
18930
  npy_intp __pyx_r;
18931
 
18932
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300
18933
  * cdef inline npy_intp size(self) noexcept nogil:
18934
  * """The total broadcasted size."""
18935
  * return PyArray_MultiIter_SIZE(self) # <<<<<<<<<<<<<<
 
18942
  }
18943
  goto __pyx_L0;
18944
 
18945
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297
18946
  * return PyArray_MultiIter_NUMITER(self)
18947
  *
18948
  * @property # <<<<<<<<<<<<<<
 
18955
  return __pyx_r;
18956
  }
18957
 
18958
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302
18959
  * return PyArray_MultiIter_SIZE(self)
18960
  *
18961
  * @property # <<<<<<<<<<<<<<
 
18966
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMultiIterObject *__pyx_v_self) {
18967
  npy_intp __pyx_r;
18968
 
18969
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305
18970
  * cdef inline npy_intp index(self) noexcept nogil:
18971
  * """The current (1-d) index into the broadcasted result."""
18972
  * return PyArray_MultiIter_INDEX(self) # <<<<<<<<<<<<<<
 
18979
  }
18980
  goto __pyx_L0;
18981
 
18982
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302
18983
  * return PyArray_MultiIter_SIZE(self)
18984
  *
18985
  * @property # <<<<<<<<<<<<<<
 
18992
  return __pyx_r;
18993
  }
18994
 
18995
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307
18996
  * return PyArray_MultiIter_INDEX(self)
18997
  *
18998
  * @property # <<<<<<<<<<<<<<
 
19003
  static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterObject *__pyx_v_self) {
19004
  int __pyx_r;
19005
 
19006
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":310
19007
  * cdef inline int nd(self) noexcept nogil:
19008
  * """The number of dimensions in the broadcasted result."""
19009
  * return PyArray_MultiIter_NDIM(self) # <<<<<<<<<<<<<<
 
19016
  }
19017
  goto __pyx_L0;
19018
 
19019
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307
19020
  * return PyArray_MultiIter_INDEX(self)
19021
  *
19022
  * @property # <<<<<<<<<<<<<<
 
19029
  return __pyx_r;
19030
  }
19031
 
19032
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312
19033
  * return PyArray_MultiIter_NDIM(self)
19034
  *
19035
  * @property # <<<<<<<<<<<<<<
 
19040
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(PyArrayMultiIterObject *__pyx_v_self) {
19041
  npy_intp *__pyx_r;
19042
 
19043
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":315
19044
  * cdef inline npy_intp* dimensions(self) noexcept nogil:
19045
  * """The shape of the broadcasted result."""
19046
  * return PyArray_MultiIter_DIMS(self) # <<<<<<<<<<<<<<
 
19053
  }
19054
  goto __pyx_L0;
19055
 
19056
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312
19057
  * return PyArray_MultiIter_NDIM(self)
19058
  *
19059
  * @property # <<<<<<<<<<<<<<
 
19066
  return __pyx_r;
19067
  }
19068
 
19069
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317
19070
  * return PyArray_MultiIter_DIMS(self)
19071
  *
19072
  * @property # <<<<<<<<<<<<<<
 
19077
  static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMultiIterObject *__pyx_v_self) {
19078
  void **__pyx_r;
19079
 
19080
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":321
19081
  * """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
19082
  * On return, the iterators are adjusted for broadcasting."""
19083
  * return PyArray_MultiIter_ITERS(self) # <<<<<<<<<<<<<<
 
19090
  }
19091
  goto __pyx_L0;
19092
 
19093
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317
19094
  * return PyArray_MultiIter_DIMS(self)
19095
  *
19096
  * @property # <<<<<<<<<<<<<<
 
19103
  return __pyx_r;
19104
  }
19105
 
19106
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335
19107
  * # Instead, we use properties that map to the corresponding C-API functions.
19108
  *
19109
  * @property # <<<<<<<<<<<<<<
 
19114
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObject *__pyx_v_self) {
19115
  PyObject *__pyx_r;
19116
 
19117
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":339
19118
  * """Returns a borrowed reference to the object owning the data/memory.
19119
  * """
19120
  * return PyArray_BASE(self) # <<<<<<<<<<<<<<
 
19127
  }
19128
  goto __pyx_L0;
19129
 
19130
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335
19131
  * # Instead, we use properties that map to the corresponding C-API functions.
19132
  *
19133
  * @property # <<<<<<<<<<<<<<
 
19140
  return __pyx_r;
19141
  }
19142
 
19143
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341
19144
  * return PyArray_BASE(self)
19145
  *
19146
  * @property # <<<<<<<<<<<<<<
 
19154
  PyArray_Descr *__pyx_t_1;
19155
  __Pyx_RefNannySetupContext("__get__", 0);
19156
 
19157
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":345
19158
  * """Returns an owned reference to the dtype of the array.
19159
  * """
19160
  * return <dtype>PyArray_DESCR(self) # <<<<<<<<<<<<<<
 
19175
 
19176
  goto __pyx_L0;
19177
 
19178
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341
19179
  * return PyArray_BASE(self)
19180
  *
19181
  * @property # <<<<<<<<<<<<<<
 
19190
  return __pyx_r;
19191
  }
19192
 
19193
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347
19194
  * return <dtype>PyArray_DESCR(self)
19195
  *
19196
  * @property # <<<<<<<<<<<<<<
 
19201
  static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__pyx_v_self) {
19202
  int __pyx_r;
19203
 
19204
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":351
19205
  * """Returns the number of dimensions in the array.
19206
  * """
19207
  * return PyArray_NDIM(self) # <<<<<<<<<<<<<<
 
19214
  }
19215
  goto __pyx_L0;
19216
 
19217
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347
19218
  * return <dtype>PyArray_DESCR(self)
19219
  *
19220
  * @property # <<<<<<<<<<<<<<
 
19227
  return __pyx_r;
19228
  }
19229
 
19230
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353
19231
  * return PyArray_NDIM(self)
19232
  *
19233
  * @property # <<<<<<<<<<<<<<
 
19238
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObject *__pyx_v_self) {
19239
  npy_intp *__pyx_r;
19240
 
19241
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":359
19242
  * Can return NULL for 0-dimensional arrays.
19243
  * """
19244
  * return PyArray_DIMS(self) # <<<<<<<<<<<<<<
 
19251
  }
19252
  goto __pyx_L0;
19253
 
19254
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353
19255
  * return PyArray_NDIM(self)
19256
  *
19257
  * @property # <<<<<<<<<<<<<<
 
19264
  return __pyx_r;
19265
  }
19266
 
19267
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361
19268
  * return PyArray_DIMS(self)
19269
  *
19270
  * @property # <<<<<<<<<<<<<<
 
19275
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayObject *__pyx_v_self) {
19276
  npy_intp *__pyx_r;
19277
 
19278
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":366
19279
  * The number of elements matches the number of dimensions of the array (ndim).
19280
  * """
19281
  * return PyArray_STRIDES(self) # <<<<<<<<<<<<<<
 
19288
  }
19289
  goto __pyx_L0;
19290
 
19291
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361
19292
  * return PyArray_DIMS(self)
19293
  *
19294
  * @property # <<<<<<<<<<<<<<
 
19301
  return __pyx_r;
19302
  }
19303
 
19304
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368
19305
  * return PyArray_STRIDES(self)
19306
  *
19307
  * @property # <<<<<<<<<<<<<<
 
19312
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObject *__pyx_v_self) {
19313
  npy_intp __pyx_r;
19314
 
19315
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":372
19316
  * """Returns the total size (in number of elements) of the array.
19317
  * """
19318
  * return PyArray_SIZE(self) # <<<<<<<<<<<<<<
 
19325
  }
19326
  goto __pyx_L0;
19327
 
19328
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368
19329
  * return PyArray_STRIDES(self)
19330
  *
19331
  * @property # <<<<<<<<<<<<<<
 
19338
  return __pyx_r;
19339
  }
19340
 
19341
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374
19342
  * return PyArray_SIZE(self)
19343
  *
19344
  * @property # <<<<<<<<<<<<<<
 
19349
  static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *__pyx_v_self) {
19350
  char *__pyx_r;
19351
 
19352
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":381
19353
  * of `PyArray_DATA()` instead, which returns a 'void*'.
19354
  * """
19355
  * return PyArray_BYTES(self) # <<<<<<<<<<<<<<
 
19362
  }
19363
  goto __pyx_L0;
19364
 
19365
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374
19366
  * return PyArray_SIZE(self)
19367
  *
19368
  * @property # <<<<<<<<<<<<<<
 
19375
  return __pyx_r;
19376
  }
19377
 
19378
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794
19379
  * ctypedef long double complex clongdouble_t
19380
  *
19381
  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
 
19392
  int __pyx_clineno = 0;
19393
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
19394
 
19395
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":795
19396
  *
19397
  * cdef inline object PyArray_MultiIterNew1(a):
19398
  * return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
 
19412
  __pyx_t_1 = 0;
19413
  goto __pyx_L0;
19414
 
19415
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794
19416
  * ctypedef long double complex clongdouble_t
19417
  *
19418
  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
 
19431
  return __pyx_r;
19432
  }
19433
 
19434
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797
19435
  * return PyArray_MultiIterNew(1, <void*>a)
19436
  *
19437
  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
 
19448
  int __pyx_clineno = 0;
19449
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
19450
 
19451
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":798
19452
  *
19453
  * cdef inline object PyArray_MultiIterNew2(a, b):
19454
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
 
19468
  __pyx_t_1 = 0;
19469
  goto __pyx_L0;
19470
 
19471
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797
19472
  * return PyArray_MultiIterNew(1, <void*>a)
19473
  *
19474
  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
 
19487
  return __pyx_r;
19488
  }
19489
 
19490
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800
19491
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
19492
  *
19493
  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
 
19504
  int __pyx_clineno = 0;
19505
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
19506
 
19507
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":801
19508
  *
19509
  * cdef inline object PyArray_MultiIterNew3(a, b, c):
19510
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
 
19524
  __pyx_t_1 = 0;
19525
  goto __pyx_L0;
19526
 
19527
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800
19528
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
19529
  *
19530
  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
 
19543
  return __pyx_r;
19544
  }
19545
 
19546
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803
19547
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
19548
  *
19549
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
 
19560
  int __pyx_clineno = 0;
19561
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
19562
 
19563
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":804
19564
  *
19565
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
19566
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
 
19580
  __pyx_t_1 = 0;
19581
  goto __pyx_L0;
19582
 
19583
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803
19584
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
19585
  *
19586
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
 
19599
  return __pyx_r;
19600
  }
19601
 
19602
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806
19603
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
19604
  *
19605
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
 
19616
  int __pyx_clineno = 0;
19617
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
19618
 
19619
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":807
19620
  *
19621
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
19622
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
 
19636
  __pyx_t_1 = 0;
19637
  goto __pyx_L0;
19638
 
19639
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806
19640
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
19641
  *
19642
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
 
19655
  return __pyx_r;
19656
  }
19657
 
19658
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809
19659
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
19660
  *
19661
  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
 
19670
  PyObject *__pyx_t_2;
19671
  __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
19672
 
19673
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810
19674
  *
19675
  * cdef inline tuple PyDataType_SHAPE(dtype d):
19676
  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
 
19682
  if (__pyx_t_1) {
19683
 
19684
 
19685
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":811
19686
  * cdef inline tuple PyDataType_SHAPE(dtype d):
19687
  * if PyDataType_HASSUBARRAY(d):
19688
  * return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
 
19703
 
19704
  goto __pyx_L0;
19705
 
19706
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810
19707
  *
19708
  * cdef inline tuple PyDataType_SHAPE(dtype d):
19709
  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
 
19712
  */
19713
  }
19714
 
19715
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":813
19716
  * return <tuple>d.subarray.shape
19717
  * else:
19718
  * return () # <<<<<<<<<<<<<<
 
19732
  goto __pyx_L0;
19733
  }
19734
 
19735
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809
19736
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
19737
  *
19738
  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
 
19747
  return __pyx_r;
19748
  }
19749
 
19750
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947
19751
  *
19752
  * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]:
19753
  * @property # <<<<<<<<<<<<<<
 
19758
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx_v_self) {
19759
  int __pyx_r;
19760
 
19761
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":949
19762
  * @property
19763
  * cdef inline int nin(self) noexcept nogil:
19764
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin # <<<<<<<<<<<<<<
 
19771
  }
19772
  goto __pyx_L0;
19773
 
19774
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947
19775
  *
19776
  * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]:
19777
  * @property # <<<<<<<<<<<<<<
 
19784
  return __pyx_r;
19785
  }
19786
 
19787
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951
19788
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin
19789
  *
19790
  * @property # <<<<<<<<<<<<<<
 
19795
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__pyx_v_self) {
19796
  int __pyx_r;
19797
 
19798
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":953
19799
  * @property
19800
  * cdef inline int nout(self) noexcept nogil:
19801
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout # <<<<<<<<<<<<<<
 
19808
  }
19809
  goto __pyx_L0;
19810
 
19811
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951
19812
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin
19813
  *
19814
  * @property # <<<<<<<<<<<<<<
 
19821
  return __pyx_r;
19822
  }
19823
 
19824
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955
19825
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout
19826
  *
19827
  * @property # <<<<<<<<<<<<<<
 
19832
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__pyx_v_self) {
19833
  int __pyx_r;
19834
 
19835
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":957
19836
  * @property
19837
  * cdef inline int nargs(self) noexcept nogil:
19838
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs # <<<<<<<<<<<<<<
 
19845
  }
19846
  goto __pyx_L0;
19847
 
19848
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955
19849
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout
19850
  *
19851
  * @property # <<<<<<<<<<<<<<
 
19858
  return __pyx_r;
19859
  }
19860
 
19861
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959
19862
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
19863
  *
19864
  * @property # <<<<<<<<<<<<<<
 
19869
  static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___get__(PyUFuncObject *__pyx_v_self) {
19870
  PyUFuncGenericFunction *__pyx_r;
19871
 
19872
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":961
19873
  * @property
19874
  * cdef inline PyUFuncGenericFunction* functions(self) noexcept nogil:
19875
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions # <<<<<<<<<<<<<<
 
19882
  }
19883
  goto __pyx_L0;
19884
 
19885
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959
19886
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
19887
  *
19888
  * @property # <<<<<<<<<<<<<<
 
19895
  return __pyx_r;
19896
  }
19897
 
19898
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963
19899
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions
19900
  *
19901
  * @property # <<<<<<<<<<<<<<
 
19906
  static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *__pyx_v_self) {
19907
  void **__pyx_r;
19908
 
19909
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":965
19910
  * @property
19911
  * cdef inline void ** data(self) noexcept nogil:
19912
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data # <<<<<<<<<<<<<<
 
19919
  }
19920
  goto __pyx_L0;
19921
 
19922
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963
19923
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions
19924
  *
19925
  * @property # <<<<<<<<<<<<<<
 
19932
  return __pyx_r;
19933
  }
19934
 
19935
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967
19936
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
19937
  *
19938
  * @property # <<<<<<<<<<<<<<
 
19943
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__pyx_v_self) {
19944
  int __pyx_r;
19945
 
19946
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":969
19947
  * @property
19948
  * cdef inline int ntypes(self) noexcept nogil:
19949
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes # <<<<<<<<<<<<<<
 
19956
  }
19957
  goto __pyx_L0;
19958
 
19959
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967
19960
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
19961
  *
19962
  * @property # <<<<<<<<<<<<<<
 
19969
  return __pyx_r;
19970
  }
19971
 
19972
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971
19973
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
19974
  *
19975
  * @property # <<<<<<<<<<<<<<
 
19980
  static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObject *__pyx_v_self) {
19981
  char const *__pyx_r;
19982
 
19983
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":973
19984
  * @property
19985
  * cdef inline const char* name(self) noexcept nogil:
19986
  * return _PyUFuncObject_GET_ITEM_DATA(self).name # <<<<<<<<<<<<<<
 
19993
  }
19994
  goto __pyx_L0;
19995
 
19996
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971
19997
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
19998
  *
19999
  * @property # <<<<<<<<<<<<<<
 
20006
  return __pyx_r;
20007
  }
20008
 
20009
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975
20010
  * return _PyUFuncObject_GET_ITEM_DATA(self).name
20011
  *
20012
  * @property # <<<<<<<<<<<<<<
 
20017
  static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObject *__pyx_v_self) {
20018
  char const *__pyx_r;
20019
 
20020
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":977
20021
  * @property
20022
  * cdef inline const char* doc(self) noexcept nogil:
20023
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc # <<<<<<<<<<<<<<
 
20030
  }
20031
  goto __pyx_L0;
20032
 
20033
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975
20034
  * return _PyUFuncObject_GET_ITEM_DATA(self).name
20035
  *
20036
  * @property # <<<<<<<<<<<<<<
 
20043
  return __pyx_r;
20044
  }
20045
 
20046
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979
20047
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc
20048
  *
20049
  * @property # <<<<<<<<<<<<<<
 
20054
  static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__pyx_v_self) {
20055
  void *__pyx_r;
20056
 
20057
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":981
20058
  * @property
20059
  * cdef inline void* ptr(self) noexcept nogil:
20060
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr # <<<<<<<<<<<<<<
 
20067
  }
20068
  goto __pyx_L0;
20069
 
20070
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979
20071
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc
20072
  *
20073
  * @property # <<<<<<<<<<<<<<
 
20080
  return __pyx_r;
20081
  }
20082
 
20083
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983
20084
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
20085
  *
20086
  * @property # <<<<<<<<<<<<<<
 
20091
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject *__pyx_v_self) {
20092
  PyObject *__pyx_r;
20093
 
20094
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":985
20095
  * @property
20096
  * cdef inline PyObject* obj(self) noexcept nogil:
20097
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj # <<<<<<<<<<<<<<
 
20104
  }
20105
  goto __pyx_L0;
20106
 
20107
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983
20108
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
20109
  *
20110
  * @property # <<<<<<<<<<<<<<
 
20117
  return __pyx_r;
20118
  }
20119
 
20120
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987
20121
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj
20122
  *
20123
  * @property # <<<<<<<<<<<<<<
 
20128
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncObject *__pyx_v_self) {
20129
  PyObject *__pyx_r;
20130
 
20131
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":989
20132
  * @property
20133
  * cdef inline PyObject* userloops(self) noexcept nogil:
20134
  * return _PyUFuncObject_GET_ITEM_DATA(self).userloops # <<<<<<<<<<<<<<
 
20141
  }
20142
  goto __pyx_L0;
20143
 
20144
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987
20145
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj
20146
  *
20147
  * @property # <<<<<<<<<<<<<<
 
20154
  return __pyx_r;
20155
  }
20156
 
20157
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065
20158
  * int _import_umath() except -1
20159
  *
20160
  * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<<
 
20168
  const char *__pyx_filename = NULL;
20169
  int __pyx_clineno = 0;
20170
 
20171
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066
20172
  *
20173
  * cdef inline void set_array_base(ndarray arr, object base) except *:
20174
  * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
 
20177
  */
20178
  Py_INCREF(__pyx_v_base);
20179
 
20180
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1067
20181
  * cdef inline void set_array_base(ndarray arr, object base) except *:
20182
  * Py_INCREF(base) # important to do this before stealing the reference below!
20183
  * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
 
20187
  __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 1067, __pyx_L1_error)
20188
 
20189
 
20190
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065
20191
  * int _import_umath() except -1
20192
  *
20193
  * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<<
 
20203
 
20204
  }
20205
 
20206
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069
20207
  * PyArray_SetBaseObject(arr, base)
20208
  *
20209
  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
 
20218
  int __pyx_t_1;
20219
  __Pyx_RefNannySetupContext("get_array_base", 0);
20220
 
20221
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070
20222
  *
20223
  * cdef inline object get_array_base(ndarray arr):
20224
  * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
 
20227
  */
20228
  __pyx_v_base = PyArray_BASE(__pyx_v_arr);
20229
 
20230
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071
20231
  * cdef inline object get_array_base(ndarray arr):
20232
  * base = PyArray_BASE(arr)
20233
  * if base is NULL: # <<<<<<<<<<<<<<
 
20239
  if (__pyx_t_1) {
20240
 
20241
 
20242
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1072
20243
  * base = PyArray_BASE(arr)
20244
  * if base is NULL:
20245
  * return None # <<<<<<<<<<<<<<
 
20256
  }
20257
  goto __pyx_L0;
20258
 
20259
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071
20260
  * cdef inline object get_array_base(ndarray arr):
20261
  * base = PyArray_BASE(arr)
20262
  * if base is NULL: # <<<<<<<<<<<<<<
 
20265
  */
20266
  }
20267
 
20268
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073
20269
  * if base is NULL:
20270
  * return None
20271
  * return <object>base # <<<<<<<<<<<<<<
 
20283
  }
20284
  goto __pyx_L0;
20285
 
20286
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069
20287
  * PyArray_SetBaseObject(arr, base)
20288
  *
20289
  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
 
20299
  return __pyx_r;
20300
  }
20301
 
20302
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077
20303
  * # Versions of the import_* functions which are more suitable for
20304
  * # Cython code.
20305
  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
 
20325
  int __pyx_clineno = 0;
20326
  __Pyx_RefNannySetupContext("import_array", 0);
20327
 
20328
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20329
  * # Cython code.
20330
  * cdef inline int import_array() except -1:
20331
  * try: # <<<<<<<<<<<<<<
 
20341
  __Pyx_XGOTREF(__pyx_t_3);
20342
  /*try:*/ {
20343
 
20344
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1079
20345
  * cdef inline int import_array() except -1:
20346
  * try:
20347
  * __pyx_import_array() # <<<<<<<<<<<<<<
 
20351
  __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1079, __pyx_L3_error)
20352
 
20353
 
20354
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20355
  * # Cython code.
20356
  * cdef inline int import_array() except -1:
20357
  * try: # <<<<<<<<<<<<<<
 
20365
  goto __pyx_L8_try_end;
20366
  __pyx_L3_error:;
20367
 
20368
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1080
20369
  * try:
20370
  * __pyx_import_array()
20371
  * except Exception: # <<<<<<<<<<<<<<
 
20380
  __Pyx_XGOTREF(__pyx_t_6);
20381
  __Pyx_XGOTREF(__pyx_t_7);
20382
 
20383
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1081
20384
  * __pyx_import_array()
20385
  * except Exception:
20386
  * raise ImportError("numpy._core.multiarray failed to import") # <<<<<<<<<<<<<<
 
20402
  }
20403
  goto __pyx_L5_except_error;
20404
 
20405
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20406
  * # Cython code.
20407
  * cdef inline int import_array() except -1:
20408
  * try: # <<<<<<<<<<<<<<
 
20418
  __pyx_L8_try_end:;
20419
  }
20420
 
20421
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077
20422
  * # Versions of the import_* functions which are more suitable for
20423
  * # Cython code.
20424
  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
 
20443
  return __pyx_r;
20444
  }
20445
 
20446
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083
20447
  * raise ImportError("numpy._core.multiarray failed to import")
20448
  *
20449
  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
 
20469
  int __pyx_clineno = 0;
20470
  __Pyx_RefNannySetupContext("import_umath", 0);
20471
 
20472
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20473
  *
20474
  * cdef inline int import_umath() except -1:
20475
  * try: # <<<<<<<<<<<<<<
 
20485
  __Pyx_XGOTREF(__pyx_t_3);
20486
  /*try:*/ {
20487
 
20488
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1085
20489
  * cdef inline int import_umath() except -1:
20490
  * try:
20491
  * _import_umath() # <<<<<<<<<<<<<<
 
20495
  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1085, __pyx_L3_error)
20496
 
20497
 
20498
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20499
  *
20500
  * cdef inline int import_umath() except -1:
20501
  * try: # <<<<<<<<<<<<<<
 
20509
  goto __pyx_L8_try_end;
20510
  __pyx_L3_error:;
20511
 
20512
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1086
20513
  * try:
20514
  * _import_umath()
20515
  * except Exception: # <<<<<<<<<<<<<<
 
20524
  __Pyx_XGOTREF(__pyx_t_6);
20525
  __Pyx_XGOTREF(__pyx_t_7);
20526
 
20527
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1087
20528
  * _import_umath()
20529
  * except Exception:
20530
  * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<<
 
20546
  }
20547
  goto __pyx_L5_except_error;
20548
 
20549
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20550
  *
20551
  * cdef inline int import_umath() except -1:
20552
  * try: # <<<<<<<<<<<<<<
 
20562
  __pyx_L8_try_end:;
20563
  }
20564
 
20565
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083
20566
  * raise ImportError("numpy._core.multiarray failed to import")
20567
  *
20568
  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
 
20587
  return __pyx_r;
20588
  }
20589
 
20590
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089
20591
  * raise ImportError("numpy._core.umath failed to import")
20592
  *
20593
  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
 
20613
  int __pyx_clineno = 0;
20614
  __Pyx_RefNannySetupContext("import_ufunc", 0);
20615
 
20616
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
20617
  *
20618
  * cdef inline int import_ufunc() except -1:
20619
  * try: # <<<<<<<<<<<<<<
 
20629
  __Pyx_XGOTREF(__pyx_t_3);
20630
  /*try:*/ {
20631
 
20632
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1091
20633
  * cdef inline int import_ufunc() except -1:
20634
  * try:
20635
  * _import_umath() # <<<<<<<<<<<<<<
 
20639
  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1091, __pyx_L3_error)
20640
 
20641
 
20642
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
20643
  *
20644
  * cdef inline int import_ufunc() except -1:
20645
  * try: # <<<<<<<<<<<<<<
 
20653
  goto __pyx_L8_try_end;
20654
  __pyx_L3_error:;
20655
 
20656
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1092
20657
  * try:
20658
  * _import_umath()
20659
  * except Exception: # <<<<<<<<<<<<<<
 
20668
  __Pyx_XGOTREF(__pyx_t_6);
20669
  __Pyx_XGOTREF(__pyx_t_7);
20670
 
20671
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1093
20672
  * _import_umath()
20673
  * except Exception:
20674
  * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<<
 
20690
  }
20691
  goto __pyx_L5_except_error;
20692
 
20693
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
20694
  *
20695
  * cdef inline int import_ufunc() except -1:
20696
  * try: # <<<<<<<<<<<<<<
 
20706
  __pyx_L8_try_end:;
20707
  }
20708
 
20709
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089
20710
  * raise ImportError("numpy._core.umath failed to import")
20711
  *
20712
  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
 
20731
  return __pyx_r;
20732
  }
20733
 
20734
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096
20735
  *
20736
  *
20737
  * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<<
 
20742
  static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) {
20743
  int __pyx_r;
20744
 
20745
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1108
20746
  * bool
20747
  * """
20748
  * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<<
 
20755
  }
20756
  goto __pyx_L0;
20757
 
20758
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096
20759
  *
20760
  *
20761
  * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<<
 
20769
  return __pyx_r;
20770
  }
20771
 
20772
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111
20773
  *
20774
  *
20775
  * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<<
 
20780
  static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) {
20781
  int __pyx_r;
20782
 
20783
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1123
20784
  * bool
20785
  * """
20786
  * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<<
 
20793
  }
20794
  goto __pyx_L0;
20795
 
20796
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111
20797
  *
20798
  *
20799
  * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<<
 
20807
  return __pyx_r;
20808
  }
20809
 
20810
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126
20811
  *
20812
  *
20813
  * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
20818
  static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) {
20819
  npy_datetime __pyx_r;
20820
 
20821
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1133
20822
  * also needed. That can be found using `get_datetime64_unit`.
20823
  * """
20824
  * return _PyDatetimeScalarObject_GetValue(obj) # <<<<<<<<<<<<<<
 
20831
  }
20832
  goto __pyx_L0;
20833
 
20834
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126
20835
  *
20836
  *
20837
  * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
20844
  return __pyx_r;
20845
  }
20846
 
20847
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136
20848
  *
20849
  *
20850
  * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
20855
  static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) {
20856
  npy_timedelta __pyx_r;
20857
 
20858
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1140
20859
  * returns the int64 value underlying scalar numpy timedelta64 object
20860
  * """
20861
  * return _PyTimedeltaScalarObject_GetValue(obj) # <<<<<<<<<<<<<<
 
20868
  }
20869
  goto __pyx_L0;
20870
 
20871
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136
20872
  *
20873
  *
20874
  * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
20881
  return __pyx_r;
20882
  }
20883
 
20884
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143
20885
  *
20886
  *
20887
  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
20892
  static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) {
20893
  NPY_DATETIMEUNIT __pyx_r;
20894
 
20895
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1147
20896
  * returns the unit part of the dtype for a numpy datetime64 object.
20897
  * """
20898
  * return _PyDatetimeScalarObject_GetMetadata(obj).base # <<<<<<<<<<<<<<
 
20905
  }
20906
  goto __pyx_L0;
20907
 
20908
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143
20909
  *
20910
  *
20911
  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<<
src/khtst/acelerado/mamba3hot.cpython-312-x86_64-linux-gnu.so CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:e5b856299131ee3b8e7346dad5ba0ab51305f257cbdef41f9a6491b63e58a7f9
3
  size 1380504
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:43e0b3b278928280c2376566c931c8bd14ee7512255a774769ebd057a744bdd8
3
  size 1380504
src/khtst/acelerado/mc_jepa.cpython-312-x86_64-linux-gnu.so CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:6b12dacf1c27fa144cca24a69e0154a1876c2a526d66f5ddbd15c97649c9547d
3
- size 1427672
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:17883a82433953297327cfb54de81dc5219a8989b7349201c4e1eed3a5cd5aac
3
+ size 1427664
src/khtst/acelerado/nucleos.c CHANGED
@@ -1546,7 +1546,7 @@ static const char * const __pyx_cfilenm = __FILE__;
1546
  static const char* const __pyx_f[] = {
1547
  "nucleos.pyx",
1548
  "View.MemoryView",
1549
- "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd",
1550
  "cpython/type.pxd",
1551
  };
1552
  /* #### Code section: utility_code_proto_before_types ### */
@@ -1799,7 +1799,7 @@ typedef struct {
1799
 
1800
  /* #### Code section: numeric_typedefs ### */
1801
 
1802
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":761
1803
  * # in Cython to enable them only on the right systems.
1804
  *
1805
  * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
@@ -1808,7 +1808,7 @@ typedef struct {
1808
  */
1809
  typedef npy_int8 __pyx_t_5numpy_int8_t;
1810
 
1811
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762
1812
  *
1813
  * ctypedef npy_int8 int8_t
1814
  * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
@@ -1817,7 +1817,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t;
1817
  */
1818
  typedef npy_int16 __pyx_t_5numpy_int16_t;
1819
 
1820
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":763
1821
  * ctypedef npy_int8 int8_t
1822
  * ctypedef npy_int16 int16_t
1823
  * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
@@ -1826,7 +1826,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t;
1826
  */
1827
  typedef npy_int32 __pyx_t_5numpy_int32_t;
1828
 
1829
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":764
1830
  * ctypedef npy_int16 int16_t
1831
  * ctypedef npy_int32 int32_t
1832
  * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
@@ -1835,7 +1835,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t;
1835
  */
1836
  typedef npy_int64 __pyx_t_5numpy_int64_t;
1837
 
1838
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":766
1839
  * ctypedef npy_int64 int64_t
1840
  *
1841
  * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
@@ -1844,7 +1844,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t;
1844
  */
1845
  typedef npy_uint8 __pyx_t_5numpy_uint8_t;
1846
 
1847
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":767
1848
  *
1849
  * ctypedef npy_uint8 uint8_t
1850
  * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
@@ -1853,7 +1853,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t;
1853
  */
1854
  typedef npy_uint16 __pyx_t_5numpy_uint16_t;
1855
 
1856
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768
1857
  * ctypedef npy_uint8 uint8_t
1858
  * ctypedef npy_uint16 uint16_t
1859
  * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
@@ -1862,7 +1862,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t;
1862
  */
1863
  typedef npy_uint32 __pyx_t_5numpy_uint32_t;
1864
 
1865
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769
1866
  * ctypedef npy_uint16 uint16_t
1867
  * ctypedef npy_uint32 uint32_t
1868
  * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
@@ -1871,7 +1871,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t;
1871
  */
1872
  typedef npy_uint64 __pyx_t_5numpy_uint64_t;
1873
 
1874
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":771
1875
  * ctypedef npy_uint64 uint64_t
1876
  *
1877
  * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
@@ -1880,7 +1880,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t;
1880
  */
1881
  typedef npy_float32 __pyx_t_5numpy_float32_t;
1882
 
1883
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":772
1884
  *
1885
  * ctypedef npy_float32 float32_t
1886
  * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
@@ -1889,7 +1889,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t;
1889
  */
1890
  typedef npy_float64 __pyx_t_5numpy_float64_t;
1891
 
1892
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779
1893
  * ctypedef double complex complex128_t
1894
  *
1895
  * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
@@ -1898,7 +1898,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t;
1898
  */
1899
  typedef npy_longlong __pyx_t_5numpy_longlong_t;
1900
 
1901
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780
1902
  *
1903
  * ctypedef npy_longlong longlong_t
1904
  * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
@@ -1907,7 +1907,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t;
1907
  */
1908
  typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
1909
 
1910
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":782
1911
  * ctypedef npy_ulonglong ulonglong_t
1912
  *
1913
  * ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
@@ -1916,7 +1916,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
1916
  */
1917
  typedef npy_intp __pyx_t_5numpy_intp_t;
1918
 
1919
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783
1920
  *
1921
  * ctypedef npy_intp intp_t
1922
  * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
@@ -1925,7 +1925,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t;
1925
  */
1926
  typedef npy_uintp __pyx_t_5numpy_uintp_t;
1927
 
1928
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785
1929
  * ctypedef npy_uintp uintp_t
1930
  *
1931
  * ctypedef npy_double float_t # <<<<<<<<<<<<<<
@@ -1934,7 +1934,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t;
1934
  */
1935
  typedef npy_double __pyx_t_5numpy_float_t;
1936
 
1937
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786
1938
  *
1939
  * ctypedef npy_double float_t
1940
  * ctypedef npy_double double_t # <<<<<<<<<<<<<<
@@ -1943,7 +1943,7 @@ typedef npy_double __pyx_t_5numpy_float_t;
1943
  */
1944
  typedef npy_double __pyx_t_5numpy_double_t;
1945
 
1946
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":787
1947
  * ctypedef npy_double float_t
1948
  * ctypedef npy_double double_t
1949
  * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
@@ -18461,7 +18461,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
18461
  return __pyx_r;
18462
  }
18463
 
18464
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230
18465
  *
18466
  * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]:
18467
  * @property # <<<<<<<<<<<<<<
@@ -18472,7 +18472,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
18472
  static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArray_Descr *__pyx_v_self) {
18473
  PyTypeObject *__pyx_r;
18474
 
18475
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":232
18476
  * @property
18477
  * cdef inline PyTypeObject* typeobj(self) noexcept nogil:
18478
  * return PyDataType_TYPEOBJ(self) # <<<<<<<<<<<<<<
@@ -18485,7 +18485,7 @@ static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArra
18485
  }
18486
  goto __pyx_L0;
18487
 
18488
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230
18489
  *
18490
  * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]:
18491
  * @property # <<<<<<<<<<<<<<
@@ -18498,7 +18498,7 @@ static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArra
18498
  return __pyx_r;
18499
  }
18500
 
18501
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234
18502
  * return PyDataType_TYPEOBJ(self)
18503
  *
18504
  * @property # <<<<<<<<<<<<<<
@@ -18509,7 +18509,7 @@ static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArra
18509
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__pyx_v_self) {
18510
  char __pyx_r;
18511
 
18512
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":236
18513
  * @property
18514
  * cdef inline char kind(self) noexcept nogil:
18515
  * return PyDataType_KIND(self) # <<<<<<<<<<<<<<
@@ -18522,7 +18522,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__p
18522
  }
18523
  goto __pyx_L0;
18524
 
18525
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234
18526
  * return PyDataType_TYPEOBJ(self)
18527
  *
18528
  * @property # <<<<<<<<<<<<<<
@@ -18535,7 +18535,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__p
18535
  return __pyx_r;
18536
  }
18537
 
18538
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238
18539
  * return PyDataType_KIND(self)
18540
  *
18541
  * @property # <<<<<<<<<<<<<<
@@ -18546,7 +18546,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__p
18546
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__pyx_v_self) {
18547
  char __pyx_r;
18548
 
18549
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":240
18550
  * @property
18551
  * cdef inline char type(self) noexcept nogil:
18552
  * return PyDataType_TYPE(self) # <<<<<<<<<<<<<<
@@ -18559,7 +18559,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__p
18559
  }
18560
  goto __pyx_L0;
18561
 
18562
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238
18563
  * return PyDataType_KIND(self)
18564
  *
18565
  * @property # <<<<<<<<<<<<<<
@@ -18572,7 +18572,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__p
18572
  return __pyx_r;
18573
  }
18574
 
18575
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247
18576
  * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of
18577
  * # directly accessing this field.
18578
  * @property # <<<<<<<<<<<<<<
@@ -18583,7 +18583,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__p
18583
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr *__pyx_v_self) {
18584
  char __pyx_r;
18585
 
18586
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":249
18587
  * @property
18588
  * cdef inline char byteorder(self) noexcept nogil:
18589
  * return PyDataType_BYTEORDER(self) # <<<<<<<<<<<<<<
@@ -18596,7 +18596,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr
18596
  }
18597
  goto __pyx_L0;
18598
 
18599
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247
18600
  * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of
18601
  * # directly accessing this field.
18602
  * @property # <<<<<<<<<<<<<<
@@ -18609,7 +18609,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr
18609
  return __pyx_r;
18610
  }
18611
 
18612
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251
18613
  * return PyDataType_BYTEORDER(self)
18614
  *
18615
  * @property # <<<<<<<<<<<<<<
@@ -18620,7 +18620,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr
18620
  static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *__pyx_v_self) {
18621
  int __pyx_r;
18622
 
18623
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253
18624
  * @property
18625
  * cdef inline int type_num(self) noexcept nogil:
18626
  * return PyDataType_TYPENUM(self) # <<<<<<<<<<<<<<
@@ -18633,7 +18633,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *
18633
  }
18634
  goto __pyx_L0;
18635
 
18636
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251
18637
  * return PyDataType_BYTEORDER(self)
18638
  *
18639
  * @property # <<<<<<<<<<<<<<
@@ -18646,7 +18646,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *
18646
  return __pyx_r;
18647
  }
18648
 
18649
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255
18650
  * return PyDataType_TYPENUM(self)
18651
  *
18652
  * @property # <<<<<<<<<<<<<<
@@ -18657,7 +18657,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *
18657
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_Descr *__pyx_v_self) {
18658
  npy_intp __pyx_r;
18659
 
18660
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257
18661
  * @property
18662
  * cdef inline npy_intp itemsize(self) noexcept nogil:
18663
  * return PyDataType_ELSIZE(self) # <<<<<<<<<<<<<<
@@ -18670,7 +18670,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_De
18670
  }
18671
  goto __pyx_L0;
18672
 
18673
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255
18674
  * return PyDataType_TYPENUM(self)
18675
  *
18676
  * @property # <<<<<<<<<<<<<<
@@ -18683,7 +18683,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_De
18683
  return __pyx_r;
18684
  }
18685
 
18686
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259
18687
  * return PyDataType_ELSIZE(self)
18688
  *
18689
  * @property # <<<<<<<<<<<<<<
@@ -18694,7 +18694,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_De
18694
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_Descr *__pyx_v_self) {
18695
  npy_intp __pyx_r;
18696
 
18697
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":261
18698
  * @property
18699
  * cdef inline npy_intp alignment(self) noexcept nogil:
18700
  * return PyDataType_ALIGNMENT(self) # <<<<<<<<<<<<<<
@@ -18707,7 +18707,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_D
18707
  }
18708
  goto __pyx_L0;
18709
 
18710
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259
18711
  * return PyDataType_ELSIZE(self)
18712
  *
18713
  * @property # <<<<<<<<<<<<<<
@@ -18720,7 +18720,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_D
18720
  return __pyx_r;
18721
  }
18722
 
18723
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265
18724
  * # Use fields/names with care as they may be NULL. You must check
18725
  * # for this using PyDataType_HASFIELDS.
18726
  * @property # <<<<<<<<<<<<<<
@@ -18734,7 +18734,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields___get__(PyArray_Des
18734
  PyObject *__pyx_t_1;
18735
  __Pyx_RefNannySetupContext("__get__", 0);
18736
 
18737
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":267
18738
  * @property
18739
  * cdef inline object fields(self):
18740
  * return <object>PyDataType_FIELDS(self) # <<<<<<<<<<<<<<
@@ -18755,7 +18755,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields___get__(PyArray_Des
18755
 
18756
  goto __pyx_L0;
18757
 
18758
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265
18759
  * # Use fields/names with care as they may be NULL. You must check
18760
  * # for this using PyDataType_HASFIELDS.
18761
  * @property # <<<<<<<<<<<<<<
@@ -18770,7 +18770,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields___get__(PyArray_Des
18770
  return __pyx_r;
18771
  }
18772
 
18773
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269
18774
  * return <object>PyDataType_FIELDS(self)
18775
  *
18776
  * @property # <<<<<<<<<<<<<<
@@ -18784,7 +18784,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc
18784
  PyObject *__pyx_t_1;
18785
  __Pyx_RefNannySetupContext("__get__", 0);
18786
 
18787
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":271
18788
  * @property
18789
  * cdef inline tuple names(self):
18790
  * return <tuple>PyDataType_NAMES(self) # <<<<<<<<<<<<<<
@@ -18805,7 +18805,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc
18805
 
18806
  goto __pyx_L0;
18807
 
18808
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269
18809
  * return <object>PyDataType_FIELDS(self)
18810
  *
18811
  * @property # <<<<<<<<<<<<<<
@@ -18820,7 +18820,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc
18820
  return __pyx_r;
18821
  }
18822
 
18823
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276
18824
  * # valid (the pointer can be NULL). Most users should access
18825
  * # this field via the inline helper method PyDataType_SHAPE.
18826
  * @property # <<<<<<<<<<<<<<
@@ -18831,7 +18831,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc
18831
  static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__(PyArray_Descr *__pyx_v_self) {
18832
  PyArray_ArrayDescr *__pyx_r;
18833
 
18834
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":278
18835
  * @property
18836
  * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:
18837
  * return PyDataType_SUBARRAY(self) # <<<<<<<<<<<<<<
@@ -18844,7 +18844,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__
18844
  }
18845
  goto __pyx_L0;
18846
 
18847
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276
18848
  * # valid (the pointer can be NULL). Most users should access
18849
  * # this field via the inline helper method PyDataType_SHAPE.
18850
  * @property # <<<<<<<<<<<<<<
@@ -18857,7 +18857,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__
18857
  return __pyx_r;
18858
  }
18859
 
18860
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280
18861
  * return PyDataType_SUBARRAY(self)
18862
  *
18863
  * @property # <<<<<<<<<<<<<<
@@ -18868,7 +18868,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__
18868
  static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Descr *__pyx_v_self) {
18869
  npy_uint64 __pyx_r;
18870
 
18871
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":283
18872
  * cdef inline npy_uint64 flags(self) noexcept nogil:
18873
  * """The data types flags."""
18874
  * return PyDataType_FLAGS(self) # <<<<<<<<<<<<<<
@@ -18881,7 +18881,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Des
18881
  }
18882
  goto __pyx_L0;
18883
 
18884
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280
18885
  * return PyDataType_SUBARRAY(self)
18886
  *
18887
  * @property # <<<<<<<<<<<<<<
@@ -18894,7 +18894,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Des
18894
  return __pyx_r;
18895
  }
18896
 
18897
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292
18898
  * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
18899
  *
18900
  * @property # <<<<<<<<<<<<<<
@@ -18905,7 +18905,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Des
18905
  static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMultiIterObject *__pyx_v_self) {
18906
  int __pyx_r;
18907
 
18908
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295
18909
  * cdef inline int numiter(self) noexcept nogil:
18910
  * """The number of arrays that need to be broadcast to the same shape."""
18911
  * return PyArray_MultiIter_NUMITER(self) # <<<<<<<<<<<<<<
@@ -18918,7 +18918,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMulti
18918
  }
18919
  goto __pyx_L0;
18920
 
18921
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292
18922
  * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
18923
  *
18924
  * @property # <<<<<<<<<<<<<<
@@ -18931,7 +18931,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMulti
18931
  return __pyx_r;
18932
  }
18933
 
18934
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297
18935
  * return PyArray_MultiIter_NUMITER(self)
18936
  *
18937
  * @property # <<<<<<<<<<<<<<
@@ -18942,7 +18942,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMulti
18942
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMultiIterObject *__pyx_v_self) {
18943
  npy_intp __pyx_r;
18944
 
18945
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300
18946
  * cdef inline npy_intp size(self) noexcept nogil:
18947
  * """The total broadcasted size."""
18948
  * return PyArray_MultiIter_SIZE(self) # <<<<<<<<<<<<<<
@@ -18955,7 +18955,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMul
18955
  }
18956
  goto __pyx_L0;
18957
 
18958
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297
18959
  * return PyArray_MultiIter_NUMITER(self)
18960
  *
18961
  * @property # <<<<<<<<<<<<<<
@@ -18968,7 +18968,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMul
18968
  return __pyx_r;
18969
  }
18970
 
18971
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302
18972
  * return PyArray_MultiIter_SIZE(self)
18973
  *
18974
  * @property # <<<<<<<<<<<<<<
@@ -18979,7 +18979,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMul
18979
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMultiIterObject *__pyx_v_self) {
18980
  npy_intp __pyx_r;
18981
 
18982
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305
18983
  * cdef inline npy_intp index(self) noexcept nogil:
18984
  * """The current (1-d) index into the broadcasted result."""
18985
  * return PyArray_MultiIter_INDEX(self) # <<<<<<<<<<<<<<
@@ -18992,7 +18992,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMu
18992
  }
18993
  goto __pyx_L0;
18994
 
18995
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302
18996
  * return PyArray_MultiIter_SIZE(self)
18997
  *
18998
  * @property # <<<<<<<<<<<<<<
@@ -19005,7 +19005,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMu
19005
  return __pyx_r;
19006
  }
19007
 
19008
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307
19009
  * return PyArray_MultiIter_INDEX(self)
19010
  *
19011
  * @property # <<<<<<<<<<<<<<
@@ -19016,7 +19016,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMu
19016
  static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterObject *__pyx_v_self) {
19017
  int __pyx_r;
19018
 
19019
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":310
19020
  * cdef inline int nd(self) noexcept nogil:
19021
  * """The number of dimensions in the broadcasted result."""
19022
  * return PyArray_MultiIter_NDIM(self) # <<<<<<<<<<<<<<
@@ -19029,7 +19029,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterO
19029
  }
19030
  goto __pyx_L0;
19031
 
19032
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307
19033
  * return PyArray_MultiIter_INDEX(self)
19034
  *
19035
  * @property # <<<<<<<<<<<<<<
@@ -19042,7 +19042,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterO
19042
  return __pyx_r;
19043
  }
19044
 
19045
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312
19046
  * return PyArray_MultiIter_NDIM(self)
19047
  *
19048
  * @property # <<<<<<<<<<<<<<
@@ -19053,7 +19053,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterO
19053
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(PyArrayMultiIterObject *__pyx_v_self) {
19054
  npy_intp *__pyx_r;
19055
 
19056
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":315
19057
  * cdef inline npy_intp* dimensions(self) noexcept nogil:
19058
  * """The shape of the broadcasted result."""
19059
  * return PyArray_MultiIter_DIMS(self) # <<<<<<<<<<<<<<
@@ -19066,7 +19066,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(Py
19066
  }
19067
  goto __pyx_L0;
19068
 
19069
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312
19070
  * return PyArray_MultiIter_NDIM(self)
19071
  *
19072
  * @property # <<<<<<<<<<<<<<
@@ -19079,7 +19079,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(Py
19079
  return __pyx_r;
19080
  }
19081
 
19082
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317
19083
  * return PyArray_MultiIter_DIMS(self)
19084
  *
19085
  * @property # <<<<<<<<<<<<<<
@@ -19090,7 +19090,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(Py
19090
  static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMultiIterObject *__pyx_v_self) {
19091
  void **__pyx_r;
19092
 
19093
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":321
19094
  * """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
19095
  * On return, the iterators are adjusted for broadcasting."""
19096
  * return PyArray_MultiIter_ITERS(self) # <<<<<<<<<<<<<<
@@ -19103,7 +19103,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMult
19103
  }
19104
  goto __pyx_L0;
19105
 
19106
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317
19107
  * return PyArray_MultiIter_DIMS(self)
19108
  *
19109
  * @property # <<<<<<<<<<<<<<
@@ -19116,7 +19116,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMult
19116
  return __pyx_r;
19117
  }
19118
 
19119
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335
19120
  * # Instead, we use properties that map to the corresponding C-API functions.
19121
  *
19122
  * @property # <<<<<<<<<<<<<<
@@ -19127,7 +19127,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMult
19127
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObject *__pyx_v_self) {
19128
  PyObject *__pyx_r;
19129
 
19130
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":339
19131
  * """Returns a borrowed reference to the object owning the data/memory.
19132
  * """
19133
  * return PyArray_BASE(self) # <<<<<<<<<<<<<<
@@ -19140,7 +19140,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObje
19140
  }
19141
  goto __pyx_L0;
19142
 
19143
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335
19144
  * # Instead, we use properties that map to the corresponding C-API functions.
19145
  *
19146
  * @property # <<<<<<<<<<<<<<
@@ -19153,7 +19153,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObje
19153
  return __pyx_r;
19154
  }
19155
 
19156
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341
19157
  * return PyArray_BASE(self)
19158
  *
19159
  * @property # <<<<<<<<<<<<<<
@@ -19167,7 +19167,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr
19167
  PyArray_Descr *__pyx_t_1;
19168
  __Pyx_RefNannySetupContext("__get__", 0);
19169
 
19170
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":345
19171
  * """Returns an owned reference to the dtype of the array.
19172
  * """
19173
  * return <dtype>PyArray_DESCR(self) # <<<<<<<<<<<<<<
@@ -19188,7 +19188,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr
19188
 
19189
  goto __pyx_L0;
19190
 
19191
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341
19192
  * return PyArray_BASE(self)
19193
  *
19194
  * @property # <<<<<<<<<<<<<<
@@ -19203,7 +19203,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr
19203
  return __pyx_r;
19204
  }
19205
 
19206
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347
19207
  * return <dtype>PyArray_DESCR(self)
19208
  *
19209
  * @property # <<<<<<<<<<<<<<
@@ -19214,7 +19214,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr
19214
  static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__pyx_v_self) {
19215
  int __pyx_r;
19216
 
19217
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":351
19218
  * """Returns the number of dimensions in the array.
19219
  * """
19220
  * return PyArray_NDIM(self) # <<<<<<<<<<<<<<
@@ -19227,7 +19227,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__
19227
  }
19228
  goto __pyx_L0;
19229
 
19230
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347
19231
  * return <dtype>PyArray_DESCR(self)
19232
  *
19233
  * @property # <<<<<<<<<<<<<<
@@ -19240,7 +19240,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__
19240
  return __pyx_r;
19241
  }
19242
 
19243
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353
19244
  * return PyArray_NDIM(self)
19245
  *
19246
  * @property # <<<<<<<<<<<<<<
@@ -19251,7 +19251,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__
19251
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObject *__pyx_v_self) {
19252
  npy_intp *__pyx_r;
19253
 
19254
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":359
19255
  * Can return NULL for 0-dimensional arrays.
19256
  * """
19257
  * return PyArray_DIMS(self) # <<<<<<<<<<<<<<
@@ -19264,7 +19264,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObj
19264
  }
19265
  goto __pyx_L0;
19266
 
19267
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353
19268
  * return PyArray_NDIM(self)
19269
  *
19270
  * @property # <<<<<<<<<<<<<<
@@ -19277,7 +19277,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObj
19277
  return __pyx_r;
19278
  }
19279
 
19280
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361
19281
  * return PyArray_DIMS(self)
19282
  *
19283
  * @property # <<<<<<<<<<<<<<
@@ -19288,7 +19288,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObj
19288
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayObject *__pyx_v_self) {
19289
  npy_intp *__pyx_r;
19290
 
19291
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":366
19292
  * The number of elements matches the number of dimensions of the array (ndim).
19293
  * """
19294
  * return PyArray_STRIDES(self) # <<<<<<<<<<<<<<
@@ -19301,7 +19301,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayO
19301
  }
19302
  goto __pyx_L0;
19303
 
19304
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361
19305
  * return PyArray_DIMS(self)
19306
  *
19307
  * @property # <<<<<<<<<<<<<<
@@ -19314,7 +19314,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayO
19314
  return __pyx_r;
19315
  }
19316
 
19317
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368
19318
  * return PyArray_STRIDES(self)
19319
  *
19320
  * @property # <<<<<<<<<<<<<<
@@ -19325,7 +19325,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayO
19325
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObject *__pyx_v_self) {
19326
  npy_intp __pyx_r;
19327
 
19328
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":372
19329
  * """Returns the total size (in number of elements) of the array.
19330
  * """
19331
  * return PyArray_SIZE(self) # <<<<<<<<<<<<<<
@@ -19338,7 +19338,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObjec
19338
  }
19339
  goto __pyx_L0;
19340
 
19341
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368
19342
  * return PyArray_STRIDES(self)
19343
  *
19344
  * @property # <<<<<<<<<<<<<<
@@ -19351,7 +19351,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObjec
19351
  return __pyx_r;
19352
  }
19353
 
19354
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374
19355
  * return PyArray_SIZE(self)
19356
  *
19357
  * @property # <<<<<<<<<<<<<<
@@ -19362,7 +19362,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObjec
19362
  static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *__pyx_v_self) {
19363
  char *__pyx_r;
19364
 
19365
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":381
19366
  * of `PyArray_DATA()` instead, which returns a 'void*'.
19367
  * """
19368
  * return PyArray_BYTES(self) # <<<<<<<<<<<<<<
@@ -19375,7 +19375,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *
19375
  }
19376
  goto __pyx_L0;
19377
 
19378
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374
19379
  * return PyArray_SIZE(self)
19380
  *
19381
  * @property # <<<<<<<<<<<<<<
@@ -19388,7 +19388,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *
19388
  return __pyx_r;
19389
  }
19390
 
19391
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794
19392
  * ctypedef long double complex clongdouble_t
19393
  *
19394
  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -19405,7 +19405,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
19405
  int __pyx_clineno = 0;
19406
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
19407
 
19408
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":795
19409
  *
19410
  * cdef inline object PyArray_MultiIterNew1(a):
19411
  * return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
@@ -19425,7 +19425,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
19425
  __pyx_t_1 = 0;
19426
  goto __pyx_L0;
19427
 
19428
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794
19429
  * ctypedef long double complex clongdouble_t
19430
  *
19431
  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -19444,7 +19444,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
19444
  return __pyx_r;
19445
  }
19446
 
19447
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797
19448
  * return PyArray_MultiIterNew(1, <void*>a)
19449
  *
19450
  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -19461,7 +19461,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
19461
  int __pyx_clineno = 0;
19462
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
19463
 
19464
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":798
19465
  *
19466
  * cdef inline object PyArray_MultiIterNew2(a, b):
19467
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
@@ -19481,7 +19481,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
19481
  __pyx_t_1 = 0;
19482
  goto __pyx_L0;
19483
 
19484
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797
19485
  * return PyArray_MultiIterNew(1, <void*>a)
19486
  *
19487
  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -19500,7 +19500,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
19500
  return __pyx_r;
19501
  }
19502
 
19503
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800
19504
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
19505
  *
19506
  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -19517,7 +19517,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
19517
  int __pyx_clineno = 0;
19518
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
19519
 
19520
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":801
19521
  *
19522
  * cdef inline object PyArray_MultiIterNew3(a, b, c):
19523
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
@@ -19537,7 +19537,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
19537
  __pyx_t_1 = 0;
19538
  goto __pyx_L0;
19539
 
19540
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800
19541
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
19542
  *
19543
  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -19556,7 +19556,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
19556
  return __pyx_r;
19557
  }
19558
 
19559
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803
19560
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
19561
  *
19562
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -19573,7 +19573,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
19573
  int __pyx_clineno = 0;
19574
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
19575
 
19576
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":804
19577
  *
19578
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
19579
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
@@ -19593,7 +19593,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
19593
  __pyx_t_1 = 0;
19594
  goto __pyx_L0;
19595
 
19596
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803
19597
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
19598
  *
19599
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -19612,7 +19612,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
19612
  return __pyx_r;
19613
  }
19614
 
19615
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806
19616
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
19617
  *
19618
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -19629,7 +19629,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
19629
  int __pyx_clineno = 0;
19630
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
19631
 
19632
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":807
19633
  *
19634
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
19635
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
@@ -19649,7 +19649,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
19649
  __pyx_t_1 = 0;
19650
  goto __pyx_L0;
19651
 
19652
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806
19653
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
19654
  *
19655
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -19668,7 +19668,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
19668
  return __pyx_r;
19669
  }
19670
 
19671
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809
19672
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
19673
  *
19674
  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -19683,7 +19683,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
19683
  PyObject *__pyx_t_2;
19684
  __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
19685
 
19686
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810
19687
  *
19688
  * cdef inline tuple PyDataType_SHAPE(dtype d):
19689
  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -19695,7 +19695,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
19695
  if (__pyx_t_1) {
19696
 
19697
 
19698
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":811
19699
  * cdef inline tuple PyDataType_SHAPE(dtype d):
19700
  * if PyDataType_HASSUBARRAY(d):
19701
  * return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
@@ -19716,7 +19716,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
19716
 
19717
  goto __pyx_L0;
19718
 
19719
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810
19720
  *
19721
  * cdef inline tuple PyDataType_SHAPE(dtype d):
19722
  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -19725,7 +19725,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
19725
  */
19726
  }
19727
 
19728
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":813
19729
  * return <tuple>d.subarray.shape
19730
  * else:
19731
  * return () # <<<<<<<<<<<<<<
@@ -19745,7 +19745,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
19745
  goto __pyx_L0;
19746
  }
19747
 
19748
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809
19749
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
19750
  *
19751
  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -19760,7 +19760,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
19760
  return __pyx_r;
19761
  }
19762
 
19763
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947
19764
  *
19765
  * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]:
19766
  * @property # <<<<<<<<<<<<<<
@@ -19771,7 +19771,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
19771
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx_v_self) {
19772
  int __pyx_r;
19773
 
19774
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":949
19775
  * @property
19776
  * cdef inline int nin(self) noexcept nogil:
19777
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin # <<<<<<<<<<<<<<
@@ -19784,7 +19784,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx
19784
  }
19785
  goto __pyx_L0;
19786
 
19787
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947
19788
  *
19789
  * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]:
19790
  * @property # <<<<<<<<<<<<<<
@@ -19797,7 +19797,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx
19797
  return __pyx_r;
19798
  }
19799
 
19800
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951
19801
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin
19802
  *
19803
  * @property # <<<<<<<<<<<<<<
@@ -19808,7 +19808,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx
19808
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__pyx_v_self) {
19809
  int __pyx_r;
19810
 
19811
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":953
19812
  * @property
19813
  * cdef inline int nout(self) noexcept nogil:
19814
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout # <<<<<<<<<<<<<<
@@ -19821,7 +19821,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__py
19821
  }
19822
  goto __pyx_L0;
19823
 
19824
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951
19825
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin
19826
  *
19827
  * @property # <<<<<<<<<<<<<<
@@ -19834,7 +19834,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__py
19834
  return __pyx_r;
19835
  }
19836
 
19837
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955
19838
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout
19839
  *
19840
  * @property # <<<<<<<<<<<<<<
@@ -19845,7 +19845,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__py
19845
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__pyx_v_self) {
19846
  int __pyx_r;
19847
 
19848
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":957
19849
  * @property
19850
  * cdef inline int nargs(self) noexcept nogil:
19851
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs # <<<<<<<<<<<<<<
@@ -19858,7 +19858,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__p
19858
  }
19859
  goto __pyx_L0;
19860
 
19861
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955
19862
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout
19863
  *
19864
  * @property # <<<<<<<<<<<<<<
@@ -19871,7 +19871,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__p
19871
  return __pyx_r;
19872
  }
19873
 
19874
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959
19875
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
19876
  *
19877
  * @property # <<<<<<<<<<<<<<
@@ -19882,7 +19882,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__p
19882
  static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___get__(PyUFuncObject *__pyx_v_self) {
19883
  PyUFuncGenericFunction *__pyx_r;
19884
 
19885
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":961
19886
  * @property
19887
  * cdef inline PyUFuncGenericFunction* functions(self) noexcept nogil:
19888
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions # <<<<<<<<<<<<<<
@@ -19895,7 +19895,7 @@ static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___
19895
  }
19896
  goto __pyx_L0;
19897
 
19898
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959
19899
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
19900
  *
19901
  * @property # <<<<<<<<<<<<<<
@@ -19908,7 +19908,7 @@ static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___
19908
  return __pyx_r;
19909
  }
19910
 
19911
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963
19912
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions
19913
  *
19914
  * @property # <<<<<<<<<<<<<<
@@ -19919,7 +19919,7 @@ static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___
19919
  static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *__pyx_v_self) {
19920
  void **__pyx_r;
19921
 
19922
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":965
19923
  * @property
19924
  * cdef inline void ** data(self) noexcept nogil:
19925
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data # <<<<<<<<<<<<<<
@@ -19932,7 +19932,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *_
19932
  }
19933
  goto __pyx_L0;
19934
 
19935
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963
19936
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions
19937
  *
19938
  * @property # <<<<<<<<<<<<<<
@@ -19945,7 +19945,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *_
19945
  return __pyx_r;
19946
  }
19947
 
19948
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967
19949
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
19950
  *
19951
  * @property # <<<<<<<<<<<<<<
@@ -19956,7 +19956,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *_
19956
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__pyx_v_self) {
19957
  int __pyx_r;
19958
 
19959
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":969
19960
  * @property
19961
  * cdef inline int ntypes(self) noexcept nogil:
19962
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes # <<<<<<<<<<<<<<
@@ -19969,7 +19969,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__
19969
  }
19970
  goto __pyx_L0;
19971
 
19972
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967
19973
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
19974
  *
19975
  * @property # <<<<<<<<<<<<<<
@@ -19982,7 +19982,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__
19982
  return __pyx_r;
19983
  }
19984
 
19985
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971
19986
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
19987
  *
19988
  * @property # <<<<<<<<<<<<<<
@@ -19993,7 +19993,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__
19993
  static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObject *__pyx_v_self) {
19994
  char const *__pyx_r;
19995
 
19996
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":973
19997
  * @property
19998
  * cdef inline const char* name(self) noexcept nogil:
19999
  * return _PyUFuncObject_GET_ITEM_DATA(self).name # <<<<<<<<<<<<<<
@@ -20006,7 +20006,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObje
20006
  }
20007
  goto __pyx_L0;
20008
 
20009
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971
20010
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
20011
  *
20012
  * @property # <<<<<<<<<<<<<<
@@ -20019,7 +20019,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObje
20019
  return __pyx_r;
20020
  }
20021
 
20022
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975
20023
  * return _PyUFuncObject_GET_ITEM_DATA(self).name
20024
  *
20025
  * @property # <<<<<<<<<<<<<<
@@ -20030,7 +20030,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObje
20030
  static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObject *__pyx_v_self) {
20031
  char const *__pyx_r;
20032
 
20033
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":977
20034
  * @property
20035
  * cdef inline const char* doc(self) noexcept nogil:
20036
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc # <<<<<<<<<<<<<<
@@ -20043,7 +20043,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObjec
20043
  }
20044
  goto __pyx_L0;
20045
 
20046
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975
20047
  * return _PyUFuncObject_GET_ITEM_DATA(self).name
20048
  *
20049
  * @property # <<<<<<<<<<<<<<
@@ -20056,7 +20056,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObjec
20056
  return __pyx_r;
20057
  }
20058
 
20059
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979
20060
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc
20061
  *
20062
  * @property # <<<<<<<<<<<<<<
@@ -20067,7 +20067,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObjec
20067
  static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__pyx_v_self) {
20068
  void *__pyx_r;
20069
 
20070
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":981
20071
  * @property
20072
  * cdef inline void* ptr(self) noexcept nogil:
20073
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr # <<<<<<<<<<<<<<
@@ -20080,7 +20080,7 @@ static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__p
20080
  }
20081
  goto __pyx_L0;
20082
 
20083
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979
20084
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc
20085
  *
20086
  * @property # <<<<<<<<<<<<<<
@@ -20093,7 +20093,7 @@ static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__p
20093
  return __pyx_r;
20094
  }
20095
 
20096
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983
20097
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
20098
  *
20099
  * @property # <<<<<<<<<<<<<<
@@ -20104,7 +20104,7 @@ static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__p
20104
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject *__pyx_v_self) {
20105
  PyObject *__pyx_r;
20106
 
20107
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":985
20108
  * @property
20109
  * cdef inline PyObject* obj(self) noexcept nogil:
20110
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj # <<<<<<<<<<<<<<
@@ -20117,7 +20117,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject
20117
  }
20118
  goto __pyx_L0;
20119
 
20120
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983
20121
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
20122
  *
20123
  * @property # <<<<<<<<<<<<<<
@@ -20130,7 +20130,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject
20130
  return __pyx_r;
20131
  }
20132
 
20133
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987
20134
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj
20135
  *
20136
  * @property # <<<<<<<<<<<<<<
@@ -20141,7 +20141,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject
20141
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncObject *__pyx_v_self) {
20142
  PyObject *__pyx_r;
20143
 
20144
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":989
20145
  * @property
20146
  * cdef inline PyObject* userloops(self) noexcept nogil:
20147
  * return _PyUFuncObject_GET_ITEM_DATA(self).userloops # <<<<<<<<<<<<<<
@@ -20154,7 +20154,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncO
20154
  }
20155
  goto __pyx_L0;
20156
 
20157
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987
20158
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj
20159
  *
20160
  * @property # <<<<<<<<<<<<<<
@@ -20167,7 +20167,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncO
20167
  return __pyx_r;
20168
  }
20169
 
20170
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065
20171
  * int _import_umath() except -1
20172
  *
20173
  * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<<
@@ -20181,7 +20181,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a
20181
  const char *__pyx_filename = NULL;
20182
  int __pyx_clineno = 0;
20183
 
20184
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066
20185
  *
20186
  * cdef inline void set_array_base(ndarray arr, object base) except *:
20187
  * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
@@ -20190,7 +20190,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a
20190
  */
20191
  Py_INCREF(__pyx_v_base);
20192
 
20193
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1067
20194
  * cdef inline void set_array_base(ndarray arr, object base) except *:
20195
  * Py_INCREF(base) # important to do this before stealing the reference below!
20196
  * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
@@ -20200,7 +20200,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a
20200
  __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 1067, __pyx_L1_error)
20201
 
20202
 
20203
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065
20204
  * int _import_umath() except -1
20205
  *
20206
  * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<<
@@ -20216,7 +20216,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a
20216
 
20217
  }
20218
 
20219
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069
20220
  * PyArray_SetBaseObject(arr, base)
20221
  *
20222
  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
@@ -20231,7 +20231,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20231
  int __pyx_t_1;
20232
  __Pyx_RefNannySetupContext("get_array_base", 0);
20233
 
20234
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070
20235
  *
20236
  * cdef inline object get_array_base(ndarray arr):
20237
  * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
@@ -20240,7 +20240,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20240
  */
20241
  __pyx_v_base = PyArray_BASE(__pyx_v_arr);
20242
 
20243
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071
20244
  * cdef inline object get_array_base(ndarray arr):
20245
  * base = PyArray_BASE(arr)
20246
  * if base is NULL: # <<<<<<<<<<<<<<
@@ -20252,7 +20252,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20252
  if (__pyx_t_1) {
20253
 
20254
 
20255
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1072
20256
  * base = PyArray_BASE(arr)
20257
  * if base is NULL:
20258
  * return None # <<<<<<<<<<<<<<
@@ -20269,7 +20269,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20269
  }
20270
  goto __pyx_L0;
20271
 
20272
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071
20273
  * cdef inline object get_array_base(ndarray arr):
20274
  * base = PyArray_BASE(arr)
20275
  * if base is NULL: # <<<<<<<<<<<<<<
@@ -20278,7 +20278,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20278
  */
20279
  }
20280
 
20281
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073
20282
  * if base is NULL:
20283
  * return None
20284
  * return <object>base # <<<<<<<<<<<<<<
@@ -20296,7 +20296,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20296
  }
20297
  goto __pyx_L0;
20298
 
20299
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069
20300
  * PyArray_SetBaseObject(arr, base)
20301
  *
20302
  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
@@ -20312,7 +20312,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20312
  return __pyx_r;
20313
  }
20314
 
20315
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077
20316
  * # Versions of the import_* functions which are more suitable for
20317
  * # Cython code.
20318
  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -20338,7 +20338,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20338
  int __pyx_clineno = 0;
20339
  __Pyx_RefNannySetupContext("import_array", 0);
20340
 
20341
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20342
  * # Cython code.
20343
  * cdef inline int import_array() except -1:
20344
  * try: # <<<<<<<<<<<<<<
@@ -20354,7 +20354,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20354
  __Pyx_XGOTREF(__pyx_t_3);
20355
  /*try:*/ {
20356
 
20357
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1079
20358
  * cdef inline int import_array() except -1:
20359
  * try:
20360
  * __pyx_import_array() # <<<<<<<<<<<<<<
@@ -20364,7 +20364,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20364
  __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1079, __pyx_L3_error)
20365
 
20366
 
20367
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20368
  * # Cython code.
20369
  * cdef inline int import_array() except -1:
20370
  * try: # <<<<<<<<<<<<<<
@@ -20378,7 +20378,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20378
  goto __pyx_L8_try_end;
20379
  __pyx_L3_error:;
20380
 
20381
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1080
20382
  * try:
20383
  * __pyx_import_array()
20384
  * except Exception: # <<<<<<<<<<<<<<
@@ -20393,7 +20393,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20393
  __Pyx_XGOTREF(__pyx_t_6);
20394
  __Pyx_XGOTREF(__pyx_t_7);
20395
 
20396
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1081
20397
  * __pyx_import_array()
20398
  * except Exception:
20399
  * raise ImportError("numpy._core.multiarray failed to import") # <<<<<<<<<<<<<<
@@ -20415,7 +20415,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20415
  }
20416
  goto __pyx_L5_except_error;
20417
 
20418
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20419
  * # Cython code.
20420
  * cdef inline int import_array() except -1:
20421
  * try: # <<<<<<<<<<<<<<
@@ -20431,7 +20431,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20431
  __pyx_L8_try_end:;
20432
  }
20433
 
20434
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077
20435
  * # Versions of the import_* functions which are more suitable for
20436
  * # Cython code.
20437
  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -20456,7 +20456,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20456
  return __pyx_r;
20457
  }
20458
 
20459
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083
20460
  * raise ImportError("numpy._core.multiarray failed to import")
20461
  *
20462
  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -20482,7 +20482,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20482
  int __pyx_clineno = 0;
20483
  __Pyx_RefNannySetupContext("import_umath", 0);
20484
 
20485
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20486
  *
20487
  * cdef inline int import_umath() except -1:
20488
  * try: # <<<<<<<<<<<<<<
@@ -20498,7 +20498,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20498
  __Pyx_XGOTREF(__pyx_t_3);
20499
  /*try:*/ {
20500
 
20501
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1085
20502
  * cdef inline int import_umath() except -1:
20503
  * try:
20504
  * _import_umath() # <<<<<<<<<<<<<<
@@ -20508,7 +20508,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20508
  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1085, __pyx_L3_error)
20509
 
20510
 
20511
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20512
  *
20513
  * cdef inline int import_umath() except -1:
20514
  * try: # <<<<<<<<<<<<<<
@@ -20522,7 +20522,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20522
  goto __pyx_L8_try_end;
20523
  __pyx_L3_error:;
20524
 
20525
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1086
20526
  * try:
20527
  * _import_umath()
20528
  * except Exception: # <<<<<<<<<<<<<<
@@ -20537,7 +20537,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20537
  __Pyx_XGOTREF(__pyx_t_6);
20538
  __Pyx_XGOTREF(__pyx_t_7);
20539
 
20540
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1087
20541
  * _import_umath()
20542
  * except Exception:
20543
  * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<<
@@ -20559,7 +20559,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20559
  }
20560
  goto __pyx_L5_except_error;
20561
 
20562
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20563
  *
20564
  * cdef inline int import_umath() except -1:
20565
  * try: # <<<<<<<<<<<<<<
@@ -20575,7 +20575,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20575
  __pyx_L8_try_end:;
20576
  }
20577
 
20578
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083
20579
  * raise ImportError("numpy._core.multiarray failed to import")
20580
  *
20581
  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -20600,7 +20600,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20600
  return __pyx_r;
20601
  }
20602
 
20603
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089
20604
  * raise ImportError("numpy._core.umath failed to import")
20605
  *
20606
  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -20626,7 +20626,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20626
  int __pyx_clineno = 0;
20627
  __Pyx_RefNannySetupContext("import_ufunc", 0);
20628
 
20629
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
20630
  *
20631
  * cdef inline int import_ufunc() except -1:
20632
  * try: # <<<<<<<<<<<<<<
@@ -20642,7 +20642,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20642
  __Pyx_XGOTREF(__pyx_t_3);
20643
  /*try:*/ {
20644
 
20645
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1091
20646
  * cdef inline int import_ufunc() except -1:
20647
  * try:
20648
  * _import_umath() # <<<<<<<<<<<<<<
@@ -20652,7 +20652,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20652
  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1091, __pyx_L3_error)
20653
 
20654
 
20655
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
20656
  *
20657
  * cdef inline int import_ufunc() except -1:
20658
  * try: # <<<<<<<<<<<<<<
@@ -20666,7 +20666,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20666
  goto __pyx_L8_try_end;
20667
  __pyx_L3_error:;
20668
 
20669
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1092
20670
  * try:
20671
  * _import_umath()
20672
  * except Exception: # <<<<<<<<<<<<<<
@@ -20681,7 +20681,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20681
  __Pyx_XGOTREF(__pyx_t_6);
20682
  __Pyx_XGOTREF(__pyx_t_7);
20683
 
20684
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1093
20685
  * _import_umath()
20686
  * except Exception:
20687
  * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<<
@@ -20703,7 +20703,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20703
  }
20704
  goto __pyx_L5_except_error;
20705
 
20706
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
20707
  *
20708
  * cdef inline int import_ufunc() except -1:
20709
  * try: # <<<<<<<<<<<<<<
@@ -20719,7 +20719,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20719
  __pyx_L8_try_end:;
20720
  }
20721
 
20722
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089
20723
  * raise ImportError("numpy._core.umath failed to import")
20724
  *
20725
  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -20744,7 +20744,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20744
  return __pyx_r;
20745
  }
20746
 
20747
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096
20748
  *
20749
  *
20750
  * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<<
@@ -20755,7 +20755,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
20755
  static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) {
20756
  int __pyx_r;
20757
 
20758
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1108
20759
  * bool
20760
  * """
20761
  * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<<
@@ -20768,7 +20768,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_
20768
  }
20769
  goto __pyx_L0;
20770
 
20771
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096
20772
  *
20773
  *
20774
  * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<<
@@ -20782,7 +20782,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_
20782
  return __pyx_r;
20783
  }
20784
 
20785
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111
20786
  *
20787
  *
20788
  * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<<
@@ -20793,7 +20793,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_
20793
  static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) {
20794
  int __pyx_r;
20795
 
20796
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1123
20797
  * bool
20798
  * """
20799
  * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<<
@@ -20806,7 +20806,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o
20806
  }
20807
  goto __pyx_L0;
20808
 
20809
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111
20810
  *
20811
  *
20812
  * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<<
@@ -20820,7 +20820,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o
20820
  return __pyx_r;
20821
  }
20822
 
20823
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126
20824
  *
20825
  *
20826
  * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -20831,7 +20831,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o
20831
  static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) {
20832
  npy_datetime __pyx_r;
20833
 
20834
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1133
20835
  * also needed. That can be found using `get_datetime64_unit`.
20836
  * """
20837
  * return _PyDatetimeScalarObject_GetValue(obj) # <<<<<<<<<<<<<<
@@ -20844,7 +20844,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *
20844
  }
20845
  goto __pyx_L0;
20846
 
20847
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126
20848
  *
20849
  *
20850
  * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -20857,7 +20857,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *
20857
  return __pyx_r;
20858
  }
20859
 
20860
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136
20861
  *
20862
  *
20863
  * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -20868,7 +20868,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *
20868
  static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) {
20869
  npy_timedelta __pyx_r;
20870
 
20871
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1140
20872
  * returns the int64 value underlying scalar numpy timedelta64 object
20873
  * """
20874
  * return _PyTimedeltaScalarObject_GetValue(obj) # <<<<<<<<<<<<<<
@@ -20881,7 +20881,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject
20881
  }
20882
  goto __pyx_L0;
20883
 
20884
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136
20885
  *
20886
  *
20887
  * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -20894,7 +20894,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject
20894
  return __pyx_r;
20895
  }
20896
 
20897
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143
20898
  *
20899
  *
20900
  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -20905,7 +20905,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject
20905
  static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) {
20906
  NPY_DATETIMEUNIT __pyx_r;
20907
 
20908
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1147
20909
  * returns the unit part of the dtype for a numpy datetime64 object.
20910
  * """
20911
  * return _PyDatetimeScalarObject_GetMetadata(obj).base # <<<<<<<<<<<<<<
@@ -20918,7 +20918,7 @@ static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObjec
20918
  }
20919
  goto __pyx_L0;
20920
 
20921
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143
20922
  *
20923
  *
20924
  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
1546
  static const char* const __pyx_f[] = {
1547
  "nucleos.pyx",
1548
  "View.MemoryView",
1549
+ "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd",
1550
  "cpython/type.pxd",
1551
  };
1552
  /* #### Code section: utility_code_proto_before_types ### */
 
1799
 
1800
  /* #### Code section: numeric_typedefs ### */
1801
 
1802
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":761
1803
  * # in Cython to enable them only on the right systems.
1804
  *
1805
  * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
 
1808
  */
1809
  typedef npy_int8 __pyx_t_5numpy_int8_t;
1810
 
1811
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762
1812
  *
1813
  * ctypedef npy_int8 int8_t
1814
  * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
 
1817
  */
1818
  typedef npy_int16 __pyx_t_5numpy_int16_t;
1819
 
1820
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":763
1821
  * ctypedef npy_int8 int8_t
1822
  * ctypedef npy_int16 int16_t
1823
  * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
 
1826
  */
1827
  typedef npy_int32 __pyx_t_5numpy_int32_t;
1828
 
1829
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":764
1830
  * ctypedef npy_int16 int16_t
1831
  * ctypedef npy_int32 int32_t
1832
  * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
 
1835
  */
1836
  typedef npy_int64 __pyx_t_5numpy_int64_t;
1837
 
1838
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":766
1839
  * ctypedef npy_int64 int64_t
1840
  *
1841
  * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
 
1844
  */
1845
  typedef npy_uint8 __pyx_t_5numpy_uint8_t;
1846
 
1847
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":767
1848
  *
1849
  * ctypedef npy_uint8 uint8_t
1850
  * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
 
1853
  */
1854
  typedef npy_uint16 __pyx_t_5numpy_uint16_t;
1855
 
1856
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768
1857
  * ctypedef npy_uint8 uint8_t
1858
  * ctypedef npy_uint16 uint16_t
1859
  * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
 
1862
  */
1863
  typedef npy_uint32 __pyx_t_5numpy_uint32_t;
1864
 
1865
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769
1866
  * ctypedef npy_uint16 uint16_t
1867
  * ctypedef npy_uint32 uint32_t
1868
  * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
 
1871
  */
1872
  typedef npy_uint64 __pyx_t_5numpy_uint64_t;
1873
 
1874
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":771
1875
  * ctypedef npy_uint64 uint64_t
1876
  *
1877
  * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
 
1880
  */
1881
  typedef npy_float32 __pyx_t_5numpy_float32_t;
1882
 
1883
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":772
1884
  *
1885
  * ctypedef npy_float32 float32_t
1886
  * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
 
1889
  */
1890
  typedef npy_float64 __pyx_t_5numpy_float64_t;
1891
 
1892
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779
1893
  * ctypedef double complex complex128_t
1894
  *
1895
  * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
 
1898
  */
1899
  typedef npy_longlong __pyx_t_5numpy_longlong_t;
1900
 
1901
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780
1902
  *
1903
  * ctypedef npy_longlong longlong_t
1904
  * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
 
1907
  */
1908
  typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
1909
 
1910
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":782
1911
  * ctypedef npy_ulonglong ulonglong_t
1912
  *
1913
  * ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
 
1916
  */
1917
  typedef npy_intp __pyx_t_5numpy_intp_t;
1918
 
1919
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783
1920
  *
1921
  * ctypedef npy_intp intp_t
1922
  * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
 
1925
  */
1926
  typedef npy_uintp __pyx_t_5numpy_uintp_t;
1927
 
1928
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785
1929
  * ctypedef npy_uintp uintp_t
1930
  *
1931
  * ctypedef npy_double float_t # <<<<<<<<<<<<<<
 
1934
  */
1935
  typedef npy_double __pyx_t_5numpy_float_t;
1936
 
1937
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786
1938
  *
1939
  * ctypedef npy_double float_t
1940
  * ctypedef npy_double double_t # <<<<<<<<<<<<<<
 
1943
  */
1944
  typedef npy_double __pyx_t_5numpy_double_t;
1945
 
1946
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":787
1947
  * ctypedef npy_double float_t
1948
  * ctypedef npy_double double_t
1949
  * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
 
18461
  return __pyx_r;
18462
  }
18463
 
18464
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230
18465
  *
18466
  * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]:
18467
  * @property # <<<<<<<<<<<<<<
 
18472
  static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArray_Descr *__pyx_v_self) {
18473
  PyTypeObject *__pyx_r;
18474
 
18475
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":232
18476
  * @property
18477
  * cdef inline PyTypeObject* typeobj(self) noexcept nogil:
18478
  * return PyDataType_TYPEOBJ(self) # <<<<<<<<<<<<<<
 
18485
  }
18486
  goto __pyx_L0;
18487
 
18488
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230
18489
  *
18490
  * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]:
18491
  * @property # <<<<<<<<<<<<<<
 
18498
  return __pyx_r;
18499
  }
18500
 
18501
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234
18502
  * return PyDataType_TYPEOBJ(self)
18503
  *
18504
  * @property # <<<<<<<<<<<<<<
 
18509
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__pyx_v_self) {
18510
  char __pyx_r;
18511
 
18512
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":236
18513
  * @property
18514
  * cdef inline char kind(self) noexcept nogil:
18515
  * return PyDataType_KIND(self) # <<<<<<<<<<<<<<
 
18522
  }
18523
  goto __pyx_L0;
18524
 
18525
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234
18526
  * return PyDataType_TYPEOBJ(self)
18527
  *
18528
  * @property # <<<<<<<<<<<<<<
 
18535
  return __pyx_r;
18536
  }
18537
 
18538
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238
18539
  * return PyDataType_KIND(self)
18540
  *
18541
  * @property # <<<<<<<<<<<<<<
 
18546
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__pyx_v_self) {
18547
  char __pyx_r;
18548
 
18549
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":240
18550
  * @property
18551
  * cdef inline char type(self) noexcept nogil:
18552
  * return PyDataType_TYPE(self) # <<<<<<<<<<<<<<
 
18559
  }
18560
  goto __pyx_L0;
18561
 
18562
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238
18563
  * return PyDataType_KIND(self)
18564
  *
18565
  * @property # <<<<<<<<<<<<<<
 
18572
  return __pyx_r;
18573
  }
18574
 
18575
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247
18576
  * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of
18577
  * # directly accessing this field.
18578
  * @property # <<<<<<<<<<<<<<
 
18583
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr *__pyx_v_self) {
18584
  char __pyx_r;
18585
 
18586
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":249
18587
  * @property
18588
  * cdef inline char byteorder(self) noexcept nogil:
18589
  * return PyDataType_BYTEORDER(self) # <<<<<<<<<<<<<<
 
18596
  }
18597
  goto __pyx_L0;
18598
 
18599
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247
18600
  * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of
18601
  * # directly accessing this field.
18602
  * @property # <<<<<<<<<<<<<<
 
18609
  return __pyx_r;
18610
  }
18611
 
18612
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251
18613
  * return PyDataType_BYTEORDER(self)
18614
  *
18615
  * @property # <<<<<<<<<<<<<<
 
18620
  static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *__pyx_v_self) {
18621
  int __pyx_r;
18622
 
18623
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253
18624
  * @property
18625
  * cdef inline int type_num(self) noexcept nogil:
18626
  * return PyDataType_TYPENUM(self) # <<<<<<<<<<<<<<
 
18633
  }
18634
  goto __pyx_L0;
18635
 
18636
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251
18637
  * return PyDataType_BYTEORDER(self)
18638
  *
18639
  * @property # <<<<<<<<<<<<<<
 
18646
  return __pyx_r;
18647
  }
18648
 
18649
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255
18650
  * return PyDataType_TYPENUM(self)
18651
  *
18652
  * @property # <<<<<<<<<<<<<<
 
18657
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_Descr *__pyx_v_self) {
18658
  npy_intp __pyx_r;
18659
 
18660
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257
18661
  * @property
18662
  * cdef inline npy_intp itemsize(self) noexcept nogil:
18663
  * return PyDataType_ELSIZE(self) # <<<<<<<<<<<<<<
 
18670
  }
18671
  goto __pyx_L0;
18672
 
18673
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255
18674
  * return PyDataType_TYPENUM(self)
18675
  *
18676
  * @property # <<<<<<<<<<<<<<
 
18683
  return __pyx_r;
18684
  }
18685
 
18686
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259
18687
  * return PyDataType_ELSIZE(self)
18688
  *
18689
  * @property # <<<<<<<<<<<<<<
 
18694
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_Descr *__pyx_v_self) {
18695
  npy_intp __pyx_r;
18696
 
18697
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":261
18698
  * @property
18699
  * cdef inline npy_intp alignment(self) noexcept nogil:
18700
  * return PyDataType_ALIGNMENT(self) # <<<<<<<<<<<<<<
 
18707
  }
18708
  goto __pyx_L0;
18709
 
18710
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259
18711
  * return PyDataType_ELSIZE(self)
18712
  *
18713
  * @property # <<<<<<<<<<<<<<
 
18720
  return __pyx_r;
18721
  }
18722
 
18723
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265
18724
  * # Use fields/names with care as they may be NULL. You must check
18725
  * # for this using PyDataType_HASFIELDS.
18726
  * @property # <<<<<<<<<<<<<<
 
18734
  PyObject *__pyx_t_1;
18735
  __Pyx_RefNannySetupContext("__get__", 0);
18736
 
18737
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":267
18738
  * @property
18739
  * cdef inline object fields(self):
18740
  * return <object>PyDataType_FIELDS(self) # <<<<<<<<<<<<<<
 
18755
 
18756
  goto __pyx_L0;
18757
 
18758
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265
18759
  * # Use fields/names with care as they may be NULL. You must check
18760
  * # for this using PyDataType_HASFIELDS.
18761
  * @property # <<<<<<<<<<<<<<
 
18770
  return __pyx_r;
18771
  }
18772
 
18773
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269
18774
  * return <object>PyDataType_FIELDS(self)
18775
  *
18776
  * @property # <<<<<<<<<<<<<<
 
18784
  PyObject *__pyx_t_1;
18785
  __Pyx_RefNannySetupContext("__get__", 0);
18786
 
18787
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":271
18788
  * @property
18789
  * cdef inline tuple names(self):
18790
  * return <tuple>PyDataType_NAMES(self) # <<<<<<<<<<<<<<
 
18805
 
18806
  goto __pyx_L0;
18807
 
18808
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269
18809
  * return <object>PyDataType_FIELDS(self)
18810
  *
18811
  * @property # <<<<<<<<<<<<<<
 
18820
  return __pyx_r;
18821
  }
18822
 
18823
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276
18824
  * # valid (the pointer can be NULL). Most users should access
18825
  * # this field via the inline helper method PyDataType_SHAPE.
18826
  * @property # <<<<<<<<<<<<<<
 
18831
  static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__(PyArray_Descr *__pyx_v_self) {
18832
  PyArray_ArrayDescr *__pyx_r;
18833
 
18834
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":278
18835
  * @property
18836
  * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:
18837
  * return PyDataType_SUBARRAY(self) # <<<<<<<<<<<<<<
 
18844
  }
18845
  goto __pyx_L0;
18846
 
18847
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276
18848
  * # valid (the pointer can be NULL). Most users should access
18849
  * # this field via the inline helper method PyDataType_SHAPE.
18850
  * @property # <<<<<<<<<<<<<<
 
18857
  return __pyx_r;
18858
  }
18859
 
18860
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280
18861
  * return PyDataType_SUBARRAY(self)
18862
  *
18863
  * @property # <<<<<<<<<<<<<<
 
18868
  static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Descr *__pyx_v_self) {
18869
  npy_uint64 __pyx_r;
18870
 
18871
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":283
18872
  * cdef inline npy_uint64 flags(self) noexcept nogil:
18873
  * """The data types flags."""
18874
  * return PyDataType_FLAGS(self) # <<<<<<<<<<<<<<
 
18881
  }
18882
  goto __pyx_L0;
18883
 
18884
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280
18885
  * return PyDataType_SUBARRAY(self)
18886
  *
18887
  * @property # <<<<<<<<<<<<<<
 
18894
  return __pyx_r;
18895
  }
18896
 
18897
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292
18898
  * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
18899
  *
18900
  * @property # <<<<<<<<<<<<<<
 
18905
  static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMultiIterObject *__pyx_v_self) {
18906
  int __pyx_r;
18907
 
18908
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295
18909
  * cdef inline int numiter(self) noexcept nogil:
18910
  * """The number of arrays that need to be broadcast to the same shape."""
18911
  * return PyArray_MultiIter_NUMITER(self) # <<<<<<<<<<<<<<
 
18918
  }
18919
  goto __pyx_L0;
18920
 
18921
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292
18922
  * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
18923
  *
18924
  * @property # <<<<<<<<<<<<<<
 
18931
  return __pyx_r;
18932
  }
18933
 
18934
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297
18935
  * return PyArray_MultiIter_NUMITER(self)
18936
  *
18937
  * @property # <<<<<<<<<<<<<<
 
18942
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMultiIterObject *__pyx_v_self) {
18943
  npy_intp __pyx_r;
18944
 
18945
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300
18946
  * cdef inline npy_intp size(self) noexcept nogil:
18947
  * """The total broadcasted size."""
18948
  * return PyArray_MultiIter_SIZE(self) # <<<<<<<<<<<<<<
 
18955
  }
18956
  goto __pyx_L0;
18957
 
18958
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297
18959
  * return PyArray_MultiIter_NUMITER(self)
18960
  *
18961
  * @property # <<<<<<<<<<<<<<
 
18968
  return __pyx_r;
18969
  }
18970
 
18971
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302
18972
  * return PyArray_MultiIter_SIZE(self)
18973
  *
18974
  * @property # <<<<<<<<<<<<<<
 
18979
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMultiIterObject *__pyx_v_self) {
18980
  npy_intp __pyx_r;
18981
 
18982
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305
18983
  * cdef inline npy_intp index(self) noexcept nogil:
18984
  * """The current (1-d) index into the broadcasted result."""
18985
  * return PyArray_MultiIter_INDEX(self) # <<<<<<<<<<<<<<
 
18992
  }
18993
  goto __pyx_L0;
18994
 
18995
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302
18996
  * return PyArray_MultiIter_SIZE(self)
18997
  *
18998
  * @property # <<<<<<<<<<<<<<
 
19005
  return __pyx_r;
19006
  }
19007
 
19008
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307
19009
  * return PyArray_MultiIter_INDEX(self)
19010
  *
19011
  * @property # <<<<<<<<<<<<<<
 
19016
  static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterObject *__pyx_v_self) {
19017
  int __pyx_r;
19018
 
19019
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":310
19020
  * cdef inline int nd(self) noexcept nogil:
19021
  * """The number of dimensions in the broadcasted result."""
19022
  * return PyArray_MultiIter_NDIM(self) # <<<<<<<<<<<<<<
 
19029
  }
19030
  goto __pyx_L0;
19031
 
19032
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307
19033
  * return PyArray_MultiIter_INDEX(self)
19034
  *
19035
  * @property # <<<<<<<<<<<<<<
 
19042
  return __pyx_r;
19043
  }
19044
 
19045
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312
19046
  * return PyArray_MultiIter_NDIM(self)
19047
  *
19048
  * @property # <<<<<<<<<<<<<<
 
19053
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(PyArrayMultiIterObject *__pyx_v_self) {
19054
  npy_intp *__pyx_r;
19055
 
19056
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":315
19057
  * cdef inline npy_intp* dimensions(self) noexcept nogil:
19058
  * """The shape of the broadcasted result."""
19059
  * return PyArray_MultiIter_DIMS(self) # <<<<<<<<<<<<<<
 
19066
  }
19067
  goto __pyx_L0;
19068
 
19069
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312
19070
  * return PyArray_MultiIter_NDIM(self)
19071
  *
19072
  * @property # <<<<<<<<<<<<<<
 
19079
  return __pyx_r;
19080
  }
19081
 
19082
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317
19083
  * return PyArray_MultiIter_DIMS(self)
19084
  *
19085
  * @property # <<<<<<<<<<<<<<
 
19090
  static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMultiIterObject *__pyx_v_self) {
19091
  void **__pyx_r;
19092
 
19093
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":321
19094
  * """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
19095
  * On return, the iterators are adjusted for broadcasting."""
19096
  * return PyArray_MultiIter_ITERS(self) # <<<<<<<<<<<<<<
 
19103
  }
19104
  goto __pyx_L0;
19105
 
19106
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317
19107
  * return PyArray_MultiIter_DIMS(self)
19108
  *
19109
  * @property # <<<<<<<<<<<<<<
 
19116
  return __pyx_r;
19117
  }
19118
 
19119
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335
19120
  * # Instead, we use properties that map to the corresponding C-API functions.
19121
  *
19122
  * @property # <<<<<<<<<<<<<<
 
19127
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObject *__pyx_v_self) {
19128
  PyObject *__pyx_r;
19129
 
19130
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":339
19131
  * """Returns a borrowed reference to the object owning the data/memory.
19132
  * """
19133
  * return PyArray_BASE(self) # <<<<<<<<<<<<<<
 
19140
  }
19141
  goto __pyx_L0;
19142
 
19143
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335
19144
  * # Instead, we use properties that map to the corresponding C-API functions.
19145
  *
19146
  * @property # <<<<<<<<<<<<<<
 
19153
  return __pyx_r;
19154
  }
19155
 
19156
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341
19157
  * return PyArray_BASE(self)
19158
  *
19159
  * @property # <<<<<<<<<<<<<<
 
19167
  PyArray_Descr *__pyx_t_1;
19168
  __Pyx_RefNannySetupContext("__get__", 0);
19169
 
19170
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":345
19171
  * """Returns an owned reference to the dtype of the array.
19172
  * """
19173
  * return <dtype>PyArray_DESCR(self) # <<<<<<<<<<<<<<
 
19188
 
19189
  goto __pyx_L0;
19190
 
19191
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341
19192
  * return PyArray_BASE(self)
19193
  *
19194
  * @property # <<<<<<<<<<<<<<
 
19203
  return __pyx_r;
19204
  }
19205
 
19206
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347
19207
  * return <dtype>PyArray_DESCR(self)
19208
  *
19209
  * @property # <<<<<<<<<<<<<<
 
19214
  static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__pyx_v_self) {
19215
  int __pyx_r;
19216
 
19217
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":351
19218
  * """Returns the number of dimensions in the array.
19219
  * """
19220
  * return PyArray_NDIM(self) # <<<<<<<<<<<<<<
 
19227
  }
19228
  goto __pyx_L0;
19229
 
19230
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347
19231
  * return <dtype>PyArray_DESCR(self)
19232
  *
19233
  * @property # <<<<<<<<<<<<<<
 
19240
  return __pyx_r;
19241
  }
19242
 
19243
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353
19244
  * return PyArray_NDIM(self)
19245
  *
19246
  * @property # <<<<<<<<<<<<<<
 
19251
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObject *__pyx_v_self) {
19252
  npy_intp *__pyx_r;
19253
 
19254
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":359
19255
  * Can return NULL for 0-dimensional arrays.
19256
  * """
19257
  * return PyArray_DIMS(self) # <<<<<<<<<<<<<<
 
19264
  }
19265
  goto __pyx_L0;
19266
 
19267
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353
19268
  * return PyArray_NDIM(self)
19269
  *
19270
  * @property # <<<<<<<<<<<<<<
 
19277
  return __pyx_r;
19278
  }
19279
 
19280
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361
19281
  * return PyArray_DIMS(self)
19282
  *
19283
  * @property # <<<<<<<<<<<<<<
 
19288
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayObject *__pyx_v_self) {
19289
  npy_intp *__pyx_r;
19290
 
19291
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":366
19292
  * The number of elements matches the number of dimensions of the array (ndim).
19293
  * """
19294
  * return PyArray_STRIDES(self) # <<<<<<<<<<<<<<
 
19301
  }
19302
  goto __pyx_L0;
19303
 
19304
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361
19305
  * return PyArray_DIMS(self)
19306
  *
19307
  * @property # <<<<<<<<<<<<<<
 
19314
  return __pyx_r;
19315
  }
19316
 
19317
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368
19318
  * return PyArray_STRIDES(self)
19319
  *
19320
  * @property # <<<<<<<<<<<<<<
 
19325
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObject *__pyx_v_self) {
19326
  npy_intp __pyx_r;
19327
 
19328
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":372
19329
  * """Returns the total size (in number of elements) of the array.
19330
  * """
19331
  * return PyArray_SIZE(self) # <<<<<<<<<<<<<<
 
19338
  }
19339
  goto __pyx_L0;
19340
 
19341
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368
19342
  * return PyArray_STRIDES(self)
19343
  *
19344
  * @property # <<<<<<<<<<<<<<
 
19351
  return __pyx_r;
19352
  }
19353
 
19354
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374
19355
  * return PyArray_SIZE(self)
19356
  *
19357
  * @property # <<<<<<<<<<<<<<
 
19362
  static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *__pyx_v_self) {
19363
  char *__pyx_r;
19364
 
19365
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":381
19366
  * of `PyArray_DATA()` instead, which returns a 'void*'.
19367
  * """
19368
  * return PyArray_BYTES(self) # <<<<<<<<<<<<<<
 
19375
  }
19376
  goto __pyx_L0;
19377
 
19378
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374
19379
  * return PyArray_SIZE(self)
19380
  *
19381
  * @property # <<<<<<<<<<<<<<
 
19388
  return __pyx_r;
19389
  }
19390
 
19391
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794
19392
  * ctypedef long double complex clongdouble_t
19393
  *
19394
  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
 
19405
  int __pyx_clineno = 0;
19406
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
19407
 
19408
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":795
19409
  *
19410
  * cdef inline object PyArray_MultiIterNew1(a):
19411
  * return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
 
19425
  __pyx_t_1 = 0;
19426
  goto __pyx_L0;
19427
 
19428
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794
19429
  * ctypedef long double complex clongdouble_t
19430
  *
19431
  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
 
19444
  return __pyx_r;
19445
  }
19446
 
19447
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797
19448
  * return PyArray_MultiIterNew(1, <void*>a)
19449
  *
19450
  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
 
19461
  int __pyx_clineno = 0;
19462
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
19463
 
19464
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":798
19465
  *
19466
  * cdef inline object PyArray_MultiIterNew2(a, b):
19467
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
 
19481
  __pyx_t_1 = 0;
19482
  goto __pyx_L0;
19483
 
19484
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797
19485
  * return PyArray_MultiIterNew(1, <void*>a)
19486
  *
19487
  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
 
19500
  return __pyx_r;
19501
  }
19502
 
19503
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800
19504
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
19505
  *
19506
  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
 
19517
  int __pyx_clineno = 0;
19518
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
19519
 
19520
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":801
19521
  *
19522
  * cdef inline object PyArray_MultiIterNew3(a, b, c):
19523
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
 
19537
  __pyx_t_1 = 0;
19538
  goto __pyx_L0;
19539
 
19540
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800
19541
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
19542
  *
19543
  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
 
19556
  return __pyx_r;
19557
  }
19558
 
19559
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803
19560
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
19561
  *
19562
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
 
19573
  int __pyx_clineno = 0;
19574
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
19575
 
19576
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":804
19577
  *
19578
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
19579
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
 
19593
  __pyx_t_1 = 0;
19594
  goto __pyx_L0;
19595
 
19596
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803
19597
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
19598
  *
19599
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
 
19612
  return __pyx_r;
19613
  }
19614
 
19615
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806
19616
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
19617
  *
19618
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
 
19629
  int __pyx_clineno = 0;
19630
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
19631
 
19632
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":807
19633
  *
19634
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
19635
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
 
19649
  __pyx_t_1 = 0;
19650
  goto __pyx_L0;
19651
 
19652
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806
19653
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
19654
  *
19655
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
 
19668
  return __pyx_r;
19669
  }
19670
 
19671
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809
19672
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
19673
  *
19674
  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
 
19683
  PyObject *__pyx_t_2;
19684
  __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
19685
 
19686
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810
19687
  *
19688
  * cdef inline tuple PyDataType_SHAPE(dtype d):
19689
  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
 
19695
  if (__pyx_t_1) {
19696
 
19697
 
19698
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":811
19699
  * cdef inline tuple PyDataType_SHAPE(dtype d):
19700
  * if PyDataType_HASSUBARRAY(d):
19701
  * return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
 
19716
 
19717
  goto __pyx_L0;
19718
 
19719
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810
19720
  *
19721
  * cdef inline tuple PyDataType_SHAPE(dtype d):
19722
  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
 
19725
  */
19726
  }
19727
 
19728
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":813
19729
  * return <tuple>d.subarray.shape
19730
  * else:
19731
  * return () # <<<<<<<<<<<<<<
 
19745
  goto __pyx_L0;
19746
  }
19747
 
19748
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809
19749
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
19750
  *
19751
  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
 
19760
  return __pyx_r;
19761
  }
19762
 
19763
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947
19764
  *
19765
  * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]:
19766
  * @property # <<<<<<<<<<<<<<
 
19771
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx_v_self) {
19772
  int __pyx_r;
19773
 
19774
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":949
19775
  * @property
19776
  * cdef inline int nin(self) noexcept nogil:
19777
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin # <<<<<<<<<<<<<<
 
19784
  }
19785
  goto __pyx_L0;
19786
 
19787
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947
19788
  *
19789
  * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]:
19790
  * @property # <<<<<<<<<<<<<<
 
19797
  return __pyx_r;
19798
  }
19799
 
19800
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951
19801
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin
19802
  *
19803
  * @property # <<<<<<<<<<<<<<
 
19808
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__pyx_v_self) {
19809
  int __pyx_r;
19810
 
19811
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":953
19812
  * @property
19813
  * cdef inline int nout(self) noexcept nogil:
19814
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout # <<<<<<<<<<<<<<
 
19821
  }
19822
  goto __pyx_L0;
19823
 
19824
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951
19825
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin
19826
  *
19827
  * @property # <<<<<<<<<<<<<<
 
19834
  return __pyx_r;
19835
  }
19836
 
19837
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955
19838
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout
19839
  *
19840
  * @property # <<<<<<<<<<<<<<
 
19845
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__pyx_v_self) {
19846
  int __pyx_r;
19847
 
19848
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":957
19849
  * @property
19850
  * cdef inline int nargs(self) noexcept nogil:
19851
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs # <<<<<<<<<<<<<<
 
19858
  }
19859
  goto __pyx_L0;
19860
 
19861
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955
19862
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout
19863
  *
19864
  * @property # <<<<<<<<<<<<<<
 
19871
  return __pyx_r;
19872
  }
19873
 
19874
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959
19875
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
19876
  *
19877
  * @property # <<<<<<<<<<<<<<
 
19882
  static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___get__(PyUFuncObject *__pyx_v_self) {
19883
  PyUFuncGenericFunction *__pyx_r;
19884
 
19885
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":961
19886
  * @property
19887
  * cdef inline PyUFuncGenericFunction* functions(self) noexcept nogil:
19888
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions # <<<<<<<<<<<<<<
 
19895
  }
19896
  goto __pyx_L0;
19897
 
19898
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959
19899
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
19900
  *
19901
  * @property # <<<<<<<<<<<<<<
 
19908
  return __pyx_r;
19909
  }
19910
 
19911
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963
19912
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions
19913
  *
19914
  * @property # <<<<<<<<<<<<<<
 
19919
  static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *__pyx_v_self) {
19920
  void **__pyx_r;
19921
 
19922
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":965
19923
  * @property
19924
  * cdef inline void ** data(self) noexcept nogil:
19925
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data # <<<<<<<<<<<<<<
 
19932
  }
19933
  goto __pyx_L0;
19934
 
19935
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963
19936
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions
19937
  *
19938
  * @property # <<<<<<<<<<<<<<
 
19945
  return __pyx_r;
19946
  }
19947
 
19948
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967
19949
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
19950
  *
19951
  * @property # <<<<<<<<<<<<<<
 
19956
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__pyx_v_self) {
19957
  int __pyx_r;
19958
 
19959
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":969
19960
  * @property
19961
  * cdef inline int ntypes(self) noexcept nogil:
19962
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes # <<<<<<<<<<<<<<
 
19969
  }
19970
  goto __pyx_L0;
19971
 
19972
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967
19973
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
19974
  *
19975
  * @property # <<<<<<<<<<<<<<
 
19982
  return __pyx_r;
19983
  }
19984
 
19985
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971
19986
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
19987
  *
19988
  * @property # <<<<<<<<<<<<<<
 
19993
  static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObject *__pyx_v_self) {
19994
  char const *__pyx_r;
19995
 
19996
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":973
19997
  * @property
19998
  * cdef inline const char* name(self) noexcept nogil:
19999
  * return _PyUFuncObject_GET_ITEM_DATA(self).name # <<<<<<<<<<<<<<
 
20006
  }
20007
  goto __pyx_L0;
20008
 
20009
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971
20010
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
20011
  *
20012
  * @property # <<<<<<<<<<<<<<
 
20019
  return __pyx_r;
20020
  }
20021
 
20022
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975
20023
  * return _PyUFuncObject_GET_ITEM_DATA(self).name
20024
  *
20025
  * @property # <<<<<<<<<<<<<<
 
20030
  static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObject *__pyx_v_self) {
20031
  char const *__pyx_r;
20032
 
20033
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":977
20034
  * @property
20035
  * cdef inline const char* doc(self) noexcept nogil:
20036
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc # <<<<<<<<<<<<<<
 
20043
  }
20044
  goto __pyx_L0;
20045
 
20046
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975
20047
  * return _PyUFuncObject_GET_ITEM_DATA(self).name
20048
  *
20049
  * @property # <<<<<<<<<<<<<<
 
20056
  return __pyx_r;
20057
  }
20058
 
20059
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979
20060
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc
20061
  *
20062
  * @property # <<<<<<<<<<<<<<
 
20067
  static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__pyx_v_self) {
20068
  void *__pyx_r;
20069
 
20070
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":981
20071
  * @property
20072
  * cdef inline void* ptr(self) noexcept nogil:
20073
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr # <<<<<<<<<<<<<<
 
20080
  }
20081
  goto __pyx_L0;
20082
 
20083
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979
20084
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc
20085
  *
20086
  * @property # <<<<<<<<<<<<<<
 
20093
  return __pyx_r;
20094
  }
20095
 
20096
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983
20097
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
20098
  *
20099
  * @property # <<<<<<<<<<<<<<
 
20104
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject *__pyx_v_self) {
20105
  PyObject *__pyx_r;
20106
 
20107
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":985
20108
  * @property
20109
  * cdef inline PyObject* obj(self) noexcept nogil:
20110
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj # <<<<<<<<<<<<<<
 
20117
  }
20118
  goto __pyx_L0;
20119
 
20120
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983
20121
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
20122
  *
20123
  * @property # <<<<<<<<<<<<<<
 
20130
  return __pyx_r;
20131
  }
20132
 
20133
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987
20134
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj
20135
  *
20136
  * @property # <<<<<<<<<<<<<<
 
20141
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncObject *__pyx_v_self) {
20142
  PyObject *__pyx_r;
20143
 
20144
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":989
20145
  * @property
20146
  * cdef inline PyObject* userloops(self) noexcept nogil:
20147
  * return _PyUFuncObject_GET_ITEM_DATA(self).userloops # <<<<<<<<<<<<<<
 
20154
  }
20155
  goto __pyx_L0;
20156
 
20157
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987
20158
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj
20159
  *
20160
  * @property # <<<<<<<<<<<<<<
 
20167
  return __pyx_r;
20168
  }
20169
 
20170
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065
20171
  * int _import_umath() except -1
20172
  *
20173
  * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<<
 
20181
  const char *__pyx_filename = NULL;
20182
  int __pyx_clineno = 0;
20183
 
20184
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066
20185
  *
20186
  * cdef inline void set_array_base(ndarray arr, object base) except *:
20187
  * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
 
20190
  */
20191
  Py_INCREF(__pyx_v_base);
20192
 
20193
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1067
20194
  * cdef inline void set_array_base(ndarray arr, object base) except *:
20195
  * Py_INCREF(base) # important to do this before stealing the reference below!
20196
  * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
 
20200
  __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 1067, __pyx_L1_error)
20201
 
20202
 
20203
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065
20204
  * int _import_umath() except -1
20205
  *
20206
  * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<<
 
20216
 
20217
  }
20218
 
20219
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069
20220
  * PyArray_SetBaseObject(arr, base)
20221
  *
20222
  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
 
20231
  int __pyx_t_1;
20232
  __Pyx_RefNannySetupContext("get_array_base", 0);
20233
 
20234
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070
20235
  *
20236
  * cdef inline object get_array_base(ndarray arr):
20237
  * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
 
20240
  */
20241
  __pyx_v_base = PyArray_BASE(__pyx_v_arr);
20242
 
20243
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071
20244
  * cdef inline object get_array_base(ndarray arr):
20245
  * base = PyArray_BASE(arr)
20246
  * if base is NULL: # <<<<<<<<<<<<<<
 
20252
  if (__pyx_t_1) {
20253
 
20254
 
20255
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1072
20256
  * base = PyArray_BASE(arr)
20257
  * if base is NULL:
20258
  * return None # <<<<<<<<<<<<<<
 
20269
  }
20270
  goto __pyx_L0;
20271
 
20272
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071
20273
  * cdef inline object get_array_base(ndarray arr):
20274
  * base = PyArray_BASE(arr)
20275
  * if base is NULL: # <<<<<<<<<<<<<<
 
20278
  */
20279
  }
20280
 
20281
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073
20282
  * if base is NULL:
20283
  * return None
20284
  * return <object>base # <<<<<<<<<<<<<<
 
20296
  }
20297
  goto __pyx_L0;
20298
 
20299
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069
20300
  * PyArray_SetBaseObject(arr, base)
20301
  *
20302
  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
 
20312
  return __pyx_r;
20313
  }
20314
 
20315
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077
20316
  * # Versions of the import_* functions which are more suitable for
20317
  * # Cython code.
20318
  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
 
20338
  int __pyx_clineno = 0;
20339
  __Pyx_RefNannySetupContext("import_array", 0);
20340
 
20341
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20342
  * # Cython code.
20343
  * cdef inline int import_array() except -1:
20344
  * try: # <<<<<<<<<<<<<<
 
20354
  __Pyx_XGOTREF(__pyx_t_3);
20355
  /*try:*/ {
20356
 
20357
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1079
20358
  * cdef inline int import_array() except -1:
20359
  * try:
20360
  * __pyx_import_array() # <<<<<<<<<<<<<<
 
20364
  __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1079, __pyx_L3_error)
20365
 
20366
 
20367
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20368
  * # Cython code.
20369
  * cdef inline int import_array() except -1:
20370
  * try: # <<<<<<<<<<<<<<
 
20378
  goto __pyx_L8_try_end;
20379
  __pyx_L3_error:;
20380
 
20381
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1080
20382
  * try:
20383
  * __pyx_import_array()
20384
  * except Exception: # <<<<<<<<<<<<<<
 
20393
  __Pyx_XGOTREF(__pyx_t_6);
20394
  __Pyx_XGOTREF(__pyx_t_7);
20395
 
20396
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1081
20397
  * __pyx_import_array()
20398
  * except Exception:
20399
  * raise ImportError("numpy._core.multiarray failed to import") # <<<<<<<<<<<<<<
 
20415
  }
20416
  goto __pyx_L5_except_error;
20417
 
20418
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20419
  * # Cython code.
20420
  * cdef inline int import_array() except -1:
20421
  * try: # <<<<<<<<<<<<<<
 
20431
  __pyx_L8_try_end:;
20432
  }
20433
 
20434
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077
20435
  * # Versions of the import_* functions which are more suitable for
20436
  * # Cython code.
20437
  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
 
20456
  return __pyx_r;
20457
  }
20458
 
20459
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083
20460
  * raise ImportError("numpy._core.multiarray failed to import")
20461
  *
20462
  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
 
20482
  int __pyx_clineno = 0;
20483
  __Pyx_RefNannySetupContext("import_umath", 0);
20484
 
20485
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20486
  *
20487
  * cdef inline int import_umath() except -1:
20488
  * try: # <<<<<<<<<<<<<<
 
20498
  __Pyx_XGOTREF(__pyx_t_3);
20499
  /*try:*/ {
20500
 
20501
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1085
20502
  * cdef inline int import_umath() except -1:
20503
  * try:
20504
  * _import_umath() # <<<<<<<<<<<<<<
 
20508
  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1085, __pyx_L3_error)
20509
 
20510
 
20511
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20512
  *
20513
  * cdef inline int import_umath() except -1:
20514
  * try: # <<<<<<<<<<<<<<
 
20522
  goto __pyx_L8_try_end;
20523
  __pyx_L3_error:;
20524
 
20525
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1086
20526
  * try:
20527
  * _import_umath()
20528
  * except Exception: # <<<<<<<<<<<<<<
 
20537
  __Pyx_XGOTREF(__pyx_t_6);
20538
  __Pyx_XGOTREF(__pyx_t_7);
20539
 
20540
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1087
20541
  * _import_umath()
20542
  * except Exception:
20543
  * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<<
 
20559
  }
20560
  goto __pyx_L5_except_error;
20561
 
20562
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20563
  *
20564
  * cdef inline int import_umath() except -1:
20565
  * try: # <<<<<<<<<<<<<<
 
20575
  __pyx_L8_try_end:;
20576
  }
20577
 
20578
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083
20579
  * raise ImportError("numpy._core.multiarray failed to import")
20580
  *
20581
  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
 
20600
  return __pyx_r;
20601
  }
20602
 
20603
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089
20604
  * raise ImportError("numpy._core.umath failed to import")
20605
  *
20606
  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
 
20626
  int __pyx_clineno = 0;
20627
  __Pyx_RefNannySetupContext("import_ufunc", 0);
20628
 
20629
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
20630
  *
20631
  * cdef inline int import_ufunc() except -1:
20632
  * try: # <<<<<<<<<<<<<<
 
20642
  __Pyx_XGOTREF(__pyx_t_3);
20643
  /*try:*/ {
20644
 
20645
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1091
20646
  * cdef inline int import_ufunc() except -1:
20647
  * try:
20648
  * _import_umath() # <<<<<<<<<<<<<<
 
20652
  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1091, __pyx_L3_error)
20653
 
20654
 
20655
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
20656
  *
20657
  * cdef inline int import_ufunc() except -1:
20658
  * try: # <<<<<<<<<<<<<<
 
20666
  goto __pyx_L8_try_end;
20667
  __pyx_L3_error:;
20668
 
20669
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1092
20670
  * try:
20671
  * _import_umath()
20672
  * except Exception: # <<<<<<<<<<<<<<
 
20681
  __Pyx_XGOTREF(__pyx_t_6);
20682
  __Pyx_XGOTREF(__pyx_t_7);
20683
 
20684
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1093
20685
  * _import_umath()
20686
  * except Exception:
20687
  * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<<
 
20703
  }
20704
  goto __pyx_L5_except_error;
20705
 
20706
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
20707
  *
20708
  * cdef inline int import_ufunc() except -1:
20709
  * try: # <<<<<<<<<<<<<<
 
20719
  __pyx_L8_try_end:;
20720
  }
20721
 
20722
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089
20723
  * raise ImportError("numpy._core.umath failed to import")
20724
  *
20725
  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
 
20744
  return __pyx_r;
20745
  }
20746
 
20747
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096
20748
  *
20749
  *
20750
  * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<<
 
20755
  static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) {
20756
  int __pyx_r;
20757
 
20758
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1108
20759
  * bool
20760
  * """
20761
  * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<<
 
20768
  }
20769
  goto __pyx_L0;
20770
 
20771
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096
20772
  *
20773
  *
20774
  * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<<
 
20782
  return __pyx_r;
20783
  }
20784
 
20785
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111
20786
  *
20787
  *
20788
  * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<<
 
20793
  static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) {
20794
  int __pyx_r;
20795
 
20796
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1123
20797
  * bool
20798
  * """
20799
  * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<<
 
20806
  }
20807
  goto __pyx_L0;
20808
 
20809
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111
20810
  *
20811
  *
20812
  * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<<
 
20820
  return __pyx_r;
20821
  }
20822
 
20823
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126
20824
  *
20825
  *
20826
  * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
20831
  static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) {
20832
  npy_datetime __pyx_r;
20833
 
20834
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1133
20835
  * also needed. That can be found using `get_datetime64_unit`.
20836
  * """
20837
  * return _PyDatetimeScalarObject_GetValue(obj) # <<<<<<<<<<<<<<
 
20844
  }
20845
  goto __pyx_L0;
20846
 
20847
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126
20848
  *
20849
  *
20850
  * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
20857
  return __pyx_r;
20858
  }
20859
 
20860
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136
20861
  *
20862
  *
20863
  * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
20868
  static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) {
20869
  npy_timedelta __pyx_r;
20870
 
20871
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1140
20872
  * returns the int64 value underlying scalar numpy timedelta64 object
20873
  * """
20874
  * return _PyTimedeltaScalarObject_GetValue(obj) # <<<<<<<<<<<<<<
 
20881
  }
20882
  goto __pyx_L0;
20883
 
20884
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136
20885
  *
20886
  *
20887
  * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
20894
  return __pyx_r;
20895
  }
20896
 
20897
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143
20898
  *
20899
  *
20900
  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
20905
  static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) {
20906
  NPY_DATETIMEUNIT __pyx_r;
20907
 
20908
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1147
20909
  * returns the unit part of the dtype for a numpy datetime64 object.
20910
  * """
20911
  * return _PyDatetimeScalarObject_GetMetadata(obj).base # <<<<<<<<<<<<<<
 
20918
  }
20919
  goto __pyx_L0;
20920
 
20921
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143
20922
  *
20923
  *
20924
  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<<
src/khtst/acelerado/nucleos.cpython-312-x86_64-linux-gnu.so CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:0a8a5188ae0a07283d488e1a4ed509240b318cf2594bd5698c53f72d0469c7cf
3
  size 1320224
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c7d1c55a2880f2e74324c4ef45997c998718163d36b803592a7b9a9dfe6b3924
3
  size 1320224
src/khtst/acelerado/rco_gsq.c CHANGED
@@ -1551,7 +1551,7 @@ static const char * const __pyx_cfilenm = __FILE__;
1551
  static const char* const __pyx_f[] = {
1552
  "rco_gsq.pyx",
1553
  "View.MemoryView",
1554
- "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd",
1555
  "cpython/type.pxd",
1556
  };
1557
  /* #### Code section: utility_code_proto_before_types ### */
@@ -1804,7 +1804,7 @@ typedef struct {
1804
 
1805
  /* #### Code section: numeric_typedefs ### */
1806
 
1807
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":761
1808
  * # in Cython to enable them only on the right systems.
1809
  *
1810
  * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
@@ -1813,7 +1813,7 @@ typedef struct {
1813
  */
1814
  typedef npy_int8 __pyx_t_5numpy_int8_t;
1815
 
1816
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762
1817
  *
1818
  * ctypedef npy_int8 int8_t
1819
  * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
@@ -1822,7 +1822,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t;
1822
  */
1823
  typedef npy_int16 __pyx_t_5numpy_int16_t;
1824
 
1825
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":763
1826
  * ctypedef npy_int8 int8_t
1827
  * ctypedef npy_int16 int16_t
1828
  * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
@@ -1831,7 +1831,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t;
1831
  */
1832
  typedef npy_int32 __pyx_t_5numpy_int32_t;
1833
 
1834
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":764
1835
  * ctypedef npy_int16 int16_t
1836
  * ctypedef npy_int32 int32_t
1837
  * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
@@ -1840,7 +1840,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t;
1840
  */
1841
  typedef npy_int64 __pyx_t_5numpy_int64_t;
1842
 
1843
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":766
1844
  * ctypedef npy_int64 int64_t
1845
  *
1846
  * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
@@ -1849,7 +1849,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t;
1849
  */
1850
  typedef npy_uint8 __pyx_t_5numpy_uint8_t;
1851
 
1852
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":767
1853
  *
1854
  * ctypedef npy_uint8 uint8_t
1855
  * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
@@ -1858,7 +1858,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t;
1858
  */
1859
  typedef npy_uint16 __pyx_t_5numpy_uint16_t;
1860
 
1861
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768
1862
  * ctypedef npy_uint8 uint8_t
1863
  * ctypedef npy_uint16 uint16_t
1864
  * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
@@ -1867,7 +1867,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t;
1867
  */
1868
  typedef npy_uint32 __pyx_t_5numpy_uint32_t;
1869
 
1870
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769
1871
  * ctypedef npy_uint16 uint16_t
1872
  * ctypedef npy_uint32 uint32_t
1873
  * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
@@ -1876,7 +1876,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t;
1876
  */
1877
  typedef npy_uint64 __pyx_t_5numpy_uint64_t;
1878
 
1879
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":771
1880
  * ctypedef npy_uint64 uint64_t
1881
  *
1882
  * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
@@ -1885,7 +1885,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t;
1885
  */
1886
  typedef npy_float32 __pyx_t_5numpy_float32_t;
1887
 
1888
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":772
1889
  *
1890
  * ctypedef npy_float32 float32_t
1891
  * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
@@ -1894,7 +1894,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t;
1894
  */
1895
  typedef npy_float64 __pyx_t_5numpy_float64_t;
1896
 
1897
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779
1898
  * ctypedef double complex complex128_t
1899
  *
1900
  * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
@@ -1903,7 +1903,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t;
1903
  */
1904
  typedef npy_longlong __pyx_t_5numpy_longlong_t;
1905
 
1906
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780
1907
  *
1908
  * ctypedef npy_longlong longlong_t
1909
  * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
@@ -1912,7 +1912,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t;
1912
  */
1913
  typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
1914
 
1915
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":782
1916
  * ctypedef npy_ulonglong ulonglong_t
1917
  *
1918
  * ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
@@ -1921,7 +1921,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
1921
  */
1922
  typedef npy_intp __pyx_t_5numpy_intp_t;
1923
 
1924
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783
1925
  *
1926
  * ctypedef npy_intp intp_t
1927
  * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
@@ -1930,7 +1930,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t;
1930
  */
1931
  typedef npy_uintp __pyx_t_5numpy_uintp_t;
1932
 
1933
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785
1934
  * ctypedef npy_uintp uintp_t
1935
  *
1936
  * ctypedef npy_double float_t # <<<<<<<<<<<<<<
@@ -1939,7 +1939,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t;
1939
  */
1940
  typedef npy_double __pyx_t_5numpy_float_t;
1941
 
1942
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786
1943
  *
1944
  * ctypedef npy_double float_t
1945
  * ctypedef npy_double double_t # <<<<<<<<<<<<<<
@@ -1948,7 +1948,7 @@ typedef npy_double __pyx_t_5numpy_float_t;
1948
  */
1949
  typedef npy_double __pyx_t_5numpy_double_t;
1950
 
1951
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":787
1952
  * ctypedef npy_double float_t
1953
  * ctypedef npy_double double_t
1954
  * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
@@ -18876,7 +18876,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
18876
  return __pyx_r;
18877
  }
18878
 
18879
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230
18880
  *
18881
  * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]:
18882
  * @property # <<<<<<<<<<<<<<
@@ -18887,7 +18887,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
18887
  static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArray_Descr *__pyx_v_self) {
18888
  PyTypeObject *__pyx_r;
18889
 
18890
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":232
18891
  * @property
18892
  * cdef inline PyTypeObject* typeobj(self) noexcept nogil:
18893
  * return PyDataType_TYPEOBJ(self) # <<<<<<<<<<<<<<
@@ -18900,7 +18900,7 @@ static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArra
18900
  }
18901
  goto __pyx_L0;
18902
 
18903
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230
18904
  *
18905
  * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]:
18906
  * @property # <<<<<<<<<<<<<<
@@ -18913,7 +18913,7 @@ static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArra
18913
  return __pyx_r;
18914
  }
18915
 
18916
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234
18917
  * return PyDataType_TYPEOBJ(self)
18918
  *
18919
  * @property # <<<<<<<<<<<<<<
@@ -18924,7 +18924,7 @@ static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArra
18924
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__pyx_v_self) {
18925
  char __pyx_r;
18926
 
18927
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":236
18928
  * @property
18929
  * cdef inline char kind(self) noexcept nogil:
18930
  * return PyDataType_KIND(self) # <<<<<<<<<<<<<<
@@ -18937,7 +18937,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__p
18937
  }
18938
  goto __pyx_L0;
18939
 
18940
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234
18941
  * return PyDataType_TYPEOBJ(self)
18942
  *
18943
  * @property # <<<<<<<<<<<<<<
@@ -18950,7 +18950,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__p
18950
  return __pyx_r;
18951
  }
18952
 
18953
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238
18954
  * return PyDataType_KIND(self)
18955
  *
18956
  * @property # <<<<<<<<<<<<<<
@@ -18961,7 +18961,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__p
18961
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__pyx_v_self) {
18962
  char __pyx_r;
18963
 
18964
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":240
18965
  * @property
18966
  * cdef inline char type(self) noexcept nogil:
18967
  * return PyDataType_TYPE(self) # <<<<<<<<<<<<<<
@@ -18974,7 +18974,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__p
18974
  }
18975
  goto __pyx_L0;
18976
 
18977
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238
18978
  * return PyDataType_KIND(self)
18979
  *
18980
  * @property # <<<<<<<<<<<<<<
@@ -18987,7 +18987,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__p
18987
  return __pyx_r;
18988
  }
18989
 
18990
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247
18991
  * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of
18992
  * # directly accessing this field.
18993
  * @property # <<<<<<<<<<<<<<
@@ -18998,7 +18998,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__p
18998
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr *__pyx_v_self) {
18999
  char __pyx_r;
19000
 
19001
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":249
19002
  * @property
19003
  * cdef inline char byteorder(self) noexcept nogil:
19004
  * return PyDataType_BYTEORDER(self) # <<<<<<<<<<<<<<
@@ -19011,7 +19011,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr
19011
  }
19012
  goto __pyx_L0;
19013
 
19014
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247
19015
  * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of
19016
  * # directly accessing this field.
19017
  * @property # <<<<<<<<<<<<<<
@@ -19024,7 +19024,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr
19024
  return __pyx_r;
19025
  }
19026
 
19027
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251
19028
  * return PyDataType_BYTEORDER(self)
19029
  *
19030
  * @property # <<<<<<<<<<<<<<
@@ -19035,7 +19035,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr
19035
  static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *__pyx_v_self) {
19036
  int __pyx_r;
19037
 
19038
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253
19039
  * @property
19040
  * cdef inline int type_num(self) noexcept nogil:
19041
  * return PyDataType_TYPENUM(self) # <<<<<<<<<<<<<<
@@ -19048,7 +19048,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *
19048
  }
19049
  goto __pyx_L0;
19050
 
19051
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251
19052
  * return PyDataType_BYTEORDER(self)
19053
  *
19054
  * @property # <<<<<<<<<<<<<<
@@ -19061,7 +19061,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *
19061
  return __pyx_r;
19062
  }
19063
 
19064
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255
19065
  * return PyDataType_TYPENUM(self)
19066
  *
19067
  * @property # <<<<<<<<<<<<<<
@@ -19072,7 +19072,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *
19072
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_Descr *__pyx_v_self) {
19073
  npy_intp __pyx_r;
19074
 
19075
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257
19076
  * @property
19077
  * cdef inline npy_intp itemsize(self) noexcept nogil:
19078
  * return PyDataType_ELSIZE(self) # <<<<<<<<<<<<<<
@@ -19085,7 +19085,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_De
19085
  }
19086
  goto __pyx_L0;
19087
 
19088
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255
19089
  * return PyDataType_TYPENUM(self)
19090
  *
19091
  * @property # <<<<<<<<<<<<<<
@@ -19098,7 +19098,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_De
19098
  return __pyx_r;
19099
  }
19100
 
19101
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259
19102
  * return PyDataType_ELSIZE(self)
19103
  *
19104
  * @property # <<<<<<<<<<<<<<
@@ -19109,7 +19109,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_De
19109
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_Descr *__pyx_v_self) {
19110
  npy_intp __pyx_r;
19111
 
19112
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":261
19113
  * @property
19114
  * cdef inline npy_intp alignment(self) noexcept nogil:
19115
  * return PyDataType_ALIGNMENT(self) # <<<<<<<<<<<<<<
@@ -19122,7 +19122,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_D
19122
  }
19123
  goto __pyx_L0;
19124
 
19125
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259
19126
  * return PyDataType_ELSIZE(self)
19127
  *
19128
  * @property # <<<<<<<<<<<<<<
@@ -19135,7 +19135,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_D
19135
  return __pyx_r;
19136
  }
19137
 
19138
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265
19139
  * # Use fields/names with care as they may be NULL. You must check
19140
  * # for this using PyDataType_HASFIELDS.
19141
  * @property # <<<<<<<<<<<<<<
@@ -19149,7 +19149,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields___get__(PyArray_Des
19149
  PyObject *__pyx_t_1;
19150
  __Pyx_RefNannySetupContext("__get__", 0);
19151
 
19152
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":267
19153
  * @property
19154
  * cdef inline object fields(self):
19155
  * return <object>PyDataType_FIELDS(self) # <<<<<<<<<<<<<<
@@ -19170,7 +19170,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields___get__(PyArray_Des
19170
 
19171
  goto __pyx_L0;
19172
 
19173
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265
19174
  * # Use fields/names with care as they may be NULL. You must check
19175
  * # for this using PyDataType_HASFIELDS.
19176
  * @property # <<<<<<<<<<<<<<
@@ -19185,7 +19185,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields___get__(PyArray_Des
19185
  return __pyx_r;
19186
  }
19187
 
19188
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269
19189
  * return <object>PyDataType_FIELDS(self)
19190
  *
19191
  * @property # <<<<<<<<<<<<<<
@@ -19199,7 +19199,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc
19199
  PyObject *__pyx_t_1;
19200
  __Pyx_RefNannySetupContext("__get__", 0);
19201
 
19202
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":271
19203
  * @property
19204
  * cdef inline tuple names(self):
19205
  * return <tuple>PyDataType_NAMES(self) # <<<<<<<<<<<<<<
@@ -19220,7 +19220,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc
19220
 
19221
  goto __pyx_L0;
19222
 
19223
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269
19224
  * return <object>PyDataType_FIELDS(self)
19225
  *
19226
  * @property # <<<<<<<<<<<<<<
@@ -19235,7 +19235,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc
19235
  return __pyx_r;
19236
  }
19237
 
19238
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276
19239
  * # valid (the pointer can be NULL). Most users should access
19240
  * # this field via the inline helper method PyDataType_SHAPE.
19241
  * @property # <<<<<<<<<<<<<<
@@ -19246,7 +19246,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc
19246
  static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__(PyArray_Descr *__pyx_v_self) {
19247
  PyArray_ArrayDescr *__pyx_r;
19248
 
19249
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":278
19250
  * @property
19251
  * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:
19252
  * return PyDataType_SUBARRAY(self) # <<<<<<<<<<<<<<
@@ -19259,7 +19259,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__
19259
  }
19260
  goto __pyx_L0;
19261
 
19262
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276
19263
  * # valid (the pointer can be NULL). Most users should access
19264
  * # this field via the inline helper method PyDataType_SHAPE.
19265
  * @property # <<<<<<<<<<<<<<
@@ -19272,7 +19272,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__
19272
  return __pyx_r;
19273
  }
19274
 
19275
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280
19276
  * return PyDataType_SUBARRAY(self)
19277
  *
19278
  * @property # <<<<<<<<<<<<<<
@@ -19283,7 +19283,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__
19283
  static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Descr *__pyx_v_self) {
19284
  npy_uint64 __pyx_r;
19285
 
19286
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":283
19287
  * cdef inline npy_uint64 flags(self) noexcept nogil:
19288
  * """The data types flags."""
19289
  * return PyDataType_FLAGS(self) # <<<<<<<<<<<<<<
@@ -19296,7 +19296,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Des
19296
  }
19297
  goto __pyx_L0;
19298
 
19299
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280
19300
  * return PyDataType_SUBARRAY(self)
19301
  *
19302
  * @property # <<<<<<<<<<<<<<
@@ -19309,7 +19309,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Des
19309
  return __pyx_r;
19310
  }
19311
 
19312
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292
19313
  * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
19314
  *
19315
  * @property # <<<<<<<<<<<<<<
@@ -19320,7 +19320,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Des
19320
  static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMultiIterObject *__pyx_v_self) {
19321
  int __pyx_r;
19322
 
19323
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295
19324
  * cdef inline int numiter(self) noexcept nogil:
19325
  * """The number of arrays that need to be broadcast to the same shape."""
19326
  * return PyArray_MultiIter_NUMITER(self) # <<<<<<<<<<<<<<
@@ -19333,7 +19333,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMulti
19333
  }
19334
  goto __pyx_L0;
19335
 
19336
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292
19337
  * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
19338
  *
19339
  * @property # <<<<<<<<<<<<<<
@@ -19346,7 +19346,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMulti
19346
  return __pyx_r;
19347
  }
19348
 
19349
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297
19350
  * return PyArray_MultiIter_NUMITER(self)
19351
  *
19352
  * @property # <<<<<<<<<<<<<<
@@ -19357,7 +19357,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMulti
19357
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMultiIterObject *__pyx_v_self) {
19358
  npy_intp __pyx_r;
19359
 
19360
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300
19361
  * cdef inline npy_intp size(self) noexcept nogil:
19362
  * """The total broadcasted size."""
19363
  * return PyArray_MultiIter_SIZE(self) # <<<<<<<<<<<<<<
@@ -19370,7 +19370,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMul
19370
  }
19371
  goto __pyx_L0;
19372
 
19373
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297
19374
  * return PyArray_MultiIter_NUMITER(self)
19375
  *
19376
  * @property # <<<<<<<<<<<<<<
@@ -19383,7 +19383,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMul
19383
  return __pyx_r;
19384
  }
19385
 
19386
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302
19387
  * return PyArray_MultiIter_SIZE(self)
19388
  *
19389
  * @property # <<<<<<<<<<<<<<
@@ -19394,7 +19394,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMul
19394
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMultiIterObject *__pyx_v_self) {
19395
  npy_intp __pyx_r;
19396
 
19397
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305
19398
  * cdef inline npy_intp index(self) noexcept nogil:
19399
  * """The current (1-d) index into the broadcasted result."""
19400
  * return PyArray_MultiIter_INDEX(self) # <<<<<<<<<<<<<<
@@ -19407,7 +19407,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMu
19407
  }
19408
  goto __pyx_L0;
19409
 
19410
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302
19411
  * return PyArray_MultiIter_SIZE(self)
19412
  *
19413
  * @property # <<<<<<<<<<<<<<
@@ -19420,7 +19420,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMu
19420
  return __pyx_r;
19421
  }
19422
 
19423
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307
19424
  * return PyArray_MultiIter_INDEX(self)
19425
  *
19426
  * @property # <<<<<<<<<<<<<<
@@ -19431,7 +19431,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMu
19431
  static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterObject *__pyx_v_self) {
19432
  int __pyx_r;
19433
 
19434
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":310
19435
  * cdef inline int nd(self) noexcept nogil:
19436
  * """The number of dimensions in the broadcasted result."""
19437
  * return PyArray_MultiIter_NDIM(self) # <<<<<<<<<<<<<<
@@ -19444,7 +19444,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterO
19444
  }
19445
  goto __pyx_L0;
19446
 
19447
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307
19448
  * return PyArray_MultiIter_INDEX(self)
19449
  *
19450
  * @property # <<<<<<<<<<<<<<
@@ -19457,7 +19457,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterO
19457
  return __pyx_r;
19458
  }
19459
 
19460
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312
19461
  * return PyArray_MultiIter_NDIM(self)
19462
  *
19463
  * @property # <<<<<<<<<<<<<<
@@ -19468,7 +19468,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterO
19468
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(PyArrayMultiIterObject *__pyx_v_self) {
19469
  npy_intp *__pyx_r;
19470
 
19471
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":315
19472
  * cdef inline npy_intp* dimensions(self) noexcept nogil:
19473
  * """The shape of the broadcasted result."""
19474
  * return PyArray_MultiIter_DIMS(self) # <<<<<<<<<<<<<<
@@ -19481,7 +19481,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(Py
19481
  }
19482
  goto __pyx_L0;
19483
 
19484
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312
19485
  * return PyArray_MultiIter_NDIM(self)
19486
  *
19487
  * @property # <<<<<<<<<<<<<<
@@ -19494,7 +19494,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(Py
19494
  return __pyx_r;
19495
  }
19496
 
19497
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317
19498
  * return PyArray_MultiIter_DIMS(self)
19499
  *
19500
  * @property # <<<<<<<<<<<<<<
@@ -19505,7 +19505,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(Py
19505
  static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMultiIterObject *__pyx_v_self) {
19506
  void **__pyx_r;
19507
 
19508
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":321
19509
  * """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
19510
  * On return, the iterators are adjusted for broadcasting."""
19511
  * return PyArray_MultiIter_ITERS(self) # <<<<<<<<<<<<<<
@@ -19518,7 +19518,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMult
19518
  }
19519
  goto __pyx_L0;
19520
 
19521
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317
19522
  * return PyArray_MultiIter_DIMS(self)
19523
  *
19524
  * @property # <<<<<<<<<<<<<<
@@ -19531,7 +19531,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMult
19531
  return __pyx_r;
19532
  }
19533
 
19534
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335
19535
  * # Instead, we use properties that map to the corresponding C-API functions.
19536
  *
19537
  * @property # <<<<<<<<<<<<<<
@@ -19542,7 +19542,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMult
19542
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObject *__pyx_v_self) {
19543
  PyObject *__pyx_r;
19544
 
19545
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":339
19546
  * """Returns a borrowed reference to the object owning the data/memory.
19547
  * """
19548
  * return PyArray_BASE(self) # <<<<<<<<<<<<<<
@@ -19555,7 +19555,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObje
19555
  }
19556
  goto __pyx_L0;
19557
 
19558
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335
19559
  * # Instead, we use properties that map to the corresponding C-API functions.
19560
  *
19561
  * @property # <<<<<<<<<<<<<<
@@ -19568,7 +19568,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObje
19568
  return __pyx_r;
19569
  }
19570
 
19571
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341
19572
  * return PyArray_BASE(self)
19573
  *
19574
  * @property # <<<<<<<<<<<<<<
@@ -19582,7 +19582,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr
19582
  PyArray_Descr *__pyx_t_1;
19583
  __Pyx_RefNannySetupContext("__get__", 0);
19584
 
19585
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":345
19586
  * """Returns an owned reference to the dtype of the array.
19587
  * """
19588
  * return <dtype>PyArray_DESCR(self) # <<<<<<<<<<<<<<
@@ -19603,7 +19603,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr
19603
 
19604
  goto __pyx_L0;
19605
 
19606
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341
19607
  * return PyArray_BASE(self)
19608
  *
19609
  * @property # <<<<<<<<<<<<<<
@@ -19618,7 +19618,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr
19618
  return __pyx_r;
19619
  }
19620
 
19621
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347
19622
  * return <dtype>PyArray_DESCR(self)
19623
  *
19624
  * @property # <<<<<<<<<<<<<<
@@ -19629,7 +19629,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr
19629
  static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__pyx_v_self) {
19630
  int __pyx_r;
19631
 
19632
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":351
19633
  * """Returns the number of dimensions in the array.
19634
  * """
19635
  * return PyArray_NDIM(self) # <<<<<<<<<<<<<<
@@ -19642,7 +19642,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__
19642
  }
19643
  goto __pyx_L0;
19644
 
19645
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347
19646
  * return <dtype>PyArray_DESCR(self)
19647
  *
19648
  * @property # <<<<<<<<<<<<<<
@@ -19655,7 +19655,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__
19655
  return __pyx_r;
19656
  }
19657
 
19658
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353
19659
  * return PyArray_NDIM(self)
19660
  *
19661
  * @property # <<<<<<<<<<<<<<
@@ -19666,7 +19666,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__
19666
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObject *__pyx_v_self) {
19667
  npy_intp *__pyx_r;
19668
 
19669
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":359
19670
  * Can return NULL for 0-dimensional arrays.
19671
  * """
19672
  * return PyArray_DIMS(self) # <<<<<<<<<<<<<<
@@ -19679,7 +19679,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObj
19679
  }
19680
  goto __pyx_L0;
19681
 
19682
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353
19683
  * return PyArray_NDIM(self)
19684
  *
19685
  * @property # <<<<<<<<<<<<<<
@@ -19692,7 +19692,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObj
19692
  return __pyx_r;
19693
  }
19694
 
19695
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361
19696
  * return PyArray_DIMS(self)
19697
  *
19698
  * @property # <<<<<<<<<<<<<<
@@ -19703,7 +19703,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObj
19703
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayObject *__pyx_v_self) {
19704
  npy_intp *__pyx_r;
19705
 
19706
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":366
19707
  * The number of elements matches the number of dimensions of the array (ndim).
19708
  * """
19709
  * return PyArray_STRIDES(self) # <<<<<<<<<<<<<<
@@ -19716,7 +19716,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayO
19716
  }
19717
  goto __pyx_L0;
19718
 
19719
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361
19720
  * return PyArray_DIMS(self)
19721
  *
19722
  * @property # <<<<<<<<<<<<<<
@@ -19729,7 +19729,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayO
19729
  return __pyx_r;
19730
  }
19731
 
19732
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368
19733
  * return PyArray_STRIDES(self)
19734
  *
19735
  * @property # <<<<<<<<<<<<<<
@@ -19740,7 +19740,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayO
19740
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObject *__pyx_v_self) {
19741
  npy_intp __pyx_r;
19742
 
19743
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":372
19744
  * """Returns the total size (in number of elements) of the array.
19745
  * """
19746
  * return PyArray_SIZE(self) # <<<<<<<<<<<<<<
@@ -19753,7 +19753,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObjec
19753
  }
19754
  goto __pyx_L0;
19755
 
19756
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368
19757
  * return PyArray_STRIDES(self)
19758
  *
19759
  * @property # <<<<<<<<<<<<<<
@@ -19766,7 +19766,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObjec
19766
  return __pyx_r;
19767
  }
19768
 
19769
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374
19770
  * return PyArray_SIZE(self)
19771
  *
19772
  * @property # <<<<<<<<<<<<<<
@@ -19777,7 +19777,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObjec
19777
  static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *__pyx_v_self) {
19778
  char *__pyx_r;
19779
 
19780
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":381
19781
  * of `PyArray_DATA()` instead, which returns a 'void*'.
19782
  * """
19783
  * return PyArray_BYTES(self) # <<<<<<<<<<<<<<
@@ -19790,7 +19790,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *
19790
  }
19791
  goto __pyx_L0;
19792
 
19793
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374
19794
  * return PyArray_SIZE(self)
19795
  *
19796
  * @property # <<<<<<<<<<<<<<
@@ -19803,7 +19803,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *
19803
  return __pyx_r;
19804
  }
19805
 
19806
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794
19807
  * ctypedef long double complex clongdouble_t
19808
  *
19809
  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -19820,7 +19820,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
19820
  int __pyx_clineno = 0;
19821
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
19822
 
19823
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":795
19824
  *
19825
  * cdef inline object PyArray_MultiIterNew1(a):
19826
  * return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
@@ -19840,7 +19840,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
19840
  __pyx_t_1 = 0;
19841
  goto __pyx_L0;
19842
 
19843
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794
19844
  * ctypedef long double complex clongdouble_t
19845
  *
19846
  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -19859,7 +19859,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
19859
  return __pyx_r;
19860
  }
19861
 
19862
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797
19863
  * return PyArray_MultiIterNew(1, <void*>a)
19864
  *
19865
  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -19876,7 +19876,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
19876
  int __pyx_clineno = 0;
19877
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
19878
 
19879
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":798
19880
  *
19881
  * cdef inline object PyArray_MultiIterNew2(a, b):
19882
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
@@ -19896,7 +19896,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
19896
  __pyx_t_1 = 0;
19897
  goto __pyx_L0;
19898
 
19899
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797
19900
  * return PyArray_MultiIterNew(1, <void*>a)
19901
  *
19902
  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -19915,7 +19915,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
19915
  return __pyx_r;
19916
  }
19917
 
19918
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800
19919
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
19920
  *
19921
  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -19932,7 +19932,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
19932
  int __pyx_clineno = 0;
19933
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
19934
 
19935
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":801
19936
  *
19937
  * cdef inline object PyArray_MultiIterNew3(a, b, c):
19938
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
@@ -19952,7 +19952,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
19952
  __pyx_t_1 = 0;
19953
  goto __pyx_L0;
19954
 
19955
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800
19956
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
19957
  *
19958
  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -19971,7 +19971,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
19971
  return __pyx_r;
19972
  }
19973
 
19974
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803
19975
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
19976
  *
19977
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -19988,7 +19988,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
19988
  int __pyx_clineno = 0;
19989
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
19990
 
19991
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":804
19992
  *
19993
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
19994
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
@@ -20008,7 +20008,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
20008
  __pyx_t_1 = 0;
20009
  goto __pyx_L0;
20010
 
20011
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803
20012
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
20013
  *
20014
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -20027,7 +20027,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
20027
  return __pyx_r;
20028
  }
20029
 
20030
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806
20031
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
20032
  *
20033
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -20044,7 +20044,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
20044
  int __pyx_clineno = 0;
20045
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
20046
 
20047
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":807
20048
  *
20049
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
20050
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
@@ -20064,7 +20064,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
20064
  __pyx_t_1 = 0;
20065
  goto __pyx_L0;
20066
 
20067
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806
20068
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
20069
  *
20070
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -20083,7 +20083,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
20083
  return __pyx_r;
20084
  }
20085
 
20086
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809
20087
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
20088
  *
20089
  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -20098,7 +20098,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
20098
  PyObject *__pyx_t_2;
20099
  __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
20100
 
20101
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810
20102
  *
20103
  * cdef inline tuple PyDataType_SHAPE(dtype d):
20104
  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -20110,7 +20110,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
20110
  if (__pyx_t_1) {
20111
 
20112
 
20113
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":811
20114
  * cdef inline tuple PyDataType_SHAPE(dtype d):
20115
  * if PyDataType_HASSUBARRAY(d):
20116
  * return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
@@ -20131,7 +20131,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
20131
 
20132
  goto __pyx_L0;
20133
 
20134
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810
20135
  *
20136
  * cdef inline tuple PyDataType_SHAPE(dtype d):
20137
  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -20140,7 +20140,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
20140
  */
20141
  }
20142
 
20143
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":813
20144
  * return <tuple>d.subarray.shape
20145
  * else:
20146
  * return () # <<<<<<<<<<<<<<
@@ -20160,7 +20160,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
20160
  goto __pyx_L0;
20161
  }
20162
 
20163
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809
20164
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
20165
  *
20166
  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -20175,7 +20175,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
20175
  return __pyx_r;
20176
  }
20177
 
20178
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947
20179
  *
20180
  * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]:
20181
  * @property # <<<<<<<<<<<<<<
@@ -20186,7 +20186,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
20186
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx_v_self) {
20187
  int __pyx_r;
20188
 
20189
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":949
20190
  * @property
20191
  * cdef inline int nin(self) noexcept nogil:
20192
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin # <<<<<<<<<<<<<<
@@ -20199,7 +20199,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx
20199
  }
20200
  goto __pyx_L0;
20201
 
20202
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947
20203
  *
20204
  * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]:
20205
  * @property # <<<<<<<<<<<<<<
@@ -20212,7 +20212,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx
20212
  return __pyx_r;
20213
  }
20214
 
20215
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951
20216
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin
20217
  *
20218
  * @property # <<<<<<<<<<<<<<
@@ -20223,7 +20223,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx
20223
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__pyx_v_self) {
20224
  int __pyx_r;
20225
 
20226
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":953
20227
  * @property
20228
  * cdef inline int nout(self) noexcept nogil:
20229
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout # <<<<<<<<<<<<<<
@@ -20236,7 +20236,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__py
20236
  }
20237
  goto __pyx_L0;
20238
 
20239
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951
20240
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin
20241
  *
20242
  * @property # <<<<<<<<<<<<<<
@@ -20249,7 +20249,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__py
20249
  return __pyx_r;
20250
  }
20251
 
20252
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955
20253
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout
20254
  *
20255
  * @property # <<<<<<<<<<<<<<
@@ -20260,7 +20260,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__py
20260
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__pyx_v_self) {
20261
  int __pyx_r;
20262
 
20263
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":957
20264
  * @property
20265
  * cdef inline int nargs(self) noexcept nogil:
20266
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs # <<<<<<<<<<<<<<
@@ -20273,7 +20273,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__p
20273
  }
20274
  goto __pyx_L0;
20275
 
20276
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955
20277
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout
20278
  *
20279
  * @property # <<<<<<<<<<<<<<
@@ -20286,7 +20286,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__p
20286
  return __pyx_r;
20287
  }
20288
 
20289
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959
20290
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
20291
  *
20292
  * @property # <<<<<<<<<<<<<<
@@ -20297,7 +20297,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__p
20297
  static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___get__(PyUFuncObject *__pyx_v_self) {
20298
  PyUFuncGenericFunction *__pyx_r;
20299
 
20300
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":961
20301
  * @property
20302
  * cdef inline PyUFuncGenericFunction* functions(self) noexcept nogil:
20303
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions # <<<<<<<<<<<<<<
@@ -20310,7 +20310,7 @@ static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___
20310
  }
20311
  goto __pyx_L0;
20312
 
20313
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959
20314
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
20315
  *
20316
  * @property # <<<<<<<<<<<<<<
@@ -20323,7 +20323,7 @@ static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___
20323
  return __pyx_r;
20324
  }
20325
 
20326
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963
20327
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions
20328
  *
20329
  * @property # <<<<<<<<<<<<<<
@@ -20334,7 +20334,7 @@ static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___
20334
  static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *__pyx_v_self) {
20335
  void **__pyx_r;
20336
 
20337
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":965
20338
  * @property
20339
  * cdef inline void ** data(self) noexcept nogil:
20340
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data # <<<<<<<<<<<<<<
@@ -20347,7 +20347,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *_
20347
  }
20348
  goto __pyx_L0;
20349
 
20350
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963
20351
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions
20352
  *
20353
  * @property # <<<<<<<<<<<<<<
@@ -20360,7 +20360,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *_
20360
  return __pyx_r;
20361
  }
20362
 
20363
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967
20364
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
20365
  *
20366
  * @property # <<<<<<<<<<<<<<
@@ -20371,7 +20371,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *_
20371
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__pyx_v_self) {
20372
  int __pyx_r;
20373
 
20374
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":969
20375
  * @property
20376
  * cdef inline int ntypes(self) noexcept nogil:
20377
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes # <<<<<<<<<<<<<<
@@ -20384,7 +20384,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__
20384
  }
20385
  goto __pyx_L0;
20386
 
20387
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967
20388
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
20389
  *
20390
  * @property # <<<<<<<<<<<<<<
@@ -20397,7 +20397,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__
20397
  return __pyx_r;
20398
  }
20399
 
20400
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971
20401
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
20402
  *
20403
  * @property # <<<<<<<<<<<<<<
@@ -20408,7 +20408,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__
20408
  static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObject *__pyx_v_self) {
20409
  char const *__pyx_r;
20410
 
20411
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":973
20412
  * @property
20413
  * cdef inline const char* name(self) noexcept nogil:
20414
  * return _PyUFuncObject_GET_ITEM_DATA(self).name # <<<<<<<<<<<<<<
@@ -20421,7 +20421,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObje
20421
  }
20422
  goto __pyx_L0;
20423
 
20424
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971
20425
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
20426
  *
20427
  * @property # <<<<<<<<<<<<<<
@@ -20434,7 +20434,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObje
20434
  return __pyx_r;
20435
  }
20436
 
20437
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975
20438
  * return _PyUFuncObject_GET_ITEM_DATA(self).name
20439
  *
20440
  * @property # <<<<<<<<<<<<<<
@@ -20445,7 +20445,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObje
20445
  static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObject *__pyx_v_self) {
20446
  char const *__pyx_r;
20447
 
20448
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":977
20449
  * @property
20450
  * cdef inline const char* doc(self) noexcept nogil:
20451
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc # <<<<<<<<<<<<<<
@@ -20458,7 +20458,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObjec
20458
  }
20459
  goto __pyx_L0;
20460
 
20461
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975
20462
  * return _PyUFuncObject_GET_ITEM_DATA(self).name
20463
  *
20464
  * @property # <<<<<<<<<<<<<<
@@ -20471,7 +20471,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObjec
20471
  return __pyx_r;
20472
  }
20473
 
20474
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979
20475
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc
20476
  *
20477
  * @property # <<<<<<<<<<<<<<
@@ -20482,7 +20482,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObjec
20482
  static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__pyx_v_self) {
20483
  void *__pyx_r;
20484
 
20485
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":981
20486
  * @property
20487
  * cdef inline void* ptr(self) noexcept nogil:
20488
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr # <<<<<<<<<<<<<<
@@ -20495,7 +20495,7 @@ static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__p
20495
  }
20496
  goto __pyx_L0;
20497
 
20498
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979
20499
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc
20500
  *
20501
  * @property # <<<<<<<<<<<<<<
@@ -20508,7 +20508,7 @@ static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__p
20508
  return __pyx_r;
20509
  }
20510
 
20511
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983
20512
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
20513
  *
20514
  * @property # <<<<<<<<<<<<<<
@@ -20519,7 +20519,7 @@ static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__p
20519
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject *__pyx_v_self) {
20520
  PyObject *__pyx_r;
20521
 
20522
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":985
20523
  * @property
20524
  * cdef inline PyObject* obj(self) noexcept nogil:
20525
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj # <<<<<<<<<<<<<<
@@ -20532,7 +20532,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject
20532
  }
20533
  goto __pyx_L0;
20534
 
20535
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983
20536
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
20537
  *
20538
  * @property # <<<<<<<<<<<<<<
@@ -20545,7 +20545,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject
20545
  return __pyx_r;
20546
  }
20547
 
20548
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987
20549
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj
20550
  *
20551
  * @property # <<<<<<<<<<<<<<
@@ -20556,7 +20556,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject
20556
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncObject *__pyx_v_self) {
20557
  PyObject *__pyx_r;
20558
 
20559
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":989
20560
  * @property
20561
  * cdef inline PyObject* userloops(self) noexcept nogil:
20562
  * return _PyUFuncObject_GET_ITEM_DATA(self).userloops # <<<<<<<<<<<<<<
@@ -20569,7 +20569,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncO
20569
  }
20570
  goto __pyx_L0;
20571
 
20572
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987
20573
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj
20574
  *
20575
  * @property # <<<<<<<<<<<<<<
@@ -20582,7 +20582,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncO
20582
  return __pyx_r;
20583
  }
20584
 
20585
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065
20586
  * int _import_umath() except -1
20587
  *
20588
  * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<<
@@ -20596,7 +20596,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a
20596
  const char *__pyx_filename = NULL;
20597
  int __pyx_clineno = 0;
20598
 
20599
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066
20600
  *
20601
  * cdef inline void set_array_base(ndarray arr, object base) except *:
20602
  * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
@@ -20605,7 +20605,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a
20605
  */
20606
  Py_INCREF(__pyx_v_base);
20607
 
20608
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1067
20609
  * cdef inline void set_array_base(ndarray arr, object base) except *:
20610
  * Py_INCREF(base) # important to do this before stealing the reference below!
20611
  * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
@@ -20615,7 +20615,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a
20615
  __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 1067, __pyx_L1_error)
20616
 
20617
 
20618
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065
20619
  * int _import_umath() except -1
20620
  *
20621
  * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<<
@@ -20631,7 +20631,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a
20631
 
20632
  }
20633
 
20634
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069
20635
  * PyArray_SetBaseObject(arr, base)
20636
  *
20637
  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
@@ -20646,7 +20646,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20646
  int __pyx_t_1;
20647
  __Pyx_RefNannySetupContext("get_array_base", 0);
20648
 
20649
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070
20650
  *
20651
  * cdef inline object get_array_base(ndarray arr):
20652
  * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
@@ -20655,7 +20655,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20655
  */
20656
  __pyx_v_base = PyArray_BASE(__pyx_v_arr);
20657
 
20658
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071
20659
  * cdef inline object get_array_base(ndarray arr):
20660
  * base = PyArray_BASE(arr)
20661
  * if base is NULL: # <<<<<<<<<<<<<<
@@ -20667,7 +20667,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20667
  if (__pyx_t_1) {
20668
 
20669
 
20670
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1072
20671
  * base = PyArray_BASE(arr)
20672
  * if base is NULL:
20673
  * return None # <<<<<<<<<<<<<<
@@ -20684,7 +20684,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20684
  }
20685
  goto __pyx_L0;
20686
 
20687
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071
20688
  * cdef inline object get_array_base(ndarray arr):
20689
  * base = PyArray_BASE(arr)
20690
  * if base is NULL: # <<<<<<<<<<<<<<
@@ -20693,7 +20693,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20693
  */
20694
  }
20695
 
20696
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073
20697
  * if base is NULL:
20698
  * return None
20699
  * return <object>base # <<<<<<<<<<<<<<
@@ -20711,7 +20711,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20711
  }
20712
  goto __pyx_L0;
20713
 
20714
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069
20715
  * PyArray_SetBaseObject(arr, base)
20716
  *
20717
  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
@@ -20727,7 +20727,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
20727
  return __pyx_r;
20728
  }
20729
 
20730
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077
20731
  * # Versions of the import_* functions which are more suitable for
20732
  * # Cython code.
20733
  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -20753,7 +20753,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20753
  int __pyx_clineno = 0;
20754
  __Pyx_RefNannySetupContext("import_array", 0);
20755
 
20756
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20757
  * # Cython code.
20758
  * cdef inline int import_array() except -1:
20759
  * try: # <<<<<<<<<<<<<<
@@ -20769,7 +20769,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20769
  __Pyx_XGOTREF(__pyx_t_3);
20770
  /*try:*/ {
20771
 
20772
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1079
20773
  * cdef inline int import_array() except -1:
20774
  * try:
20775
  * __pyx_import_array() # <<<<<<<<<<<<<<
@@ -20779,7 +20779,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20779
  __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1079, __pyx_L3_error)
20780
 
20781
 
20782
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20783
  * # Cython code.
20784
  * cdef inline int import_array() except -1:
20785
  * try: # <<<<<<<<<<<<<<
@@ -20793,7 +20793,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20793
  goto __pyx_L8_try_end;
20794
  __pyx_L3_error:;
20795
 
20796
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1080
20797
  * try:
20798
  * __pyx_import_array()
20799
  * except Exception: # <<<<<<<<<<<<<<
@@ -20808,7 +20808,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20808
  __Pyx_XGOTREF(__pyx_t_6);
20809
  __Pyx_XGOTREF(__pyx_t_7);
20810
 
20811
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1081
20812
  * __pyx_import_array()
20813
  * except Exception:
20814
  * raise ImportError("numpy._core.multiarray failed to import") # <<<<<<<<<<<<<<
@@ -20830,7 +20830,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20830
  }
20831
  goto __pyx_L5_except_error;
20832
 
20833
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20834
  * # Cython code.
20835
  * cdef inline int import_array() except -1:
20836
  * try: # <<<<<<<<<<<<<<
@@ -20846,7 +20846,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20846
  __pyx_L8_try_end:;
20847
  }
20848
 
20849
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077
20850
  * # Versions of the import_* functions which are more suitable for
20851
  * # Cython code.
20852
  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -20871,7 +20871,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
20871
  return __pyx_r;
20872
  }
20873
 
20874
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083
20875
  * raise ImportError("numpy._core.multiarray failed to import")
20876
  *
20877
  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -20897,7 +20897,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20897
  int __pyx_clineno = 0;
20898
  __Pyx_RefNannySetupContext("import_umath", 0);
20899
 
20900
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20901
  *
20902
  * cdef inline int import_umath() except -1:
20903
  * try: # <<<<<<<<<<<<<<
@@ -20913,7 +20913,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20913
  __Pyx_XGOTREF(__pyx_t_3);
20914
  /*try:*/ {
20915
 
20916
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1085
20917
  * cdef inline int import_umath() except -1:
20918
  * try:
20919
  * _import_umath() # <<<<<<<<<<<<<<
@@ -20923,7 +20923,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20923
  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1085, __pyx_L3_error)
20924
 
20925
 
20926
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20927
  *
20928
  * cdef inline int import_umath() except -1:
20929
  * try: # <<<<<<<<<<<<<<
@@ -20937,7 +20937,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20937
  goto __pyx_L8_try_end;
20938
  __pyx_L3_error:;
20939
 
20940
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1086
20941
  * try:
20942
  * _import_umath()
20943
  * except Exception: # <<<<<<<<<<<<<<
@@ -20952,7 +20952,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20952
  __Pyx_XGOTREF(__pyx_t_6);
20953
  __Pyx_XGOTREF(__pyx_t_7);
20954
 
20955
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1087
20956
  * _import_umath()
20957
  * except Exception:
20958
  * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<<
@@ -20974,7 +20974,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20974
  }
20975
  goto __pyx_L5_except_error;
20976
 
20977
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20978
  *
20979
  * cdef inline int import_umath() except -1:
20980
  * try: # <<<<<<<<<<<<<<
@@ -20990,7 +20990,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
20990
  __pyx_L8_try_end:;
20991
  }
20992
 
20993
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083
20994
  * raise ImportError("numpy._core.multiarray failed to import")
20995
  *
20996
  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -21015,7 +21015,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
21015
  return __pyx_r;
21016
  }
21017
 
21018
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089
21019
  * raise ImportError("numpy._core.umath failed to import")
21020
  *
21021
  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -21041,7 +21041,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
21041
  int __pyx_clineno = 0;
21042
  __Pyx_RefNannySetupContext("import_ufunc", 0);
21043
 
21044
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
21045
  *
21046
  * cdef inline int import_ufunc() except -1:
21047
  * try: # <<<<<<<<<<<<<<
@@ -21057,7 +21057,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
21057
  __Pyx_XGOTREF(__pyx_t_3);
21058
  /*try:*/ {
21059
 
21060
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1091
21061
  * cdef inline int import_ufunc() except -1:
21062
  * try:
21063
  * _import_umath() # <<<<<<<<<<<<<<
@@ -21067,7 +21067,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
21067
  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1091, __pyx_L3_error)
21068
 
21069
 
21070
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
21071
  *
21072
  * cdef inline int import_ufunc() except -1:
21073
  * try: # <<<<<<<<<<<<<<
@@ -21081,7 +21081,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
21081
  goto __pyx_L8_try_end;
21082
  __pyx_L3_error:;
21083
 
21084
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1092
21085
  * try:
21086
  * _import_umath()
21087
  * except Exception: # <<<<<<<<<<<<<<
@@ -21096,7 +21096,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
21096
  __Pyx_XGOTREF(__pyx_t_6);
21097
  __Pyx_XGOTREF(__pyx_t_7);
21098
 
21099
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1093
21100
  * _import_umath()
21101
  * except Exception:
21102
  * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<<
@@ -21118,7 +21118,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
21118
  }
21119
  goto __pyx_L5_except_error;
21120
 
21121
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
21122
  *
21123
  * cdef inline int import_ufunc() except -1:
21124
  * try: # <<<<<<<<<<<<<<
@@ -21134,7 +21134,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
21134
  __pyx_L8_try_end:;
21135
  }
21136
 
21137
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089
21138
  * raise ImportError("numpy._core.umath failed to import")
21139
  *
21140
  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -21159,7 +21159,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
21159
  return __pyx_r;
21160
  }
21161
 
21162
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096
21163
  *
21164
  *
21165
  * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<<
@@ -21170,7 +21170,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
21170
  static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) {
21171
  int __pyx_r;
21172
 
21173
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1108
21174
  * bool
21175
  * """
21176
  * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<<
@@ -21183,7 +21183,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_
21183
  }
21184
  goto __pyx_L0;
21185
 
21186
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096
21187
  *
21188
  *
21189
  * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<<
@@ -21197,7 +21197,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_
21197
  return __pyx_r;
21198
  }
21199
 
21200
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111
21201
  *
21202
  *
21203
  * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<<
@@ -21208,7 +21208,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_
21208
  static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) {
21209
  int __pyx_r;
21210
 
21211
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1123
21212
  * bool
21213
  * """
21214
  * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<<
@@ -21221,7 +21221,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o
21221
  }
21222
  goto __pyx_L0;
21223
 
21224
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111
21225
  *
21226
  *
21227
  * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<<
@@ -21235,7 +21235,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o
21235
  return __pyx_r;
21236
  }
21237
 
21238
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126
21239
  *
21240
  *
21241
  * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -21246,7 +21246,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o
21246
  static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) {
21247
  npy_datetime __pyx_r;
21248
 
21249
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1133
21250
  * also needed. That can be found using `get_datetime64_unit`.
21251
  * """
21252
  * return _PyDatetimeScalarObject_GetValue(obj) # <<<<<<<<<<<<<<
@@ -21259,7 +21259,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *
21259
  }
21260
  goto __pyx_L0;
21261
 
21262
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126
21263
  *
21264
  *
21265
  * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -21272,7 +21272,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *
21272
  return __pyx_r;
21273
  }
21274
 
21275
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136
21276
  *
21277
  *
21278
  * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -21283,7 +21283,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *
21283
  static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) {
21284
  npy_timedelta __pyx_r;
21285
 
21286
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1140
21287
  * returns the int64 value underlying scalar numpy timedelta64 object
21288
  * """
21289
  * return _PyTimedeltaScalarObject_GetValue(obj) # <<<<<<<<<<<<<<
@@ -21296,7 +21296,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject
21296
  }
21297
  goto __pyx_L0;
21298
 
21299
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136
21300
  *
21301
  *
21302
  * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -21309,7 +21309,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject
21309
  return __pyx_r;
21310
  }
21311
 
21312
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143
21313
  *
21314
  *
21315
  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<<
@@ -21320,7 +21320,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject
21320
  static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) {
21321
  NPY_DATETIMEUNIT __pyx_r;
21322
 
21323
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1147
21324
  * returns the unit part of the dtype for a numpy datetime64 object.
21325
  * """
21326
  * return _PyDatetimeScalarObject_GetMetadata(obj).base # <<<<<<<<<<<<<<
@@ -21333,7 +21333,7 @@ static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObjec
21333
  }
21334
  goto __pyx_L0;
21335
 
21336
- /* "../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143
21337
  *
21338
  *
21339
  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
1551
  static const char* const __pyx_f[] = {
1552
  "rco_gsq.pyx",
1553
  "View.MemoryView",
1554
+ "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd",
1555
  "cpython/type.pxd",
1556
  };
1557
  /* #### Code section: utility_code_proto_before_types ### */
 
1804
 
1805
  /* #### Code section: numeric_typedefs ### */
1806
 
1807
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":761
1808
  * # in Cython to enable them only on the right systems.
1809
  *
1810
  * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
 
1813
  */
1814
  typedef npy_int8 __pyx_t_5numpy_int8_t;
1815
 
1816
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762
1817
  *
1818
  * ctypedef npy_int8 int8_t
1819
  * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
 
1822
  */
1823
  typedef npy_int16 __pyx_t_5numpy_int16_t;
1824
 
1825
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":763
1826
  * ctypedef npy_int8 int8_t
1827
  * ctypedef npy_int16 int16_t
1828
  * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
 
1831
  */
1832
  typedef npy_int32 __pyx_t_5numpy_int32_t;
1833
 
1834
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":764
1835
  * ctypedef npy_int16 int16_t
1836
  * ctypedef npy_int32 int32_t
1837
  * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
 
1840
  */
1841
  typedef npy_int64 __pyx_t_5numpy_int64_t;
1842
 
1843
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":766
1844
  * ctypedef npy_int64 int64_t
1845
  *
1846
  * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
 
1849
  */
1850
  typedef npy_uint8 __pyx_t_5numpy_uint8_t;
1851
 
1852
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":767
1853
  *
1854
  * ctypedef npy_uint8 uint8_t
1855
  * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
 
1858
  */
1859
  typedef npy_uint16 __pyx_t_5numpy_uint16_t;
1860
 
1861
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768
1862
  * ctypedef npy_uint8 uint8_t
1863
  * ctypedef npy_uint16 uint16_t
1864
  * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
 
1867
  */
1868
  typedef npy_uint32 __pyx_t_5numpy_uint32_t;
1869
 
1870
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769
1871
  * ctypedef npy_uint16 uint16_t
1872
  * ctypedef npy_uint32 uint32_t
1873
  * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
 
1876
  */
1877
  typedef npy_uint64 __pyx_t_5numpy_uint64_t;
1878
 
1879
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":771
1880
  * ctypedef npy_uint64 uint64_t
1881
  *
1882
  * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
 
1885
  */
1886
  typedef npy_float32 __pyx_t_5numpy_float32_t;
1887
 
1888
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":772
1889
  *
1890
  * ctypedef npy_float32 float32_t
1891
  * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
 
1894
  */
1895
  typedef npy_float64 __pyx_t_5numpy_float64_t;
1896
 
1897
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779
1898
  * ctypedef double complex complex128_t
1899
  *
1900
  * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
 
1903
  */
1904
  typedef npy_longlong __pyx_t_5numpy_longlong_t;
1905
 
1906
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780
1907
  *
1908
  * ctypedef npy_longlong longlong_t
1909
  * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
 
1912
  */
1913
  typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
1914
 
1915
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":782
1916
  * ctypedef npy_ulonglong ulonglong_t
1917
  *
1918
  * ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
 
1921
  */
1922
  typedef npy_intp __pyx_t_5numpy_intp_t;
1923
 
1924
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783
1925
  *
1926
  * ctypedef npy_intp intp_t
1927
  * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
 
1930
  */
1931
  typedef npy_uintp __pyx_t_5numpy_uintp_t;
1932
 
1933
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785
1934
  * ctypedef npy_uintp uintp_t
1935
  *
1936
  * ctypedef npy_double float_t # <<<<<<<<<<<<<<
 
1939
  */
1940
  typedef npy_double __pyx_t_5numpy_float_t;
1941
 
1942
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786
1943
  *
1944
  * ctypedef npy_double float_t
1945
  * ctypedef npy_double double_t # <<<<<<<<<<<<<<
 
1948
  */
1949
  typedef npy_double __pyx_t_5numpy_double_t;
1950
 
1951
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":787
1952
  * ctypedef npy_double float_t
1953
  * ctypedef npy_double double_t
1954
  * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
 
18876
  return __pyx_r;
18877
  }
18878
 
18879
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230
18880
  *
18881
  * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]:
18882
  * @property # <<<<<<<<<<<<<<
 
18887
  static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArray_Descr *__pyx_v_self) {
18888
  PyTypeObject *__pyx_r;
18889
 
18890
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":232
18891
  * @property
18892
  * cdef inline PyTypeObject* typeobj(self) noexcept nogil:
18893
  * return PyDataType_TYPEOBJ(self) # <<<<<<<<<<<<<<
 
18900
  }
18901
  goto __pyx_L0;
18902
 
18903
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230
18904
  *
18905
  * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]:
18906
  * @property # <<<<<<<<<<<<<<
 
18913
  return __pyx_r;
18914
  }
18915
 
18916
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234
18917
  * return PyDataType_TYPEOBJ(self)
18918
  *
18919
  * @property # <<<<<<<<<<<<<<
 
18924
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__pyx_v_self) {
18925
  char __pyx_r;
18926
 
18927
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":236
18928
  * @property
18929
  * cdef inline char kind(self) noexcept nogil:
18930
  * return PyDataType_KIND(self) # <<<<<<<<<<<<<<
 
18937
  }
18938
  goto __pyx_L0;
18939
 
18940
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234
18941
  * return PyDataType_TYPEOBJ(self)
18942
  *
18943
  * @property # <<<<<<<<<<<<<<
 
18950
  return __pyx_r;
18951
  }
18952
 
18953
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238
18954
  * return PyDataType_KIND(self)
18955
  *
18956
  * @property # <<<<<<<<<<<<<<
 
18961
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__pyx_v_self) {
18962
  char __pyx_r;
18963
 
18964
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":240
18965
  * @property
18966
  * cdef inline char type(self) noexcept nogil:
18967
  * return PyDataType_TYPE(self) # <<<<<<<<<<<<<<
 
18974
  }
18975
  goto __pyx_L0;
18976
 
18977
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238
18978
  * return PyDataType_KIND(self)
18979
  *
18980
  * @property # <<<<<<<<<<<<<<
 
18987
  return __pyx_r;
18988
  }
18989
 
18990
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247
18991
  * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of
18992
  * # directly accessing this field.
18993
  * @property # <<<<<<<<<<<<<<
 
18998
  static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr *__pyx_v_self) {
18999
  char __pyx_r;
19000
 
19001
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":249
19002
  * @property
19003
  * cdef inline char byteorder(self) noexcept nogil:
19004
  * return PyDataType_BYTEORDER(self) # <<<<<<<<<<<<<<
 
19011
  }
19012
  goto __pyx_L0;
19013
 
19014
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247
19015
  * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of
19016
  * # directly accessing this field.
19017
  * @property # <<<<<<<<<<<<<<
 
19024
  return __pyx_r;
19025
  }
19026
 
19027
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251
19028
  * return PyDataType_BYTEORDER(self)
19029
  *
19030
  * @property # <<<<<<<<<<<<<<
 
19035
  static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *__pyx_v_self) {
19036
  int __pyx_r;
19037
 
19038
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253
19039
  * @property
19040
  * cdef inline int type_num(self) noexcept nogil:
19041
  * return PyDataType_TYPENUM(self) # <<<<<<<<<<<<<<
 
19048
  }
19049
  goto __pyx_L0;
19050
 
19051
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251
19052
  * return PyDataType_BYTEORDER(self)
19053
  *
19054
  * @property # <<<<<<<<<<<<<<
 
19061
  return __pyx_r;
19062
  }
19063
 
19064
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255
19065
  * return PyDataType_TYPENUM(self)
19066
  *
19067
  * @property # <<<<<<<<<<<<<<
 
19072
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_Descr *__pyx_v_self) {
19073
  npy_intp __pyx_r;
19074
 
19075
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257
19076
  * @property
19077
  * cdef inline npy_intp itemsize(self) noexcept nogil:
19078
  * return PyDataType_ELSIZE(self) # <<<<<<<<<<<<<<
 
19085
  }
19086
  goto __pyx_L0;
19087
 
19088
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255
19089
  * return PyDataType_TYPENUM(self)
19090
  *
19091
  * @property # <<<<<<<<<<<<<<
 
19098
  return __pyx_r;
19099
  }
19100
 
19101
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259
19102
  * return PyDataType_ELSIZE(self)
19103
  *
19104
  * @property # <<<<<<<<<<<<<<
 
19109
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_Descr *__pyx_v_self) {
19110
  npy_intp __pyx_r;
19111
 
19112
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":261
19113
  * @property
19114
  * cdef inline npy_intp alignment(self) noexcept nogil:
19115
  * return PyDataType_ALIGNMENT(self) # <<<<<<<<<<<<<<
 
19122
  }
19123
  goto __pyx_L0;
19124
 
19125
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259
19126
  * return PyDataType_ELSIZE(self)
19127
  *
19128
  * @property # <<<<<<<<<<<<<<
 
19135
  return __pyx_r;
19136
  }
19137
 
19138
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265
19139
  * # Use fields/names with care as they may be NULL. You must check
19140
  * # for this using PyDataType_HASFIELDS.
19141
  * @property # <<<<<<<<<<<<<<
 
19149
  PyObject *__pyx_t_1;
19150
  __Pyx_RefNannySetupContext("__get__", 0);
19151
 
19152
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":267
19153
  * @property
19154
  * cdef inline object fields(self):
19155
  * return <object>PyDataType_FIELDS(self) # <<<<<<<<<<<<<<
 
19170
 
19171
  goto __pyx_L0;
19172
 
19173
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265
19174
  * # Use fields/names with care as they may be NULL. You must check
19175
  * # for this using PyDataType_HASFIELDS.
19176
  * @property # <<<<<<<<<<<<<<
 
19185
  return __pyx_r;
19186
  }
19187
 
19188
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269
19189
  * return <object>PyDataType_FIELDS(self)
19190
  *
19191
  * @property # <<<<<<<<<<<<<<
 
19199
  PyObject *__pyx_t_1;
19200
  __Pyx_RefNannySetupContext("__get__", 0);
19201
 
19202
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":271
19203
  * @property
19204
  * cdef inline tuple names(self):
19205
  * return <tuple>PyDataType_NAMES(self) # <<<<<<<<<<<<<<
 
19220
 
19221
  goto __pyx_L0;
19222
 
19223
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269
19224
  * return <object>PyDataType_FIELDS(self)
19225
  *
19226
  * @property # <<<<<<<<<<<<<<
 
19235
  return __pyx_r;
19236
  }
19237
 
19238
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276
19239
  * # valid (the pointer can be NULL). Most users should access
19240
  * # this field via the inline helper method PyDataType_SHAPE.
19241
  * @property # <<<<<<<<<<<<<<
 
19246
  static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__(PyArray_Descr *__pyx_v_self) {
19247
  PyArray_ArrayDescr *__pyx_r;
19248
 
19249
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":278
19250
  * @property
19251
  * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:
19252
  * return PyDataType_SUBARRAY(self) # <<<<<<<<<<<<<<
 
19259
  }
19260
  goto __pyx_L0;
19261
 
19262
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276
19263
  * # valid (the pointer can be NULL). Most users should access
19264
  * # this field via the inline helper method PyDataType_SHAPE.
19265
  * @property # <<<<<<<<<<<<<<
 
19272
  return __pyx_r;
19273
  }
19274
 
19275
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280
19276
  * return PyDataType_SUBARRAY(self)
19277
  *
19278
  * @property # <<<<<<<<<<<<<<
 
19283
  static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Descr *__pyx_v_self) {
19284
  npy_uint64 __pyx_r;
19285
 
19286
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":283
19287
  * cdef inline npy_uint64 flags(self) noexcept nogil:
19288
  * """The data types flags."""
19289
  * return PyDataType_FLAGS(self) # <<<<<<<<<<<<<<
 
19296
  }
19297
  goto __pyx_L0;
19298
 
19299
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280
19300
  * return PyDataType_SUBARRAY(self)
19301
  *
19302
  * @property # <<<<<<<<<<<<<<
 
19309
  return __pyx_r;
19310
  }
19311
 
19312
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292
19313
  * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
19314
  *
19315
  * @property # <<<<<<<<<<<<<<
 
19320
  static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMultiIterObject *__pyx_v_self) {
19321
  int __pyx_r;
19322
 
19323
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295
19324
  * cdef inline int numiter(self) noexcept nogil:
19325
  * """The number of arrays that need to be broadcast to the same shape."""
19326
  * return PyArray_MultiIter_NUMITER(self) # <<<<<<<<<<<<<<
 
19333
  }
19334
  goto __pyx_L0;
19335
 
19336
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292
19337
  * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
19338
  *
19339
  * @property # <<<<<<<<<<<<<<
 
19346
  return __pyx_r;
19347
  }
19348
 
19349
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297
19350
  * return PyArray_MultiIter_NUMITER(self)
19351
  *
19352
  * @property # <<<<<<<<<<<<<<
 
19357
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMultiIterObject *__pyx_v_self) {
19358
  npy_intp __pyx_r;
19359
 
19360
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300
19361
  * cdef inline npy_intp size(self) noexcept nogil:
19362
  * """The total broadcasted size."""
19363
  * return PyArray_MultiIter_SIZE(self) # <<<<<<<<<<<<<<
 
19370
  }
19371
  goto __pyx_L0;
19372
 
19373
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297
19374
  * return PyArray_MultiIter_NUMITER(self)
19375
  *
19376
  * @property # <<<<<<<<<<<<<<
 
19383
  return __pyx_r;
19384
  }
19385
 
19386
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302
19387
  * return PyArray_MultiIter_SIZE(self)
19388
  *
19389
  * @property # <<<<<<<<<<<<<<
 
19394
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMultiIterObject *__pyx_v_self) {
19395
  npy_intp __pyx_r;
19396
 
19397
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305
19398
  * cdef inline npy_intp index(self) noexcept nogil:
19399
  * """The current (1-d) index into the broadcasted result."""
19400
  * return PyArray_MultiIter_INDEX(self) # <<<<<<<<<<<<<<
 
19407
  }
19408
  goto __pyx_L0;
19409
 
19410
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302
19411
  * return PyArray_MultiIter_SIZE(self)
19412
  *
19413
  * @property # <<<<<<<<<<<<<<
 
19420
  return __pyx_r;
19421
  }
19422
 
19423
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307
19424
  * return PyArray_MultiIter_INDEX(self)
19425
  *
19426
  * @property # <<<<<<<<<<<<<<
 
19431
  static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterObject *__pyx_v_self) {
19432
  int __pyx_r;
19433
 
19434
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":310
19435
  * cdef inline int nd(self) noexcept nogil:
19436
  * """The number of dimensions in the broadcasted result."""
19437
  * return PyArray_MultiIter_NDIM(self) # <<<<<<<<<<<<<<
 
19444
  }
19445
  goto __pyx_L0;
19446
 
19447
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307
19448
  * return PyArray_MultiIter_INDEX(self)
19449
  *
19450
  * @property # <<<<<<<<<<<<<<
 
19457
  return __pyx_r;
19458
  }
19459
 
19460
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312
19461
  * return PyArray_MultiIter_NDIM(self)
19462
  *
19463
  * @property # <<<<<<<<<<<<<<
 
19468
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(PyArrayMultiIterObject *__pyx_v_self) {
19469
  npy_intp *__pyx_r;
19470
 
19471
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":315
19472
  * cdef inline npy_intp* dimensions(self) noexcept nogil:
19473
  * """The shape of the broadcasted result."""
19474
  * return PyArray_MultiIter_DIMS(self) # <<<<<<<<<<<<<<
 
19481
  }
19482
  goto __pyx_L0;
19483
 
19484
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312
19485
  * return PyArray_MultiIter_NDIM(self)
19486
  *
19487
  * @property # <<<<<<<<<<<<<<
 
19494
  return __pyx_r;
19495
  }
19496
 
19497
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317
19498
  * return PyArray_MultiIter_DIMS(self)
19499
  *
19500
  * @property # <<<<<<<<<<<<<<
 
19505
  static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMultiIterObject *__pyx_v_self) {
19506
  void **__pyx_r;
19507
 
19508
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":321
19509
  * """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
19510
  * On return, the iterators are adjusted for broadcasting."""
19511
  * return PyArray_MultiIter_ITERS(self) # <<<<<<<<<<<<<<
 
19518
  }
19519
  goto __pyx_L0;
19520
 
19521
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317
19522
  * return PyArray_MultiIter_DIMS(self)
19523
  *
19524
  * @property # <<<<<<<<<<<<<<
 
19531
  return __pyx_r;
19532
  }
19533
 
19534
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335
19535
  * # Instead, we use properties that map to the corresponding C-API functions.
19536
  *
19537
  * @property # <<<<<<<<<<<<<<
 
19542
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObject *__pyx_v_self) {
19543
  PyObject *__pyx_r;
19544
 
19545
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":339
19546
  * """Returns a borrowed reference to the object owning the data/memory.
19547
  * """
19548
  * return PyArray_BASE(self) # <<<<<<<<<<<<<<
 
19555
  }
19556
  goto __pyx_L0;
19557
 
19558
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335
19559
  * # Instead, we use properties that map to the corresponding C-API functions.
19560
  *
19561
  * @property # <<<<<<<<<<<<<<
 
19568
  return __pyx_r;
19569
  }
19570
 
19571
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341
19572
  * return PyArray_BASE(self)
19573
  *
19574
  * @property # <<<<<<<<<<<<<<
 
19582
  PyArray_Descr *__pyx_t_1;
19583
  __Pyx_RefNannySetupContext("__get__", 0);
19584
 
19585
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":345
19586
  * """Returns an owned reference to the dtype of the array.
19587
  * """
19588
  * return <dtype>PyArray_DESCR(self) # <<<<<<<<<<<<<<
 
19603
 
19604
  goto __pyx_L0;
19605
 
19606
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341
19607
  * return PyArray_BASE(self)
19608
  *
19609
  * @property # <<<<<<<<<<<<<<
 
19618
  return __pyx_r;
19619
  }
19620
 
19621
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347
19622
  * return <dtype>PyArray_DESCR(self)
19623
  *
19624
  * @property # <<<<<<<<<<<<<<
 
19629
  static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__pyx_v_self) {
19630
  int __pyx_r;
19631
 
19632
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":351
19633
  * """Returns the number of dimensions in the array.
19634
  * """
19635
  * return PyArray_NDIM(self) # <<<<<<<<<<<<<<
 
19642
  }
19643
  goto __pyx_L0;
19644
 
19645
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347
19646
  * return <dtype>PyArray_DESCR(self)
19647
  *
19648
  * @property # <<<<<<<<<<<<<<
 
19655
  return __pyx_r;
19656
  }
19657
 
19658
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353
19659
  * return PyArray_NDIM(self)
19660
  *
19661
  * @property # <<<<<<<<<<<<<<
 
19666
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObject *__pyx_v_self) {
19667
  npy_intp *__pyx_r;
19668
 
19669
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":359
19670
  * Can return NULL for 0-dimensional arrays.
19671
  * """
19672
  * return PyArray_DIMS(self) # <<<<<<<<<<<<<<
 
19679
  }
19680
  goto __pyx_L0;
19681
 
19682
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353
19683
  * return PyArray_NDIM(self)
19684
  *
19685
  * @property # <<<<<<<<<<<<<<
 
19692
  return __pyx_r;
19693
  }
19694
 
19695
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361
19696
  * return PyArray_DIMS(self)
19697
  *
19698
  * @property # <<<<<<<<<<<<<<
 
19703
  static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayObject *__pyx_v_self) {
19704
  npy_intp *__pyx_r;
19705
 
19706
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":366
19707
  * The number of elements matches the number of dimensions of the array (ndim).
19708
  * """
19709
  * return PyArray_STRIDES(self) # <<<<<<<<<<<<<<
 
19716
  }
19717
  goto __pyx_L0;
19718
 
19719
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361
19720
  * return PyArray_DIMS(self)
19721
  *
19722
  * @property # <<<<<<<<<<<<<<
 
19729
  return __pyx_r;
19730
  }
19731
 
19732
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368
19733
  * return PyArray_STRIDES(self)
19734
  *
19735
  * @property # <<<<<<<<<<<<<<
 
19740
  static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObject *__pyx_v_self) {
19741
  npy_intp __pyx_r;
19742
 
19743
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":372
19744
  * """Returns the total size (in number of elements) of the array.
19745
  * """
19746
  * return PyArray_SIZE(self) # <<<<<<<<<<<<<<
 
19753
  }
19754
  goto __pyx_L0;
19755
 
19756
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368
19757
  * return PyArray_STRIDES(self)
19758
  *
19759
  * @property # <<<<<<<<<<<<<<
 
19766
  return __pyx_r;
19767
  }
19768
 
19769
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374
19770
  * return PyArray_SIZE(self)
19771
  *
19772
  * @property # <<<<<<<<<<<<<<
 
19777
  static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *__pyx_v_self) {
19778
  char *__pyx_r;
19779
 
19780
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":381
19781
  * of `PyArray_DATA()` instead, which returns a 'void*'.
19782
  * """
19783
  * return PyArray_BYTES(self) # <<<<<<<<<<<<<<
 
19790
  }
19791
  goto __pyx_L0;
19792
 
19793
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374
19794
  * return PyArray_SIZE(self)
19795
  *
19796
  * @property # <<<<<<<<<<<<<<
 
19803
  return __pyx_r;
19804
  }
19805
 
19806
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794
19807
  * ctypedef long double complex clongdouble_t
19808
  *
19809
  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
 
19820
  int __pyx_clineno = 0;
19821
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
19822
 
19823
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":795
19824
  *
19825
  * cdef inline object PyArray_MultiIterNew1(a):
19826
  * return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
 
19840
  __pyx_t_1 = 0;
19841
  goto __pyx_L0;
19842
 
19843
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794
19844
  * ctypedef long double complex clongdouble_t
19845
  *
19846
  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
 
19859
  return __pyx_r;
19860
  }
19861
 
19862
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797
19863
  * return PyArray_MultiIterNew(1, <void*>a)
19864
  *
19865
  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
 
19876
  int __pyx_clineno = 0;
19877
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
19878
 
19879
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":798
19880
  *
19881
  * cdef inline object PyArray_MultiIterNew2(a, b):
19882
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
 
19896
  __pyx_t_1 = 0;
19897
  goto __pyx_L0;
19898
 
19899
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797
19900
  * return PyArray_MultiIterNew(1, <void*>a)
19901
  *
19902
  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
 
19915
  return __pyx_r;
19916
  }
19917
 
19918
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800
19919
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
19920
  *
19921
  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
 
19932
  int __pyx_clineno = 0;
19933
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
19934
 
19935
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":801
19936
  *
19937
  * cdef inline object PyArray_MultiIterNew3(a, b, c):
19938
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
 
19952
  __pyx_t_1 = 0;
19953
  goto __pyx_L0;
19954
 
19955
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800
19956
  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
19957
  *
19958
  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
 
19971
  return __pyx_r;
19972
  }
19973
 
19974
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803
19975
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
19976
  *
19977
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
 
19988
  int __pyx_clineno = 0;
19989
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
19990
 
19991
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":804
19992
  *
19993
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
19994
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
 
20008
  __pyx_t_1 = 0;
20009
  goto __pyx_L0;
20010
 
20011
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803
20012
  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
20013
  *
20014
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
 
20027
  return __pyx_r;
20028
  }
20029
 
20030
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806
20031
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
20032
  *
20033
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
 
20044
  int __pyx_clineno = 0;
20045
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
20046
 
20047
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":807
20048
  *
20049
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
20050
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
 
20064
  __pyx_t_1 = 0;
20065
  goto __pyx_L0;
20066
 
20067
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806
20068
  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
20069
  *
20070
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
 
20083
  return __pyx_r;
20084
  }
20085
 
20086
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809
20087
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
20088
  *
20089
  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
 
20098
  PyObject *__pyx_t_2;
20099
  __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
20100
 
20101
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810
20102
  *
20103
  * cdef inline tuple PyDataType_SHAPE(dtype d):
20104
  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
 
20110
  if (__pyx_t_1) {
20111
 
20112
 
20113
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":811
20114
  * cdef inline tuple PyDataType_SHAPE(dtype d):
20115
  * if PyDataType_HASSUBARRAY(d):
20116
  * return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
 
20131
 
20132
  goto __pyx_L0;
20133
 
20134
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810
20135
  *
20136
  * cdef inline tuple PyDataType_SHAPE(dtype d):
20137
  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
 
20140
  */
20141
  }
20142
 
20143
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":813
20144
  * return <tuple>d.subarray.shape
20145
  * else:
20146
  * return () # <<<<<<<<<<<<<<
 
20160
  goto __pyx_L0;
20161
  }
20162
 
20163
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809
20164
  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
20165
  *
20166
  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
 
20175
  return __pyx_r;
20176
  }
20177
 
20178
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947
20179
  *
20180
  * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]:
20181
  * @property # <<<<<<<<<<<<<<
 
20186
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx_v_self) {
20187
  int __pyx_r;
20188
 
20189
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":949
20190
  * @property
20191
  * cdef inline int nin(self) noexcept nogil:
20192
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin # <<<<<<<<<<<<<<
 
20199
  }
20200
  goto __pyx_L0;
20201
 
20202
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947
20203
  *
20204
  * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]:
20205
  * @property # <<<<<<<<<<<<<<
 
20212
  return __pyx_r;
20213
  }
20214
 
20215
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951
20216
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin
20217
  *
20218
  * @property # <<<<<<<<<<<<<<
 
20223
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__pyx_v_self) {
20224
  int __pyx_r;
20225
 
20226
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":953
20227
  * @property
20228
  * cdef inline int nout(self) noexcept nogil:
20229
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout # <<<<<<<<<<<<<<
 
20236
  }
20237
  goto __pyx_L0;
20238
 
20239
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951
20240
  * return _PyUFuncObject_GET_ITEM_DATA(self).nin
20241
  *
20242
  * @property # <<<<<<<<<<<<<<
 
20249
  return __pyx_r;
20250
  }
20251
 
20252
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955
20253
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout
20254
  *
20255
  * @property # <<<<<<<<<<<<<<
 
20260
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__pyx_v_self) {
20261
  int __pyx_r;
20262
 
20263
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":957
20264
  * @property
20265
  * cdef inline int nargs(self) noexcept nogil:
20266
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs # <<<<<<<<<<<<<<
 
20273
  }
20274
  goto __pyx_L0;
20275
 
20276
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955
20277
  * return _PyUFuncObject_GET_ITEM_DATA(self).nout
20278
  *
20279
  * @property # <<<<<<<<<<<<<<
 
20286
  return __pyx_r;
20287
  }
20288
 
20289
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959
20290
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
20291
  *
20292
  * @property # <<<<<<<<<<<<<<
 
20297
  static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___get__(PyUFuncObject *__pyx_v_self) {
20298
  PyUFuncGenericFunction *__pyx_r;
20299
 
20300
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":961
20301
  * @property
20302
  * cdef inline PyUFuncGenericFunction* functions(self) noexcept nogil:
20303
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions # <<<<<<<<<<<<<<
 
20310
  }
20311
  goto __pyx_L0;
20312
 
20313
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959
20314
  * return _PyUFuncObject_GET_ITEM_DATA(self).nargs
20315
  *
20316
  * @property # <<<<<<<<<<<<<<
 
20323
  return __pyx_r;
20324
  }
20325
 
20326
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963
20327
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions
20328
  *
20329
  * @property # <<<<<<<<<<<<<<
 
20334
  static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *__pyx_v_self) {
20335
  void **__pyx_r;
20336
 
20337
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":965
20338
  * @property
20339
  * cdef inline void ** data(self) noexcept nogil:
20340
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data # <<<<<<<<<<<<<<
 
20347
  }
20348
  goto __pyx_L0;
20349
 
20350
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963
20351
  * return _PyUFuncObject_GET_ITEM_DATA(self).functions
20352
  *
20353
  * @property # <<<<<<<<<<<<<<
 
20360
  return __pyx_r;
20361
  }
20362
 
20363
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967
20364
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
20365
  *
20366
  * @property # <<<<<<<<<<<<<<
 
20371
  static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__pyx_v_self) {
20372
  int __pyx_r;
20373
 
20374
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":969
20375
  * @property
20376
  * cdef inline int ntypes(self) noexcept nogil:
20377
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes # <<<<<<<<<<<<<<
 
20384
  }
20385
  goto __pyx_L0;
20386
 
20387
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967
20388
  * return <void **>_PyUFuncObject_GET_ITEM_DATA(self).data
20389
  *
20390
  * @property # <<<<<<<<<<<<<<
 
20397
  return __pyx_r;
20398
  }
20399
 
20400
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971
20401
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
20402
  *
20403
  * @property # <<<<<<<<<<<<<<
 
20408
  static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObject *__pyx_v_self) {
20409
  char const *__pyx_r;
20410
 
20411
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":973
20412
  * @property
20413
  * cdef inline const char* name(self) noexcept nogil:
20414
  * return _PyUFuncObject_GET_ITEM_DATA(self).name # <<<<<<<<<<<<<<
 
20421
  }
20422
  goto __pyx_L0;
20423
 
20424
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971
20425
  * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes
20426
  *
20427
  * @property # <<<<<<<<<<<<<<
 
20434
  return __pyx_r;
20435
  }
20436
 
20437
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975
20438
  * return _PyUFuncObject_GET_ITEM_DATA(self).name
20439
  *
20440
  * @property # <<<<<<<<<<<<<<
 
20445
  static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObject *__pyx_v_self) {
20446
  char const *__pyx_r;
20447
 
20448
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":977
20449
  * @property
20450
  * cdef inline const char* doc(self) noexcept nogil:
20451
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc # <<<<<<<<<<<<<<
 
20458
  }
20459
  goto __pyx_L0;
20460
 
20461
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975
20462
  * return _PyUFuncObject_GET_ITEM_DATA(self).name
20463
  *
20464
  * @property # <<<<<<<<<<<<<<
 
20471
  return __pyx_r;
20472
  }
20473
 
20474
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979
20475
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc
20476
  *
20477
  * @property # <<<<<<<<<<<<<<
 
20482
  static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__pyx_v_self) {
20483
  void *__pyx_r;
20484
 
20485
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":981
20486
  * @property
20487
  * cdef inline void* ptr(self) noexcept nogil:
20488
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr # <<<<<<<<<<<<<<
 
20495
  }
20496
  goto __pyx_L0;
20497
 
20498
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979
20499
  * return _PyUFuncObject_GET_ITEM_DATA(self).doc
20500
  *
20501
  * @property # <<<<<<<<<<<<<<
 
20508
  return __pyx_r;
20509
  }
20510
 
20511
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983
20512
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
20513
  *
20514
  * @property # <<<<<<<<<<<<<<
 
20519
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject *__pyx_v_self) {
20520
  PyObject *__pyx_r;
20521
 
20522
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":985
20523
  * @property
20524
  * cdef inline PyObject* obj(self) noexcept nogil:
20525
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj # <<<<<<<<<<<<<<
 
20532
  }
20533
  goto __pyx_L0;
20534
 
20535
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983
20536
  * return _PyUFuncObject_GET_ITEM_DATA(self).ptr
20537
  *
20538
  * @property # <<<<<<<<<<<<<<
 
20545
  return __pyx_r;
20546
  }
20547
 
20548
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987
20549
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj
20550
  *
20551
  * @property # <<<<<<<<<<<<<<
 
20556
  static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncObject *__pyx_v_self) {
20557
  PyObject *__pyx_r;
20558
 
20559
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":989
20560
  * @property
20561
  * cdef inline PyObject* userloops(self) noexcept nogil:
20562
  * return _PyUFuncObject_GET_ITEM_DATA(self).userloops # <<<<<<<<<<<<<<
 
20569
  }
20570
  goto __pyx_L0;
20571
 
20572
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987
20573
  * return _PyUFuncObject_GET_ITEM_DATA(self).obj
20574
  *
20575
  * @property # <<<<<<<<<<<<<<
 
20582
  return __pyx_r;
20583
  }
20584
 
20585
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065
20586
  * int _import_umath() except -1
20587
  *
20588
  * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<<
 
20596
  const char *__pyx_filename = NULL;
20597
  int __pyx_clineno = 0;
20598
 
20599
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066
20600
  *
20601
  * cdef inline void set_array_base(ndarray arr, object base) except *:
20602
  * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
 
20605
  */
20606
  Py_INCREF(__pyx_v_base);
20607
 
20608
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1067
20609
  * cdef inline void set_array_base(ndarray arr, object base) except *:
20610
  * Py_INCREF(base) # important to do this before stealing the reference below!
20611
  * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
 
20615
  __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 1067, __pyx_L1_error)
20616
 
20617
 
20618
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065
20619
  * int _import_umath() except -1
20620
  *
20621
  * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<<
 
20631
 
20632
  }
20633
 
20634
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069
20635
  * PyArray_SetBaseObject(arr, base)
20636
  *
20637
  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
 
20646
  int __pyx_t_1;
20647
  __Pyx_RefNannySetupContext("get_array_base", 0);
20648
 
20649
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070
20650
  *
20651
  * cdef inline object get_array_base(ndarray arr):
20652
  * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
 
20655
  */
20656
  __pyx_v_base = PyArray_BASE(__pyx_v_arr);
20657
 
20658
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071
20659
  * cdef inline object get_array_base(ndarray arr):
20660
  * base = PyArray_BASE(arr)
20661
  * if base is NULL: # <<<<<<<<<<<<<<
 
20667
  if (__pyx_t_1) {
20668
 
20669
 
20670
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1072
20671
  * base = PyArray_BASE(arr)
20672
  * if base is NULL:
20673
  * return None # <<<<<<<<<<<<<<
 
20684
  }
20685
  goto __pyx_L0;
20686
 
20687
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071
20688
  * cdef inline object get_array_base(ndarray arr):
20689
  * base = PyArray_BASE(arr)
20690
  * if base is NULL: # <<<<<<<<<<<<<<
 
20693
  */
20694
  }
20695
 
20696
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073
20697
  * if base is NULL:
20698
  * return None
20699
  * return <object>base # <<<<<<<<<<<<<<
 
20711
  }
20712
  goto __pyx_L0;
20713
 
20714
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069
20715
  * PyArray_SetBaseObject(arr, base)
20716
  *
20717
  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
 
20727
  return __pyx_r;
20728
  }
20729
 
20730
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077
20731
  * # Versions of the import_* functions which are more suitable for
20732
  * # Cython code.
20733
  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
 
20753
  int __pyx_clineno = 0;
20754
  __Pyx_RefNannySetupContext("import_array", 0);
20755
 
20756
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20757
  * # Cython code.
20758
  * cdef inline int import_array() except -1:
20759
  * try: # <<<<<<<<<<<<<<
 
20769
  __Pyx_XGOTREF(__pyx_t_3);
20770
  /*try:*/ {
20771
 
20772
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1079
20773
  * cdef inline int import_array() except -1:
20774
  * try:
20775
  * __pyx_import_array() # <<<<<<<<<<<<<<
 
20779
  __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1079, __pyx_L3_error)
20780
 
20781
 
20782
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20783
  * # Cython code.
20784
  * cdef inline int import_array() except -1:
20785
  * try: # <<<<<<<<<<<<<<
 
20793
  goto __pyx_L8_try_end;
20794
  __pyx_L3_error:;
20795
 
20796
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1080
20797
  * try:
20798
  * __pyx_import_array()
20799
  * except Exception: # <<<<<<<<<<<<<<
 
20808
  __Pyx_XGOTREF(__pyx_t_6);
20809
  __Pyx_XGOTREF(__pyx_t_7);
20810
 
20811
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1081
20812
  * __pyx_import_array()
20813
  * except Exception:
20814
  * raise ImportError("numpy._core.multiarray failed to import") # <<<<<<<<<<<<<<
 
20830
  }
20831
  goto __pyx_L5_except_error;
20832
 
20833
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078
20834
  * # Cython code.
20835
  * cdef inline int import_array() except -1:
20836
  * try: # <<<<<<<<<<<<<<
 
20846
  __pyx_L8_try_end:;
20847
  }
20848
 
20849
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077
20850
  * # Versions of the import_* functions which are more suitable for
20851
  * # Cython code.
20852
  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
 
20871
  return __pyx_r;
20872
  }
20873
 
20874
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083
20875
  * raise ImportError("numpy._core.multiarray failed to import")
20876
  *
20877
  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
 
20897
  int __pyx_clineno = 0;
20898
  __Pyx_RefNannySetupContext("import_umath", 0);
20899
 
20900
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20901
  *
20902
  * cdef inline int import_umath() except -1:
20903
  * try: # <<<<<<<<<<<<<<
 
20913
  __Pyx_XGOTREF(__pyx_t_3);
20914
  /*try:*/ {
20915
 
20916
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1085
20917
  * cdef inline int import_umath() except -1:
20918
  * try:
20919
  * _import_umath() # <<<<<<<<<<<<<<
 
20923
  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1085, __pyx_L3_error)
20924
 
20925
 
20926
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20927
  *
20928
  * cdef inline int import_umath() except -1:
20929
  * try: # <<<<<<<<<<<<<<
 
20937
  goto __pyx_L8_try_end;
20938
  __pyx_L3_error:;
20939
 
20940
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1086
20941
  * try:
20942
  * _import_umath()
20943
  * except Exception: # <<<<<<<<<<<<<<
 
20952
  __Pyx_XGOTREF(__pyx_t_6);
20953
  __Pyx_XGOTREF(__pyx_t_7);
20954
 
20955
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1087
20956
  * _import_umath()
20957
  * except Exception:
20958
  * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<<
 
20974
  }
20975
  goto __pyx_L5_except_error;
20976
 
20977
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084
20978
  *
20979
  * cdef inline int import_umath() except -1:
20980
  * try: # <<<<<<<<<<<<<<
 
20990
  __pyx_L8_try_end:;
20991
  }
20992
 
20993
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083
20994
  * raise ImportError("numpy._core.multiarray failed to import")
20995
  *
20996
  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
 
21015
  return __pyx_r;
21016
  }
21017
 
21018
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089
21019
  * raise ImportError("numpy._core.umath failed to import")
21020
  *
21021
  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
 
21041
  int __pyx_clineno = 0;
21042
  __Pyx_RefNannySetupContext("import_ufunc", 0);
21043
 
21044
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
21045
  *
21046
  * cdef inline int import_ufunc() except -1:
21047
  * try: # <<<<<<<<<<<<<<
 
21057
  __Pyx_XGOTREF(__pyx_t_3);
21058
  /*try:*/ {
21059
 
21060
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1091
21061
  * cdef inline int import_ufunc() except -1:
21062
  * try:
21063
  * _import_umath() # <<<<<<<<<<<<<<
 
21067
  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1091, __pyx_L3_error)
21068
 
21069
 
21070
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
21071
  *
21072
  * cdef inline int import_ufunc() except -1:
21073
  * try: # <<<<<<<<<<<<<<
 
21081
  goto __pyx_L8_try_end;
21082
  __pyx_L3_error:;
21083
 
21084
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1092
21085
  * try:
21086
  * _import_umath()
21087
  * except Exception: # <<<<<<<<<<<<<<
 
21096
  __Pyx_XGOTREF(__pyx_t_6);
21097
  __Pyx_XGOTREF(__pyx_t_7);
21098
 
21099
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1093
21100
  * _import_umath()
21101
  * except Exception:
21102
  * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<<
 
21118
  }
21119
  goto __pyx_L5_except_error;
21120
 
21121
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090
21122
  *
21123
  * cdef inline int import_ufunc() except -1:
21124
  * try: # <<<<<<<<<<<<<<
 
21134
  __pyx_L8_try_end:;
21135
  }
21136
 
21137
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089
21138
  * raise ImportError("numpy._core.umath failed to import")
21139
  *
21140
  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
 
21159
  return __pyx_r;
21160
  }
21161
 
21162
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096
21163
  *
21164
  *
21165
  * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<<
 
21170
  static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) {
21171
  int __pyx_r;
21172
 
21173
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1108
21174
  * bool
21175
  * """
21176
  * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<<
 
21183
  }
21184
  goto __pyx_L0;
21185
 
21186
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096
21187
  *
21188
  *
21189
  * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<<
 
21197
  return __pyx_r;
21198
  }
21199
 
21200
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111
21201
  *
21202
  *
21203
  * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<<
 
21208
  static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) {
21209
  int __pyx_r;
21210
 
21211
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1123
21212
  * bool
21213
  * """
21214
  * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<<
 
21221
  }
21222
  goto __pyx_L0;
21223
 
21224
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111
21225
  *
21226
  *
21227
  * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<<
 
21235
  return __pyx_r;
21236
  }
21237
 
21238
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126
21239
  *
21240
  *
21241
  * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
21246
  static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) {
21247
  npy_datetime __pyx_r;
21248
 
21249
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1133
21250
  * also needed. That can be found using `get_datetime64_unit`.
21251
  * """
21252
  * return _PyDatetimeScalarObject_GetValue(obj) # <<<<<<<<<<<<<<
 
21259
  }
21260
  goto __pyx_L0;
21261
 
21262
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126
21263
  *
21264
  *
21265
  * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
21272
  return __pyx_r;
21273
  }
21274
 
21275
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136
21276
  *
21277
  *
21278
  * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
21283
  static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) {
21284
  npy_timedelta __pyx_r;
21285
 
21286
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1140
21287
  * returns the int64 value underlying scalar numpy timedelta64 object
21288
  * """
21289
  * return _PyTimedeltaScalarObject_GetValue(obj) # <<<<<<<<<<<<<<
 
21296
  }
21297
  goto __pyx_L0;
21298
 
21299
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136
21300
  *
21301
  *
21302
  * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
21309
  return __pyx_r;
21310
  }
21311
 
21312
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143
21313
  *
21314
  *
21315
  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<<
 
21320
  static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) {
21321
  NPY_DATETIMEUNIT __pyx_r;
21322
 
21323
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1147
21324
  * returns the unit part of the dtype for a numpy datetime64 object.
21325
  * """
21326
  * return _PyDatetimeScalarObject_GetMetadata(obj).base # <<<<<<<<<<<<<<
 
21333
  }
21334
  goto __pyx_L0;
21335
 
21336
+ /* "../../../../../venv/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143
21337
  *
21338
  *
21339
  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<<
src/khtst/acelerado/rco_gsq.cpython-312-x86_64-linux-gnu.so CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:6f73c467563e2284150999740794360c85dd5a0adede92fdbcb0903e645f6ea4
3
  size 1603024
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:62d733387edbf3d870453d1b204d93ca68e1b92c862462db6b408be77be57b54
3
  size 1603024
src/khtst/aprimoramento/autorregulacao_estendida.py CHANGED
@@ -1,5 +1,6 @@
1
  # -*- coding: utf-8 -*-
2
- """AUTORREGULAÇÃO ESTENDIDA v17 — a tabela de sinais (doc 29 §10, Teo 29.16).
 
3
 
4
  Fecha a lacuna diagnosticada na v16: o Autorregulador (Teos 28.5–28.7)
5
  governava lr, λ_aux e peso MoE com RM puro e UM sinal por parâmetro —
@@ -8,6 +9,27 @@ de setpoint, e SEM cobertura de AdamW (β₁/β₂/ε/wd), Muon (momentum/
8
  escala/τ_qk), PRS V8 (5 parâmetros), pesos de perda (PESO_MOE,
9
  PESO_ALINHAMENTO_SOM), ABMO, CIAR e crescimento.
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  ESTE módulo registra CADA parâmetro em um ControladorHibrido (RM + PI,
12
  Teo 29.14) ou ControladorBissecao (τ_qk, Teo 29.15), com:
13
 
@@ -72,6 +94,9 @@ class AutorreguladorEstendido:
72
  self.hub = hub
73
  self.ativo = bool(cfg.get("ativo", False)) # NASCIMENTO NEUTRO
74
  self.a_cada = int(cfg.get("a_cada", 10))
 
 
 
75
  self._passo = 0
76
  self._t_ajuste = 0
77
  C = self._construir(a0, tau_a, espera)
@@ -178,10 +203,12 @@ class AutorreguladorEstendido:
178
  # CIAR κ — aceitação vs alvo
179
  "ciar_kappa": (f_sinal("taxa_aceitacao_ciar", 0.70),
180
  f_medida("taxa_aceitacao_ciar", 0.70)),
181
- # crescimento — expansão/poda vs alvos
 
 
182
  "cresc_expand": (f_sinal("taxa_expansao", 0.05),
183
  f_medida("taxa_expansao", 0.05)),
184
- "cresc_prune": (f_sinal("taxa_prune", 0.02),
185
  f_medida("taxa_prune", 0.02)),
186
  }
187
 
@@ -277,6 +304,59 @@ class AutorreguladorEstendido:
277
  tocados.append(attr)
278
  return sorted(set(tocados))
279
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
280
  def telemetria(self) -> dict:
281
  out = {}
282
  for nome, ctl in self._controladores.items():
 
1
  # -*- coding: utf-8 -*-
2
+ """AUTORREGULAÇÃO ESTENDIDA v17/v22 — a tabela de sinais (doc 29 §10, Teo 29.16;
3
+ fechamento 18/18 dos produtores: docs 33 §7 e 34 §§2–5, Teos 33.14 e 34.2–34.10).
4
 
5
  Fecha a lacuna diagnosticada na v16: o Autorregulador (Teos 28.5–28.7)
6
  governava lr, λ_aux e peso MoE com RM puro e UM sinal por parâmetro —
 
9
  escala/τ_qk), PRS V8 (5 parâmetros), pesos de perda (PESO_MOE,
10
  PESO_ALINHAMENTO_SOM), ABMO, CIAR e crescimento.
11
 
12
+ v22 — FECHAMENTO 18/18 (doc 34): os 10 sinais sem produtor na v21
13
+ (doc 33 §11.4) passam a ter produtores REAIS:
14
+ • AdamW (estado do otimizador — observadores puros, Teo 34.1):
15
+ deriva_seg_momento (Δv=(1−β₂)(g⊙g−v), calibrada pela própria EMA),
16
+ razao_update_grad (RMS do passo AdamW — Jensen Teo 34.2),
17
+ razao_momentum_grad (correção estacionária √(1−β²), Teo 34.3),
18
+ razao_rms_mecanismos (RMS Muon/RMS AdamW — Teo 24.11);
19
+ • ABMO: margem_abmo_norm = cap/lr_base (folga da barreira, Teo 34.6);
20
+ • CIAR: taxa_aceitacao_ciar = fração de janelas com melhora (Teo 34.7);
21
+ • SOM: taxa_expansao/taxa_prune por diferença de contadores reais de
22
+ inserção/poda (GG/GCS/GSOM) e ativacao_som = taxa_ativos_global —
23
+ reais em QUALQUER fase (Teo 34.8);
24
+ • τ_qk: leitura PRÓPRIA e FRESCA de ultimo_logit_max direto dos módulos
25
+ NoPEAtencao a cada ciclo (não só o push a cada 20 passos do hub).
26
+
27
+ E os NOVOS APLICADORES (aplicar_em_treinador): abmo_margem →
28
+ _abmo["margem"] (×), ciar_kappa → ciar["kappa_ext"] (×), cresc_expand →
29
+ lambda_insercao (×), cresc_prune → util_poda (×), peso_som →
30
+ _peso_som_v17 (×, normalizado pelo centro 0,05). Todos com base capturada
31
+ na 1ª escrita ⟹ centro = comportamento bit-a-bit (nascimento neutro).
32
+
33
  ESTE módulo registra CADA parâmetro em um ControladorHibrido (RM + PI,
34
  Teo 29.14) ou ControladorBissecao (τ_qk, Teo 29.15), com:
35
 
 
94
  self.hub = hub
95
  self.ativo = bool(cfg.get("ativo", False)) # NASCIMENTO NEUTRO
96
  self.a_cada = int(cfg.get("a_cada", 10))
97
+ # v22: espera configurável (aquecimento antes do 1º ajuste — Teo
98
+ # 28.5-ii); default 20 ciclos = comportamento v21 exato
99
+ espera = int(cfg.get("espera", espera))
100
  self._passo = 0
101
  self._t_ajuste = 0
102
  C = self._construir(a0, tau_a, espera)
 
203
  # CIAR κ — aceitação vs alvo
204
  "ciar_kappa": (f_sinal("taxa_aceitacao_ciar", 0.70),
205
  f_medida("taxa_aceitacao_ciar", 0.70)),
206
+ # crescimento — expansão/poda vs alvos; PODA com sinal INVERTIDO
207
+ # (v22, Teo 34.8-iii): taxa_prune < alvo ⟹ mapa inchado ⟹ limiar
208
+ # de utilidade sobe ⟹ poda MAIS agressiva
209
  "cresc_expand": (f_sinal("taxa_expansao", 0.05),
210
  f_medida("taxa_expansao", 0.05)),
211
+ "cresc_prune": (f_sinal("taxa_prune", 0.02, inverte=True),
212
  f_medida("taxa_prune", 0.02)),
213
  }
214
 
 
304
  tocados.append(attr)
305
  return sorted(set(tocados))
306
 
307
+ # ------------------------------------------------------------------
308
+ # v22 (doc 34 §5, Teos 34.6–34.9) — APLICADOR DE REGULADORES DO TREINADOR:
309
+ # ABMO (margem), CIAR (κ_ext), crescimento (λ_inserção, util_poda) e
310
+ # PESO_SOM. Tolerante a ausências; cada alvo tem a BASE capturada na 1ª
311
+ # escrita e o controlador parte do centro 1,0× ⟹ nascimento neutro
312
+ # (a 1ª aplicação escreve base×1,0 = base — bit-a-bit).
313
+ def aplicar_em_treinador(self, valores: dict, treinador) -> list[str]:
314
+ tocados = []
315
+ # --- ABMO: margem m ∈ [0,2) — cap = (2−m)/L̂; ×[0.5,1.5] sobre a base
316
+ abmo = getattr(treinador, "_abmo", None)
317
+ if abmo is not None and "abmo_margem" in valores \
318
+ and "margem" in abmo:
319
+ if not hasattr(self, "_margem_abmo_base"):
320
+ self._margem_abmo_base = float(abmo["margem"])
321
+ nova = self._margem_abmo_base * float(valores["abmo_margem"])
322
+ abmo["margem"] = float(max(0.0, min(nova, 1.0))) # cap>0 ⟹ m<2
323
+ tocados.append("abmo_margem")
324
+ # --- CIAR: κ_ext multiplica κ (limites já garantidos pela tabela
325
+ # ×[0.5,2.0] sobre κ∈[κ_min,κ_max] — Teo 34.7-ii: TV finita)
326
+ ciar = getattr(treinador, "ciar", None)
327
+ if ciar is not None and "ciar_kappa" in valores:
328
+ ciar["kappa_ext"] = float(max(0.25, min(2.5,
329
+ valores["ciar_kappa"])))
330
+ tocados.append("ciar_kappa_ext")
331
+ # --- crescimento: λ_inserção × e limiar de poda × (GG/GCS/GSOM)
332
+ orq = getattr(treinador, "orquestrador", None)
333
+ if orq is not None and hasattr(orq, "variantes"):
334
+ for nome, v in orq.variantes.items():
335
+ if "cresc_expand" in valores and hasattr(v, "lambda_"):
336
+ chave = f"_base_lambda_{nome}"
337
+ if not hasattr(self, chave):
338
+ setattr(self, chave, float(v.lambda_))
339
+ base = getattr(self, chave)
340
+ v.lambda_ = max(1, int(round(
341
+ base * float(valores["cresc_expand"]))))
342
+ tocados.append(f"lambda_{nome}")
343
+ if "cresc_prune" in valores and hasattr(v, "util_poda"):
344
+ chave = f"_base_util_poda_{nome}"
345
+ if not hasattr(self, chave):
346
+ setattr(self, chave, float(v.util_poda))
347
+ base = getattr(self, chave)
348
+ v.util_poda = float(max(0.005, min(0.50,
349
+ base * float(valores["cresc_prune"]))))
350
+ tocados.append(f"util_poda_{nome}")
351
+ # --- PESO_SOM: multiplicador normalizado pelo centro 0,05 (o centro
352
+ # da tabela = default de cfg.treino.lambda_som ⟹ ×1,0 neutro mesmo
353
+ # com lambda_som customizado)
354
+ if "peso_som" in valores and hasattr(treinador, "_peso_som_v17"):
355
+ treinador._peso_som_v17 = float(
356
+ max(0.2, min(4.0, valores["peso_som"] / 0.05)))
357
+ tocados.append("peso_som")
358
+ return sorted(set(tocados))
359
+
360
  def telemetria(self) -> dict:
361
  out = {}
362
  for nome, ctl in self._controladores.items():
src/khtst/ipc/khtst_ipc.cpython-312-x86_64-linux-gnu.so CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:44a7c5f5ff0e9d5483f52f79ebcb48be362778573edf5e04ade836d5b9845948
3
  size 1771456
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0460ea341b8ee6d872ff0bfa7281e25e660d02a0264848486e904f61b01dc968
3
  size 1771456
src/khtst/memoria/orquestrador.py CHANGED
@@ -150,6 +150,25 @@ class OrquestradorSOM:
150
  vals.append(alvo.taxa_ativos())
151
  return sum(vals) / len(vals) if vals else 1.0
152
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  def eq_medio(self, x: torch.Tensor) -> float:
154
  """EQ médio sobre as variantes avaliáveis (Teorema 15.2 — proxy do
155
  EQ incremental na fase B)."""
 
150
  vals.append(alvo.taxa_ativos())
151
  return sum(vals) / len(vals) if vals else 1.0
152
 
153
+ # ---------------- v22 (doc 34 §3, Teos 34.1/34.8) ----------------
154
+ def contadores_crescimento(self) -> dict:
155
+ """Contadores AGREGADOS de crescimento sobre as variantes expansíveis
156
+ (GrowingGrid, GCS, GSOM — Teos 2.1/2.3/3.1): inserções, podas e
157
+ unidades totais. Observadores puros (Teo 34.1); o treinador calcula
158
+ as TAXAS por diferença entre ciclos da tabela v17."""
159
+ ins = pod = unid = 0
160
+ for v in self.variantes.values():
161
+ ins += int(getattr(v, "n_insercoes", 0))
162
+ pod += int(getattr(v, "n_podas", 0))
163
+ k = getattr(v, "k", None)
164
+ if k is None and hasattr(v, "w"):
165
+ k = v.w.shape[0]
166
+ if isinstance(k, int):
167
+ unid += k
168
+ elif k is not None:
169
+ unid += int(k)
170
+ return {"insercoes": ins, "podas": pod, "unidades": unid}
171
+
172
  def eq_medio(self, x: torch.Tensor) -> float:
173
  """EQ médio sobre as variantes avaliáveis (Teorema 15.2 — proxy do
174
  EQ incremental na fase B)."""
src/khtst/memoria/som_base.py CHANGED
@@ -39,6 +39,11 @@ class SOMKohonen:
39
  self.erro_ema = torch.zeros(k) # EMA da escala de erro u_j
40
  self.uso_total = torch.zeros(k, dtype=torch.long)
41
  self.n_mortos_resemeados = 0
 
 
 
 
 
42
 
43
  # ---------------- infraestrutura ----------------
44
  def _vizinhanca(self, c: int, sigma: float) -> torch.Tensor:
 
39
  self.erro_ema = torch.zeros(k) # EMA da escala de erro u_j
40
  self.uso_total = torch.zeros(k, dtype=torch.long)
41
  self.n_mortos_resemeados = 0
42
+ # v22 (doc 34 §3, Teo 34.1): contadores de crescimento — observadores
43
+ # puros (nenhuma mudança de comportamento) para os produtores
44
+ # taxa_expansao/taxa_prune da tabela v17 (Teo 29.16)
45
+ self.n_insercoes = 0
46
+ self.n_podas = 0
47
 
48
  # ---------------- infraestrutura ----------------
49
  def _vizinhanca(self, c: int, sigma: float) -> torch.Tensor:
src/khtst/memoria/variantes_crescimento.py CHANGED
@@ -51,6 +51,7 @@ class GrowingGrid(SOMKohonen):
51
  self.erro = torch.cat([self.erro, self.erro[q:q + 1] / 2])
52
  self.erro[q] /= 2
53
  self.k += 1
 
54
  self.lado = max(self.lado, int(self.k ** 0.5) + (1 if int(self.k ** 0.5) ** 2 < self.k else 0))
55
 
56
 
@@ -67,6 +68,12 @@ class GrowingCellStructures:
67
  self.kmax, self.lambda_, self.beta = kmax, lambda_insercao, beta
68
  self.vizinhos = {(0, 1), (1, 2), (2, 0)}
69
  self.passo = 0
 
 
 
 
 
 
70
 
71
  @torch.no_grad()
72
  def treinar_lote(self, x: torch.Tensor) -> float:
@@ -101,16 +108,18 @@ class GrowingCellStructures:
101
  self.vizinhos.discard((min(q, f), max(q, f)))
102
  for v in (q, f):
103
  self.vizinhos.add((min(novo, v), max(novo, v))) # conectividade: Teorema 2.2
 
104
 
105
  def _podar(self):
106
  utilidade = self.usos / (self.usos.max() + 1e-12)
107
  i = int(utilidade.argmin())
108
- if utilidade[i] > 0.05 or self.w.shape[0] <= 3:
109
  return
110
  keep = [j for j in range(self.w.shape[0]) if j != i]
111
  self.w = self.w[keep]
112
  self.erro = self.erro[keep]
113
  self.usos = self.usos[keep]
 
114
  self.vizinhos = {(a if a < i else a - 1, b if b < i else b - 1)
115
  for a, b in self.vizinhos if a != i and b != i}
116
 
@@ -182,6 +191,7 @@ class GSOM(SOMKohonen):
182
  self.erro = torch.cat([self.erro, torch.zeros(1)])
183
  self.ocupadas.add(nova)
184
  self.k += 1
 
185
  return
186
 
187
  def estatisticas(self) -> dict:
 
51
  self.erro = torch.cat([self.erro, self.erro[q:q + 1] / 2])
52
  self.erro[q] /= 2
53
  self.k += 1
54
+ self.n_insercoes = getattr(self, "n_insercoes", 0) + 1 # v22 (Teo 34.1)
55
  self.lado = max(self.lado, int(self.k ** 0.5) + (1 if int(self.k ** 0.5) ** 2 < self.k else 0))
56
 
57
 
 
68
  self.kmax, self.lambda_, self.beta = kmax, lambda_insercao, beta
69
  self.vizinhos = {(0, 1), (1, 2), (2, 0)}
70
  self.passo = 0
71
+ # v22 (Teo 34.1): contadores + limiar de poda ESCRITÁVEL (o applier
72
+ # cresc_prune da tabela v17 escala `util_poda`; valor = comportamento
73
+ # original bit-a-bit)
74
+ self.n_insercoes = 0
75
+ self.n_podas = 0
76
+ self.util_poda = 0.05
77
 
78
  @torch.no_grad()
79
  def treinar_lote(self, x: torch.Tensor) -> float:
 
108
  self.vizinhos.discard((min(q, f), max(q, f)))
109
  for v in (q, f):
110
  self.vizinhos.add((min(novo, v), max(novo, v))) # conectividade: Teorema 2.2
111
+ self.n_insercoes += 1 # v22 (Teo 34.1 — observador puro)
112
 
113
  def _podar(self):
114
  utilidade = self.usos / (self.usos.max() + 1e-12)
115
  i = int(utilidade.argmin())
116
+ if utilidade[i] > self.util_poda or self.w.shape[0] <= 3:
117
  return
118
  keep = [j for j in range(self.w.shape[0]) if j != i]
119
  self.w = self.w[keep]
120
  self.erro = self.erro[keep]
121
  self.usos = self.usos[keep]
122
+ self.n_podas += 1 # v22 (Teo 34.1 — observador puro)
123
  self.vizinhos = {(a if a < i else a - 1, b if b < i else b - 1)
124
  for a, b in self.vizinhos if a != i and b != i}
125
 
 
191
  self.erro = torch.cat([self.erro, torch.zeros(1)])
192
  self.ocupadas.add(nova)
193
  self.k += 1
194
+ self.n_insercoes = getattr(self, "n_insercoes", 0) + 1 # v22 (Teo 34.1)
195
  return
196
 
197
  def estatisticas(self) -> dict:
src/khtst/treino/otimizadores.py CHANGED
@@ -182,7 +182,8 @@ class MuonClipAdamW(torch.optim.Optimizer):
182
  weight_decay_muon: float = 1e-4,
183
  momentum: float = 0.95, nesterov: bool = True,
184
  ns_iters: int = 5, tau_qk: float | None = 100.0,
185
- escala_muon: float = 0.2):
 
186
  defaults = dict(lr=lr, betas=tuple(betas), eps=eps,
187
  weight_decay=weight_decay,
188
  weight_decay_muon=weight_decay_muon,
@@ -190,6 +191,17 @@ class MuonClipAdamW(torch.optim.Optimizer):
190
  nesterov=nesterov, ns_iters=ns_iters,
191
  tau_qk=tau_qk, escala_muon=escala_muon)
192
  super().__init__(params, defaults)
 
 
 
 
 
 
 
 
 
 
 
193
 
194
  # ------------------------------------------------------------------ API
195
  @torch.no_grad()
@@ -268,6 +280,14 @@ class MuonClipAdamW(torch.optim.Optimizer):
268
  if grupo.get("weight_decay_muon", 0.0) > 0:
269
  p.mul_(1.0 - lr * grupo["weight_decay_muon"])
270
  p.add_(Ghat, alpha=-lr)
 
 
 
 
 
 
 
 
271
 
272
  # ------------------------------------------------------------ AdamW
273
  def _passo_adamw(self, p, g, grupo, lr: float):
@@ -280,6 +300,11 @@ class MuonClipAdamW(torch.optim.Optimizer):
280
  st["step"] += 1
281
  t = st["step"]
282
  ea, eas = st["exp_avg"], st["exp_avg_sq"]
 
 
 
 
 
283
  ea.mul_(β1).add_(g, alpha=1.0 - β1)
284
  eas.mul_(β2).addcmul_(g, g, value=1.0 - β2)
285
  corr1 = 1.0 - β1 ** t
@@ -288,6 +313,74 @@ class MuonClipAdamW(torch.optim.Optimizer):
288
  if grupo["weight_decay"] > 0:
289
  p.mul_(1.0 - lr * grupo["weight_decay"])
290
  p.add_(passo, alpha=-lr)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
291
 
292
  # ----------------------------------------------------------- QK-clip
293
  @torch.no_grad()
@@ -344,4 +437,8 @@ def criar_otimizador_muuonclip(modelo: torch.nn.Module, cfg_treino,
344
  nesterov=bool(cfg.get("nesterov", True)),
345
  ns_iters=int(cfg.get("ns_iters", 5)),
346
  tau_qk=(float(cfg["tau_qk"]) if cfg.get("tau_qk") else None),
347
- escala_muon=float(cfg.get("escala_muon", 0.2)))
 
 
 
 
 
182
  weight_decay_muon: float = 1e-4,
183
  momentum: float = 0.95, nesterov: bool = True,
184
  ns_iters: int = 5, tau_qk: float | None = 100.0,
185
+ escala_muon: float = 0.2,
186
+ coletar_metricas: bool = False):
187
  defaults = dict(lr=lr, betas=tuple(betas), eps=eps,
188
  weight_decay=weight_decay,
189
  weight_decay_muon=weight_decay_muon,
 
191
  nesterov=nesterov, ns_iters=ns_iters,
192
  tau_qk=tau_qk, escala_muon=escala_muon)
193
  super().__init__(params, defaults)
194
+ # v22 (doc 34 §2, Teos 34.1–34.5) — ACUMULADORES DE MÉTRICAS:
195
+ # observadores PUROS (sem RNG, sem mutação de estado do passo) que
196
+ # somam ‖·‖² dos tensores já manipulados pelo passo, para produzir
197
+ # os 4 sinais AdamW/Muon da tabela v17 (Teo 29.16) SEM proxies.
198
+ # Opt-in: coletar_metricas=False (default) ⟹ custo zero e
199
+ # comportamento bit-a-bit idêntico ao v21 (Teo 34.1).
200
+ self.coletar = bool(coletar_metricas)
201
+ self._m = {"adam_u2": 0.0, "adam_g2": 0.0, "adam_v2": 0.0,
202
+ "adam_dv2": 0.0, "adam_n": 0,
203
+ "muon_u2": 0.0, "muon_g2": 0.0, "muon_b2": 0.0,
204
+ "muon_n": 0}
205
 
206
  # ------------------------------------------------------------------ API
207
  @torch.no_grad()
 
280
  if grupo.get("weight_decay_muon", 0.0) > 0:
281
  p.mul_(1.0 - lr * grupo["weight_decay_muon"])
282
  p.add_(Ghat, alpha=-lr)
283
+ # v22 (Teo 34.1 — observador puro; só com coletar=True): soma ‖·‖²
284
+ # dos tensores JÁ computados pelo passo (g, buf, Ghat) — nenhuma
285
+ # mutação de estado, nenhum RNG ⟹ bit-a-bit v21 com coletar=False.
286
+ if self.coletar:
287
+ self._m["muon_u2"] += float(Ghat.float().pow(2).sum())
288
+ self._m["muon_b2"] += float(buf.float().pow(2).sum())
289
+ self._m["muon_g2"] += float(g.float().pow(2).sum())
290
+ self._m["muon_n"] += p.numel()
291
 
292
  # ------------------------------------------------------------ AdamW
293
  def _passo_adamw(self, p, g, grupo, lr: float):
 
300
  st["step"] += 1
301
  t = st["step"]
302
  ea, eas = st["exp_avg"], st["exp_avg_sq"]
303
+ # v22: deriva REAL do segundo momento Δv = (1−β2)(g⊙g − v_pre) —
304
+ # capturada ANTES do mul_ de eas (com coletar=True; Teo 34.4)
305
+ dv = None
306
+ if self.coletar:
307
+ dv = g.float().pow(2).sub_(eas.float()).mul_(1.0 - β2)
308
  ea.mul_(β1).add_(g, alpha=1.0 - β1)
309
  eas.mul_(β2).addcmul_(g, g, value=1.0 - β2)
310
  corr1 = 1.0 - β1 ** t
 
313
  if grupo["weight_decay"] > 0:
314
  p.mul_(1.0 - lr * grupo["weight_decay"])
315
  p.add_(passo, alpha=-lr)
316
+ # v22 (Teo 34.1 — observador puro): soma ‖·‖² de (passo, g, v, Δv)
317
+ if self.coletar:
318
+ self._m["adam_u2"] += float(passo.float().pow(2).sum())
319
+ self._m["adam_v2"] += float(eas.float().pow(2).sum())
320
+ self._m["adam_g2"] += float(g.float().pow(2).sum())
321
+ if dv is not None:
322
+ self._m["adam_dv2"] += float(dv.pow(2).sum())
323
+ self._m["adam_n"] += p.numel()
324
+
325
+ # ------------------------------------------------ v22: produtores
326
+ def ler_metricas_e_zerar(self) -> dict:
327
+ """Devolve uma CÓPIA dos acumuladores e zera-os (janela = o intervalo
328
+ entre leituras — no treinador, o ciclo `a_cada` da tabela v17)."""
329
+ m = dict(self._m)
330
+ for k in self._m:
331
+ self._m[k] = 0 if k.endswith("_n") else 0.0
332
+ return m
333
+
334
+ def produtor_v22(self, ema_deriva: float | None, tau_ema: float = 400.0
335
+ ) -> tuple[dict[str, float], float | None]:
336
+ """Produz os 4 sinais AdamW/Muon da tabela v17 (Teo 29.16) a partir
337
+ do estado REAL do otimizador (sem proxies — Teos 34.2–34.5):
338
+
339
+ razao_update_grad = RMS(passo AdamW) ∈ (0,~1]
340
+ deriva_seg_momento = RMS(Δv)/RMS(v) calibrada pela própria EMA
341
+ razao_momentum_grad = RMS(buf)·√(1−β²)/RMS(g) (piso 1.0)
342
+ razao_rms_mecanismos = RMS(update Muon)/RMS(update AdamW)
343
+
344
+ `ema_deriva` é a EMA anterior de deriva_seg_momento (calibração
345
+ pivotal; None na 1ª leitura ⟹ semente). Retorna (sinais, ema_nova).
346
+ Janela sem passos (p.grad ausente em tudo) ⟹ ({}, ema_entrada)."""
347
+ m = self.ler_metricas_e_zerar()
348
+ sinais: dict[str, float] = {}
349
+ na, nm = int(m["adam_n"]), int(m["muon_n"])
350
+ ema_retorno = ema_deriva
351
+ if na > 0:
352
+ rms_u = math.sqrt(m["adam_u2"] / na)
353
+ sinais["razao_update_grad"] = float(rms_u)
354
+ rms_v = math.sqrt(m["adam_v2"] / na)
355
+ d_raw = math.sqrt(m["adam_dv2"] / na) / max(rms_v, 1e-24)
356
+ if ema_deriva is None or ema_deriva <= 0.0:
357
+ ema_nova = d_raw # semente = 1ª observação real
358
+ else:
359
+ ema_nova = (1.0 - 1.0 / tau_ema) * ema_deriva \
360
+ + d_raw / tau_ema
361
+ sinais["deriva_seg_momento"] = float(d_raw / max(ema_nova, 1e-24))
362
+ ema_retorno = ema_nova
363
+ rms_g = math.sqrt(m["adam_g2"] / na)
364
+ sinais["_rms_g_adam"] = float(rms_g) # diagnóstico (hub)
365
+ if nm > 0:
366
+ β = 0.0
367
+ for grupo in self.param_groups:
368
+ if grupo.get("eh_muon", False):
369
+ β = float(grupo["momentum"])
370
+ break
371
+ rms_b = math.sqrt(m["muon_b2"] / nm)
372
+ rms_g = math.sqrt(m["muon_g2"] / nm)
373
+ # Teo 34.3: piso estacionário E‖b‖² = n·σ²/(1−β²) ⟹ r=1 no
374
+ # ruído i.i.d.; r>1 ⟺ gradientes correlacionados
375
+ sinais["razao_momentum_grad"] = float(
376
+ rms_b * math.sqrt(max(1.0 - β * β, 1e-9)) / max(rms_g, 1e-24))
377
+ if na > 0:
378
+ rms_u_adam = math.sqrt(m["adam_u2"] / na)
379
+ rms_u_muon = math.sqrt(m["muon_u2"] / nm)
380
+ # Teo 24.11 (comparabilidade de RMS entre mecanismos)
381
+ sinais["razao_rms_mecanismos"] = float(
382
+ rms_u_muon / max(rms_u_adam, 1e-24))
383
+ return sinais, ema_retorno
384
 
385
  # ----------------------------------------------------------- QK-clip
386
  @torch.no_grad()
 
437
  nesterov=bool(cfg.get("nesterov", True)),
438
  ns_iters=int(cfg.get("ns_iters", 5)),
439
  tau_qk=(float(cfg["tau_qk"]) if cfg.get("tau_qk") else None),
440
+ escala_muon=float(cfg.get("escala_muon", 0.2)),
441
+ # v22 (doc 34 §2): acumuladores só com a tabela v17 ativa —
442
+ # observadores puros (Teo 34.1); desligados ⟹ custo zero
443
+ coletar_metricas=bool(dict(getattr(cfg_treino, "autorreg_v17", {})
444
+ or {}).get("ativo", False)))
src/khtst/treino/treinador.py CHANGED
@@ -41,6 +41,7 @@ from khtst.treino.cirurgia_grad import NormalizadorPerdas, pcgrad_duas_perdas
41
  # v18 — REFAATORAÇÃO (requisito §1.1.3/§3.2, doc 30 §0): responsabilidades
42
  # separadas em 4 mixins; esta classe é a FACADE (API pública intacta)
43
  from khtst.treino.treinador_lr import MixinLR
 
44
  from khtst.treino.treinador_perdas import MixinPerdas
45
  from khtst.treino.treinador_estado import MixinEstado
46
  from khtst.treino.treinador_fases import MixinFases
@@ -75,7 +76,8 @@ def _audio_para_tensor(onda_fp16: bytes) -> torch.Tensor:
75
  return torch.from_numpy(y)
76
 
77
 
78
- class TreinadorExtensao(MixinLR, MixinPerdas, MixinEstado, MixinFases):
 
79
  """Facade do treinador (v18): LR/ABMO/CIAR (MixinLR), perdas+PCGrad
80
  (MixinPerdas), estados/checkpoints/gate (MixinEstado), fases/DPO/SOM
81
  (MixinFases). O laço de passos (_passo) e a orquestração ficam aqui.
@@ -281,20 +283,11 @@ class TreinadorExtensao(MixinLR, MixinPerdas, MixinEstado, MixinFases):
281
  # multiplicativo em log-escala para lr, λ's auxiliares e peso MoE;
282
  # calibração de temperatura na inferência (Teo 28.8)
283
  self.autorreg = Autorregulador(getattr(cfg.treino, "autorreg", {}))
284
- # v21 (doc 33 §5, Teo 33.14; PLANO item 6) — TABELA v17 (Teo 29.16):
285
- # o AutorreguladorEstendido existia SEM chamador; agora recebe sinais
286
- # REAIS do _passo (produtores no _ciclo_autorreg_v17). Nascimento
287
- # neutro: ativo=False ⟹ nenhum movimento (v20 exato).
288
- cfg_av17 = dict(getattr(cfg.treino, "autorreg_v17", {}) or {})
289
- self.autorreg_v17 = None
290
- if bool(cfg_av17.get("ativo", False)):
291
- from khtst.aprimoramento.autorregulacao_estendida import (
292
- AutorreguladorEstendido)
293
- self.autorreg_v17 = AutorreguladorEstendido(cfg_av17, hub=self.hub)
294
- self._norma_peso_ref: dict[int, float] = {} # ‖W‖₂ de referência
295
- self._perda_v17_anterior: float | None = None
296
- from collections import deque as _dq
297
- self._clip_v17: _dq = _dq(maxlen=100) # flags de clip
298
  # v20 (doc 32 §§7/9) — PID do balanceamento MoE (Teo 32.10,
299
  # requisito 1.8/2.7) e GuardaRuntime de RAM (Teo 32.12, requisito
300
  # 3.6) — ambos NASCIMENTO NEUTRO (ativo=False ⟹ v19 exato)
@@ -510,65 +503,6 @@ class TreinadorExtensao(MixinLR, MixinPerdas, MixinEstado, MixinFases):
510
 
511
  # ---------------- um passo (PCGrad CE × auxiliares) ----------------
512
  # ------------------------------------------------------------------
513
- # v21 — TABELA v17 DE 18 SINAIS (doc 33 §5, Teo 33.14; requisito do
514
- # PLANO item 6): produtores REAIS para o AutorreguladorEstendido.
515
- # HONESTIDADE (§11 doc 33): o treinador produz AQUI 8 dos 18 sinais —
516
- # os outros 10 (deriva_seg_momento, razao_update_grad,
517
- # razao_momentum_grad, razao_rms_mecanismos, margem_abmo_norm,
518
- # taxa_aceitacao_ciar, taxa_expansao, taxa_prune, ativacao_som,
519
- # tau_qk-produtor próprio) ficam com SINAL 0 (controlador não move):
520
- # não há produtor barato e honesto para eles sem instrumentar os
521
- # mecanismos internos (AdamW segundos momentos, CIAR, crescimento).
522
- # Inventar proxies não calibrados violaria a regra de sinais ∈ [−1,1]
523
- # do projeto (Teo 29.16).
524
- def _ciclo_autorreg_v17(self, perda_valor: float) -> None:
525
- tel = {}
526
- # var_grad_norm — CV² da norma do gradiente (proxy de curvatura
527
- # barulhenta; alvo 1.0 conforme a tabela Teo 29.16)
528
- janela = self.hub.janela("grad_norm", 50)
529
- if len(janela) >= 8:
530
- m = sum(janela) / len(janela)
531
- var = sum((v - m) ** 2 for v in janela) / len(janela)
532
- tel["var_grad_norm"] = var / max(m * m, 1e-12)
533
- # norma_peso — ‖W‖₂(amostra)/‖W‖₂(ref inicial): deriva de norma
534
- # (alvo 1.0 = estável; crescimento ⟹ wd sobe)
535
- if self.passo_global % self.autorreg_v17.a_cada == 0:
536
- norms = []
537
- for i, mod in enumerate(self.modelo.modules()):
538
- for nome, p_ in list(mod.named_parameters(recurse=False)):
539
- if p_.ndim >= 2 and (i + len(norms)) % 7 == 0 and p_.numel() > 0:
540
- with torch.no_grad():
541
- n2 = float(p_.float().norm())
542
- ref = self._norma_peso_ref.get(id(p_))
543
- if ref is None:
544
- self._norma_peso_ref[id(p_)] = max(n2, 1e-12)
545
- else:
546
- norms.append(n2 / max(ref, 1e-12))
547
- if norms:
548
- tel["norma_peso"] = sum(norms) / len(norms)
549
- # taxa_acerto_trust — o EMA do trust do PRS (alvo 0.60 da tabela)
550
- tel["taxa_acerto_trust"] = float(self.prs.trust)
551
- # delta_perda_passo — progresso relativo normalizado (positivo=melhora)
552
- if self._perda_v17_anterior is not None and perda_valor > 0:
553
- ant = self._perda_v17_anterior
554
- tel["delta_perda_passo"] = (ant - perda_valor) / max(ant, 1e-9)
555
- self._perda_v17_anterior = perda_valor
556
- # razao_clip — taxa de passos com clip ativo (alvo 0.10 da tabela)
557
- if len(self._clip_v17) >= 8:
558
- tel["razao_clip"] = sum(self._clip_v17) / len(self._clip_v17)
559
- # razao_moe_ce — L_moe_lb/L_ce do passo (Teo 28.7-ii; alvo 0.5)
560
- if self._razoes_aux.get("moe_lb") is not None:
561
- tel["razao_moe_ce"] = float(self._razoes_aux["moe_lb"])
562
- # logit_max — teto dos logits NoPE (produtor muonclip; Teo 29.15
563
- # bisseção)
564
- lmax = self.hub.janela("muonclip/logit_max", 1)
565
- if lmax:
566
- tel["logit_max"] = float(lmax[-1])
567
- valores = self.autorreg_v17.registrar(tel)
568
- self.autorreg_v17.aplicar_em_otimizador(valores, self.otimizador)
569
- if self.prs is not None:
570
- self.autorreg_v17.aplicar_em_prs(valores, self.prs)
571
-
572
  def _passo(self) -> float:
573
  t0 = time.time()
574
  self.modelo.train()
@@ -708,8 +642,10 @@ class TreinadorExtensao(MixinLR, MixinPerdas, MixinEstado, MixinFases):
708
  # (sem termo não-estacionário); fase B consolida com λ_som
709
  peso_som = 0.0 if self.regime.fase == "A" else self.cfg.treino.lambda_som
710
  if peso_som > 0.0:
711
- # v16 — λ_som autorregulado (Teo 28.7-ii)
712
- peso_som = peso_som * self.autorreg.lambda_escala("som")
 
 
713
  auxiliares.append(self._aux_norm("som", peso_som, perda_som))
714
  if perda_valor > 0:
715
  self._razoes_aux["som"] = float(perda_som) / perda_valor
@@ -830,8 +766,10 @@ class TreinadorExtensao(MixinLR, MixinPerdas, MixinEstado, MixinFases):
830
  self._taxa_ativos_som = None
831
  self.rpp.decidir_reward(self._taxa_ativos_som)
832
  lr = self.rpp.lr_efetivo(lr)
833
- # v9 — CIAR: κ_t limitado (Teorema 20.4 — Robbins–Monro preservado)
834
- lr = lr * self.ciar["kappa"]
 
 
835
  # v16 — autorregulação RM (Teo 28.5/28.7): escala multiplicativa final
836
  lr = lr * self.autorreg.lr_escala()
837
  for gp in self.otimizador.param_groups:
@@ -879,10 +817,13 @@ class TreinadorExtensao(MixinLR, MixinPerdas, MixinEstado, MixinFases):
879
  self.passo_global,
880
  motivo="logit máximo excedeu τ — W_q escalado")
881
  if self.passo_global % 20 == 0 and self.tau_qk is not None:
882
- from khtst.mamba3.hybrid import NoPEAtencao
 
 
 
883
  lmaxes = [float(m.ultimo_logit_max) for m in self.modelo.modules()
884
- if isinstance(m, NoPEAtencao)
885
- and m.ultimo_logit_max is not None]
886
  if lmaxes:
887
  self.hub.atributo("muonclip/logit_max", max(lmaxes),
888
  self.passo_global)
@@ -1070,6 +1011,10 @@ class TreinadorExtensao(MixinLR, MixinPerdas, MixinEstado, MixinFases):
1070
  antes = sum(janela[:meio]) / meio
1071
  depois = sum(janela[meio:]) / (len(janela) - meio)
1072
  delta = depois - antes # < 0 = melhorando
 
 
 
 
1073
  epsilon = float(cfg_a.get("ppl_alvo", 17.0)) * 0.0 + 1e-3
1074
  acoes = {}
1075
  # 1) raio de janela: estagnado ⇒ MAIS contexto (raio ×1,5, cap raio_max);
 
41
  # v18 — REFAATORAÇÃO (requisito §1.1.3/§3.2, doc 30 §0): responsabilidades
42
  # separadas em 4 mixins; esta classe é a FACADE (API pública intacta)
43
  from khtst.treino.treinador_lr import MixinLR
44
+ from khtst.treino.treinador_v22 import MixinV17v22
45
  from khtst.treino.treinador_perdas import MixinPerdas
46
  from khtst.treino.treinador_estado import MixinEstado
47
  from khtst.treino.treinador_fases import MixinFases
 
76
  return torch.from_numpy(y)
77
 
78
 
79
+ class TreinadorExtensao(MixinLR, MixinPerdas, MixinEstado, MixinFases,
80
+ MixinV17v22):
81
  """Facade do treinador (v18): LR/ABMO/CIAR (MixinLR), perdas+PCGrad
82
  (MixinPerdas), estados/checkpoints/gate (MixinEstado), fases/DPO/SOM
83
  (MixinFases). O laço de passos (_passo) e a orquestração ficam aqui.
 
283
  # multiplicativo em log-escala para lr, λ's auxiliares e peso MoE;
284
  # calibração de temperatura na inferência (Teo 28.8)
285
  self.autorreg = Autorregulador(getattr(cfg.treino, "autorreg", {}))
286
+ # v21/v22 — TABELA v17 (Teo 29.16; docs 33 §5 / 34 §§2–5):
287
+ # construção opt-in + estado dos produtores (MixinV17v22 —
288
+ # refatoração estrutural da v22 para o limite <80 KB da
289
+ # suíte v18; movimento VERBATIM — Teo 34.11).
290
+ self._init_estado_v17(cfg)
 
 
 
 
 
 
 
 
 
291
  # v20 (doc 32 §§7/9) — PID do balanceamento MoE (Teo 32.10,
292
  # requisito 1.8/2.7) e GuardaRuntime de RAM (Teo 32.12, requisito
293
  # 3.6) — ambos NASCIMENTO NEUTRO (ativo=False ⟹ v19 exato)
 
503
 
504
  # ---------------- um passo (PCGrad CE × auxiliares) ----------------
505
  # ------------------------------------------------------------------
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
506
  def _passo(self) -> float:
507
  t0 = time.time()
508
  self.modelo.train()
 
642
  # (sem termo não-estacionário); fase B consolida com λ_som
643
  peso_som = 0.0 if self.regime.fase == "A" else self.cfg.treino.lambda_som
644
  if peso_som > 0.0:
645
+ # v16 — λ_som autorregulado (Teo 28.7-ii); v22 (Teo 34.8-ii):
646
+ # multiplicador EXTERNO da tabela v17 (centro 1,0 ⟹ neutro)
647
+ peso_som = peso_som * self.autorreg.lambda_escala("som") \
648
+ * getattr(self, "_peso_som_v17", 1.0)
649
  auxiliares.append(self._aux_norm("som", peso_som, perda_som))
650
  if perda_valor > 0:
651
  self._razoes_aux["som"] = float(perda_som) / perda_valor
 
766
  self._taxa_ativos_som = None
767
  self.rpp.decidir_reward(self._taxa_ativos_som)
768
  lr = self.rpp.lr_efetivo(lr)
769
+ # v9 — CIAR: κ_t limitado (Teorema 20.4 — Robbins–Monro preservado);
770
+ # v22 (Teo 34.7): κ_ext é o multiplicador EXTERNO da tabela v17
771
+ # (centro 1,0 ⟹ neutro; limites ×[0.25,2.5] no applier)
772
+ lr = lr * self.ciar["kappa"] * self.ciar.get("kappa_ext", 1.0)
773
  # v16 — autorregulação RM (Teo 28.5/28.7): escala multiplicativa final
774
  lr = lr * self.autorreg.lr_escala()
775
  for gp in self.otimizador.param_groups:
 
817
  self.passo_global,
818
  motivo="logit máximo excedeu τ — W_q escalado")
819
  if self.passo_global % 20 == 0 and self.tau_qk is not None:
820
+ # v22 (Teo 34.9-ii): filtro por ATRIBUTO (medir_logit +
821
+ # ultimo_logit_max) — generalização defensiva do isinstance
822
+ # (mesma semântica para NoPEAtencao; cobre outros gravadores
823
+ # com o mesmo contrato)
824
  lmaxes = [float(m.ultimo_logit_max) for m in self.modelo.modules()
825
+ if getattr(m, "medir_logit", False)
826
+ and getattr(m, "ultimo_logit_max", None) is not None]
827
  if lmaxes:
828
  self.hub.atributo("muonclip/logit_max", max(lmaxes),
829
  self.passo_global)
 
1011
  antes = sum(janela[:meio]) / meio
1012
  depois = sum(janela[meio:]) / (len(janela) - meio)
1013
  delta = depois - antes # < 0 = melhorando
1014
+ # v22 (Teo 34.7): produtor taxa_aceitacao_ciar — janela ACEITA ⟺
1015
+ # melhora (delta<0); observador puro (só existe com v17 ativo)
1016
+ if getattr(self, "_ciar_aceit", None) is not None:
1017
+ self._ciar_aceit.append(1.0 if delta < 0 else 0.0)
1018
  epsilon = float(cfg_a.get("ppl_alvo", 17.0)) * 0.0 + 1e-3
1019
  acoes = {}
1020
  # 1) raio de janela: estagnado ⇒ MAIS contexto (raio ×1,5, cap raio_max);
src/khtst/treino/treinador_v22.py ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """MixinV17v22 — TABELA v17 DE 18 SINAIS: produtores + ciclo (v21/v22).
3
+
4
+ v18 — REFATORAÇÃO do treinador (doc 30 §0): uma responsabilidade por
5
+ mixin; o `TreinadorExtensao` (facade em treinador.py) compõe os mixins e
6
+ mantém a API pública intacta. v22 (doc 34 §§2–5/§7): extraído do
7
+ treinador.py para devolver o arquivo ao limite <80 KB da suíte v18 —
8
+ MOVIMENTO VERBATIM (refatoração estrutural, não semântica; suítes v18 e
9
+ v22 exercitam as duas faces — Teo 34.11).
10
+
11
+ Conteúdo (docs 33 §5 / 34 §§2–5; Teos 33.14 e 34.2–34.10):
12
+ • _init_estado_v17 — construção opt-in do AutorreguladorEstendido + o
13
+ estado dos produtores (nascimento neutro: ativo=False ⟹ None);
14
+ • _ciclo_autorreg_v17 — os 18 produtores REAIS (v21: 8; v22: +10 —
15
+ estado real do otimizador via observadores puros, contadores SOM,
16
+ folga ABMO, aceitação CIAR, τ_qk fresco) e os 3 adaptadores
17
+ (otimizador / PRS / reguladores do treinador).
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ import torch
23
+
24
+
25
+ class MixinV17v22:
26
+ # ------------------------------------------------------------------
27
+ def _init_estado_v17(self, cfg) -> None:
28
+ """v21/v22 — TABELA v17 (Teo 29.16): o AutorreguladorEstendido
29
+ recebe sinais REAIS do _ciclo_autorreg_v17. Nascimento neutro:
30
+ ativo=False ⟹ None (comportamento v21/v20 exato — Teo 33.14)."""
31
+ cfg_av17 = dict(getattr(cfg.treino, "autorreg_v17", {}) or {})
32
+ self.autorreg_v17 = None
33
+ if bool(cfg_av17.get("ativo", False)):
34
+ from khtst.aprimoramento.autorregulacao_estendida import (
35
+ AutorreguladorEstendido)
36
+ self.autorreg_v17 = AutorreguladorEstendido(cfg_av17, hub=self.hub)
37
+ self._norma_peso_ref: dict[int, float] = {} # ‖W‖₂ de referência
38
+ self._perda_v17_anterior: float | None = None
39
+ from collections import deque as _dq
40
+ self._clip_v17: _dq = _dq(maxlen=100) # flags de clip
41
+ # v22 (doc 34 §§2–4, Teos 34.2–34.9) — estado dos 10 produtores
42
+ # novos: EMA de calibração da deriva, aceitação CIAR, contadores
43
+ # de crescimento anteriores, multiplicador peso_som
44
+ self._ema_deriva_v22: float | None = None
45
+ self._ciar_aceit: _dq = _dq(maxlen=64) # janelas com melhora
46
+ self._cont_cresc_anterior: dict | None = None
47
+ self._peso_som_v17: float = 1.0 # ×1,0 = neutro
48
+
49
+ # v21/v22 — TABELA v17 DE 18 SINAIS (docs 33 §5 e 34 §§2–5; Teos 33.14
50
+ # e 34.2–34.10; requisito do PLANO item 6): produtores REAIS para o
51
+ # AutorreguladorEstendido. v21 produzia 8/18; v22 FECHA 18/18:
52
+ # v21 (8): var_grad_norm, norma_peso, taxa_acerto_trust,
53
+ # delta_perda_passo, razao_clip, razao_moe_ce, logit_max,
54
+ # (ativacao_som declarado mas sem produtor)
55
+ # v22 (+10): deriva_seg_momento, razao_update_grad, razao_momentum_grad,
56
+ # razao_rms_mecanismos (estado REAL do otimizador —
57
+ # observadores puros, Teo 34.1), margem_abmo_norm (folga da
58
+ # barreira), taxa_aceitacao_ciar (janelas com melhora),
59
+ # taxa_expansao/taxa_prune (contadores reais GG/GCS/GSOM),
60
+ # ativacao_som (taxa_ativos_global — qualquer fase) e a
61
+ # leitura PRÓPRIA de logit_max direto dos módulos NoPE
62
+ # (fresca a cada ciclo — Teo 34.9). Todos os sinais ∈ [−1,1]
63
+ # após sinal_razao; SEM proxies inventados (regra Teo 29.16).
64
+ def _ciclo_autorreg_v17(self, perda_valor: float) -> None:
65
+ tel = {}
66
+ # var_grad_norm — CV² da norma do gradiente (proxy de curvatura
67
+ # barulhenta; alvo 1.0 conforme a tabela Teo 29.16)
68
+ janela = self.hub.janela("grad_norm", 50)
69
+ if len(janela) >= 8:
70
+ m = sum(janela) / len(janela)
71
+ var = sum((v - m) ** 2 for v in janela) / len(janela)
72
+ tel["var_grad_norm"] = var / max(m * m, 1e-12)
73
+ # norma_peso — ‖W‖₂(amostra)/‖W‖₂(ref inicial): deriva de norma
74
+ # (alvo 1.0 = estável; crescimento ⟹ wd sobe)
75
+ if self.passo_global % self.autorreg_v17.a_cada == 0:
76
+ norms = []
77
+ for i, mod in enumerate(self.modelo.modules()):
78
+ for nome, p_ in list(mod.named_parameters(recurse=False)):
79
+ if p_.ndim >= 2 and (i + len(norms)) % 7 == 0 and p_.numel() > 0:
80
+ with torch.no_grad():
81
+ n2 = float(p_.float().norm())
82
+ ref = self._norma_peso_ref.get(id(p_))
83
+ if ref is None:
84
+ self._norma_peso_ref[id(p_)] = max(n2, 1e-12)
85
+ else:
86
+ norms.append(n2 / max(ref, 1e-12))
87
+ if norms:
88
+ tel["norma_peso"] = sum(norms) / len(norms)
89
+ # taxa_acerto_trust — o EMA do trust do PRS (alvo 0.60 da tabela)
90
+ tel["taxa_acerto_trust"] = float(self.prs.trust)
91
+ # delta_perda_passo — progresso relativo normalizado (positivo=melhora)
92
+ if self._perda_v17_anterior is not None and perda_valor > 0:
93
+ ant = self._perda_v17_anterior
94
+ tel["delta_perda_passo"] = (ant - perda_valor) / max(ant, 1e-9)
95
+ self._perda_v17_anterior = perda_valor
96
+ # razao_clip — taxa de passos com clip ativo (alvo 0.10 da tabela)
97
+ if len(self._clip_v17) >= 8:
98
+ tel["razao_clip"] = sum(self._clip_v17) / len(self._clip_v17)
99
+ # razao_moe_ce — L_moe_lb/L_ce do passo (Teo 28.7-ii; alvo 0.5)
100
+ if self._razoes_aux.get("moe_lb") is not None:
101
+ tel["razao_moe_ce"] = float(self._razoes_aux["moe_lb"])
102
+ # logit_max — v22 (Teo 34.9): leitura PRÓPRIA e FRESCA do teto dos
103
+ # logits NoPE a cada ciclo (antes: push do hub só a cada 20 passos).
104
+ # O filtro por ATRIBUTO (medir_logit + ultimo_logit_max) cobre NoPEAtencao
105
+ # do tronco E qualquer outro gravador com o mesmo contrato (ex.
106
+ # MixtureOfAttention de percepcao/atencao.py) — generalização
107
+ # defensiva com a MESMA semântica (Teo 34.9).
108
+ lmaxes = [float(m.ultimo_logit_max) for m in self.modelo.modules()
109
+ if getattr(m, "medir_logit", False)
110
+ and getattr(m, "ultimo_logit_max", None) is not None]
111
+ tau_qk_atual = None
112
+ for gp_ in self.otimizador.param_groups:
113
+ if gp_.get("tau_qk") is not None:
114
+ tau_qk_atual = float(gp_["tau_qk"])
115
+ break
116
+ if lmaxes:
117
+ tel["logit_max"] = max(lmaxes)
118
+ self.hub.atributo("muonclip/logit_max", tel["logit_max"],
119
+ self.passo_global)
120
+ if tau_qk_atual:
121
+ # telemetria de atividade do clip (não é controlador)
122
+ frac_clip = sum(1.0 for l in lmaxes if l > tau_qk_atual) \
123
+ / len(lmaxes)
124
+ self.hub.atributo("muonclip/frac_cabecas_acima_tau",
125
+ frac_clip, self.passo_global)
126
+ # ---------------- v22: os 10 produtores restantes ----------------
127
+ # (1–4) estado REAL do otimizador — observadores puros (Teos 34.2–34.5)
128
+ if getattr(self.otimizador, "coletar", False):
129
+ sinais_opt, self._ema_deriva_v22 = \
130
+ self.otimizador.produtor_v22(self._ema_deriva_v22)
131
+ for k_, v_ in sinais_opt.items():
132
+ if k_ != "_rms_g_adam":
133
+ tel[k_] = float(v_)
134
+ else:
135
+ self.hub.atributo("autorreg_v17/_rms_g_adam", float(v_),
136
+ self.passo_global)
137
+ # (5) margem_abmo_norm — folga da barreira cap/lr_base (Teo 34.6)
138
+ if bool(self._abmo.get("ativo", True)) and self._L_hat > 0:
139
+ lr_b = self.lr_base()
140
+ if lr_b > 0:
141
+ cap = (2.0 - float(self._abmo.get("margem", 0.25))) \
142
+ / max(self._L_hat, 1e-6)
143
+ tel["margem_abmo_norm"] = cap / lr_b
144
+ # (6) taxa_aceitacao_ciar — fração de janelas com melhora (Teo 34.7).
145
+ # v22: computada no CADENCE do ciclo (janela da perda do hub, mesma
146
+ # estatística de metades do autoajuste — Teo 19.26), não apenas na
147
+ # cadência lenta do autoajustar; o hook em autoajustar_parametros
148
+ # alimenta o mesmo deque quando roda.
149
+ jan_ci = self.hub.janela("perda/treino", 24)
150
+ if len(jan_ci) >= 16:
151
+ meio = len(jan_ci) // 2
152
+ d_ci = (sum(jan_ci[meio:]) / (len(jan_ci) - meio)
153
+ - sum(jan_ci[:meio]) / meio)
154
+ self._ciar_aceit.append(1.0 if d_ci < 0 else 0.0)
155
+ if len(self._ciar_aceit) >= 4:
156
+ tel["taxa_aceitacao_ciar"] = sum(self._ciar_aceit) \
157
+ / len(self._ciar_aceit)
158
+ # (7–8) taxa_expansao / taxa_prune — diferenças de contadores REAIS
159
+ # de inserção/poda entre ciclos, normalizadas por unidades (Teo 34.8)
160
+ if self.orquestrador is not None and \
161
+ hasattr(self.orquestrador, "contadores_crescimento"):
162
+ cont = self.orquestrador.contadores_crescimento()
163
+ if self._cont_cresc_anterior is not None:
164
+ d_ins = cont["insercoes"] - self._cont_cresc_anterior["insercoes"]
165
+ d_pod = cont["podas"] - self._cont_cresc_anterior["podas"]
166
+ unid = max(cont["unidades"], 1)
167
+ tel["taxa_expansao"] = max(0.0, d_ins) / unid
168
+ tel["taxa_prune"] = max(0.0, d_pod) / unid
169
+ self._cont_cresc_anterior = cont
170
+ # (9) ativacao_som — taxa REAL de unidades ativas do orquestrador,
171
+ # em QUALQUER fase (a fração existe mesmo sem treino SOM — Teo 34.8)
172
+ if self.orquestrador is not None and \
173
+ hasattr(self.orquestrador, "taxa_ativos_global"):
174
+ try:
175
+ tel["ativacao_som"] = float(
176
+ self.orquestrador.taxa_ativos_global())
177
+ except Exception:
178
+ pass # falha de medição ⟹ sinal ausente (nunca 0 inventado)
179
+ # registrar → aplicar (otimizador + PRS + NOVOS reguladores do
180
+ # treinador: ABMO/CIAR/crescimento/peso_som — Teos 34.6–34.9)
181
+ valores = self.autorreg_v17.registrar(tel)
182
+ self.autorreg_v17.aplicar_em_otimizador(valores, self.otimizador)
183
+ if self.prs is not None:
184
+ self.autorreg_v17.aplicar_em_prs(valores, self.prs)
185
+ self.autorreg_v17.aplicar_em_treinador(valores, self)
tests/test_khtst_v22.py ADDED
@@ -0,0 +1,332 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """SUITE v22 — verificação doc 34 (fechamento 18/18 da tabela v17).
3
+
4
+ Seções:
5
+ §1 Tabela — 18 controladores, centros = constantes de produção (Teo 29.16)
6
+ §2 Otimizador — acumuladores neutros (Teo 34.1) + produtor_v22 (Teos 34.2–34.5)
7
+ §3 SOM — contadores de crescimento reais (Teo 34.8-i)
8
+ §4 Appliers — nascimento neutro por base capturada + clamps (Teo 34.10)
9
+ §5 Treinador — produtores v22 presentes no ciclo + espera configurável
10
+ §6 Dados reais — resultados do A/B scripts/33_teste_v22.py (§8 doc 34)
11
+ """
12
+ import os
13
+ import sys
14
+
15
+ sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "src"))
16
+ sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "src",
17
+ "khtst", "acelerado"))
18
+
19
+ import torch # noqa: E402
20
+
21
+ RAIZ = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
22
+ _OK = 0
23
+ _FALHAS = []
24
+
25
+
26
+ def check(nome, cond, detalhe=""):
27
+ global _OK
28
+ if cond:
29
+ _OK += 1
30
+ print(f" ✓ {nome}" + (f" — {detalhe}" if detalhe else ""))
31
+ else:
32
+ _FALHAS.append(nome)
33
+ print(f" ✗ {nome} — {detalhe}")
34
+
35
+
36
+ print("=" * 76)
37
+ print("SUITE v22 — fechamento 18/18 da tabela v17 (doc 34)")
38
+ print("=" * 76)
39
+
40
+ # =============== §1 tabela (Teo 29.16, fechamento doc 34 §11) =============
41
+ print("§1 Tabela 18/18:")
42
+ from khtst.aprimoramento.autorregulacao_estendida import ( # noqa: E402
43
+ AutorreguladorEstendido)
44
+ from khtst.aprimoramento.controlador_hibrido import ( # noqa: E402
45
+ ControladorBissecao, ControladorHibrido)
46
+
47
+ areg = AutorreguladorEstendido({"ativo": True, "a_cada": 1, "espera": 1})
48
+ check("18 controladores registrados", len(areg._controladores) == 18,
49
+ f"{len(areg._controladores)}")
50
+ check("centros = constantes de produção (nascimento neutro)",
51
+ abs(areg._valor("adamw_beta1") - 0.90) < 1e-9
52
+ and abs(areg._valor("muon_momentum") - 0.95) < 1e-9
53
+ and abs(areg._valor("peso_som") - 0.05) < 1e-9
54
+ and abs(areg._valor("tau_qk") - 100.0) < 1e-9)
55
+ # tabela completa: todo controlador consome ALGUMA chave do produtor
56
+ tel_cheio = {
57
+ "var_grad_norm": 0.9, "deriva_seg_momento": 1.2, "razao_update_grad": 0.7,
58
+ "norma_peso": 1.05, "razao_momentum_grad": 1.3, "razao_rms_mecanismos": 0.8,
59
+ "logit_max": 90.0, "taxa_acerto_trust": 0.5, "delta_perda_passo": 0.02,
60
+ "razao_clip": 0.15, "razao_moe_ce": 0.4, "margem_abmo_norm": 1.4,
61
+ "taxa_aceitacao_ciar": 0.55, "taxa_expansao": 0.01, "taxa_prune": 0.0,
62
+ "ativacao_som": 0.85,
63
+ }
64
+ vals = areg.registrar(tel_cheio)
65
+ check("todos os 18 valores produzidos", len(vals) == 18)
66
+ for _ in range(6): # move além da espera=1
67
+ vals = areg.registrar(tel_cheio)
68
+ mov = {n: c for n, c in areg._controladores.items()
69
+ if isinstance(c, ControladorHibrido)
70
+ and abs(c.valor - c.centro) > 1e-12}
71
+ check("10 sinais novos movem os controladores correspondentes",
72
+ all(n in mov for n in ("adamw_beta2", "adamw_eps", "muon_momentum",
73
+ "muon_escala", "abmo_margem", "ciar_kappa",
74
+ "cresc_expand", "cresc_prune", "peso_som")),
75
+ f"{len(mov)} híbridos movendo")
76
+ tb = areg._controladores["tau_qk"]
77
+ check("τ_qk (bisseção) consome logit_max e fica no conjunto seguro",
78
+ isinstance(tb, ControladorBissecao) and 40.0 <= tb.tau <= 400.0,
79
+ f"τ={tb.tau:.2f}")
80
+ # sinal invertido da poda (Teo 34.8-ii): taxa_prune ABAIXO do alvo ⟹ v↑
81
+ areg_p = AutorreguladorEstendido({"ativo": True, "a_cada": 1, "espera": 1})
82
+ tel_poda_alta = dict(tel_cheio, taxa_prune=0.20) # acima do alvo 0.02
83
+ tel_poda_baixa = dict(tel_cheio, taxa_prune=0.0) # abaixo
84
+ for _ in range(6):
85
+ areg_p.registrar(tel_poda_alta)
86
+ v_alta = areg_p._valor("cresc_prune")
87
+ areg_p2 = AutorreguladorEstendido({"ativo": True, "a_cada": 1, "espera": 1})
88
+ for _ in range(6):
89
+ areg_p2.registrar(tel_poda_baixa)
90
+ v_baixa = areg_p2._valor("cresc_prune")
91
+ check("poda com sinal INVERTIDO: taxa abaixo do alvo ⟹ limiar sobe",
92
+ v_baixa > v_alta, f"{v_baixa:.4f} > {v_alta:.4f}")
93
+
94
+ # =============== §2 otimizador (Teos 34.1–34.5) ============================
95
+ print("§2 Otimizador — acumuladores e produtor_v22:")
96
+ from khtst.treino.otimizadores import MuonClipAdamW # noqa: E402
97
+
98
+ torch.manual_seed(2026)
99
+ lin = torch.nn.Linear(8, 8)
100
+ emb = torch.nn.Embedding(16, 4)
101
+ opt_off = MuonClipAdamW(
102
+ [{"params": [lin.weight], "eh_muon": True},
103
+ {"params": [emb.weight, lin.bias], "eh_muon": False}], lr=1e-3)
104
+ check("default coletar=False (custo zero — Teo 34.1)",
105
+ getattr(opt_off, "coletar", False) is False)
106
+
107
+ # neutralidade bit-a-bit: 3 passos com e sem coleta a partir do MESMO estado
108
+ def _tres_passos(coletar: bool):
109
+ torch.manual_seed(2026)
110
+ lin_ = torch.nn.Linear(8, 8)
111
+ emb_ = torch.nn.Embedding(16, 4)
112
+ o = MuonClipAdamW(
113
+ [{"params": [lin_.weight], "eh_muon": True},
114
+ {"params": [emb_.weight, lin_.bias], "eh_muon": False}],
115
+ lr=1e-3, coletar_metricas=coletar)
116
+ gs = []
117
+ for _ in range(3):
118
+ x = torch.randint(0, 16, (4,))
119
+ perda = lin_(torch.randn(4, 8)).pow(2).mean() + emb_(x).pow(2).mean()
120
+ o.zero_grad(); perda.backward(); o.step()
121
+ gs.append(float(perda.detach()))
122
+ return gs, {k: v.clone() for k, v in lin_.state_dict().items()}, \
123
+ {k: v.clone() for k, v in emb_.state_dict().items()}
124
+
125
+ g1, s1, e1 = _tres_passos(False)
126
+ g2, s2, e2 = _tres_passos(True)
127
+ check("Teo 34.1: trajetória bit-a-bit com coletar=True (perdas)",
128
+ g1 == g2, f"{g1[:2]}")
129
+ check("Teo 34.1: pesos bit-a-bit (Muon e AdamW)",
130
+ all(torch.equal(s1[k], s2[k]) for k in s1)
131
+ and all(torch.equal(e1[k], e2[k]) for k in e1))
132
+
133
+ # produtor_v22: faixas honestas
134
+ sinais, ema = opt_off.produtor_v22(None) if opt_off.coletar else ({}, None)
135
+ opt_on = MuonClipAdamW(
136
+ [{"params": [lin.weight], "eh_muon": True},
137
+ {"params": [emb.weight, lin.bias], "eh_muon": False}],
138
+ lr=1e-3, coletar_metricas=True)
139
+ for i in range(10):
140
+ x = torch.randint(0, 16, (4,))
141
+ perda = lin(torch.randn(4, 8)).pow(2).mean() + emb(x).pow(2).mean()
142
+ opt_on.zero_grad(); perda.backward(); opt_on.step()
143
+ sinais, ema = opt_on.produtor_v22(None)
144
+ check("4 sinais do estado REAL presentes",
145
+ all(k in sinais for k in ("razao_update_grad", "deriva_seg_momento",
146
+ "razao_momentum_grad",
147
+ "razao_rms_mecanismos")),
148
+ ", ".join(f"{k}={sinais.get(k, float('nan')):.3f}"
149
+ for k in ("razao_update_grad", "razao_momentum_grad")))
150
+ check("Teo 34.2: razao_update_grad ∈ (0, 1.2]",
151
+ 0.0 < sinais["razao_update_grad"] <= 1.2,
152
+ f"{sinais['razao_update_grad']:.4f}")
153
+ check("Teo 34.4: deriva calibrada perto de 1 (semente = 1ª obs)",
154
+ abs(sinais["deriva_seg_momento"] - 1.0) < 1e-9)
155
+ check("Teo 34.3: razao_momentum_grad > 0 (piso estacionário)",
156
+ sinais["razao_momentum_grad"] > 0,
157
+ f"{sinais['razao_momentum_grad']:.4f}")
158
+ check("Teo 34.5: razao_rms_mecanismos > 0 e finita",
159
+ 0.0 < sinais["razao_rms_mecanismos"] < float("inf"),
160
+ f"{sinais['razao_rms_mecanismos']:.4f}")
161
+ # zerar após leitura
162
+ sinais2, _ = opt_on.produtor_v22(ema)
163
+ check("acumuladores zerados após leitura (janela por ciclo)",
164
+ "razao_update_grad" not in sinais2)
165
+
166
+ # =============== §3 SOM (Teo 34.8-i) =======================================
167
+ print("§3 SOM — contadores de crescimento:")
168
+ from khtst.memoria.variantes_crescimento import ( # noqa: E402
169
+ GSOM, GrowingCellStructures, GrowingGrid)
170
+ torch.manual_seed(2026)
171
+ gg = GrowingGrid(4, lado_max=4, lambda_insercao=8)
172
+ gcs = GrowingCellStructures(4, kmax=8, lambda_insercao=8)
173
+ gsom = GSOM(4, max_unidades=10)
174
+ dados_som = torch.randn(160, 4)
175
+ gg.ajustar(dados_som) # ajustar configura total_planejado (Teo 2.1)
176
+ gcs.ajustar(dados_som)
177
+ gsom.ajustar(dados_som)
178
+ check("GG: inserções contadas ⟹ k cresceu com contador",
179
+ gg.n_insercoes > 0 and gg.k == 4 + gg.n_insercoes,
180
+ f"ins={gg.n_insercoes} k={gg.k}")
181
+ check("GCS: inserção/poda contadas (kmax pequeno ⟹ podas)",
182
+ gcs.n_insercoes > 0, f"ins={gcs.n_insercoes} podas={gcs.n_podas}")
183
+ check("GCS: k + podas = 3 + inserções (conservação)",
184
+ gcs.w.shape[0] == 3 + gcs.n_insercoes - gcs.n_podas,
185
+ f"k={gcs.w.shape[0]}")
186
+ check("GSOM: contador presente (observador puro)",
187
+ hasattr(gsom, "n_insercoes") and gsom.n_insercoes >= 0)
188
+ from khtst.memoria.orquestrador import OrquestradorSOM # noqa: E402
189
+
190
+ class _CfgS:
191
+ def __init__(self):
192
+ self.ssom = {"k": 4, "n_classes": 2}
193
+ self.gg = {"lado": 4, "lambda_insercao": 10}
194
+ self.gcs = {"kmax": 8, "lambda_insercao": 10}
195
+ self.gsom = {"sf": 0.35, "max_unidades": 10}
196
+ self.hsom = {"k_nivel1": 4, "k_filho": 2}
197
+ self.tkm = {"k": 4, "lambda_janela": 5}
198
+ self.rsom = {"k": 4, "alpha": 0.2}
199
+ self.cpn = {"k": 4, "eta0": 0.5}
200
+ orq = OrquestradorSOM(4, _CfgS(), hub=None, cfg_atencao=None)
201
+ c0 = orq.contadores_crescimento()
202
+ check("orquestrador: contadores agregados (Teo 34.8)",
203
+ set(c0) == {"insercoes", "podas", "unidades"} and c0["unidades"] > 0,
204
+ str(c0))
205
+ ta = orq.taxa_ativos_global()
206
+ check("ativacao_som real em QUALQUER fase (taxa_ativos_global)",
207
+ 0.0 <= ta <= 1.0, f"A={ta:.3f}")
208
+
209
+ # =============== §4 appliers (Teo 34.10) ===================================
210
+ print("§4 Appliers v22:")
211
+ class _TreinadorFake:
212
+ def __init__(self):
213
+ self._abmo = {"ativo": True, "margem": 0.25}
214
+ self.ciar = {"kappa": 1.0}
215
+ self.orquestrador = orq
216
+ self._peso_som_v17 = 1.0
217
+ tr = _TreinadorFake()
218
+ lambdas_base = {n: v.lambda_ for n, v in orq.variantes.items()
219
+ if hasattr(v, "lambda_")}
220
+ poda_base = orq.variantes["gcs"].util_poda
221
+ areg2 = AutorreguladorEstendido({"ativo": True, "a_cada": 1, "espera": 1})
222
+ vals0 = areg2.registrar(tel_cheio) # 1º ciclo: centros
223
+ t1 = areg2.aplicar_em_treinador(vals0, tr)
224
+ check("1ª aplicação = identidade (nascimento neutro — Teo 34.10-i)",
225
+ abs(tr._abmo["margem"] - 0.25) < 1e-12
226
+ and abs(tr.ciar.get("kappa_ext", 1.0) - 1.0) < 1e-12
227
+ and abs(tr._peso_som_v17 - 1.0) < 1e-12,
228
+ f"margem={tr._abmo['margem']:.4f}")
229
+ for _ in range(6):
230
+ vals = areg2.registrar(tel_cheio)
231
+ t2 = areg2.aplicar_em_treinador(vals, tr)
232
+ check("appliers escrevem valores reais (margem, κ_ext, peso_som)",
233
+ t2 and tr._abmo["margem"] != 0.25 or tr.ciar.get("kappa_ext") != 1.0,
234
+ f"margem={tr._abmo['margem']:.4f} κext={tr.ciar.get('kappa_ext'):.4f} "
235
+ f"peso_som={tr._peso_som_v17:.4f}")
236
+ check("clamp ABMO: margem ≤ 1.0 (cap>0 — Teo 34.6)",
237
+ 0.0 <= tr._abmo["margem"] <= 1.0)
238
+ check("clamp κ_ext ∈ [0.25, 2.5] (Teo 34.7-ii)",
239
+ 0.25 <= tr.ciar["kappa_ext"] <= 2.5)
240
+ check("clamp peso_som ×∈[0.2,4.0] (Teo 34.10-iii)",
241
+ 0.2 <= tr._peso_som_v17 <= 4.0)
242
+ lambdas_antes = {n: orq.variantes[n].lambda_ for n in lambdas_base}
243
+ check("cresc_expand escreve λ_inserção (GG/GCS/GSOM)",
244
+ any(abs(orq.variantes[n].lambda_ - lambdas_base[n]) > 1e-9
245
+ for n in lambdas_base),
246
+ f"{lambdas_base} → {lambdas_antes}")
247
+ check("cresc_prune escreve util_poda (limiar escritável)",
248
+ abs(orq.variantes["gcs"].util_poda - poda_base) > 1e-12,
249
+ f"{poda_base:.4f} → {orq.variantes['gcs'].util_poda:.4f}")
250
+ # adapter tolerante a treinador mínimo
251
+ class _TrMinimo:
252
+ pass
253
+ t3 = areg2.aplicar_em_treinador(vals, _TrMinimo())
254
+ check("adapter tolerante (treinador sem atributos ⟹ nada quebra)",
255
+ isinstance(t3, list))
256
+
257
+ # =============== §5 treinador (produtores no ciclo) ========================
258
+ print("§5 Treinador — produtores v22 no ciclo:")
259
+ # v22 (Teo 34.11): o ciclo vive no MIXIN (refatoração estrutural p/ limite
260
+ # <80 KB da suíte v18); o facade herda — verificar em AMBOS
261
+ src = open(os.path.join(RAIZ, "src", "khtst", "treino", "treinador.py"),
262
+ encoding="utf-8").read()
263
+ srcm = open(os.path.join(RAIZ, "src", "khtst", "treino", "treinador_v22.py"),
264
+ encoding="utf-8").read()
265
+ check("refatoração: mixin com o ciclo + facade herda (Teo 34.11)",
266
+ "class MixinV17v22" in srcm and "MixinV17v22" in src
267
+ and "_init_estado_v17" in src and "_ciclo_autorreg_v17" in srcm)
268
+ check("produtor do estado do otimizador no ciclo",
269
+ "produtor_v22" in srcm and "_ema_deriva_v22" in srcm)
270
+ check("produtor ABMO (margem_abmo_norm = cap/lr_base)",
271
+ "margem_abmo_norm" in srcm and "cap / lr_b" in srcm)
272
+ check("produtor CIAR (deque de melhora, cadência do ciclo)",
273
+ "_ciar_aceit" in srcm and "perda/treino" in srcm)
274
+ check("produtores SOM (diferença de contadores)",
275
+ "contadores_crescimento" in srcm and "taxa_expansao" in srcm
276
+ and "taxa_prune" in srcm)
277
+ check("ativacao_som via taxa_ativos_global",
278
+ "taxa_ativos_global" in srcm and "ativacao_som" in srcm)
279
+ check("leitura FRESCA de logit_max (filtro por contrato)",
280
+ 'getattr(m, "medir_logit", False)' in srcm
281
+ and 'ultimo_logit_max' in srcm)
282
+ check("κ_ext no lr (composição multiplicativa v9×v22)",
283
+ 'self.ciar.get("kappa_ext", 1.0)' in src)
284
+ check("peso_som × multiplicador v22 (nascimento neutro)",
285
+ '_peso_som_v17' in src and 'getattr(self, "_peso_som_v17", 1.0)' in src)
286
+ from khtst.config import Config # noqa: E402
287
+
288
+ cfg0 = Config()
289
+ check("config: autorreg_v17 default ativo=False (nascimento neutro)",
290
+ dict(cfg0.treino.autorreg_v17).get("ativo") is False)
291
+ check("aplicar_em_treinador chamado no ciclo",
292
+ "aplicar_em_treinador(valores, self)" in srcm)
293
+
294
+ # =============== §6 dados reais (A/B doc 34 §8) ============================
295
+ print("§6 A/B dados reais (resultados do 33_teste_v22.py):")
296
+ res_a = os.path.join(RAIZ, "telemetria_out", "resultado_v22_baseline_v21.json")
297
+ res_b = os.path.join(RAIZ, "telemetria_out", "resultado_v22_v22_ativo.json")
298
+ if os.path.exists(res_a) and os.path.exists(res_b):
299
+ ra = json.load(open(res_a, encoding="utf-8")) if (json := __import__("json")) else None
300
+ rb = json.load(open(res_b, encoding="utf-8"))
301
+ pa, pb = ra["perdas"], rb["perdas"]
302
+ ini_a, fim_a = sum(pa[:4]) / 4, sum(pa[-4:]) / 4
303
+ ini_b, fim_b = sum(pb[:4]) / 4, sum(pb[-4:]) / 4
304
+ check("ambos os braços aprendem com dados reais (ganho ≥ 1.1×)",
305
+ ini_a / fim_a >= 1.1 and ini_b / fim_b >= 1.1,
306
+ f"A {ini_a/fim_a:.3f}× | B {ini_b/fim_b:.3f}×")
307
+ check("braço B com a tabela ativa (18/18)",
308
+ rb.get("autorreg_v17") is True and not ra.get("autorreg_v17"))
309
+ audit = rb.get("auditoria_v22", {})
310
+ novos = ("adamw_beta2", "adamw_eps", "muon_momentum", "muon_escala",
311
+ "abmo_margem", "ciar_kappa", "cresc_expand", "cresc_prune",
312
+ "peso_som", "tau_qk")
313
+ movidos = set(audit.get("movidos", {})) | {"tau_qk"}
314
+ check("10/10 controladores novos com produtor real moveram",
315
+ all(n in movidos for n in novos), f"{len(movidos)}/10")
316
+ check("appliers v22 atuaram (margem ABMO escrita)",
317
+ audit.get("abmo_margem_final") is not None
318
+ and audit.get("abmo_margem_final") != 0.25)
319
+ check("coletar=True no braço B (4 sinais do estado)",
320
+ audit.get("coletar_otimizador") is True)
321
+ cc = audit.get("contadores_crescimento", {})
322
+ check("contadores SOM reais no fim do braço",
323
+ set(cc) == {"insercoes", "podas", "unidades"}, str(cc))
324
+ else:
325
+ print(" (resultados do A/B não encontrados — rode "
326
+ "scripts/33_teste_v22.py antes de julgar §6)")
327
+
328
+ print("=" * 76)
329
+ print(f"RESULTADO: {_OK} ✓ / {len(_FALHAS)} ✗")
330
+ if _FALHAS:
331
+ print("FALHAS:", _FALHAS)
332
+ sys.exit(1 if _FALHAS else 0)