polars-df 0.6.0-x86_64-linux → 0.8.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 +24 -0
- data/Cargo.lock +597 -599
- data/Cargo.toml +1 -0
- data/LICENSE-THIRD-PARTY.txt +4491 -5915
- data/README.md +8 -7
- data/lib/polars/3.1/polars.so +0 -0
- data/lib/polars/3.2/polars.so +0 -0
- data/lib/polars/{3.0 → 3.3}/polars.so +0 -0
- data/lib/polars/config.rb +530 -0
- data/lib/polars/data_frame.rb +182 -145
- data/lib/polars/data_types.rb +4 -1
- data/lib/polars/date_time_expr.rb +23 -28
- data/lib/polars/date_time_name_space.rb +17 -37
- data/lib/polars/dynamic_group_by.rb +2 -2
- data/lib/polars/expr.rb +398 -110
- data/lib/polars/functions.rb +29 -37
- data/lib/polars/group_by.rb +38 -55
- data/lib/polars/io.rb +40 -5
- data/lib/polars/lazy_frame.rb +116 -89
- data/lib/polars/lazy_functions.rb +40 -68
- data/lib/polars/lazy_group_by.rb +7 -8
- data/lib/polars/list_expr.rb +12 -8
- data/lib/polars/list_name_space.rb +2 -2
- data/lib/polars/name_expr.rb +198 -0
- data/lib/polars/rolling_group_by.rb +2 -2
- data/lib/polars/series.rb +315 -43
- data/lib/polars/sql_context.rb +194 -0
- data/lib/polars/string_expr.rb +114 -60
- data/lib/polars/string_name_space.rb +19 -4
- data/lib/polars/struct_expr.rb +1 -1
- data/lib/polars/struct_name_space.rb +1 -1
- data/lib/polars/utils.rb +25 -13
- data/lib/polars/version.rb +1 -1
- data/lib/polars.rb +3 -0
- metadata +8 -5
    
        data/lib/polars/data_types.rb
    CHANGED
    
    | @@ -120,9 +120,12 @@ module Polars | |
| 120 120 | 
             
              end
         | 
| 121 121 |  | 
| 122 122 | 
             
              # UTF-8 encoded string type.
         | 
| 123 | 
            -
              class  | 
| 123 | 
            +
              class String < DataType
         | 
| 124 124 | 
             
              end
         | 
| 125 125 |  | 
| 126 | 
            +
              # Allow Utf8 as an alias for String
         | 
| 127 | 
            +
              Utf8 = String
         | 
| 128 | 
            +
             | 
| 126 129 | 
             
              # Binary type.
         | 
| 127 130 | 
             
              class Binary < DataType
         | 
| 128 131 | 
             
              end
         | 
| @@ -97,15 +97,20 @@ module Polars | |
| 97 97 | 
             
                #   # │ 2001-01-01 00:50:00 ┆ 2001-01-01 00:30:00 │
         | 
| 98 98 | 
             
                #   # │ 2001-01-01 01:00:00 ┆ 2001-01-01 01:00:00 │
         | 
| 99 99 | 
             
                #   # └─────────────────────┴─────────────────────┘
         | 
| 100 | 
            -
                def truncate(every, offset: nil)
         | 
| 100 | 
            +
                def truncate(every, offset: nil, use_earliest: nil)
         | 
| 101 101 | 
             
                  if offset.nil?
         | 
| 102 102 | 
             
                    offset = "0ns"
         | 
| 103 103 | 
             
                  end
         | 
| 104 104 |  | 
| 105 | 
            +
                  if !every.is_a?(Expr)
         | 
| 106 | 
            +
                    every = Utils._timedelta_to_pl_duration(every)
         | 
| 107 | 
            +
                  end
         | 
| 108 | 
            +
                  every = Utils.parse_as_expression(every, str_as_lit: true)
         | 
| 109 | 
            +
             | 
