fxn 0.0.53__py3-none-any.whl → 0.0.54__py3-none-any.whl

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.
fxn/beta/cli/__init__.py CHANGED
@@ -3,4 +3,5 @@
3
3
  # Copyright © 2025 NatML Inc. All Rights Reserved.
4
4
  #
5
5
 
6
- from .llm import app as llm_app
6
+ from .llm import app as llm_app
7
+ from .mcp import app as mcp_app
fxn/beta/cli/mcp.py ADDED
@@ -0,0 +1,16 @@
1
+ #
2
+ # Function
3
+ # Copyright © 2025 NatML Inc. All Rights Reserved.
4
+ #
5
+
6
+ from pathlib import Path
7
+ from typer import Argument, Option, Typer
8
+ from typing_extensions import Annotated
9
+
10
+ app = Typer(no_args_is_help=True)
11
+
12
+ @app.command(name="serve", help="Start an MCP server.")
13
+ def serve (
14
+ port: Annotated[int, Option(help="Port to start the server on.")] = 11436
15
+ ):
16
+ pass
fxn/beta/metadata.py CHANGED
@@ -3,28 +3,46 @@
3
3
  # Copyright © 2025 NatML Inc. All Rights Reserved.
4
4
  #
5
5
 
6
- from os import PathLike
7
6
  from pathlib import Path
8
7
  from pydantic import BaseModel, BeforeValidator, ConfigDict, Field
9
8
  from typing import Annotated, Literal
10
9
 
11
10
  def _validate_torch_module (module: "torch.nn.Module") -> "torch.nn.Module": # type: ignore
12
11
  try:
13
- from torch.nn import Module # type: ignore
12
+ from torch.nn import Module
14
13
  if not isinstance(module, Module):
15
- raise ValueError(f"Expected torch.nn.Module, got {type(module)}")
14
+ raise ValueError(f"Expected `torch.nn.Module` model but got `{type(module).__qualname__}`")
16
15
  return module
17
16
  except ImportError:
18
- raise ImportError("PyTorch is required to create this metadata but is not installed.")
17
+ raise ImportError("PyTorch is required to create this metadata but it is not installed.")
19
18
 
20
19
  def _validate_ort_inference_session (session: "onnxruntime.InferenceSession") -> "onnxruntime.InferenceSession": # type: ignore
21
20
  try:
22
- from onnxruntime import InferenceSession # type: ignore
21
+ from onnxruntime import InferenceSession
23
22
  if not isinstance(session, InferenceSession):
24
- raise ValueError(f"Expected onnxruntime.InferenceSession, got {type(session)}")
23
+ raise ValueError(f"Expected `onnxruntime.InferenceSession` model but got `{type(session).__qualname__}`")
25
24
  return session
26
25
  except ImportError:
27
- raise ImportError("ONNXRuntime is required to create this metadata but is not installed.")
26
+ raise ImportError("ONNXRuntime is required to create this metadata but it is not installed.")
27
+
28
+ def _validate_torch_tensor_args (args: list) -> list:
29
+ try:
30
+ from torch import Tensor
31
+ for idx, arg in enumerate(args):
32
+ if not isinstance(arg, Tensor):
33
+ raise ValueError(f"Expected `torch.Tensor` instance at `model_args[{idx}]` but got `{type(arg).__qualname__}`")
34
+ return args
35
+ except ImportError:
36
+ raise ImportError("PyTorch is required to create this metadata but it is not installed.")
37
+
38
+ def _validate_llama_cpp_model (model: "llama_cpp.llama.Llama") -> "llama_cpp.llama.Llama": # type: ignore
39
+ try:
40
+ from llama_cpp import Llama
41
+ if not isinstance(model, Llama):
42
+ raise ValueError(f"Expected `llama_cpp.llama.Llama` model but got `{type(model).__qualname__}`")
43
+ return model
44
+ except ImportError:
45
+ raise ImportError("Llama-cpp-python is required to create this metadata but it is not installed.")
28
46
 
29
47
  class CoreMLInferenceMetadata (BaseModel):
