From da340e790d076c44bc71af7a86f3048fa36fe660 Mon Sep 17 00:00:00 2001 From: Shunsuke Shibayama Date: Wed, 7 Jun 2023 00:00:54 +0900 Subject: [PATCH] feat: add `pandas` decls --- .../lib/external/pandas.d/__init__.d.er | 5 +++++ .../lib/external/pandas.d/core.d/__init__.d.er | 0 .../lib/external/pandas.d/core.d/api.d.er | 3 +++ .../lib/external/pandas.d/core.d/frame.d.er | 14 ++++++++++++++ .../pandas.d/core.d/indexes.d/__init__.d.er | 0 .../external/pandas.d/core.d/indexes.d/api.d.er | 1 + .../external/pandas.d/core.d/indexes.d/base.d.er | 2 ++ .../lib/external/pandas.d/core.d/series.d.er | 8 ++++++++ .../erg_compiler/lib/external/pandas.d/package.er | 0 9 files changed, 33 insertions(+) create mode 100644 crates/erg_compiler/lib/external/pandas.d/__init__.d.er create mode 100644 crates/erg_compiler/lib/external/pandas.d/core.d/__init__.d.er create mode 100644 crates/erg_compiler/lib/external/pandas.d/core.d/api.d.er create mode 100644 crates/erg_compiler/lib/external/pandas.d/core.d/frame.d.er create mode 100644 crates/erg_compiler/lib/external/pandas.d/core.d/indexes.d/__init__.d.er create mode 100644 crates/erg_compiler/lib/external/pandas.d/core.d/indexes.d/api.d.er create mode 100644 crates/erg_compiler/lib/external/pandas.d/core.d/indexes.d/base.d.er create mode 100644 crates/erg_compiler/lib/external/pandas.d/core.d/series.d.er create mode 100644 crates/erg_compiler/lib/external/pandas.d/package.er diff --git a/crates/erg_compiler/lib/external/pandas.d/__init__.d.er b/crates/erg_compiler/lib/external/pandas.d/__init__.d.er new file mode 100644 index 00000000..327e5022 --- /dev/null +++ b/crates/erg_compiler/lib/external/pandas.d/__init__.d.er @@ -0,0 +1,5 @@ +{ + .DataFrame!; + .Series!; + .Index; +} = pyimport "core/api" diff --git a/crates/erg_compiler/lib/external/pandas.d/core.d/__init__.d.er b/crates/erg_compiler/lib/external/pandas.d/core.d/__init__.d.er new file mode 100644 index 00000000..e69de29b diff --git a/crates/erg_compiler/lib/external/pandas.d/core.d/api.d.er b/crates/erg_compiler/lib/external/pandas.d/core.d/api.d.er new file mode 100644 index 00000000..12a21038 --- /dev/null +++ b/crates/erg_compiler/lib/external/pandas.d/core.d/api.d.er @@ -0,0 +1,3 @@ +{.DataFrame!;} = pyimport "./frame" +{.Series!;} = pyimport "./series" +{.Index;} = pyimport "./indexes/api" diff --git a/crates/erg_compiler/lib/external/pandas.d/core.d/frame.d.er b/crates/erg_compiler/lib/external/pandas.d/core.d/frame.d.er new file mode 100644 index 00000000..916e8475 --- /dev/null +++ b/crates/erg_compiler/lib/external/pandas.d/core.d/frame.d.er @@ -0,0 +1,14 @@ +{.Index;} = pyimport "./indexes/api" + +# I := Nat, V := Obj +.DataFrame!: (C: Type, I: Type, V: Type) -> ClassType +.DataFrame!(C, I, V) <: Input(C) +.DataFrame!(C, I, V) <: Input(I) +.DataFrame!(C, I, V) <: Output(V) +.DataFrame!. + __call__: |K, V, I|(dic: {K: [V; _]} or Iterable(Iterable(V)), index: [I; _] := [Nat; _]) -> .DataFrame!(K, I, V) + shape: (Nat, Nat) + index: .Index(_) # TODO + head: |C, I, V|(self: .DataFrame!(C, I, V), tail: Nat := {5}) -> .DataFrame!(C, I, V) + tail: |C, I, V|(self: .DataFrame!(C, I, V), tail: Nat := {5}) -> .DataFrame!(C, I, V) + info!: (self: .DataFrame!(_, _, _)) => NoneType diff --git a/crates/erg_compiler/lib/external/pandas.d/core.d/indexes.d/__init__.d.er b/crates/erg_compiler/lib/external/pandas.d/core.d/indexes.d/__init__.d.er new file mode 100644 index 00000000..e69de29b diff --git a/crates/erg_compiler/lib/external/pandas.d/core.d/indexes.d/api.d.er b/crates/erg_compiler/lib/external/pandas.d/core.d/indexes.d/api.d.er new file mode 100644 index 00000000..8d9b2d3f --- /dev/null +++ b/crates/erg_compiler/lib/external/pandas.d/core.d/indexes.d/api.d.er @@ -0,0 +1 @@ +{.Index;} = pyimport "./base" diff --git a/crates/erg_compiler/lib/external/pandas.d/core.d/indexes.d/base.d.er b/crates/erg_compiler/lib/external/pandas.d/core.d/indexes.d/base.d.er new file mode 100644 index 00000000..18772ade --- /dev/null +++ b/crates/erg_compiler/lib/external/pandas.d/core.d/indexes.d/base.d.er @@ -0,0 +1,2 @@ +.Index: (T: Type) -> ClassType +.Index(T) <: Output(T) diff --git a/crates/erg_compiler/lib/external/pandas.d/core.d/series.d.er b/crates/erg_compiler/lib/external/pandas.d/core.d/series.d.er new file mode 100644 index 00000000..8466314e --- /dev/null +++ b/crates/erg_compiler/lib/external/pandas.d/core.d/series.d.er @@ -0,0 +1,8 @@ +{.Index;} = pyimport "./indexes/api" + +# K := Nat, V := Obj +.Series!: (K: Type, V: Type) -> ClassType +.Series!(K, V) <: Input(K) +.Series!(K, V) <: Output(V) +.Series!. + __call__: |K, V|(iterable: Iterable(V), index: [K; _] or .Index(K) := [Nat; _]) -> .Series! K, V diff --git a/crates/erg_compiler/lib/external/pandas.d/package.er b/crates/erg_compiler/lib/external/pandas.d/package.er new file mode 100644 index 00000000..e69de29b