Fast inference engine for Transformer models
This report summarizes scanner evidence for OpenNMT/CTranslate2, a C++ project with 4,729 GitHub stars. SynthScan examined 76,358 lines of code across 303 source files, recording 543 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 6.1 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 463 finding(s).
Are imports declared and package/API names verified? 72 finding(s).
Are wrappers, guards, and repeated structures necessary? 165 finding(s).
Which changes need focused human review? 543 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 543 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/ruy_shutdown_repro/repro.cpp | 1 | // Minimal repro for the Windows Ruy shutdown deadlock (ctranslate2-rs#64 / #2076). | COMMENT |
| LOW | docker/build_all.sh | 1 | #!/bin/bash | COMMENT |
| LOW | python/tests/test_transformers.py | 1281 | # UMT5 has a distinct table per layer: the values must not be copied from layer 0. | COMMENT |
| LOW | python/cpp/utils.h | 1 | #pragma once | COMMENT |
| LOW | include/half_float/half.hpp | 1 | // half - IEEE 754-based half-precision floating-point library. | COMMENT |
| LOW | include/half_float/half.hpp | 21 | COMMENT | |
| LOW | include/half_float/half.hpp | 41 | #endif | COMMENT |
| LOW | include/half_float/half.hpp | 61 | #if HALF_ICC_VERSION >= 1500 && !defined(HALF_ENABLE_CPP11_USER_LITERALS) | COMMENT |
| LOW | include/half_float/half.hpp | 81 | #if HALF_GCC_VERSION >= 407 && !defined(HALF_ENABLE_CPP11_USER_LITERALS) | COMMENT |
| LOW | include/half_float/half.hpp | 101 | #endif | COMMENT |
| LOW | include/half_float/half.hpp | 121 | #endif | COMMENT |
| LOW | include/half_float/half.hpp | 141 | #endif | COMMENT |
| LOW | include/half_float/half.hpp | 161 | #else | COMMENT |
| LOW | include/half_float/half.hpp | 181 | #define HALF_ENABLE_CPP11_TYPE_TRAITS 1 | COMMENT |
| LOW | include/half_float/half.hpp | 201 | #define HALF_ERRHANDLING_THROWS 1 | COMMENT |
| LOW | include/half_float/half.hpp | 221 | #endif | COMMENT |
| LOW | include/half_float/half.hpp | 241 | #define HALF_THREAD_LOCAL static | COMMENT |
| LOW | include/half_float/half.hpp | 261 | #include <cerrno> | COMMENT |
| LOW | include/half_float/half.hpp | 281 | #include <immintrin.h> | COMMENT |
| LOW | include/half_float/half.hpp | 301 | /// [ERANGE](https://en.cppreference.com/w/cpp/error/errno_macros). Inexact errors won't be propagated. | COMMENT |
| LOW | include/half_float/half.hpp | 321 | COMMENT | |
| LOW | include/half_float/half.hpp | 341 | /// These will be raised after any possible handling of the underflow exception. | COMMENT |
| LOW | include/half_float/half.hpp | 361 | /// | COMMENT |
| LOW | include/half_float/half.hpp | 381 | /// **See also:** Documentation for [HUGE_VAL](https://en.cppreference.com/w/cpp/numeric/math/HUGE_VAL) | COMMENT |
| LOW | include/half_float/half.hpp | 401 | #ifndef FP_ILOGBNAN | COMMENT |
| LOW | include/half_float/half.hpp | 421 | #define FE_INVALID 0x10 | COMMENT |
| LOW | include/half_float/half.hpp | 521 | #else | COMMENT |
| LOW | include/half_float/half.hpp | 541 | /// Check for infinity. | COMMENT |
| LOW | include/half_float/half.hpp | 561 | /// \retval false else | COMMENT |
| LOW | include/half_float/half.hpp | 601 | /// Platform-independent arithmetic right shift. | COMMENT |
| LOW | include/half_float/half.hpp | 661 | #endif | COMMENT |
| LOW | include/half_float/half.hpp | 701 | /// \param y second half-precision value to check | COMMENT |
| LOW | include/half_float/half.hpp | 761 | } | COMMENT |
| LOW | include/half_float/half.hpp | 801 | { | COMMENT |
| LOW | include/half_float/half.hpp | 861 | return (abs>0x7C00) ? signal(value) : value; | COMMENT |
| LOW | include/half_float/half.hpp | 981 | fbits &= 0x7FFFFF; | COMMENT |
| LOW | include/half_float/half.hpp | 1301 | /// \param value half-precision value to convert | COMMENT |
| LOW | include/half_float/half.hpp | 1361 | COMMENT | |
| LOW | include/half_float/half.hpp | 1701 | return sign | (((exp+=15)>0) ? (exp<<10) : check_underflow(0x200>>-exp)); | COMMENT |
| LOW | include/half_float/half.hpp | 2041 | /// expressions and functions with mixed-type operands to be of the most precise operand type. | COMMENT |
| LOW | include/half_float/half.hpp | 2061 | /// Default constructor. | COMMENT |
| LOW | include/half_float/half.hpp | 2081 | /// \} | COMMENT |
| LOW | include/half_float/half.hpp | 2101 | /// \param rhs half expression to multiply with | COMMENT |
| LOW | include/half_float/half.hpp | 2121 | /// \return reference to this half | COMMENT |
| LOW | include/half_float/half.hpp | 2141 | /// Prefix increment. | COMMENT |
| LOW | include/half_float/half.hpp | 2261 | friend struct std::hash<half>; | COMMENT |
| LOW | include/half_float/half.hpp | 2461 | /// \param x first operand | COMMENT |
| LOW | include/half_float/half.hpp | 2481 | COMMENT | |
| LOW | include/half_float/half.hpp | 2521 | /// \retval true if \a x greater equal \a y | COMMENT |
| LOW | include/half_float/half.hpp | 2541 | /// \param arg operand | COMMENT |
| LOW | include/half_float/half.hpp | 2601 | /// \exception FE_OVERFLOW, ...UNDERFLOW, ...INEXACT according to rounding | COMMENT |
| LOW | include/half_float/half.hpp | 2681 | /// \anchor streaming | COMMENT |
| LOW | include/half_float/half.hpp | 2701 | /// point numbers (unless overridden with [HALF_ARITHMETIC_TYPE](\ref HALF_ARITHMETIC_TYPE)). So the input string is fi | COMMENT |
| LOW | include/half_float/half.hpp | 2721 | /// \anchor basic | COMMENT |
| LOW | include/half_float/half.hpp | 2801 | /// | COMMENT |
| LOW | include/half_float/half.hpp | 2881 | (y.data_^(0x8000|(0x8000-(y.data_>>15)))))) ? detail::select(y.data_, x.data_) : detail::select(x.data_, y.data_)); | COMMENT |
| LOW | include/half_float/half.hpp | 2921 | } | COMMENT |
| LOW | include/half_float/half.hpp | 2981 | if(abs >= 0x4E40) | COMMENT |
| LOW | include/half_float/half.hpp | 3041 | /// Natural logarithm. | COMMENT |
| LOW | include/half_float/half.hpp | 3061 | return (abs==0x7C00) ? arg : half(detail::binary, detail::signal(arg.data_)); | COMMENT |
| 227 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/tune_inter_intra.py | 35 | def performance_with_parameters(inter_threads, intra_threads): | CODE |
| LOW | python/tests/test_translator.py | 26 | def _get_model_path_with_vmap(tmp_dir, tokens): | CODE |
| LOW | python/tests/test_translator.py | 55 | def test_invalid_device_settings(): | CODE |
| LOW | python/tests/test_translator.py | 73 | def test_get_supported_compute_types(): | CODE |
| LOW | python/tests/test_translator.py | 80 | def test_translator_properties(): | CODE |
| LOW | python/tests/test_translator.py | 137 | def test_batch_translation_async(): | CODE |
| LOW | python/tests/test_translator.py | 150 | def test_iterable_translation(): | CODE |
| LOW | python/tests/test_translator.py | 208 | def test_token_streaming_exception(): | CODE |
| LOW | python/tests/test_translator.py | 219 | def test_callback_hypothesis_id(): | CODE |
| LOW | python/tests/test_translator.py | 294 | def test_raw_file_translation(tmp_dir): | CODE |
| LOW | python/tests/test_translator.py | 329 | def test_file_translation_with_prefix(tmp_dir): | CODE |
| LOW | python/tests/test_translator.py | 366 | def test_raw_file_translation_with_prefix(tmp_dir): | CODE |
| LOW | python/tests/test_translator.py | 415 | def test_invalid_translation_options(): | CODE |
| LOW | python/tests/test_translator.py | 425 | def test_invalid_translation_options_async(): | CODE |
| LOW | python/tests/test_translator.py | 452 | def test_hard_target_prefix_with_vmap(tmp_dir, beam_size): | CODE |
| LOW | python/tests/test_translator.py | 465 | def test_strongly_biased_target_prefix(beam_size): | CODE |
| LOW | python/tests/test_translator.py | 478 | def test_weakly_biased_target_prefix(beam_size): | CODE |
| LOW | python/tests/test_translator.py | 510 | def test_repetition_penalty_with_vmap(tmp_dir, beam_size): | CODE |
| LOW | python/tests/test_translator.py | 525 | def test_no_repeat_ngram_size_with_vmap(tmp_dir, beam_size): | CODE |
| LOW | python/tests/test_translator.py | 544 | def test_suppress_sequences_with_vmap(tmp_dir, beam_size): | CODE |
| LOW | python/tests/test_translator.py | 583 | def test_min_decoding_length_with_vmap(tmp_dir, beam_size): | CODE |
| LOW | python/tests/test_translator.py | 628 | def test_return_alternatives_with_vmap(tmp_dir): | CODE |
| LOW | python/tests/test_translator.py | 773 | def test_model_unload_while_async_translation(): | CODE |
| LOW | python/tests/test_translator.py | 784 | def test_load_model_from_memory(as_file_object): | CODE |
| LOW | python/tests/test_translator.py | 867 | def test_shutdown_does_not_deadlock(): | CODE |
| LOW | python/tests/test_translator.py | 953 | def test_model_load_does_not_leak_threads(): | CODE |
| LOW | python/tests/test_fairseq.py | 10 | def test_fairseq_model_conversion(tmp_dir): | CODE |
| LOW | python/tests/test_fairseq.py | 45 | def test_fairseq_user_start_token(tmp_dir): | CODE |
| LOW | python/tests/test_opennmt_py.py | 10 | def test_opennmt_py_model_conversion(tmp_dir): | CODE |
| LOW | python/tests/test_opennmt_py.py | 27 | def test_opennmt_py_relative_transformer(tmp_dir): | CODE |
| LOW | python/tests/test_opennmt_py.py | 47 | def test_opennmt_py_relative_transformer_return_alternatives(tmp_dir): | CODE |
| LOW | python/tests/test_opennmt_py.py | 73 | def test_opennmt_py_source_features(tmp_dir, filename): | CODE |
| LOW | python/tests/test_opennmt_py.py | 127 | def test_opennmt_py_transformer_lm(tmp_dir): | CODE |
| LOW | python/tests/test_alias_buckets.py | 96 | def test_grouping_matches_original_numpy_and_torch_aliases(): | CODE |
| LOW | python/tests/test_alias_buckets.py | 110 | def test_empty_arrays_keep_original_identity_and_error_behavior(same_object): | CODE |
| LOW | python/tests/test_alias_buckets.py | 129 | def test_distinct_first_values_avoid_quadratic_exact_comparisons(): | CODE |
| LOW | python/tests/test_alias_buckets.py | 152 | def test_matching_eight_value_prefix_still_checks_full_arrays(): | CODE |
| LOW | python/tests/test_alias_buckets.py | 165 | def test_other_models_keep_cross_quantization_aliases(): | CODE |
| LOW | python/tests/test_drama3_model_conversion.py | 46 | def test_explicit_backbone_and_tower_names(self): | CODE |
| LOW | python/tests/test_drama3_model_conversion.py | 144 | def test_missing_or_wrong_source_scale_rejected(self): | CODE |
| LOW | python/tests/test_drama3_model_conversion.py | 170 | def test_depthwise_convolution_preserves_rank_and_flat_chunk_contents(self): | CODE |
| LOW | python/tests/test_drama3_model_conversion.py | 185 | def test_index_exact_coverage_and_path_guards(self): | CODE |
| LOW | python/tests/test_drama3_model_conversion.py | 201 | def test_orphan_scales_and_nonfinite_vectors_rejected(self): | CODE |
| LOW | python/tests/test_misc.py | 26 | def test_import_does_not_load_conversion_dependencies(module_name): | CODE |
| LOW | python/tests/test_misc.py | 41 | def test_wildcard_import_still_exposes_lazy_submodules(): | CODE |
| LOW | python/tests/test_drama3_weights.py | 78 | def test_block_scales_tail_blocks_and_crossing_row_chunks(self): | CODE |
| LOW | python/tests/test_drama3_weights.py | 134 | def test_invalid_scales_and_arguments(self): | CODE |
| LOW | python/tests/test_drama3_weights.py | 163 | def test_rejects_bad_ranges_and_headers(self): | CODE |
| LOW | python/tests/test_drama3_weights.py | 183 | def test_detects_file_change_before_mapping(self): | CODE |
| LOW | python/tests/test_drama3_weights.py | 198 | def test_cross_shard_matrix_scales(self): | CODE |
| LOW | python/tests/test_spec.py | 43 | def test_layer_spec_validate_unset(): | CODE |
| LOW | python/tests/test_spec.py | 266 | def test_smooth_activation_torch(): | CODE |
| LOW | python/tests/test_storage_view.py | 50 | def test_storageview_to_device(): | CODE |
| LOW | python/tests/test_storage_view.py | 89 | def test_storageview_cuda_to_device(): | CODE |
| LOW | python/tests/test_storage_view.py | 103 | def test_storageview_conversion(): | CODE |
| LOW | python/tests/test_storage_view.py | 122 | def test_storageview_readonly(): | CODE |
| LOW | python/tests/test_storage_view.py | 129 | def test_storageview_reference(): | CODE |
| LOW | python/tests/test_drama3_runtime.py | 206 | def test_reference_encoding_requires_encoder_weights(self): | CODE |
| LOW | python/tests/test_drama3_runtime.py | 212 | def test_reference_encoding_rejects_invalid_arrays(self): | CODE |
| LOW | python/tests/test_drama3_runtime.py | 223 | def test_resolved_execution_properties(self): | CODE |
| 87 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/tune_inter_intra.py | 6 | CODE | |
| LOW | python/tests/test_opennmt_tf.py | 7 | CODE | |
| LOW | python/tests/test_opennmt_tf.py | 12 | CODE | |
| LOW | python/ctranslate2/__init__.py | 66 | CODE | |
| LOW | python/ctranslate2/__init__.py | 67 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 32 | CODE | |
| LOW | python/ctranslate2/__init__.py | 55 | CODE | |
| LOW | python/ctranslate2/__init__.py | 55 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 1 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 2 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 2 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 3 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 4 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 4 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 4 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 4 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 10 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 10 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 10 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 10 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 10 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 17 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 18 | CODE | |
| LOW | python/ctranslate2/specs/__init__.py | 19 | CODE | |
| LOW | python/ctranslate2/specs/wav2vec2_spec.py | 1 | CODE | |
| LOW | python/ctranslate2/specs/wav2vec2_spec.py | 1 | CODE | |
| LOW | python/ctranslate2/specs/wav2vec2_spec.py | 1 | CODE | |
| LOW | python/ctranslate2/converters/fairseq.py | 145 | CODE | |
| LOW | python/ctranslate2/converters/transformers.py | 24 | CODE | |
| LOW | python/ctranslate2/converters/converter.py | 8 | CODE | |
| LOW | python/ctranslate2/converters/__init__.py | 1 | CODE | |
| LOW | python/ctranslate2/converters/__init__.py | 2 | CODE | |
| LOW | python/ctranslate2/converters/__init__.py | 3 | CODE | |
| LOW | python/ctranslate2/converters/__init__.py | 4 | CODE | |
| LOW | python/ctranslate2/converters/__init__.py | 5 | CODE | |
| LOW | python/ctranslate2/converters/__init__.py | 6 | CODE | |
| LOW | python/ctranslate2/converters/__init__.py | 7 | CODE | |
| LOW | python/ctranslate2/converters/__init__.py | 8 | CODE | |
| LOW | python/ctranslate2/converters/eole_ct2.py | 164 | CODE | |
| LOW | python/ctranslate2/converters/openai_gpt2.py | 6 | CODE | |
| LOW | python/ctranslate2/models/__init__.py | 6 | CODE | |
| 11 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/benchmark/benchmark.py | 41 | except: | CODE |
| HIGH | python/ctranslate2/__init__.py | 25 | except OSError: | CODE |
| HIGH | python/ctranslate2/converters/transformers.py | 19 | except ImportError: | CODE |
| HIGH | python/ctranslate2/converters/eole_ct2.py | 321 | except KeyError: | CODE |
| HIGH | python/ctranslate2/converters/opennmt_py.py | 332 | except KeyError: | CODE |
| HIGH | docs/conf.py | 81 | except ValueError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/benchmark_tensor_parallel/benchmark.py | 61 | CODE | |
| LOW | python/tests/test_translator.py | 784 | CODE | |
| LOW | python/tests/test_transformers.py | 1218 | CODE | |
| LOW | python/tests/test_drama3_standard_conversion.py | 178 | CODE | |
| LOW | python/ctranslate2/extensions.py | 557 | CODE | |
| LOW | python/ctranslate2/specs/model_spec.py | 101 | CODE | |
| LOW | python/ctranslate2/specs/model_spec.py | 191 | CODE | |
| LOW | python/ctranslate2/specs/model_spec.py | 109 | CODE | |
| LOW | python/ctranslate2/specs/model_spec.py | 199 | CODE | |
| LOW | python/ctranslate2/specs/drama3_spec.py | 44 | CODE | |
| LOW | python/ctranslate2/specs/attention_spec.py | 18 | CODE | |
| LOW | python/ctranslate2/converters/drama3_codec.py | 25 | CODE | |
| LOW | python/ctranslate2/converters/opennmt_tf.py | 92 | CODE | |
| LOW | python/ctranslate2/converters/transformers.py | 723 | CODE | |
| LOW | python/ctranslate2/converters/marian.py | 118 | CODE | |
| LOW | python/ctranslate2/converters/drama3_weights.py | 96 | CODE | |
| LOW | docs/generate.py | 98 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/ctranslate2/extensions.py | 204 | CODE | |
| LOW | python/ctranslate2/extensions.py | 270 | CODE | |
| LOW | python/ctranslate2/extensions.py | 351 | CODE | |
| LOW | python/ctranslate2/specs/transformer_spec.py | 11 | CODE | |
| LOW | python/ctranslate2/specs/transformer_spec.py | 118 | CODE | |
| LOW | python/ctranslate2/specs/transformer_spec.py | 296 | CODE | |
| LOW | python/ctranslate2/specs/transformer_spec.py | 347 | CODE | |
| LOW | python/ctranslate2/specs/transformer_spec.py | 499 | CODE | |
| LOW | python/ctranslate2/specs/transformer_spec.py | 629 | CODE | |
| LOW | python/ctranslate2/specs/attention_spec.py | 18 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | python/ctranslate2/converters/transformers.py | 1651 | encoder.pos_conv_embed.conv.weight.data.float() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/benchmark_tensor_parallel/benchmark.py | 157 | # Open the file in read mode | COMMENT |
| LOW | python/ctranslate2/converters/transformers.py | 2803 | # Set it to 0 so the decoder processes all tokens at once; per-layer sliding_window | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/ctranslate2/extensions.py | 501 | except Exception as e: | CODE |
| MEDIUM | python/ctranslate2/extensions.py | 497 | def _catch_exception(): | CODE |