| 105 110 | 
             
                  Utils.wrap_expr(
         | 
| 106 111 | 
             
                    _rbexpr.dt_truncate(
         | 
| 107 | 
            -
                       | 
| 108 | 
            -
                      Utils._timedelta_to_pl_duration(offset)
         | 
| 112 | 
            +
                      every,
         | 
| 113 | 
            +
                      Utils._timedelta_to_pl_duration(offset),
         | 
| 109 114 | 
             
                    )
         | 
| 110 115 | 
             
                  )
         | 
| 111 116 | 
             
                end
         | 
| @@ -360,7 +365,7 @@ module Polars | |
| 360 365 | 
             
                #   # ┌──────┐
         | 
| 361 366 | 
             
                #   # │ date │
         | 
| 362 367 | 
             
                #   # │ ---  │
         | 
| 363 | 
            -
                #   # │  | 
| 368 | 
            +
                #   # │ i8   │
         | 
| 364 369 | 
             
                #   # ╞══════╡
         | 
| 365 370 | 
             
                #   # │ 1    │
         | 
| 366 371 | 
             
                #   # │ 2    │
         | 
| @@ -402,7 +407,7 @@ module Polars | |
| 402 407 | 
             
                #   # ┌──────┐
         | 
| 403 408 | 
             
                #   # │ date │
         | 
| 404 409 | 
             
                #   # │ ---  │
         | 
| 405 | 
            -
                #   # │  | 
| 410 | 
            +
                #   # │ i8   │
         | 
| 406 411 | 
             
                #   # ╞══════╡
         | 
| 407 412 | 
             
                #   # │ 1    │
         | 
| 408 413 | 
             
                #   # │ 2    │
         | 
| @@ -444,7 +449,7 @@ module Polars | |
| 444 449 | 
             
                #   # ┌──────┐
         | 
| 445 450 | 
             
                #   # │ date │
         | 
| 446 451 | 
             
                #   # │ ---  │
         | 
| 447 | 
            -
                #   # │  | 
| 452 | 
            +
                #   # │ i8   │
         | 
| 448 453 | 
             
                #   # ╞══════╡
         | 
| 449 454 | 
             
                #   # │ 1    │
         | 
| 450 455 | 
             
                #   # │ 5    │
         | 
| @@ -491,7 +496,7 @@ module Polars | |
| 491 496 | 
             
                #   # ┌─────────┬──────────────┬─────────────┐
         | 
| 492 497 | 
             
                #   # │ weekday ┆ day_of_month ┆ day_of_year │
         | 
| 493 498 | 
             
                #   # │ ---     ┆ ---          ┆ ---         │
         | 
| 494 | 
            -
                #   # │  | 
| 499 | 
            +
                #   # │ i8      ┆ i8           ┆ i16         │
         | 
| 495 500 | 
             
                #   # ╞═════════╪══════════════╪═════════════╡
         | 
| 496 501 | 
             
                #   # │ 1       ┆ 1            ┆ 1           │
         | 
| 497 502 | 
             
                #   # │ 4       ┆ 4            ┆ 4           │
         | 
| @@ -539,7 +544,7 @@ module Polars | |
| 539 544 | 
             
                #   # ┌─────────┬──────────────┬─────────────┐
         | 
| 540 545 | 
             
                #   # │ weekday ┆ day_of_month ┆ day_of_year │
         | 
| 541 546 | 
             
                #   # │ ---     ┆ ---          ┆ ---         │
         | 
| 542 | 
            -
                #   # │  | 
| 547 | 
            +
                #   # │ i8      ┆ i8           ┆ i16         │
         | 
| 543 548 | 
             
                #   # ╞═════════╪══════════════╪═════════════╡
         | 
| 544 549 | 
             
                #   # │ 1       ┆ 1            ┆ 1           │
         | 
| 545 550 | 
             
                #   # │ 4       ┆ 4            ┆ 4           │
         | 
| @@ -587,7 +592,7 @@ module Polars | |
| 587 592 | 
             
                #   # ┌─────────┬──────────────┬─────────────┐
         | 
| 588 593 | 
             
                #   # │ weekday ┆ day_of_month ┆ day_of_year │
         | 
| 589 594 | 
             
                #   # │ ---     ┆ ---          ┆ ---         │
         | 
| 590 | 
            -
                #   # │  | 
