polars-df 0.8.0-x86_64-linux → 0.10.0-x86_64-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +42 -1
 - data/Cargo.lock +159 -66
 - data/Cargo.toml +0 -3
 - data/LICENSE-THIRD-PARTY.txt +3112 -1613
 - data/LICENSE.txt +1 -1
 - data/README.md +3 -2
 - data/lib/polars/3.1/polars.so +0 -0
 - data/lib/polars/3.2/polars.so +0 -0
 - data/lib/polars/3.3/polars.so +0 -0
 - data/lib/polars/array_expr.rb +453 -0
 - data/lib/polars/array_name_space.rb +346 -0
 - data/lib/polars/batched_csv_reader.rb +4 -2
 - data/lib/polars/cat_expr.rb +24 -0
 - data/lib/polars/cat_name_space.rb +75 -0
 - data/lib/polars/config.rb +2 -2
 - data/lib/polars/data_frame.rb +306 -96
 - data/lib/polars/data_types.rb +191 -28
 - data/lib/polars/date_time_expr.rb +41 -18
 - data/lib/polars/date_time_name_space.rb +9 -3
 - data/lib/polars/exceptions.rb +12 -1
 - data/lib/polars/expr.rb +898 -215
 - data/lib/polars/functions/aggregation/horizontal.rb +246 -0
 - data/lib/polars/functions/aggregation/vertical.rb +282 -0
 - data/lib/polars/functions/as_datatype.rb +248 -0
 - data/lib/polars/functions/col.rb +47 -0
 - data/lib/polars/functions/eager.rb +182 -0
 - data/lib/polars/functions/lazy.rb +1280 -0
 - data/lib/polars/functions/len.rb +49 -0
 - data/lib/polars/functions/lit.rb +35 -0
 - data/lib/polars/functions/random.rb +16 -0
 - data/lib/polars/functions/range/date_range.rb +103 -0
 - data/lib/polars/functions/range/int_range.rb +51 -0
 - data/lib/polars/functions/repeat.rb +144 -0
 - data/lib/polars/functions/whenthen.rb +96 -0
 - data/lib/polars/functions.rb +29 -416
 - data/lib/polars/group_by.rb +2 -2
 - data/lib/polars/io.rb +36 -31
 - data/lib/polars/lazy_frame.rb +405 -88
 - data/lib/polars/list_expr.rb +158 -8
 - data/lib/polars/list_name_space.rb +102 -0
 - data/lib/polars/meta_expr.rb +175 -7
 - data/lib/polars/series.rb +282 -41
 - data/lib/polars/string_cache.rb +75 -0
 - data/lib/polars/string_expr.rb +413 -96
 - data/lib/polars/string_name_space.rb +4 -4
 - data/lib/polars/testing.rb +507 -0
 - data/lib/polars/utils.rb +106 -8
 - data/lib/polars/version.rb +1 -1
 - data/lib/polars/whenthen.rb +83 -0
 - data/lib/polars.rb +16 -4
 - metadata +34 -6
 - data/lib/polars/lazy_functions.rb +0 -1181
 - data/lib/polars/when.rb +0 -16
 - data/lib/polars/when_then.rb +0 -19
 
    
        data/lib/polars/data_types.rb
    CHANGED
    
    | 
         @@ -1,24 +1,122 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Polars
         
     | 
| 
       2 
2 
     | 
    
         
             
              # Base class for all Polars data types.
         
     | 
| 
       3 
3 
     | 
    
         
             
              class DataType
         
     | 
| 
      
 4 
     | 
    
         
            +
                # Return this DataType's fundamental/root type class.
         
     | 
| 
      
 5 
     | 
    
         
            +
                #
         
     | 
| 
      
 6 
     | 
    
         
            +
                # @return [Class]
         
     | 
| 
      
 7 
     | 
    
         
            +
                #
         
     | 
| 
      
 8 
     | 
    
         
            +
                # @example
         
     | 
| 
      
 9 
     | 
    
         
            +
                #   Polars::Datetime.new("ns").base_type
         
     | 
| 
      
 10 
     | 
    
         
            +
                #   # => Polars::Datetime
         
     | 
| 
      
 11 
     | 
    
         
            +
                # @example
         
     | 
| 
      
 12 
     | 
    
         
            +
                #   Polars::List.new(Polars::Int32).base_type
         
     | 
| 
      
 13 
     | 
    
         
            +
                #   # => Polars::List
         
     | 
| 
      
 14 
     | 
    
         
            +
                # @example
         
     | 
| 
      
 15 
     | 
    
         
            +
                #   Polars::Struct.new([Polars::Field.new("a", Polars::Int64), Polars::Field.new("b", Polars::Boolean)]).base_type
         
     | 
| 
      
 16 
     | 
    
         
            +
                #   # => Polars::Struct
         
     | 
| 
       4 
17 
     | 
    
         
             
                def self.base_type
         
     | 
| 
       5 
18 
     | 
    
         
             
                  self
         
     | 
| 
       6 
19 
     | 
    
         
             
                end
         
     | 
| 
       7 
20 
     | 
    
         | 
| 
      
 21 
     | 
    
         
            +
                # Return this DataType's fundamental/root type class.
         
     | 
| 
      
 22 
     | 
    
         
            +
                #
         
     | 
| 
      
 23 
     | 
    
         
            +
                # @return [Class]
         
     | 
| 
       8 
24 
     | 
    
         
             
                def base_type
         
     | 
| 
       9 
25 
     | 
    
         
             
                  is_a?(DataType) ? self.class : self
         
     | 
| 
       10 
26 
     | 
    
         
             
                end
         
     | 
| 
       11 
27 
     | 
    
         | 
| 
      
 28 
     | 
    
         
            +
                # Check if this DataType is the same as another DataType.
         
     | 
| 
      
 29 
     | 
    
         
            +
                #
         
     | 
| 
      
 30 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 31 
     | 
    
         
            +
                def self.==(other)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  eql?(other) || other.is_a?(self)
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                # Check if this DataType is the same as another DataType.
         
     | 