30
48
  """
@@ -39,7 +57,7 @@ class CoreMLInferenceMetadata (BaseModel):
39
57
  description="PyTorch module to apply metadata to.",
40
58
  exclude=True
41
59
  )
42
- model_args: list[object] = Field(
60
+ model_args: Annotated[list[object], BeforeValidator(_validate_torch_tensor_args)] = Field(
43
61
  description="Positional inputs to the model.",
44
62
  exclude=True
45
63
  )
@@ -58,7 +76,7 @@ class OnnxInferenceMetadata (BaseModel):
58
76
  description="PyTorch module to apply metadata to.",
59
77
  exclude=True
60
78
  )
61
- model_args: list[object] = Field(
79
+ model_args: Annotated[list[object], BeforeValidator(_validate_torch_tensor_args)] = Field(
62
80
  description="Positional inputs to the model.",
63
81
  exclude=True
64
82
  )
@@ -96,7 +114,7 @@ class LiteRTInferenceMetadata (BaseModel):
96
114
  description="PyTorch module to apply metadata to.",
97
115
  exclude=True
98
116
  )
99
- model_args: list[object] = Field(
117
+ model_args: Annotated[list[object], BeforeValidator(_validate_torch_tensor_args)] = Field(
100
118
  description="Positional inputs to the model.",
101
119
  exclude=True
102
120
  )
@@ -115,13 +133,13 @@ class OpenVINOInferenceMetadata (BaseModel):
115
133
  description="PyTorch module to apply metadata to.",
116
134
  exclude=True
117
135
  )
118
- model_args: list[object] = Field(
136
+ model_args: Annotated[list[object], BeforeValidator(_validate_torch_tensor_args)] = Field(
119
137
  description="Positional inputs to the model.",
120
138
  exclude=True
121
139
  )
122
140
  model_config = ConfigDict(arbitrary_types_allowed=True, frozen=True)
123
141
 
124
- QnnInferenceBackend = Literal["cpu", "gpu"] # `htp` coming soon
142
+ QnnInferenceBackend = Literal["cpu", "gpu", "htp"]
125
143
  QnnInferenceQuantization = Literal["w8a8", "w8a16", "w4a8", "w4a16"]
126
144
 
127
145
  class QnnInferenceMetadata (BaseModel):
@@ -139,7 +157,7 @@ class QnnInferenceMetadata (BaseModel):
139
157
  description="PyTorch module to apply metadata to.",
140
158
  exclude=True
141
159
  )
142
- model_args: list[object] = Field(
160
+ model_args: Annotated[list[object], BeforeValidator(_validate_torch_tensor_args)] = Field(
143
161
  description="Positional inputs to the model.",
144
162
  exclude=True
145
163
  )
@@ -155,13 +173,13 @@ class QnnInferenceMetadata (BaseModel):
155
173
  )
156
174
  model_config = ConfigDict(arbitrary_types_allowed=True, frozen=True)
157
175
 
158
- class LlamaCppInferenceMetadata (BaseModel): # INCOMPLETE
176
+ class LlamaCppInferenceMetadata (BaseModel):
159
177
  """