| 595 | 
            +
                #   # │ i8      ┆ i8           ┆ i16         │
         | 
| 591 596 | 
             
                #   # ╞═════════╪══════════════╪═════════════╡
         | 
| 592 597 | 
             
                #   # │ 1       ┆ 1            ┆ 1           │
         | 
| 593 598 | 
             
                #   # │ 4       ┆ 4            ┆ 4           │
         | 
| @@ -649,7 +654,7 @@ module Polars | |
| 649 654 | 
             
                #   # ┌──────┐
         | 
| 650 655 | 
             
                #   # │ date │
         | 
| 651 656 | 
             
                #   # │ ---  │
         | 
| 652 | 
            -
                #   # │  | 
| 657 | 
            +
                #   # │ i8   │
         | 
| 653 658 | 
             
                #   # ╞══════╡
         | 
| 654 659 | 
             
                #   # │ 0    │
         | 
| 655 660 | 
             
                #   # │ 12   │
         | 
| @@ -690,7 +695,7 @@ module Polars | |
| 690 695 | 
             
                #   # ┌──────┐
         | 
| 691 696 | 
             
                #   # │ date │
         | 
| 692 697 | 
             
                #   # │ ---  │
         | 
| 693 | 
            -
                #   # │  | 
| 698 | 
            +
                #   # │ i8   │
         | 
| 694 699 | 
             
                #   # ╞══════╡
         | 
| 695 700 | 
             
                #   # │ 0    │
         | 
| 696 701 | 
             
                #   # │ 2    │
         | 
| @@ -739,7 +744,7 @@ module Polars | |
| 739 744 | 
             
                #   # ┌──────┐
         | 
| 740 745 | 
             
                #   # │ secs │
         | 
| 741 746 | 
             
                #   # │ ---  │
         | 
| 742 | 
            -
                #   # │  | 
| 747 | 
            +
                #   # │ i8   │
         | 
| 743 748 | 
             
                #   # ╞══════╡
         | 
| 744 749 | 
             
                #   # │ 0    │
         | 
| 745 750 | 
             
                #   # │ 3    │
         | 
| @@ -784,7 +789,7 @@ module Polars | |
| 784 789 | 
             
                #   # ┌──────┐
         | 
| 785 790 | 
             
                #   # │ date │
         | 
| 786 791 | 
             
                #   # │ ---  │
         | 
| 787 | 
            -
                #   # │  | 
| 792 | 
            +
                #   # │ i8   │
         | 
| 788 793 | 
             
                #   # ╞══════╡
         | 
| 789 794 | 
             
                #   # │ 0    │
         | 
| 790 795 | 
             
                #   # │ 2    │
         | 
| @@ -1026,21 +1031,10 @@ module Polars | |
| 1026 1031 | 
             
                #   Time zone for the `Datetime` Series.
         | 
| 1027 1032 | 
             
                #
         | 
| 1028 1033 | 
             
                # @return [Expr]
         | 
| 1029 | 
            -
                def replace_time_zone(tz, use_earliest: nil)
         | 
| 1030 | 
            -
                  Utils. | 
| 1031 | 
            -
             | 
| 1032 | 
            -
             | 
| 1033 | 
            -
                # Localize tz-naive Datetime Series to tz-aware Datetime Series.
         | 
| 1034 | 
            -
                #
         | 
| 1035 | 
            -
                # This method takes a naive Datetime Series and makes this time zone aware.
         | 
| 1036 | 
            -
                # It does not move the time to another time zone.
         | 
| 1037 | 
            -
                #
         | 
| 1038 | 
            -
                # @param tz [String]
         | 
| 1039 | 
            -
                #   Time zone for the `Datetime` Series.
         | 
| 1040 | 
            -
                #
         | 
| 1041 | 
            -
                # @return [Expr]
         | 
| 1042 | 
            -
                def tz_localize(tz)
         | 
| 1043 | 
            -
                  Utils.wrap_expr(_rbexpr.dt_tz_localize(tz))
         | 
| 1034 | 
            +
                def replace_time_zone(tz, use_earliest: nil, ambiguous: "raise")
         | 