| 
      
 36 
     | 
    
         
            +
                #
         
     | 
| 
      
 37 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 38 
     | 
    
         
            +
                def ==(other)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  if other.is_a?(Class)
         
     | 
| 
      
 40 
     | 
    
         
            +
                    is_a?(other)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  else
         
     | 
| 
      
 42 
     | 
    
         
            +
                    other.instance_of?(self.class)
         
     | 
| 
      
 43 
     | 
    
         
            +
                  end
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                # Check whether the data type is a numeric type.
         
     | 
| 
      
 47 
     | 
    
         
            +
                #
         
     | 
| 
      
 48 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 49 
     | 
    
         
            +
                def self.numeric?
         
     | 
| 
      
 50 
     | 
    
         
            +
                  self < NumericType
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                # Check whether the data type is a decimal type.
         
     | 
| 
      
 54 
     | 
    
         
            +
                #
         
     | 
| 
      
 55 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 56 
     | 
    
         
            +
                def self.decimal?
         
     | 
| 
      
 57 
     | 
    
         
            +
                  self == Decimal
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                # Check whether the data type is an integer type.
         
     | 
| 
      
 61 
     | 
    
         
            +
                #
         
     | 
| 
      
 62 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 63 
     | 
    
         
            +
                def self.integer?
         
     | 
| 
      
 64 
     | 
    
         
            +
                  self < IntegerType
         
     | 
| 
      
 65 
     | 
    
         
            +
                end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                # Check whether the data type is a signed integer type.
         
     | 
| 
      
 68 
     | 
    
         
            +
                #
         
     | 
| 
      
 69 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 70 
     | 
    
         
            +
                def self.signed_integer?
         
     | 
| 
      
 71 
     | 
    
         
            +
                  self < SignedIntegerType
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                # Check whether the data type is an unsigned integer type.
         
     | 
| 
      
 75 
     | 
    
         
            +
                #
         
     | 
| 
      
 76 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 77 
     | 
    
         
            +
                def self.unsigned_integer?
         
     | 
| 
      
 78 
     | 
    
         
            +
                  self < UnsignedIntegerType
         
     | 
| 
      
 79 
     | 
    
         
            +
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                # Check whether the data type is a float type.
         
     | 
| 
      
 82 
     | 
    
         
            +
                #
         
     | 
| 
      
 83 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 84 
     | 
    
         
            +
                def self.float?
         
     | 
| 
      
 85 
     | 
    
         
            +
                  self < FloatType
         
     | 
| 
      
 86 
     | 
    
         
            +
                end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                # Check whether the data type is a temporal type.
         
     | 
| 
      
 89 
     | 
    
         
            +
                #
         
     | 
| 
      
 90 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
      
 91 
     | 
    
         
            +
                def self.temporal?
         
     | 
| 
      
 92 
     | 
    
         
            +
                  self < TemporalType
         
     | 
| 
      
 93 
     | 
    
         
            +
                end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                # Check whether the data type is a nested type.
         
     | 
| 
      
 96 
     | 
    
         
            +
                #
         
     | 
| 
      
 97 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
       12 
98 
     | 
    
         
             
                def self.nested?
         
     | 
| 
       13 
     | 
    
         
            -
                   
     | 
| 
      
 99 
     | 
    
         
            +
                  self < NestedType
         
     | 
| 
       14 
100 
     | 
    
         
             
                end
         
     | 
| 
       15 
101 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
                 
     | 
| 
       17 
     | 
    
         
            -
                   
     | 
| 
      
 102 
     | 
    
         
            +
                [:numeric?, :decimal?, :integer?, :signed_integer?, :unsigned_integer?, :float?, :temporal?, :nested?].each do |v|
         
     | 
| 
      
 103 
     | 
    
         
            +
                  define_method(v) do
         
     | 
| 
      
 104 
     | 
    
         
            +
                    self.class.public_send(v)
         
     | 
| 
      
 105 
     | 
    
         
            +
                  end
         
     | 
| 
       18 
106 
     | 
    
         
             
                end
         
     | 
| 
       19 
107 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                 
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
      
 108 
     | 
    
         
            +
                # Returns a string representing the data type.
         
     | 
| 
      
 109 
     | 
    
         
            +
                #
         
     | 
| 
      
 110 
     | 
    
         
            +
                # @return [String]
         
     | 
| 
      
 111 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 112 
     | 
    
         
            +
                  self.class.name
         
     | 
| 
      
 113 
     | 
    
         
            +
                end
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
                # Returns a string representing the data type.
         
     | 
| 
      
 116 
     | 
    
         
            +
                #
         
     | 
| 
      
 117 
     | 
    
         
            +
                # @return [String]
         
     | 
| 
      
 118 
     | 
    
         
            +
                def inspect
         
     | 
| 
      
 119 
     | 
    
         
            +
                  to_s
         
     | 
| 
       22 
120 
     | 
    
         
             
                end
         
     | 
| 
       23 
121 
     | 
    
         
             
              end
         
     | 
| 
       24 
122 
     | 
    
         | 
| 
         @@ -27,15 +125,22 @@ module Polars 
     | 
|
| 
       27 
125 
     | 
    
         
             
              end
         
     | 
| 
       28 
126 
     | 
    
         | 
| 
       29 
127 
     | 
    
         
             
              # Base class for integral data types.
         
     | 
| 
       30 
     | 
    
         
            -
              class  
     | 
| 
      
 128 
     | 
    
         
            +
              class IntegerType < NumericType
         
     | 
| 
       31 
129 
     | 
    
         
             
              end
         
     | 
| 
       32 
130 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
              #  
     | 
| 
       34 
     | 
    
         
            -
               
     | 
| 
      
 131 
     | 
    
         
            +
              # @private
         
     | 
| 
      
 132 
     | 
    
         
            +
              IntegralType = IntegerType
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
              # Base class for signed integer data types.
         
     | 
| 
      
 135 
     | 
    
         
            +
              class SignedIntegerType < IntegerType
         
     | 