160
- Metadata required to lower a GGUF model for LLM inference.
178
+ Metadata required to lower a Llama.cpp model for LLM inference.
161
179
  """
162
- kind: Literal["meta.inference.gguf"] = "meta.inference.gguf"
163
- model_path: Path = Field(
164
- description="GGUF model path. The model must exist at this path in the compiler sandbox.",
180
+ kind: Literal["meta.inference.llama_cpp"] = "meta.inference.llama_cpp"
181
+ model: Annotated[object, BeforeValidator(_validate_llama_cpp_model)] = Field(
182
+ description="Llama model that metadata applies to.",
165
183
  exclude=True
166
184
  )
167
185
  model_config = ConfigDict(arbitrary_types_allowed=True, frozen=True)
fxn/cli/__init__.py CHANGED
@@ -14,7 +14,7 @@ from .misc import cli_options
14
14
  from .predictions import create_prediction
15
15
  from .predictors import archive_predictor, delete_predictor, retrieve_predictor
16
16
  from .sources import retrieve_source
17
- from ..beta.cli import llm_app
17
+ from ..beta.cli import llm_app, mcp_app
18
18
 
19
19
  # Define CLI
20
20
  typer.main.console_stderr = TracebackMarkupConsole()
@@ -29,24 +29,62 @@ app = typer.Typer(
29
29
  # Add top level options
30
30
  app.callback()(cli_options)
31
31
 
32
- # Add subcommands
33
- app.add_typer(auth_app, name="auth", help="Login, logout, and check your authentication status.")
34
- app.add_typer(llm_app, name="llm", hidden=True, help="Work with large language models (LLMs).")
35
-
36
- # Add top-level commands
32
+ # Predictions
37
33
  app.command(
38
34
  name="predict",
39
35
  help="Make a prediction.",
40
- context_settings={ "allow_extra_args": True, "ignore_unknown_options": True }
36
+ context_settings={ "allow_extra_args": True, "ignore_unknown_options": True },
37
+ rich_help_panel="Predictions"
41
38
  )(create_prediction)
39
+ app.command(
40
+ name="source",
41
+ help="Retrieve the generated C++ code for a given prediction.",
42
+ rich_help_panel="Predictions"
43
+ )(retrieve_source)
44
+
45
+ # Predictors
42
46
  app.command(
43
47
  name="compile",
44
- help="Create a predictor by compiling a Python function."
48
+ help="Create a predictor by compiling a Python function.",
49
+ rich_help_panel="Predictors"
45
50
  )(compile_predictor)
46
- app.command(name="retrieve", help="Retrieve a predictor.")(retrieve_predictor)
47
- app.command(name="archive", help="Archive a predictor.")(archive_predictor)
48
- app.command(name="delete", help="Delete a predictor.")(delete_predictor)
49
- app.command(name="source", help="Retrieve the generated native code for a given predictor.")(retrieve_source)
51
+ app.command(
52
+ name="retrieve",
53
+ help="Retrieve a predictor.",
54
+ rich_help_panel="Predictors"
55
+ )(retrieve_predictor)
56
+ app.command(
57
+ name="archive",
58
+ help="Archive a predictor." ,
59
+ rich_help_panel="Predictors"
60
+ )(archive_predictor)
61
+ app.command(
62
+ name="delete",
63
+ help="Delete a predictor.",
64
+ rich_help_panel="Predictors"
65
+ )(delete_predictor)
66
+
67
+ # Subcommands
68
+ app.add_typer(
69
+ auth_app,
70
+ name="auth",
71
+ help="Login, logout, and check your authentication status.",
72
+ rich_help_panel="Auth"
73
+ )
74
+ app.add_typer(
75
+ llm_app,
76
+ name="llm",
77
+ hidden=True,
78
+ help="Work with large language models (LLMs).",
79
+ rich_help_panel="Beta"
80
+ )
81
+ app.add_typer(
82
+ mcp_app,
83
+ name="mcp",
84
+ hidden=True,
85
+ help="Provide prediction functions as tools for use by AI assistants.",
86
+ rich_help_panel="Beta"
87
+ )
50
88
 
51
89
  # Run
52
90
  if __name__ == "__main__":
fxn/cli/sources.py CHANGED
@@ -15,8 +15,8 @@ from ..logging import CustomProgress, CustomProgressTask
15
15
  from .auth import get_access_key
16
16
 
17
17
  def retrieve_source (
18
- predictor: Annotated[str, Option(help="Predictor tag.")] = None,
19
18
  prediction: Annotated[str, Option(help="Prediction identifier. If specified, this MUST be from a prediction returned by the Function API.")] = None,
19
+ predictor: Annotated[str, Option(help="Predictor tag. If specified, a prediction will be made with this predictor before retrieving the source.")] = None,
20
20
  output: Annotated[Path, Option(help="Path to output source file.")] = Path("predictor.cpp")
21
21
  ):
22
22
  if not ((predictor is not None) ^ (prediction is not None)):
fxn/compile.py CHANGED
@@ -17,7 +17,7 @@ from .beta import (
17
17
  QnnInferenceMetadata
18
18
  )
19
19
  from .sandbox import Sandbox
20
- from .types import AccessMode
20
+ from .types import PredictorAccess
21
21
 
22
22
  CompileTarget = Literal[
23
23
  "android",
@@ -51,7 +51,7 @@ class PredictorSpec (BaseModel):
51
51
  sandbox: Sandbox = Field(description="Sandbox to compile the function.")
52
52
  targets: list[str] | None = Field(description="Targets to compile this predictor for. Pass `None` to compile for our default targets.")
53
53
  metadata: list[object] = Field(default=[], description="Metadata to use while compiling the function.")
54
- access: AccessMode = Field(description="Predictor access.")
54
+ access: PredictorAccess = Field(description="Predictor access.")
55
55
  card: str | None = Field(default=None, description="Predictor card (markdown).")
56
56
  media: str | None = Field(default=None, description="Predictor media URL.")
57
57
  license: str | None = Field(default=None, description="Predictor license URL. This is required for public predictors.")
@@ -65,7 +65,7 @@ def compile (
65
65
  trace_modules: list[ModuleType]=[],
66
66
  targets: list[CompileTarget]=None,
67
67
  metadata: list[CompileMetadata]=[],
68
- access: AccessMode=AccessMode.Private,
68
+ access: PredictorAccess="private",
69
69
  card: str | Path=None,
70
70
  media: Path=None,
71
71
  license: str=None,
@@ -81,7 +81,7 @@ def compile (
81
81
  trace_modules (list): Modules to trace and compile.
82
82
  targets (list): Targets to compile this predictor for. Pass `None` to compile for our default targets.
83
83
  metadata (list): Metadata to use while compiling the function.
84
- access (AccessMode): Predictor access.
84
+ access (PredictorAccess): Predictor access.
85
85
  card (str | Path): Predictor card markdown string or path to card.
86
86
  media (Path): Predictor thumbnail image (jpeg or png) path.
87
87
  license (str): Predictor license URL. This is required for public predictors.
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
fxn/sandbox.py CHANGED
@@ -57,6 +57,8 @@ class EntrypointCommand (UploadableCommand):
57
57
  class PipInstallCommand (BaseModel):
58
58
  kind: Literal["pip_install"] = "pip_install"
59
59
  packages: list[str]
60
+ index_url: str | None
61
+ flags: str
60
62
 
61
63
  class AptInstallCommand (BaseModel):
62
64
  kind: Literal["apt_install"] = "apt_install"
@@ -133,14 +135,25 @@ class Sandbox (BaseModel):
133
135
  )
134
136
  return Sandbox(commands=self.commands + [command])
135
137
 
136
- def pip_install (self, *packages: str) -> Sandbox:
138
+ def pip_install (
139
+ self,
140
+ *packages: str,
141
+ index_url: str=None,
142
+ flags: str=""
143
+ ) -> Sandbox:
137
144
  """
