From 7f13a06789fe49836aa1ea87504ac6ed7adae6a6 Mon Sep 17 00:00:00 2001 From: sebastianMindee <130448732+sebastianMindee@users.noreply.github.com> Date: Wed, 15 Jul 2026 16:39:22 +0200 Subject: [PATCH 1/3] :bug: fix file alias being sent as an invalid parameter --- lib/mindee/input/base_parameters.rb | 2 +- lib/mindee/v2/http/mindee_api_v2.rb | 2 +- .../v2/product/extraction/params/extraction_parameters.rb | 2 +- sig/mindee/input/base_parameters.rbs | 6 +++--- sig/mindee/v2/client.rbs | 4 ++-- .../classification_parameters/classification_parameters.rbs | 2 +- .../product/crop/params/crop_parameters/crop_parameters.rbs | 2 +- .../v2/product/extraction/params/extraction_parameters.rbs | 2 +- .../v2/product/ocr/params/ocr_parameters/ocr_parameters.rbs | 2 +- .../split/params/split_parameters/split_parameters.rbs | 2 +- spec/v2/client_v2_integration.rb | 1 + 11 files changed, 14 insertions(+), 13 deletions(-) diff --git a/lib/mindee/input/base_parameters.rb b/lib/mindee/input/base_parameters.rb index 9da06e006..a9ce79183 100644 --- a/lib/mindee/input/base_parameters.rb +++ b/lib/mindee/input/base_parameters.rb @@ -101,7 +101,7 @@ def self.load_from_hash(params: {}) # @param [Array] form_data Array of form fields # @return [Array] def append_form_data(form_data) - form_data.push(['file_alias', @file_alias]) if @file_alias + form_data.push(['alias', @file_alias]) if @file_alias webhook_ids = @webhook_ids || [] form_data.push(['webhook_ids', webhook_ids.join(',')]) unless @webhook_ids.nil? || webhook_ids.empty? form_data diff --git a/lib/mindee/v2/http/mindee_api_v2.rb b/lib/mindee/v2/http/mindee_api_v2.rb index 29631f18c..a51c9580c 100644 --- a/lib/mindee/v2/http/mindee_api_v2.rb +++ b/lib/mindee/v2/http/mindee_api_v2.rb @@ -203,7 +203,7 @@ def enqueue(input_source, params) [['file', file_data, file_metadata]] # : Array[Array[untyped]] end form_data.push(['model_id', params.model_id]) - form_data.push ['file_alias', params.file_alias] if params.file_alias + form_data.push ['alias', params.file_alias] if params.file_alias if params.is_a?(V2::Product::Extraction::Params::ExtractionParameters) form_data = enqueue_form_options(form_data, params) end diff --git a/lib/mindee/v2/product/extraction/params/extraction_parameters.rb b/lib/mindee/v2/product/extraction/params/extraction_parameters.rb index ab7824763..00886e85a 100644 --- a/lib/mindee/v2/product/extraction/params/extraction_parameters.rb +++ b/lib/mindee/v2/product/extraction/params/extraction_parameters.rb @@ -46,7 +46,7 @@ def self.slug # @param [String, nil] file_alias File alias, if applicable. # @param [Array, nil] webhook_ids # @param [String, nil] text_context - # @param [Hash, PollingOptions, nil] polling_options + # @param [Hash, Input::PollingOptions, nil] polling_options # @param [Boolean, nil] close_file # @param [DataSchemaField, String, Hash nil] data_schema def initialize( diff --git a/sig/mindee/input/base_parameters.rbs b/sig/mindee/input/base_parameters.rbs index cae0a84e0..1a223afbf 100644 --- a/sig/mindee/input/base_parameters.rbs +++ b/sig/mindee/input/base_parameters.rbs @@ -20,17 +20,17 @@ module Mindee String, ?file_alias: String?, ?webhook_ids: Array[String]?, - ?polling_options: Hash[Symbol | String, untyped] | PollingOptions?, + ?polling_options: Hash[Symbol | String, untyped] | PollingOptions | nil, ?close_file: bool? ) -> void def append_form_data: (Array[Array[untyped]]) -> Array[Array[untyped]] def validate_async_params: () -> void - def polling_options=: (Hash[Symbol | String, untyped] | PollingOptions?) -> PollingOptions + def polling_options=: (Hash[Symbol | String, untyped] | PollingOptions | nil) -> PollingOptions private - def get_clean_polling_options: (Hash[String | Symbol, untyped] | PollingOptions?) -> PollingOptions + def get_clean_polling_options: (Hash[String | Symbol, untyped] | PollingOptions | nil) -> PollingOptions end end end diff --git a/sig/mindee/v2/client.rbs b/sig/mindee/v2/client.rbs index e65868344..625d97400 100644 --- a/sig/mindee/v2/client.rbs +++ b/sig/mindee/v2/client.rbs @@ -17,13 +17,13 @@ module Mindee def enqueue: [T] (HTTP::_ProductClass[T] product, Input::Source::LocalInputSource | Input::Source::URLInputSource, Hash[String | Symbol, untyped] | Input::BaseParameters params) -> V2::Parsing::JobResponse - def enqueue_and_get_result: [T] (HTTP::_ProductClass[T] product, Input::Source::LocalInputSource | Input::Source::URLInputSource, Hash[String | Symbol, untyped] | Input::BaseParameters params, ?Hash[String | Symbol, untyped] | Input::PollingOptions?) -> T + def enqueue_and_get_result: [T] (HTTP::_ProductClass[T] product, Input::Source::LocalInputSource | Input::Source::URLInputSource, Hash[String | Symbol, untyped] | Input::BaseParameters params, ?Hash[String | Symbol, untyped] | Input::PollingOptions | nil) -> T def search_models: (String?, String?) -> Mindee::V2::Parsing::Search::SearchResponse def validate_async_params: (Integer | Float, Integer | Float, Integer) -> void - def normalize_parameters: (singleton(Input::BaseParameters) param_class, Hash[String | Symbol, untyped] | Input::BaseParameters params, ?polling_options: Hash[String | Symbol, untyped] | Input::PollingOptions?) -> Input::BaseParameters + def normalize_parameters: (singleton(Input::BaseParameters) param_class, Hash[String | Symbol, untyped] | Input::BaseParameters params, ?polling_options: Hash[String | Symbol, untyped] | Input::PollingOptions | nil) -> Input::BaseParameters end end end diff --git a/sig/mindee/v2/product/classification/params/classification_parameters/classification_parameters.rbs b/sig/mindee/v2/product/classification/params/classification_parameters/classification_parameters.rbs index 57b319bb8..638d4c1d2 100644 --- a/sig/mindee/v2/product/classification/params/classification_parameters/classification_parameters.rbs +++ b/sig/mindee/v2/product/classification/params/classification_parameters/classification_parameters.rbs @@ -12,7 +12,7 @@ module Mindee String, ?file_alias: String?, ?webhook_ids: Array[String]?, - ?polling_options: Hash[Symbol | String, untyped] | Input::PollingOptions?, + ?polling_options: Hash[Symbol | String, untyped] | Input::PollingOptions | nil, ?close_file: bool? ) -> void end diff --git a/sig/mindee/v2/product/crop/params/crop_parameters/crop_parameters.rbs b/sig/mindee/v2/product/crop/params/crop_parameters/crop_parameters.rbs index 1aad2a97c..4642adbde 100644 --- a/sig/mindee/v2/product/crop/params/crop_parameters/crop_parameters.rbs +++ b/sig/mindee/v2/product/crop/params/crop_parameters/crop_parameters.rbs @@ -12,7 +12,7 @@ module Mindee String, ?file_alias: String?, ?webhook_ids: Array[String]?, - ?polling_options: Hash[Symbol | String, untyped] | Input::PollingOptions?, + ?polling_options: Hash[Symbol | String, untyped] | Input::PollingOptions | nil, ?close_file: bool? ) -> void end diff --git a/sig/mindee/v2/product/extraction/params/extraction_parameters.rbs b/sig/mindee/v2/product/extraction/params/extraction_parameters.rbs index 79eb23878..3ec957801 100644 --- a/sig/mindee/v2/product/extraction/params/extraction_parameters.rbs +++ b/sig/mindee/v2/product/extraction/params/extraction_parameters.rbs @@ -23,7 +23,7 @@ module Mindee ?file_alias: String?, ?text_context: String?, ?webhook_ids: Array[String]?, - ?polling_options: Hash[Symbol | String, untyped] | Input::PollingOptions?, + ?polling_options: Hash[Symbol | String, untyped] | Input::PollingOptions | nil, ?close_file: bool?, ?data_schema: V2::Product::Extraction::Params::DataSchema|String|Hash[Symbol | String, untyped]? ) -> void diff --git a/sig/mindee/v2/product/ocr/params/ocr_parameters/ocr_parameters.rbs b/sig/mindee/v2/product/ocr/params/ocr_parameters/ocr_parameters.rbs index a2df6f1ad..6c5f4c678 100644 --- a/sig/mindee/v2/product/ocr/params/ocr_parameters/ocr_parameters.rbs +++ b/sig/mindee/v2/product/ocr/params/ocr_parameters/ocr_parameters.rbs @@ -12,7 +12,7 @@ module Mindee String, ?file_alias: String?, ?webhook_ids: Array[String]?, - ?polling_options: Hash[Symbol | String, untyped] | Input::PollingOptions?, + ?polling_options: Hash[Symbol | String, untyped] | Input::PollingOptions | nil, ?close_file: bool? ) -> void end diff --git a/sig/mindee/v2/product/split/params/split_parameters/split_parameters.rbs b/sig/mindee/v2/product/split/params/split_parameters/split_parameters.rbs index 7011b3ca1..4518f0abd 100644 --- a/sig/mindee/v2/product/split/params/split_parameters/split_parameters.rbs +++ b/sig/mindee/v2/product/split/params/split_parameters/split_parameters.rbs @@ -12,7 +12,7 @@ module Mindee String, ?file_alias: String?, ?webhook_ids: Array[String]?, - ?polling_options: Hash[Symbol | String, untyped] | Input::PollingOptions?, + ?polling_options: Hash[Symbol | String, untyped] | Input::PollingOptions | nil, ?close_file: bool? ) -> void end diff --git a/spec/v2/client_v2_integration.rb b/spec/v2/client_v2_integration.rb index 740f8b9e6..226531bd3 100644 --- a/spec/v2/client_v2_integration.rb +++ b/spec/v2/client_v2_integration.rb @@ -95,6 +95,7 @@ response = client.enqueue_and_get_result(Mindee::V2::Product::Extraction::Extraction, input, inference_params) expect(response).not_to be_nil expect(response.inference).not_to be_nil + expect(response.inference.file.alias).to eq('rb_integration_test') end it 'parses a filled single-page image successfully' do From 063d3c0d82e1593b201408c46757f2980a573c15 Mon Sep 17 00:00:00 2001 From: sebastianMindee <130448732+sebastianMindee@users.noreply.github.com> Date: Wed, 15 Jul 2026 17:06:45 +0200 Subject: [PATCH 2/3] fix file alias duplicate --- lib/mindee/pdf/pdf_tools.rb | 2 +- lib/mindee/v2/http/mindee_api_v2.rb | 1 - spec/v2/client_v2_integration.rb | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/mindee/pdf/pdf_tools.rb b/lib/mindee/pdf/pdf_tools.rb index 5fd62cf9a..3be6b6668 100644 --- a/lib/mindee/pdf/pdf_tools.rb +++ b/lib/mindee/pdf/pdf_tools.rb @@ -51,7 +51,7 @@ def self.stream_has_text?(stream) return false if data.nil? || data.empty? text_operators = ['Tc', 'Tw', 'Th', 'TL', 'Tf', 'Tk', 'Tr', 'Tm', 'T*', 'Tj', 'TJ', "'", '"'] - text_operators.any? { |op| data.include?(op) } + text_operators.intersect?(data) end # Checks whether a stream contains a PDF header near the beginning. diff --git a/lib/mindee/v2/http/mindee_api_v2.rb b/lib/mindee/v2/http/mindee_api_v2.rb index a51c9580c..436ee0885 100644 --- a/lib/mindee/v2/http/mindee_api_v2.rb +++ b/lib/mindee/v2/http/mindee_api_v2.rb @@ -203,7 +203,6 @@ def enqueue(input_source, params) [['file', file_data, file_metadata]] # : Array[Array[untyped]] end form_data.push(['model_id', params.model_id]) - form_data.push ['alias', params.file_alias] if params.file_alias if params.is_a?(V2::Product::Extraction::Params::ExtractionParameters) form_data = enqueue_form_options(form_data, params) end diff --git a/spec/v2/client_v2_integration.rb b/spec/v2/client_v2_integration.rb index 226531bd3..cce9cab28 100644 --- a/spec/v2/client_v2_integration.rb +++ b/spec/v2/client_v2_integration.rb @@ -95,7 +95,7 @@ response = client.enqueue_and_get_result(Mindee::V2::Product::Extraction::Extraction, input, inference_params) expect(response).not_to be_nil expect(response.inference).not_to be_nil - expect(response.inference.file.alias).to eq('rb_integration_test') + expect(response.inference.file.file_alias).to eq('rb_integration_test') end it 'parses a filled single-page image successfully' do From ffdd0b8cdee54c04d4c09c432622c053d39d6ee1 Mon Sep 17 00:00:00 2001 From: sebastianMindee <130448732+sebastianMindee@users.noreply.github.com> Date: Wed, 15 Jul 2026 17:21:18 +0200 Subject: [PATCH 3/3] fix CI? --- .rubocop.yml | 4 ++++ lib/mindee/pdf/pdf_tools.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.rubocop.yml b/.rubocop.yml index cee4fe23d..14601ccc9 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -47,3 +47,7 @@ Metrics/AbcSize: Style/RegexpLiteral: EnforcedStyle: percent_r + +Style/ArrayIntersect: + Exclude: + - 'lib/mindee/pdf/pdf_tools.rb' diff --git a/lib/mindee/pdf/pdf_tools.rb b/lib/mindee/pdf/pdf_tools.rb index 3be6b6668..5fd62cf9a 100644 --- a/lib/mindee/pdf/pdf_tools.rb +++ b/lib/mindee/pdf/pdf_tools.rb @@ -51,7 +51,7 @@ def self.stream_has_text?(stream) return false if data.nil? || data.empty? text_operators = ['Tc', 'Tw', 'Th', 'TL', 'Tf', 'Tk', 'Tr', 'Tm', 'T*', 'Tj', 'TJ', "'", '"'] - text_operators.intersect?(data) + text_operators.any? { |op| data.include?(op) } end # Checks whether a stream contains a PDF header near the beginning.