| 
      
 136 
     | 
    
         
            +
              end
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
              # Base class for unsigned integer data types.
         
     | 
| 
      
 139 
     | 
    
         
            +
              class UnsignedIntegerType < IntegerType
         
     | 
| 
       35 
140 
     | 
    
         
             
              end
         
     | 
| 
       36 
141 
     | 
    
         | 
| 
       37 
142 
     | 
    
         
             
              # Base class for float data types.
         
     | 
| 
       38 
     | 
    
         
            -
              class FloatType <  
     | 
| 
      
 143 
     | 
    
         
            +
              class FloatType < NumericType
         
     | 
| 
       39 
144 
     | 
    
         
             
              end
         
     | 
| 
       40 
145 
     | 
    
         | 
| 
       41 
146 
     | 
    
         
             
              # Base class for temporal data types.
         
     | 
| 
         @@ -44,41 +149,38 @@ module Polars 
     | 
|
| 
       44 
149 
     | 
    
         | 
| 
       45 
150 
     | 
    
         
             
              # Base class for nested data types.
         
     | 
| 
       46 
151 
     | 
    
         
             
              class NestedType < DataType
         
     | 
| 
       47 
     | 
    
         
            -
                def self.nested?
         
     | 
| 
       48 
     | 
    
         
            -
                  true
         
     | 
| 
       49 
     | 
    
         
            -
                end
         
     | 
| 
       50 
152 
     | 
    
         
             
              end
         
     | 
| 
       51 
153 
     | 
    
         | 
| 
       52 
154 
     | 
    
         
             
              # 8-bit signed integer type.
         
     | 
| 
       53 
     | 
    
         
            -
              class Int8 <  
     | 
| 
      
 155 
     | 
    
         
            +
              class Int8 < SignedIntegerType
         
     | 
| 
       54 
156 
     | 
    
         
             
              end
         
     | 
| 
       55 
157 
     | 
    
         | 
| 
       56 
158 
     | 
    
         
             
              # 16-bit signed integer type.
         
     | 
| 
       57 
     | 
    
         
            -
              class Int16 <  
     | 
| 
      
 159 
     | 
    
         
            +
              class Int16 < SignedIntegerType
         
     | 
| 
       58 
160 
     | 
    
         
             
              end
         
     | 
| 
       59 
161 
     | 
    
         | 
| 
       60 
162 
     | 
    
         
             
              # 32-bit signed integer type.
         
     | 
| 
       61 
     | 
    
         
            -
              class Int32 <  
     | 
| 
      
 163 
     | 
    
         
            +
              class Int32 < SignedIntegerType
         
     | 
| 
       62 
164 
     | 
    
         
             
              end
         
     | 
| 
       63 
165 
     | 
    
         | 
| 
       64 
166 
     | 
    
         
             
              # 64-bit signed integer type.
         
     | 
| 
       65 
     | 
    
         
            -
              class Int64 <  
     | 
| 
      
 167 
     | 
    
         
            +
              class Int64 < SignedIntegerType
         
     | 
| 
       66 
168 
     | 
    
         
             
              end
         
     | 
| 
       67 
169 
     | 
    
         | 
| 
       68 
170 
     | 
    
         
             
              # 8-bit unsigned integer type.
         
     | 
| 
       69 
     | 
    
         
            -
              class UInt8 <  
     | 
| 
      
 171 
     | 
    
         
            +
              class UInt8 < UnsignedIntegerType
         
     | 
| 
       70 
172 
     | 
    
         
             
              end
         
     | 
| 
       71 
173 
     | 
    
         | 
| 
       72 
174 
     | 
    
         
             
              # 16-bit unsigned integer type.
         
     | 
| 
       73 
     | 
    
         
            -
              class UInt16 <  
     | 
| 
      
 175 
     | 
    
         
            +
              class UInt16 < UnsignedIntegerType
         
     | 
| 
       74 
176 
     | 
    
         
             
              end
         
     | 
| 
       75 
177 
     | 
    
         | 
| 
       76 
178 
     | 
    
         
             
              # 32-bit unsigned integer type.
         
     | 
| 
       77 
     | 
    
         
            -
              class UInt32 <  
     | 
| 
      
 179 
     | 
    
         
            +
              class UInt32 < UnsignedIntegerType
         
     | 
| 
       78 
180 
     | 
    
         
             
              end
         
     | 
| 
       79 
181 
     | 
    
         | 
| 
       80 
182 
     | 
    
         
             
              # 64-bit unsigned integer type.
         
     | 
| 
       81 
     | 
    
         
            -
              class UInt64 <  
     | 
| 
      
 183 
     | 
    
         
            +
              class UInt64 < UnsignedIntegerType
         
     | 
| 
       82 
184 
     | 
    
         
             
              end
         
     | 
| 
       83 
185 
     | 
    
         | 
| 
       84 
186 
     | 
    
         
             
              # 32-bit floating point type.
         
     | 
| 
         @@ -92,7 +194,7 @@ module Polars 
     | 
|
| 
       92 
194 
     | 
    
         
             
              # Decimal 128-bit type with an optional precision and non-negative scale.
         
     | 
| 
       93 
195 
     | 
    
         
             
              #
         
     | 
| 
       94 
196 
     | 
    
         
             
              # NOTE: this is an experimental work-in-progress feature and may not work as expected.
         
     | 
| 
       95 
     | 
    
         
            -
              class Decimal <  
     | 
| 
      
 197 
     | 
    
         
            +
              class Decimal < NumericType
         
     | 
| 
       96 
198 
     | 
    
         
             
                attr_reader :precision, :scale
         
     | 
| 
       97 
199 
     | 
    
         | 
| 
       98 
200 
     | 
    
         
             
                def initialize(precision, scale)
         
     | 
| 
         @@ -123,6 +225,7 @@ module Polars 
     | 
|
| 
       123 
225 
     | 
    
         
             
              class String < DataType
         
     | 
| 
       124 
226 
     | 
    
         
             
              end
         
     | 
| 
       125 
227 
     | 
    
         | 