138
145
  Install Python packages in the sandbox.
139
146
 
140
147
  Parameters:
141
148
  packages (list): Packages to install.
149
+ index_url (str | None): Index URL to search for package.
150
+ flags (str): Additional flags to pass to `pip`.
142
151
  """
143
- command = PipInstallCommand(packages=packages)
152
+ command = PipInstallCommand(
153
+ packages=packages,
154
+ index_url=index_url,
155
+ flags=flags
156
+ )
144
157
  return Sandbox(commands=self.commands + [command])
145
158
 
146
159
  def apt_install (self, *packages: str) -> Sandbox:
fxn/types/__init__.py CHANGED
@@ -5,5 +5,5 @@
5
5
 
6
6
  from .dtype import Dtype
7
7
  from .prediction import Acceleration, Prediction, PredictionResource
8
- from .predictor import AccessMode, EnumerationMember, Parameter, Predictor, PredictorStatus, Signature
8
+ from .predictor import EnumerationMember, Parameter, Predictor, PredictorAccess, PredictorStatus, Signature
9
9
  from .user import User
fxn/types/predictor.py CHANGED
@@ -3,28 +3,15 @@
3
3
  # Copyright © 2025 NatML Inc. All Rights Reserved.
4
4
  #
5
5
 
6
- from enum import Enum
7
6
  from pydantic import AliasChoices, BaseModel, ConfigDict, Field
8
- from typing import Any
7
+ from typing import Any, Literal
9
8
 
10
9
  from .dtype import Dtype
11
10
  from .user import User
12
11
 
13
- class AccessMode (str, Enum):
14
- """
15
- Predictor access mode.
16
- """
17
- Public = "PUBLIC"
18
- Private = "PRIVATE"
12
+ PredictorAccess = Literal["public", "private", "unlisted"]
19
13
 
20
- class PredictorStatus (str, Enum):
21
- """
22
- Predictor status.
23
- """
24
- Compiling = "COMPILING"
25
- Active = "ACTIVE"
26
- Invalid = "INVALID"
27
- Archived = "ARCHIVED"
14
+ PredictorStatus = Literal["compiling", "active", "archived"]
28
15
 
29
16
  class EnumerationMember (BaseModel):
30
17
  """