| 1035 | 
            +
                  ambiguous = Utils.rename_use_earliest_to_ambiguous(use_earliest, ambiguous)
         | 
| 1036 | 
            +
                  ambiguous = Polars.lit(ambiguous) unless ambiguous.is_a?(Expr)
         | 
| 1037 | 
            +
                  Utils.wrap_expr(_rbexpr.dt_replace_time_zone(tz, ambiguous._rbexpr))
         | 
| 1044 1038 | 
             
                end
         | 
| 1045 1039 |  | 
| 1046 1040 | 
             
                # Extract the days from a Duration type.
         | 
| @@ -1348,6 +1342,7 @@ module Polars | |
| 1348 1342 | 
             
                #   # │ 2006-01-01 00:00:00 ┆ 2003-11-01 00:00:00 │
         | 
| 1349 1343 | 
             
                #   # └─────────────────────┴─────────────────────┘
         | 
| 1350 1344 | 
             
                def offset_by(by)
         | 
| 1345 | 
            +
                  by = Utils.parse_as_expression(by, str_as_lit: true)
         | 
| 1351 1346 | 
             
                  Utils.wrap_expr(_rbexpr.dt_offset_by(by))
         | 
| 1352 1347 | 
             
                end
         | 
| 1353 1348 |  | 
| @@ -23,18 +23,8 @@ module Polars | |
| 23 23 | 
             
                # @return [Object]
         | 
| 24 24 | 
             
                #
         | 
| 25 25 | 
             
                # @example
         | 
| 26 | 
            -
                #    | 
| 27 | 
            -
                #    | 
| 28 | 
            -
                #   # shape: (3,)
         | 
| 29 | 
            -
                #   # Series: '' [datetime[μs]]
         | 
| 30 | 
            -
                #   # [
         | 
| 31 | 
            -
                #   #         2001-01-01 00:00:00
         | 
| 32 | 
            -
                #   #         2001-01-02 00:00:00
         | 
| 33 | 
            -
                #   #         2001-01-03 00:00:00
         | 
| 34 | 
            -
                #   # ]
         | 
| 35 | 
            -
                #
         | 
| 36 | 
            -
                # @example
         | 
| 37 | 
            -
                #   date.dt.min
         | 
| 26 | 
            +
                #   s = Polars.date_range(DateTime.new(2001, 1, 1), DateTime.new(2001, 1, 3), "1d")
         | 
| 27 | 
            +
                #   s.dt.min
         | 
| 38 28 | 
             
                #   # => 2001-01-01 00:00:00 UTC
         | 
| 39 29 | 
             
                def min
         | 
| 40 30 | 
             
                  Utils.wrap_s(_s).min
         | 
| @@ -45,18 +35,8 @@ module Polars | |
| 45 35 | 
             
                # @return [Object]
         | 
| 46 36 | 
             
                #
         | 
| 47 37 | 
             
                # @example
         | 
| 48 | 
            -
                #    | 
| 49 | 
            -
                #    | 
| 50 | 
            -
                #   # shape: (3,)
         | 
| 51 | 
            -
                #   # Series: '' [datetime[μs]]
         | 
| 52 | 
            -
                #   # [
         | 
| 53 | 
            -
                #   #         2001-01-01 00:00:00
         | 
| 54 | 
            -
                #   #         2001-01-02 00:00:00
         | 
| 55 | 
            -
                #   #         2001-01-03 00:00:00
         | 
| 56 | 
            -
                #   # ]
         | 
| 57 | 
            -
                #
         | 
| 58 | 
            -
                # @example
         | 
| 59 | 
            -
                #   date.dt.max
         | 
| 38 | 
            +
                #   s = Polars.date_range(DateTime.new(2001, 1, 1), DateTime.new(2001, 1, 3), "1d")
         | 
| 39 | 
            +
                #   s.dt.max
         | 
| 60 40 | 
             
                #   # => 2001-01-03 00:00:00 UTC
         | 
| 61 41 | 
             
                def max
         | 
| 62 42 | 
             
                  Utils.wrap_s(_s).max
         | 