| 
      
 228 
     | 
    
         
            +
              # @private
         
     | 
| 
       126 
229 
     | 
    
         
             
              # Allow Utf8 as an alias for String
         
     | 
| 
       127 
230 
     | 
    
         
             
              Utf8 = String
         
     | 
| 
       128 
231 
     | 
    
         | 
| 
         @@ -189,6 +292,59 @@ module Polars 
     | 
|
| 
       189 
292 
     | 
    
         | 
| 
       190 
293 
     | 
    
         
             
              # A categorical encoding of a set of strings.
         
     | 
| 
       191 
294 
     | 
    
         
             
              class Categorical < DataType
         
     | 
| 
      
 295 
     | 
    
         
            +
                def initialize(ordering = "physical")
         
     | 
| 
      
 296 
     | 
    
         
            +
                  @ordering = ordering
         
     | 
| 
      
 297 
     | 
    
         
            +
                end
         
     | 
| 
      
 298 
     | 
    
         
            +
              end
         
     | 
| 
      
 299 
     | 
    
         
            +
             
     | 
| 
      
 300 
     | 
    
         
            +
              # A fixed set categorical encoding of a set of strings.
         
     | 
| 
      
 301 
     | 
    
         
            +
              #
         
     | 
| 
      
 302 
     | 
    
         
            +
              # NOTE: this is an experimental work-in-progress feature and may not work as expected.
         
     | 
| 
      
 303 
     | 
    
         
            +
              class Enum < DataType
         
     | 
| 
      
 304 
     | 
    
         
            +
                attr_reader :categories
         
     | 
| 
      
 305 
     | 
    
         
            +
             
     | 
| 
      
 306 
     | 
    
         
            +
                def initialize(categories)
         
     | 
| 
      
 307 
     | 
    
         
            +
                  if !categories.is_a?(Series)
         
     | 
| 
      
 308 
     | 
    
         
            +
                    categories = Series.new(categories)
         
     | 
| 
      
 309 
     | 
    
         
            +
                  end
         
     | 
| 
      
 310 
     | 
    
         
            +
             
     | 
| 
      
 311 
     | 
    
         
            +
                  if categories.empty?
         
     | 
| 
      
 312 
     | 
    
         
            +
                    self.categories = Series.new("category", [], dtype: String)
         
     | 
| 
      
 313 
     | 
    
         
            +
                    return
         
     | 
| 
      
 314 
     | 
    
         
            +
                  end
         
     | 
| 
      
 315 
     | 
    
         
            +
             
     | 
| 
      
 316 
     | 
    
         
            +
                  if categories.null_count > 0
         
     | 
| 
      
 317 
     | 
    
         
            +
                    msg = "Enum categories must not contain null values"
         
     | 
| 
      
 318 
     | 
    
         
            +
                    raise TypeError, msg
         
     | 
| 
      
 319 
     | 
    
         
            +
                  end
         
     | 
| 
      
 320 
     | 
    
         
            +
             
     | 
| 
      
 321 
     | 
    
         
            +
                  if (dtype = categories.dtype) != String
         
     | 
| 
      
 322 
     | 
    
         
            +
                    msg = "Enum categories must be strings; found data of type #{dtype}"
         
     | 
| 
      
 323 
     | 
    
         
            +
                    raise TypeError, msg
         
     | 
| 
      
 324 
     | 
    
         
            +
                  end
         
     | 
| 
      
 325 
     | 
    
         
            +
             
     | 
| 
      
 326 
     | 
    
         
            +
                  if categories.n_unique != categories.len
         
     | 
| 
      
 327 
     | 
    
         
            +
                    duplicate = categories.filter(categories.is_duplicated)[0]
         
     | 
| 
      
 328 
     | 
    
         
            +
                    msg = "Enum categories must be unique; found duplicate #{duplicate}"
         
     | 
| 
      
 329 
     | 
    
         
            +
                    raise ArgumentError, msg
         
     | 
| 
      
 330 
     | 
    
         
            +
                  end
         
     | 
| 
      
 331 
     | 
    
         
            +
             
     | 
| 
      
 332 
     | 
    
         
            +
                  @categories = categories.rechunk.alias("category")
         
     | 
| 
      
 333 
     | 
    
         
            +
                end
         
     | 
| 
      
 334 
     | 
    
         
            +
             
     | 
| 
      
 335 
     | 
    
         
            +
                def ==(other)
         
     | 
| 
      
 336 
     | 
    
         
            +
                  if other.eql?(Enum)
         
     | 
| 
      
 337 
     | 
    
         
            +
                    true
         
     | 
| 
      
 338 
     | 
    
         
            +
                  elsif other.is_a?(Enum)
         
     | 
| 
      
 339 
     | 
    
         
            +
                    categories == other.categories
         
     | 
| 
      
 340 
     | 
    
         
            +
                  else
         
     | 
| 
      
 341 
     | 
    
         
            +
                    false
         
     | 
| 
      
 342 
     | 
    
         
            +
                  end
         
     | 
| 
      
 343 
     | 
    
         
            +
                end
         
     | 
| 
      
 344 
     | 
    
         
            +
             
     | 
| 
      
 345 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 346 
     | 
    
         
            +
                  "#{self.class.name}(categories: #{categories.to_a.inspect})"
         
     | 
| 
      
 347 
     | 
    
         
            +
                end
         
     | 
| 
       192 
348 
     | 
    
         
             
              end
         
     | 
| 
       193 
349 
     | 
    
         | 
| 
       194 
350 
     | 
    
         
             
              # Type for wrapping arbitrary Ruby objects.
         
     | 
| 
         @@ -228,27 +384,34 @@ module Polars 
     | 
|
| 
       228 
384 
     | 
    
         | 
| 
       229 
385 
     | 
    
         
             
              # Nested list/array type.
         
     | 
| 
       230 
386 
     | 
    
         
             
              class Array < NestedType
         
     | 
| 
       231 
     | 
    
         
            -
                attr_reader : 
     | 
| 
      
 387 
     | 
    
         
            +
                attr_reader :inner, :width
         
     | 