@@ -79,7 +66,7 @@ class Predictor (BaseModel):
79
66
  owner (User): Predictor owner.
80
67
  name (str): Predictor name.
81
68
  status (PredictorStatus): Predictor status.
82
- access (AccessMode): Predictor access.
69
+ access (PredictorAccess): Predictor access.
83
70
  signature (Signature): Predictor signature.
84
71
  created (str): Date created.
85
72
  description (str): Predictor description.
@@ -91,7 +78,7 @@ class Predictor (BaseModel):
91
78
  owner: User = Field(description="Predictor owner.")
92
79
  name: str = Field(description="Predictor name.")
93
80
  status: PredictorStatus = Field(description="Predictor status.")
94
- access: AccessMode = Field(description="Predictor access.")
81
+ access: PredictorAccess = Field(description="Predictor access.")
95
82
  signature: Signature = Field(description="Predictor signature.")
96
83
  created: str = Field(description="Date created.")
97
84
  description: str | None = Field(default=None, description="Predictor description.")
fxn/version.py CHANGED
@@ -3,4 +3,4 @@
3
3
  # Copyright © 2025 NatML Inc. All Rights Reserved.
4
4
  #
5
5
 
6
- __version__ = "0.0.53"
6
+ __version__ = "0.0.54"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fxn
3
- Version: 0.0.53
3
+ Version: 0.0.54
4
4
  Summary: Run prediction functions locally in Python. Register at https://fxn.ai.
5
5
  Author-email: "NatML Inc." <hi@fxn.ai>
6
6
  License: Apache License
@@ -1,15 +1,16 @@
1
1
  fxn/__init__.py,sha256=gnJK7iOmMVWFhluW9bOvTNxJbpT-GwzDJTMmjA_XxOE,284
2
2
  fxn/client.py,sha256=Deje8eiS1VOHX85tQnV34viv2CPVx2ljwHSbyVB5Z1o,3790
3
- fxn/compile.py,sha256=tKLRdbFPf0c3Q7UMtKa1Wbpf4Vx1XxbMzh3ltfVb_eo,4371
3
+ fxn/compile.py,sha256=7b0DPpHWk9o81dFkcgUkVZ3pm2ycuI0qRJIpaV4ojpM,4382
4
4
  fxn/function.py,sha256=XeEuALkbVhkvwEBUfP0A2fu3tdimwHemoR17oomhzc8,1407
5
5
  fxn/logging.py,sha256=MsTSf0GZxrHNDwVAXDOh8_zRUg9hkeZ8DfhFUJs7D8A,7250
6
- fxn/sandbox.py,sha256=50yY2GDdkAFl-6pXTleaD1LXYM6-pJ3C1epKsr0xdrM,7313
7
- fxn/version.py,sha256=n-WFHj2EhODMEevfcqzzFWZYnuAaaKG2T-dxo23t23U,95
6
+ fxn/sandbox.py,sha256=31jDvp55T-Bp9mm1UnoWC1Da9YtarGobR6U8mr13Amw,7637
7
+ fxn/version.py,sha256=DUhzKhiCoEd22B9acItjXZbDRBUcG-FxdyMlpqiwrt8,95
8
8
  fxn/beta/__init__.py,sha256=h5PwE5PtYu9BgdysuAG51KMJ2N_clwixufXgTzC0dTg,464
9
9
  fxn/beta/client.py,sha256=s0BpkQM4V_816pyzB8sbo-QQg0S7tY0APTpYACWsxQM,2590
10
- fxn/beta/metadata.py,sha256=Z3bJwVd-8GeaAly1LgZE3Yej7y7sQUu_IY2qY2ISYFk,6935
11
- fxn/beta/cli/__init__.py,sha256=_X_lreE4q_CY8AzRmcFzRI1OIV8x1xrEyOqAV7fsQlk,104
10
+ fxn/beta/metadata.py,sha256=vsN-jo6mRw1Ze-AErlm2GwDefotxyz_vLWBw2oTHp4o,8137
11
+ fxn/beta/cli/__init__.py,sha256=6eyBhW8l3tLWiC36vx5BCtG3taNVvUkPuGLuEyhwnWQ,136
12
12
  fxn/beta/cli/llm.py,sha256=loL87unr1o_TfsaBTQOb3d7CEpm1Qcf5WJa-qv51iXE,517
