Skip to content

Importing multiple modules with :refer causes AttributeError #1274

@ikappaki

Description

@ikappaki

Hi,

there appears to be an issue when importing multiple Python modules in Basilisp if at least one uses a :refer clause

File "<Eval Input>", line 1, in <module>
AttributeError: module 'sys' has no attribute 'mkdir'

Steps to reproduce:

  1. Open up a REPL, and try to import sys and :refer mkdir from os through :refer, it triggers the above error:
> basilisp repl
basilisp.user=> (import sys [os :refer [mkdir]])

Traceback (most recent call last):
  File "C:\src\basilisp\src\basilisp\cli.py", line 583, in repl
    result = eval_str(lsrc, ctx, ns, eof)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\src\basilisp\src\basilisp\cli.py", line 54, in eval_str
    last = compiler.compile_and_exec_form(form, ctx, ns)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\src\basilisp\src\basilisp\lang\compiler\__init__.py", line 194, in compile_and_exec_form
    last = getattr(ns.module, final_wrapped_name)()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<REPL Input>", line 1, in __lisp_expr___104
  File "C:\src\basilisp\src\basilisp\core.lpy", line 4657, in eval_
    (defn eval
  File "C:\src\basilisp\src\basilisp\core.lpy", line 4666, in eval___arity2
    (basilisp.lang.compiler/compile-and-exec-form form
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\src\basilisp\src\basilisp\lang\compiler\__init__.py", line 192, in compile_and_exec_form
    exec(bytecode, ns.module.__dict__)  # pylint: disable=exec-used  # nosec 6102
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<Eval Input>", line 1, in <module>
AttributeError: module 'sys' has no attribute 'mkdir'

A single import with :refer works fine otherwise:

basilisp.user=> (import [os :refer [mkdir]])
nil

basilisp.user=> mkdir
<built-in function mkdir>

thanks

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions