Skip to main content

Dataflows and packages can import function and types from other packages. This hierarchical import structure allows you to reuse code and types across multiple projects.

Importing a package involves these steps:

  • specifying the package to import
  • specifying the functions
  • specifying the types to import

You can either import functions or types or both.

Importing Functions

Use keyword: functions in a imports sections to import functions.

Syntax:

imports:
- pkg: <package-namespace>/<package-name>@<package-version>
functions:
- name: <function-name>
alias: <alias-name>

Here is sample config to imports a function my-hello-fn from the package sdf-test/hello:

imports:
- pkg: sdf-test/hello@0.2.0
functions:
- name: my-hello-fn
alias: hello-fn

The function can be alias to a different name. In this case, the function my-hello-fn is imported as hello-fn.

After import, you can reference the function with the uses keyword.

  transforms:
- operator: filter-map
uses: hello-fn

Since hello-fn is filter-map function, It can only be used in the filter-map operator.

Importing Types

Similar to functions, you can also import types from other packages.

Syntax:

imports:
- pkg: <package-namespace>/<package-name>@<package-version>
types:
- name: <type-name>

Here is sample config that imports a type my-hello-type from the package sdf-test/hello:

imports:
- pkg: sdf-test/hello@0.2.0
types:
- name: my-hello-type

Of course you can mix and match functions and types in the same imports section.

imports:
- pkg: sdf-test/hello@0.2.0
functions:
- name: my-hello-fn
types:
- name: my-hello-type

Recursive Imports

Recursive imports are also supported. You can import functions and types from packages that themselves import functions and types from other packages.