| 
       232 
388 
     | 
    
         | 
| 
       233 
     | 
    
         
            -
                def initialize( 
     | 
| 
       234 
     | 
    
         
            -
                   
     | 
| 
      
 389 
     | 
    
         
            +
                def initialize(inner, width)
         
     | 
| 
      
 390 
     | 
    
         
            +
                  if width.is_a?(DataType) || (width.is_a?(Class) && width < DataType)
         
     | 
| 
      
 391 
     | 
    
         
            +
                    inner, width = width, inner
         
     | 
| 
      
 392 
     | 
    
         
            +
                  end
         
     | 
| 
       235 
393 
     | 
    
         
             
                  @inner = Utils.rb_type_to_dtype(inner) if inner
         
     | 
| 
      
 394 
     | 
    
         
            +
                  @width = width
         
     | 
| 
       236 
395 
     | 
    
         
             
                end
         
     | 
| 
       237 
396 
     | 
    
         | 
| 
       238 
     | 
    
         
            -
                # TODO check width?
         
     | 
| 
       239 
397 
     | 
    
         
             
                def ==(other)
         
     | 
| 
       240 
398 
     | 
    
         
             
                  if other.eql?(Array)
         
     | 
| 
       241 
399 
     | 
    
         
             
                    true
         
     | 
| 
       242 
400 
     | 
    
         
             
                  elsif other.is_a?(Array)
         
     | 
| 
       243 
     | 
    
         
            -
                     
     | 
| 
      
 401 
     | 
    
         
            +
                    if @width != other.width
         
     | 
| 
      
 402 
     | 
    
         
            +
                      false
         
     | 
| 
      
 403 
     | 
    
         
            +
                    elsif @inner.nil? || other.inner.nil?
         
     | 
| 
      
 404 
     | 
    
         
            +
                      true
         
     | 
| 
      
 405 
     | 
    
         
            +
                    else
         
     | 
| 
      
 406 
     | 
    
         
            +
                      @inner == other.inner
         
     | 
| 
      
 407 
     | 
    
         
            +
                    end
         
     | 
| 
       244 
408 
     | 
    
         
             
                  else
         
     | 
| 
       245 
409 
     | 
    
         
             
                    false
         
     | 
| 
       246 
410 
     | 
    
         
             
                  end
         
     | 
| 
       247 
411 
     | 
    
         
             
                end
         
     | 
| 
       248 
412 
     | 
    
         | 
| 
       249 
     | 
    
         
            -
                # TODO add width?
         
     | 
| 
       250 
413 
     | 
    
         
             
                def to_s
         
     | 
| 
       251 
     | 
    
         
            -
                  "#{self.class.name}(#{inner})"
         
     | 
| 
      
 414 
     | 
    
         
            +
                  "#{self.class.name}(#{inner}, width: #{width.inspect})"
         
     | 
| 
       252 
415 
     | 
    
         
             
                end
         
     | 
| 
       253 
416 
     | 
    
         
             
              end
         
     | 
| 
       254 
417 
     | 
    
         | 
| 
         @@ -1027,14 +1027,20 @@ module Polars 
     | 
|
| 
       1027 
1027 
     | 
    
         
             
                # Different from `convert_time_zone`, this will also modify
         
     | 
| 
       1028 
1028 
     | 
    
         
             
                # the underlying timestamp,
         
     | 
| 
       1029 
1029 
     | 
    
         
             
                #
         
     | 
| 
       1030 
     | 
    
         
            -
                # @param  
     | 
| 
       1031 
     | 
    
         
            -
                # 
     | 
| 
      
 1030 
     | 
    
         
            +
                # @param time_zone [String]
         
     | 
| 
      
 1031 
     | 
    
         
            +
                #     Time zone for the `Datetime` Series. Pass `nil` to unset time zone.
         
     | 
| 
      
 1032 
     | 
    
         
            +
                # @param use_earliest [Boolean]
         
     | 
| 
      
 1033 
     | 
    
         
            +
                #     Determine how to deal with ambiguous datetimes.
         
     | 
| 
      
 1034 
     | 
    
         
            +
                # @param ambiguous [String]
         
     | 
| 
      
 1035 
     | 
    
         
            +
                #     Determine how to deal with ambiguous datetimes.
         
     | 
| 
      
 1036 
     | 
    
         
            +
                # @param non_existent [String]
         
     | 
| 
      
 1037 
     | 
    
         
            +
                #     Determine how to deal with non-existent datetimes.
         
     | 
| 
       1032 
1038 
     | 
    
         
             
                #
         
     | 
| 
       1033 
1039 
     | 
    
         
             
                # @return [Expr]
         
     | 
| 
       1034 
     | 
    
         
            -
                def replace_time_zone( 
     | 
| 
      
 1040 
     | 
    
         
            +
                def replace_time_zone(time_zone, use_earliest: nil, ambiguous: "raise", non_existent: "raise")
         
     | 
| 
       1035 
1041 
     | 
    
         
             
                  ambiguous = Utils.rename_use_earliest_to_ambiguous(use_earliest, ambiguous)
         
     | 
| 
       1036 
1042 
     | 
    
         
             
                  ambiguous = Polars.lit(ambiguous) unless ambiguous.is_a?(Expr)
         
     | 
| 
       1037 
     | 
    
         
            -
                  Utils.wrap_expr(_rbexpr.dt_replace_time_zone( 
     | 
| 
      
 1043 
     | 
    
         
            +
                  Utils.wrap_expr(_rbexpr.dt_replace_time_zone(time_zone, ambiguous._rbexpr, non_existent))
         
     | 
| 
       1038 
1044 
     | 
    
         
             
                end
         
     | 
| 
       1039 
1045 
     | 
    
         | 
| 
       1040 
1046 
     | 
    
         
             
                # Extract the days from a Duration type.
         
     | 
| 
         @@ -1066,9 +1072,10 @@ module Polars 
     | 
|
| 
       1066 
1072 
     | 
    
         
             
                #   # │ 2020-04-01 00:00:00 ┆ 31        │
         
     | 
| 
       1067 
1073 
     | 
    
         
             
                #   # │ 2020-05-01 00:00:00 ┆ 30        │
         
     | 
| 
       1068 
1074 
     | 
    
         
             
                #   # └─────────────────────┴───────────┘
         
     | 
| 
       1069 
     | 
    
         
            -
                def  
     | 
| 
       1070 
     | 
    
         
            -
                  Utils.wrap_expr(_rbexpr. 
     | 
| 
      
 1075 
     | 
    
         
            +
                def total_days
         
     | 
| 
      
 1076 
     | 
    
         
            +
                  Utils.wrap_expr(_rbexpr.dt_total_days)
         
     | 
| 
       1071 
1077 
     | 
    
         
             
                end
         
     | 
| 
      
 1078 
     | 
    
         
            +
                alias_method :days, :total_days
         
     | 
| 
       1072 
1079 
     | 
    
         | 
| 
       1073 
1080 
     | 
    
         
             
                # Extract the hours from a Duration type.
         
     | 
| 
       1074 
1081 
     | 
    
         
             
                #
         
     | 
| 
         @@ -1100,9 +1107,10 @@ module Polars 
     | 
|
| 
       1100 
1107 
     | 
    
         
             
                #   # │ 2020-01-03 00:00:00 ┆ 24         │
         
     | 
| 
       1101 
1108 
     | 
    
         
             
                #   # │ 2020-01-04 00:00:00 ┆ 24         │
         
     | 
| 
       1102 
1109 
     | 
    
         
             
                #   # └─────────────────────┴────────────┘
         
     | 
| 
       1103 
     | 
    
         
            -
                def  
     | 
| 
       1104 
     | 
    
         
            -
                  Utils.wrap_expr(_rbexpr. 
     | 
| 
      
 1110 
     | 
    
         
            +
                def total_hours
         
     | 
| 
      
 1111 
     | 
    
         
            +
                  Utils.wrap_expr(_rbexpr.dt_total_hours)
         
     | 
| 
       1105 
1112 
     | 
    
         
             
                end
         
     | 
| 
      
 1113 
     | 
    
         
            +
                alias_method :hours, :total_hours
         
     | 
| 
       1106 
1114 
     | 
    
         | 
| 
       1107 
1115 
     | 
    
         
             
                # Extract the minutes from a Duration type.
         
     | 
| 
       1108 
1116 
     | 
    
         
             
                #
         
     | 
| 
         @@ -1134,9 +1142,10 @@ module Polars 
     | 
|
| 
       1134 
1142 
     | 
    
         
             
                #   # │ 2020-01-03 00:00:00 ┆ 1440         │
         
     | 
| 
       1135 
1143 
     | 
    
         
             
                #   # │ 2020-01-04 00:00:00 ┆ 1440         │
         
     | 
| 
       1136 
1144 
     | 
    
         
             
                #   # └─────────────────────┴──────────────┘
         
     | 
| 
       1137 
     | 
    
         
            -
                def  
     | 
| 
       1138 
     | 
    
         
            -
                  Utils.wrap_expr(_rbexpr. 
     | 
| 
      
 1145 
     | 
    
         
            +
                def total_minutes
         
     | 
| 
      
 1146 
     | 
    
         
            +
                  Utils.wrap_expr(_rbexpr.dt_total_minutes)
         
     | 
| 
       1139 
1147 
     | 
    
         
             
                end
         
     | 
| 
      
 1148 
     | 
    
         
            +
                alias_method :minutes, :total_minutes
         
     | 
| 
       1140 
1149 
     | 
    
         | 
| 
       1141 
1150 
     | 
    
         
             
                # Extract the seconds from a Duration type.
         
     | 
| 
       1142 
1151 
     | 
    
         
             
                #
         
     | 
| 
         @@ -1169,9 +1178,10 @@ module Polars 
     | 
|
| 
       1169 
1178 
     | 
    
         
             
                #   # │ 2020-01-01 00:03:00 ┆ 60           │
         
     | 
| 
       1170 
1179 
     | 
    
         
             
                #   # │ 2020-01-01 00:04:00 ┆ 60           │
         
     | 
| 
       1171 
1180 
     | 
    
         
             
                #   # └─────────────────────┴──────────────┘
         
     | 
| 
       1172 
     | 
    
         
            -
                def  
     | 
| 
       1173 
     | 
    
         
            -
                  Utils.wrap_expr(_rbexpr. 
     | 
| 
      
 1181 
     | 
    
         
            +
                def total_seconds
         
     | 
| 
      
 1182 
     | 
    
         
            +
                  Utils.wrap_expr(_rbexpr.dt_total_seconds)
         
     | 
| 
       1174 
1183 
     | 
    
         
             
                end
         
     | 
| 
      
 1184 
     | 
    
         
            +
                alias_method :seconds, :total_seconds
         
     | 
| 
       1175 
1185 
     | 
    
         | 
| 
       1176 
1186 
     | 
    
         
             
                # Extract the milliseconds from a Duration type.
         
     | 
| 
       1177 
1187 
     | 
    
         
             
                #
         
     | 
| 
         @@ -1202,15 +1212,18 @@ module Polars 
     | 
|
| 
       1202 
1212 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.001 ┆ 1                 │
         
     | 
| 
       1203 
1213 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.002 ┆ 1                 │
         
     | 
| 
       1204 
1214 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.003 ┆ 1                 │
         
     | 
| 
      
 1215 
     | 
    
         
            +
                #   # │ 2020-01-01 00:00:00.004 ┆ 1                 │
         
     | 
| 
       1205 
1216 
     | 
    
         
             
                #   # │ …                       ┆ …                 │
         
     | 
| 
      
 1217 
     | 
    
         
            +
                #   # │ 2020-01-01 00:00:00.996 ┆ 1                 │
         
     | 
| 
       1206 
1218 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.997 ┆ 1                 │
         
     | 
| 
       1207 
1219 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.998 ┆ 1                 │
         
     | 
| 
       1208 
1220 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.999 ┆ 1                 │
         
     | 
| 
       1209 
1221 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:01     ┆ 1                 │
         
     | 
| 
       1210 
1222 
     | 
    
         
             
                #   # └─────────────────────────┴───────────────────┘
         
     | 
| 
       1211 
     | 
    
         
            -
                def  
     | 
| 
       1212 
     | 
    
         
            -
                  Utils.wrap_expr(_rbexpr. 
     | 
| 
      
 1223 
     | 
    
         
            +
                def total_milliseconds
         
     | 
| 
      
 1224 
     | 
    
         
            +
                  Utils.wrap_expr(_rbexpr.dt_total_milliseconds)
         
     | 
| 
       1213 
1225 
     | 
    
         
             
                end
         
     | 
| 
      
 1226 
     | 
    
         
            +
                alias_method :milliseconds, :total_milliseconds
         
     | 
| 
       1214 
1227 
     | 
    
         | 
| 
       1215 
1228 
     | 
    
         
             
                # Extract the microseconds from a Duration type.
         
     | 
| 
       1216 
1229 
     | 
    
         
             
                #
         
     | 
| 
         @@ -1241,15 +1254,18 @@ module Polars 
     | 
|
| 
       1241 
1254 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.001 ┆ 1000              │
         
     | 
| 
       1242 
1255 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.002 ┆ 1000              │
         
     | 
| 
       1243 
1256 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.003 ┆ 1000              │
         
     | 
| 
      
 1257 
     | 
    
         
            +
                #   # │ 2020-01-01 00:00:00.004 ┆ 1000              │
         
     | 
| 
       1244 
1258 
     | 
    
         
             
                #   # │ …                       ┆ …                 │
         
     | 
| 
      
 1259 
     | 
    
         
            +
                #   # │ 2020-01-01 00:00:00.996 ┆ 1000              │
         
     | 
| 
       1245 
1260 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.997 ┆ 1000              │
         
     | 
| 
       1246 
1261 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.998 ┆ 1000              │
         
     | 
| 
       1247 
1262 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.999 ┆ 1000              │
         
     | 
| 
       1248 
1263 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:01     ┆ 1000              │
         
     | 
| 
       1249 
1264 
     | 
    
         
             
                #   # └─────────────────────────┴───────────────────┘
         
     | 
| 
       1250 
     | 
    
         
            -
                def  
     | 
| 
       1251 
     | 
    
         
            -
                  Utils.wrap_expr(_rbexpr. 
     | 
| 
      
 1265 
     | 
    
         
            +
                def total_microseconds
         
     | 
| 
      
 1266 
     | 
    
         
            +
                  Utils.wrap_expr(_rbexpr.dt_total_microseconds)
         
     | 
| 
       1252 
1267 
     | 
    
         
             
                end
         
     | 
| 
      
 1268 
     | 
    
         
            +
                alias_method :microseconds, :total_microseconds
         
     | 
| 
       1253 
1269 
     | 
    
         | 
| 
       1254 
1270 
     | 
    
         
             
                # Extract the nanoseconds from a Duration type.
         
     | 
| 
       1255 
1271 
     | 
    
         
             
                #
         
     | 
| 
         @@ -1280,15 +1296,18 @@ module Polars 
     | 
|
| 
       1280 
1296 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.001 ┆ 1000000          │
         
     | 
| 
       1281 
1297 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.002 ┆ 1000000          │
         
     | 
| 
       1282 
1298 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.003 ┆ 1000000          │
         
     | 
| 
      
 1299 
     | 
    
         
            +
                #   # │ 2020-01-01 00:00:00.004 ┆ 1000000          │
         
     | 
| 
       1283 
1300 
     | 
    
         
             
                #   # │ …                       ┆ …                │
         
     | 
| 
      
 1301 
     | 
    
         
            +
                #   # │ 2020-01-01 00:00:00.996 ┆ 1000000          │
         
     | 
| 
       1284 
1302 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.997 ┆ 1000000          │
         
     | 
| 
       1285 
1303 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.998 ┆ 1000000          │
         
     | 
| 
       1286 
1304 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:00.999 ┆ 1000000          │
         
     | 
| 
       1287 
1305 
     | 
    
         
             
                #   # │ 2020-01-01 00:00:01     ┆ 1000000          │
         
     | 
| 
       1288 
1306 
     | 
    
         
             
                #   # └─────────────────────────┴──────────────────┘
         
     | 
| 
       1289 
     | 
    
         
            -
                def  
     | 
| 
       1290 
     | 
    
         
            -
                  Utils.wrap_expr(_rbexpr. 
     | 
| 
      
 1307 
     | 
    
         
            +
                def total_nanoseconds
         
     | 
| 
      
 1308 
     | 
    
         
            +
                  Utils.wrap_expr(_rbexpr.dt_total_nanoseconds)
         
     | 
| 
       1291 
1309 
     | 
    
         
             
                end
         
     | 
| 
      
 1310 
     | 
    
         
            +
                alias_method :nanoseconds, :total_nanoseconds
         
     | 
| 
       1292 
1311 
     | 
    
         | 
| 
       1293 
1312 
     | 
    
         
             
                # Offset this date by a relative time offset.
         
     | 
| 
       1294 
1313 
     | 
    
         
             
                #
         
     | 
| 
         @@ -1372,7 +1391,9 @@ module Polars 
     | 
|
| 
       1372 
1391 
     | 
    
         
             
                #   # │ 2000-02-01 02:00:00 │
         
     | 
| 
       1373 
1392 
     | 
    
         
             
                #   # │ 2000-03-01 02:00:00 │
         
     | 
| 
       1374 
1393 
     | 
    
         
             
                #   # │ 2000-04-01 02:00:00 │
         
     | 
| 
      
 1394 
     | 
    
         
            +
                #   # │ 2000-05-01 02:00:00 │
         
     | 
| 
       1375 
1395 
     | 
    
         
             
                #   # │ …                   │
         
     | 
| 
      
 1396 
     | 
    
         
            +
                #   # │ 2000-08-01 02:00:00 │
         
     | 
| 
       1376 
1397 
     | 
    
         
             
                #   # │ 2000-09-01 02:00:00 │
         
     | 
| 
       1377 
1398 
     | 
    
         
             
                #   # │ 2000-10-01 02:00:00 │
         
     | 
| 
       1378 
1399 
     | 
    
         
             
                #   # │ 2000-11-01 02:00:00 │
         
     | 
| 
         @@ -1408,7 +1429,9 @@ module Polars 
     | 
|
| 
       1408 
1429 
     | 
    
         
             
                #   # │ 2000-02-29 02:00:00 │
         
     | 
| 
       1409 
1430 
     | 
    
         
             
                #   # │ 2000-03-31 02:00:00 │
         
     | 
| 
       1410 
1431 
     | 
    
         
             
                #   # │ 2000-04-30 02:00:00 │
         
     | 
| 
      
 1432 
     | 
    
         
            +
                #   # │ 2000-05-31 02:00:00 │
         
     | 
| 
       1411 
1433 
     | 
    
         
             
                #   # │ …                   │
         
     | 
| 
      
 1434 
     | 
    
         
            +
                #   # │ 2000-08-31 02:00:00 │
         
     | 
| 
       1412 
1435 
     | 
    
         
             
                #   # │ 2000-09-30 02:00:00 │
         
     | 
| 
       1413 
1436 
     | 
    
         
             
                #   # │ 2000-10-31 02:00:00 │
         
     | 
| 
       1414 
1437 
     | 
    
         
             
                #   # │ 2000-11-30 02:00:00 │
         
     | 
| 
         @@ -910,8 +910,14 @@ module Polars 
     | 
|
| 
       910 
910 
     | 
    
         
             
                # Different from `with_time_zone`, this will also modify
         
     | 
| 
       911 
911 
     | 
    
         
             
                # the underlying timestamp.
         
     | 
| 
       912 
912 
     | 
    
         
             
                #
         
     | 
| 
       913 
     | 
    
         
            -
                # @param  
     | 
| 
       914 
     | 
    
         
            -
                # 
     | 
| 
      
 913 
     | 
    
         
            +
                # @param time_zone [String]
         
     | 
| 
      
 914 
     | 
    
         
            +
                #     Time zone for the `Datetime` Series. Pass `nil` to unset time zone.
         
     | 
| 
      
 915 
     | 
    
         
            +
                # @param use_earliest [Boolean]
         
     | 
| 
      
 916 
     | 
    
         
            +
                #     Determine how to deal with ambiguous datetimes.
         
     | 
| 
      
 917 
     | 
    
         
            +
                # @param ambiguous [String]
         
     | 
| 
      
 918 
     | 
    
         
            +
                #     Determine how to deal with ambiguous datetimes.
         
     | 
| 
      
 919 
     | 
    
         
            +
                # @param non_existent [String]
         
     | 
| 
      
 920 
     | 
    
         
            +
                #     Determine how to deal with non-existent datetimes.
         
     | 
| 
       915 
921 
     | 
    
         
             
                #
         
     | 
| 
       916 
922 
     | 
    
         
             
                # @return [Series]
         
     | 
| 
       917 
923 
     | 
    
         
             
                #
         
     | 
| 
         @@ -982,7 +988,7 @@ module Polars 
     | 
|
| 
       982 
988 
     | 
    
         
             
                #   #         1585717200
         
     | 
| 
       983 
989 
     | 
    
         
             
                #   #         1588309200
         
     | 
| 
       984 
990 
     | 
    
         
             
                #   # ]
         
     | 
| 
       985 
     | 
    
         
            -
                def replace_time_zone( 
     | 
| 
      
 991 
     | 
    
         
            +
                def replace_time_zone(time_zone, use_earliest: nil, ambiguous: "raise", non_existent: "raise")
         
     | 
| 
       986 
992 
     | 
    
         
             
                  super
         
     | 
| 
       987 
993 
     | 
    
         
             
                end
         
     | 
| 
       988 
994 
     | 
    
         | 
    
        data/lib/polars/exceptions.rb
    CHANGED
    
    | 
         @@ -1,15 +1,26 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Polars
         
     | 
| 
       2 
2 
     | 
    
         
             
              # @private
         
     | 
| 
      
 3 
     | 
    
         
            +
              # Base class for all Polars errors.
         
     | 
| 
       3 
4 
     | 
    
         
             
              class Error < StandardError; end
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
6 
     | 
    
         
             
              # @private
         
     | 
| 
      
 7 
     | 
    
         
            +
              # Exception raised when an unsupported testing assert is made.
         
     | 
| 
      
 8 
     | 
    
         
            +
              class InvalidAssert < Error; end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              # @private
         
     | 
| 
      
 11 
     | 
    
         
            +
              # Exception raised when the number of returned rows does not match expectation.
         
     | 
| 
       6 
12 
     | 
    
         
             
              class RowsException < Error; end
         
     | 
| 
       7 
13 
     | 
    
         | 
| 
       8 
14 
     | 
    
         
             
              # @private
         
     | 
| 
      
 15 
     | 
    
         
            +
              # Exception raised when no rows are returned, but at least one row is expected.
         
     | 
| 
      
 16 
     | 
    
         
            +
              class NoRowsReturned < RowsException; end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              # @private
         
     | 
| 
      
 19 
     | 
    
         
            +
              # Exception raised when more rows than expected are returned.
         
     | 
| 
       9 
20 
     | 
    
         
             
              class TooManyRowsReturned < RowsException; end
         
     | 
| 
       10 
21 
     | 
    
         | 
| 
       11 
22 
     | 
    
         
             
              # @private
         
     | 
| 
       12 
     | 
    
         
            -
              class  
     | 
| 
      
 23 
     | 
    
         
            +
              class AssertionError < Error; end
         
     | 
| 
       13 
24 
     | 
    
         | 
| 
       14 
25 
     | 
    
         
             
              # @private
         
     | 
| 
       15 
26 
     | 
    
         
             
              class Todo < Error
         
     |