13
+ fxn/beta/cli/mcp.py,sha256=U6W03-j_6tKbibv4fcomEeBRVcl_srNy7XjFE9KvvAk,373
13
14
  fxn/beta/llm/__init__.py,sha256=bJB5i1eY8zXnixVc34iubxnEXTIoz1UtnoGI5hXDg18,73
14
15
  fxn/beta/llm/server.py,sha256=bJB5i1eY8zXnixVc34iubxnEXTIoz1UtnoGI5hXDg18,73
15
16
  fxn/beta/services/__init__.py,sha256=6XNWEcXXbFX2O_P-rpR0xMuAp9gN7Q0xuxzp7BGt8Xc,153
@@ -23,32 +24,32 @@ fxn/c/prediction.py,sha256=-d-5yreFAaRS-nDHzhfabRNtgYcmJGiY_N2dt09gk84,2689
23
24
  fxn/c/predictor.py,sha256=48poLj1AthzCgU9n6Wv9gL8o4gFucIlOnBO2wdor6r0,1925
24
25
  fxn/c/stream.py,sha256=Y1Xv1Bt3_qlnWg9rCn7NWESpouF1eKMzDiQjhZWbXTg,1105
25
26
  fxn/c/value.py,sha256=h5n91nm8C3YvEEFORfJBUdncZ29DFIdUKGWQ_KpLsWc,7420
26
- fxn/cli/__init__.py,sha256=gMn7pj8287M8KhB0cStQOcgo5fGGqKsR4i3nKAJQGow,1671
27
+ fxn/cli/__init__.py,sha256=ejLrwGaBdnwtLR44gg1G1VrE-hnhFTlkyieZFCh05lo,2178
27
28
  fxn/cli/auth.py,sha256=6iGbNbjxfCr8OZT3_neLThXdWeKRBZATwru8vU0XmRw,1688
28
29
  fxn/cli/compile.py,sha256=BSUBUiXhI7vDfztHCGgmA4Dsvco7J9i1aJXK9EQBKHc,6168
29
30
  fxn/cli/misc.py,sha256=LcJbCj_GAgtGraTRva2zHHOPpNwI6SOFntRksxwlqvM,843
30
31
  fxn/cli/predictions.py,sha256=ma7wbsKD5CFCRTU_TtJ8N0nN1fgFX2BZPGG8qm8HlNI,3182
31
32
  fxn/cli/predictors.py,sha256=bVQAuBue_Jxb79X85RTCzOerWRRT2Ny1oF5DNYAsx4M,1545
32
- fxn/cli/sources.py,sha256=HQ_PBLXY2CZ5tGuuqQeJQTpM9S9rKtBzyNVTK-ywG84,1781
33
+ fxn/cli/sources.py,sha256=xXNG0kOttaD4WpSQyTNwMMy8SJRhtDt_F9neo_7sPgY,1871
33
34
  fxn/lib/__init__.py,sha256=-w1ikmmki5NMpzJjERW-O4SwOfBNkimej_0jL8ujYRk,71