| @@ -240,7 +220,7 @@ module Polars | |
| 240 220 | 
             
                #   date.dt.quarter
         | 
| 241 221 | 
             
                #   # =>
         | 
| 242 222 | 
             
                #   # shape: (4,)
         | 
| 243 | 
            -
                #   # Series: '' [ | 
| 223 | 
            +
                #   # Series: '' [i8]
         | 
| 244 224 | 
             
                #   # [
         | 
| 245 225 | 
             
                #   #         1
         | 
| 246 226 | 
             
                #   #         1
         | 
| @@ -278,7 +258,7 @@ module Polars | |
| 278 258 | 
             
                #   date.dt.month
         | 
| 279 259 | 
             
                #   # =>
         | 
| 280 260 | 
             
                #   # shape: (4,)
         | 
| 281 | 
            -
                #   # Series: '' [ | 
| 261 | 
            +
                #   # Series: '' [i8]
         | 
| 282 262 | 
             
                #   # [
         | 
| 283 263 | 
             
                #   #         1
         | 
| 284 264 | 
             
                #   #         2
         | 
| @@ -316,7 +296,7 @@ module Polars | |
| 316 296 | 
             
                #   date.dt.week
         | 
| 317 297 | 
             
                #   # =>
         | 
| 318 298 | 
             
                #   # shape: (4,)
         | 
| 319 | 
            -
                #   # Series: '' [ | 
| 299 | 
            +
                #   # Series: '' [i8]
         | 
| 320 300 | 
             
                #   # [
         | 
| 321 301 | 
             
                #   #         1
         | 
| 322 302 | 
             
                #   #         5
         | 
| @@ -356,7 +336,7 @@ module Polars | |
| 356 336 | 
             
                #   date.dt.weekday
         | 
| 357 337 | 
             
                #   # =>
         | 
| 358 338 | 
             
                #   # shape: (7,)
         | 
| 359 | 
            -
                #   # Series: '' [ | 
| 339 | 
            +
                #   # Series: '' [i8]
         | 
| 360 340 | 
             
                #   # [
         | 
| 361 341 | 
             
                #   #         1
         | 
| 362 342 | 
             
                #   #         2
         | 
| @@ -398,7 +378,7 @@ module Polars | |
| 398 378 | 
             
                #   date.dt.day
         | 
| 399 379 | 
             
                #   # =>
         | 
| 400 380 | 
             
                #   # shape: (5,)
         | 
| 401 | 
            -
                #   # Series: '' [ | 
| 381 | 
            +
                #   # Series: '' [i8]
         | 
| 402 382 | 
             
                #   # [
         | 
| 403 383 | 
             
                #   #         1
         | 
| 404 384 | 
             
                #   #         3
         | 
| @@ -436,7 +416,7 @@ module Polars | |
| 436 416 | 
             
                #   date.dt.ordinal_day
         | 
| 437 417 | 
             
                #   # =>
         | 
| 438 418 | 
             
                #   # shape: (3,)
         | 
| 439 | 
            -
                #   # Series: '' [ | 
| 419 | 
            +
                #   # Series: '' [i16]
         | 
| 440 420 | 
             
                #   # [
         | 
| 441 421 | 
             
                #   #         1
         | 
| 442 422 | 
             
                #   #         32
         | 
| @@ -472,7 +452,7 @@ module Polars | |
| 472 452 | 
             
                #   date.dt.hour
         | 
| 473 453 | 
             
                #   # =>
         | 
| 474 454 | 
             
                #   # shape: (4,)
         | 
| 475 | 
            -
                #   # Series: '' [ | 
| 455 | 
            +
                #   # Series: '' [i8]
         | 
| 476 456 | 
             
                #   # [
         | 
| 477 457 | 
             
                #   #         0
         | 
| 478 458 | 
             
                #   #         1
         | 
| @@ -508,7 +488,7 @@ module Polars | |
| 508 488 | 
             
                #   date.dt.minute
         | 
| 509 489 | 
             
                #   # =>
         | 
| 510 490 | 
             
                #   # shape: (3,)
         | 
| 511 | 
            -
                #   # Series: '' [ | 
