Skip to content

Funix 0.6.0

Choose a tag to compare

@Konoyoru435 Konoyoru435 released this 02 May 07:56
· 107 commits to main since this release
284ac2c

0.6.0 (2025-05-02)

Highlights

  • URLs and iframe codes can be copied from the Funix App interface, making it easier to share or embed.

  • The logging system, when enabled, can now record the user's IP address, the name of the function called, the server file accessed, and other information.

  • Now the sidebar functions have icons and are sorted by the order of definition.

  • Support just_run argument for @funix, you don't need to click run button, the Funix App will run the function automatically when you enter the function's page.

  • Header and footer strings can now be modified through the theme, and simple string templates are supported. The icons at the footer can be hidden at any time, and the function name can also be displayed in the input panel. Here is an example:

     from funix import import_theme, funix
     
     
     import_theme({
         "name": "example",
         "funix": {
             "header": "Example - {{functionName}}",
             "footer": "©️ {{year}} Example, Funix: {{funixLink}}",
         }
     })
     
     @funix(theme="example")
     def my_function():
         pass
  • Function jumping is supported, a funix decorated function can use typing.Callable to jump to another funix decorated function, examples are shown below:

     from typing import Callable
     
     
     def test_function(x: int, y: int) -> int:
         return x + y
     
     
     def normal_jump() -> Callable:
         return test_function

    If you want to jump with arguments, you can do like this:

     from typing import Callable
     
     
     def test_function(x: int, y: int) -> int:
         return x + y
     
     
     def args_jump() -> Callable:
         x = 1
         return lambda _: test_function(2, y=x)
  • You can use funix.generate_redirect_link to generate a <a> tag that can redirect to a funix function. Syntax: funix.generate_redirect_link(function_name, args, kwargs).

  • Support dynamic_defaults argument for @funix, you can use dynamic_defaults to generate default values for function arguments. For example:

     from funix import funix
     
     def get_x():
         return 1
     
     @funix(dynamic_defaults={
         "x": get_x
     })
     def my_function(x: int):
         return x

    Or you can use this with session class, use lambda self: ... to get the session object:

     from funix import funix_method
     
     class A:
         def __init__(self, x: int):
             self.x = x
         
         def get_x(self):
             return self.x
         
         @funix_method(
             dynamic_defaults={
                 "x": lambda self: self.get_x()
             }
         )
         def calc(self, x: int, y: int):
             return self.x + x
  • Auto read first line in function's __doc__ as title (Disabled by default, use GlobalSwitchOption.DOCSTRING_FIRST_LINE_TO_TITLE to turn it on).

  • Allow expression in whitelist, dynamic_defaults and example

Breaking Changes

There are major differences between the previous version and this version, so please be aware that some issues and features may break past code.

Bug Fixes

  • code render in ReactMarkdown (55aa745, @yazawazi)
  • repo path change (3618103, @yazawazi)
  • add /update/ in log, and make input & output UI width can set in code (798a940, @yazawazi)
  • allow empty alias (d4390b3, @yazawazi)
  • datagrid height (2567bd3, @yazawazi)
  • add empty stack for empty data frame (daf61e5, @yazawazi)
  • check size in rejections (264504c, @yazawazi)
  • handle null funix_disable_input_title (f8c2ce9, @yazawazi)
  • leading zero (d1d8baf, @yazawazi)
  • add title for markdown link (9254873, @yazawazi)

Features

  • try to add rowsPerPageOptions (d82f939, @yazawazi)
  • add autosizeOnMount (f7535a9, @yazawazi)
  • log ip, function name and file info (c8897a3, @yazawazi)
  • add share dialog (4afd595, @yazawazi)
  • add icon and keep order for class methods (543e134, @yazawazi)
  • make a dashboard for funix logs (b19947a, @yazawazi)
  • add just_run argument for @funix (13de1f2, @yazawazi)
  • add function analytics (8156ea9, @yazawazi)
  • add SESSION_COOKIE_SECURE (c392507, @yazawazi)
  • support custom overrides (8a09d6f, @yazawazi)
  • support custom header, footer text and hiding footer icons (62fc3ee, @yazawazi)
  • support Callable jump (c17e77a, @yazawazi)
  • support get locals after calling (1c1cf42, @yazawazi)
  • support generate_redirect_link (8282656, @yazawazi)
  • support dynamic_defaults (63aacef, @yazawazi)
  • fix docstring label & support overwriting help text (32ec3f0, @yazawazi)
  • funix 2025 winter new features and bug fixes (72234a9, @yazawazi)
  • add global a jump (5976b46, @yazawazi)
  • fix tuple arguments (7331c05, @yazawazi)

Refactors

  • initial upgrade dependency (important) (a120c8f, @yazawazi)

Chores

Reverts

  • remove tuple support for examples and whitelist (e9b6781, @yazawazi)