34
- fxn/lib/linux/arm64/libFunction.so,sha256=T9HE_dkC4yKXsyAc_sa7iWTXRDcwGOjZ1MAi1j9-ZCw,211736
35
- fxn/lib/linux/x86_64/libFunction.so,sha256=66r5ZzUMlSjIfqfIwbhwCJk1AQF2iBL5OZzeT2ibZDQ,236336
36
- fxn/lib/macos/arm64/Function.dylib,sha256=NO5ZzDvMFsDkgYNL8louztyaRxuM9Hl_BosQYFi6rKg,263856
37
- fxn/lib/macos/x86_64/Function.dylib,sha256=SO55PHLhhl8sh_Gr3IKgTHPV1-pnhLb30qbqHKF0_1M,255600
38
- fxn/lib/windows/arm64/Function.dll,sha256=ol6LyOVtF7tq-hnPLS9RRXAkobYMSC9T_JF1kx3l2IY,411136
39
- fxn/lib/windows/x86_64/Function.dll,sha256=P43RXFNAdjTrDEnynGRy8CjCgY1KWzB_1Cz5W6394bg,447488
35
+ fxn/lib/linux/arm64/libFunction.so,sha256=1OnIZwh3g_9gIajWWwI6lDnmPKKxGDyLCGtqL-lnMJk,211736
36
+ fxn/lib/linux/x86_64/libFunction.so,sha256=J4VT3WhNEFEVlqcC-s-96sPPQp9fFvWQ7PykKxwuW6o,236336
37
+ fxn/lib/macos/arm64/Function.dylib,sha256=pO6mtYlJe8MbuXSyyUH20H3DPIM6F7y9U9E82mC3XmE,247376
38
+ fxn/lib/macos/x86_64/Function.dylib,sha256=5UFrdoIo3KA_rFYv9RTjCsw50LnNbH_r8jq73f_pxcE,255616
39
+ fxn/lib/windows/arm64/Function.dll,sha256=K3M_vcDWviszJVx5Io-aEa-_1bhBXZN8FLXn3a1f4_A,403456
40
+ fxn/lib/windows/x86_64/Function.dll,sha256=pMgipA9iXnGP6ENXwuNWDXlW-HclszuyDk-HSyVQ4Rs,442368
40
41
  fxn/services/__init__.py,sha256=Bif8IttwJ089mSRsd3MFdob7z2eF-MKigKu4ZQFZBCQ,190
41
42
  fxn/services/prediction.py,sha256=2BNwzl4K7-7AXyZFE5TanIYWXJ4M4WVPWCCBbqqBC3M,10029
42
43
  fxn/services/predictor.py,sha256=Wl_7YKiD5mTpC5x2Zaq4BpatRjwRUX8Th9GIrwd38MA,791
43
44
  fxn/services/user.py,sha256=ADl5MFLsk4K0altgKHnI-i64E3g1wU3e56Noq_ciRuk,685
44
- fxn/types/__init__.py,sha256=MEg71rzbGgoWfgB4Yi5QvxbnovHTZRIzCUZLtWtWP1E,292
45
+ fxn/types/__init__.py,sha256=jiGcZo1RyRg1wJiEulHjVU36EI7TS3sgE4TCeAeMNfk,297
45
46
  fxn/types/dtype.py,sha256=71Tuu4IydmELcBcSBbmWswhCE-7WqBSQ4VkETsFRzjA,617
46
47
  fxn/types/prediction.py,sha256=BdLTxnKiSFbz5warX8g_Z4DedNxXK3gaNjSKR2FP8tA,2051
47
- fxn/types/predictor.py,sha256=KRGZEuDt7WPMCyRcZvQq4y2FMocfVrLEUNJCJgfDY9Y,4000
48
+ fxn/types/predictor.py,sha256=lxFPpo3hP38LfJYYQ703RehjQvnPsVZyptBX2oaxQ5A,3825
48
49
  fxn/types/user.py,sha256=Z44TwEocyxSrfKyzcNfmAXUrpX_Ry8fJ7MffSxRn4oU,1071
49
- fxn-0.0.53.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
50
- fxn-0.0.53.dist-info/METADATA,sha256=p4nALBoGifSFNlFX4iFqxiGEGu5nR--cbZjkuhMpSq8,16136
51
- fxn-0.0.53.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
52
- fxn-0.0.53.dist-info/entry_points.txt,sha256=O_AwD5dYaeB-YT1F9hPAPuDYCkw_W0tdNGYbc5RVR2k,45
53
- fxn-0.0.53.dist-info/top_level.txt,sha256=1ULIEGrnMlhId8nYAkjmRn9g3KEFuHKboq193SEKQkA,4
54
- fxn-0.0.53.dist-info/RECORD,,
50
+ fxn-0.0.54.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
51
+ fxn-0.0.54.dist-info/METADATA,sha256=6__LeT6CjQGUziZMqWePbpctnR_WovL86I-87FcTN9A,16136
52
+ fxn-0.0.54.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
53
+ fxn-0.0.54.dist-info/entry_points.txt,sha256=O_AwD5dYaeB-YT1F9hPAPuDYCkw_W0tdNGYbc5RVR2k,45
54
+ fxn-0.0.54.dist-info/top_level.txt,sha256=1ULIEGrnMlhId8nYAkjmRn9g3KEFuHKboq193SEKQkA,4
55
+ fxn-0.0.54.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.8.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5