| 491 | 
            +
                #   # Series: '' [i8]
         | 
| 512 492 | 
             
                #   # [
         | 
| 513 493 | 
             
                #   #         0
         | 
| 514 494 | 
             
                #   #         2
         | 
| @@ -551,7 +531,7 @@ module Polars | |
| 551 531 | 
             
                #   date.dt.second
         | 
| 552 532 | 
             
                #   # =>
         | 
| 553 533 | 
             
                #   # shape: (9,)
         | 
| 554 | 
            -
                #   # Series: '' [ | 
| 534 | 
            +
                #   # Series: '' [i8]
         | 
| 555 535 | 
             
                #   # [
         | 
| 556 536 | 
             
                #   #         0
         | 
| 557 537 | 
             
                #   #         0
         | 
| @@ -613,7 +593,7 @@ module Polars | |
| 613 593 | 
             
                #   date.dt.millisecond
         | 
| 614 594 | 
             
                #   # =>
         | 
| 615 595 | 
             
                #   # shape: (9,)
         | 
| 616 | 
            -
                #   # Series: '' [ | 
| 596 | 
            +
                #   # Series: '' [i32]
         | 
| 617 597 | 
             
                #   # [
         | 
| 618 598 | 
             
                #   #         0
         | 
| 619 599 | 
             
                #   #         500
         | 
| @@ -658,7 +638,7 @@ module Polars | |
| 658 638 | 
             
                #   date.dt.microsecond
         | 
| 659 639 | 
             
                #   # =>
         | 
| 660 640 | 
             
                #   # shape: (9,)
         | 
| 661 | 
            -
                #   # Series: '' [ | 
| 641 | 
            +
                #   # Series: '' [i32]
         | 
| 662 642 | 
             
                #   # [
         | 
| 663 643 | 
             
                #   #         0
         | 
| 664 644 | 
             
                #   #         500000
         | 
| @@ -703,7 +683,7 @@ module Polars | |
| 703 683 | 
             
                #   date.dt.nanosecond
         | 
| 704 684 | 
             
                #   # =>
         | 
| 705 685 | 
             
                #   # shape: (9,)
         | 
| 706 | 
            -
                #   # Series: '' [ | 
| 686 | 
            +
                #   # Series: '' [i32]
         | 
| 707 687 | 
             
                #   # [
         | 
| 708 688 | 
             
                #   #         0
         | 
| 709 689 | 
             
                #   #         500000000
         | 
| @@ -1400,7 +1380,7 @@ module Polars | |
| 1400 1380 | 
             
                #   #         2001-01-01 00:30:00
         | 
| 1401 1381 | 
             
                #   #         2001-01-01 01:00:00
         | 
| 1402 1382 | 
             
                #   # ]
         | 
| 1403 | 
            -
                def truncate(every, offset: nil)
         | 
| 1383 | 
            +
                def truncate(every, offset: nil, use_earliest: nil)
         | 
| 1404 1384 | 
             
                  super
         | 
| 1405 1385 | 
             
                end
         | 
| 1406 1386 |  | 
| @@ -2,7 +2,7 @@ module Polars | |
| 2 2 | 
             
              # A dynamic grouper.
         | 
| 3 3 | 
             
              #
         | 
| 4 4 | 
             
              # This has an `.agg` method which allows you to run all polars expressions in a
         | 
| 5 | 
            -
              #  | 
| 5 | 
            +
              # group by context.
         | 
| 6 6 | 
             
              class DynamicGroupBy
         | 
| 7 7 | 
             
                def initialize(
         | 
| 8 8 | 
             
                  df,
         | 
| @@ -34,7 +34,7 @@ module Polars | |
| 34 34 |  | 
| 35 35 | 
             
                def agg(aggs)
         | 
| 36 36 | 
             
                  @df.lazy
         | 
| 37 | 
            -
                    . | 
| 37 | 
            +
                    .group_by_dynamic(
         | 
| 38 38 | 
             
                      @time_column,
         | 
| 39 39 | 
             
                      every: @every,
         | 
| 40 40 | 
             
                      period: @period,
         |