Skip to content

ClientForwardRefsPlugin Error on generation #313

Open
@duodecanol

Description

@duodecanol

Summary

  • ariadne-codegen: 0.14.0
  • python:
    • 3.12.5
    • 3.12.4
    • 3.11.2
  • import_class_name = import_class.name
    # We add the class to our set of imported in methods - these classes
    # don't need to be imported at all in the global scope.
    self.imported_in_method.add(import_class_name)
    method_def.body.insert(
    0,
    ast.ImportFrom(
    module=self.imported_classes[import_class_name],
    names=[import_class],
    level=1,
    ),
    )

Error log

Selected strategy: Strategy.CLIENT
Using schema from '....................'.
Reading queries from ''.
Using '********' as package name.
Generating package into '********'.
Using '********' as client name.
Using 'AsyncBaseClient' as base client class.
Coping base client class from '********'.
Generating enums into 'enums.py'.
Generating inputs into 'input_types.py'.
Generating fragments into 'fragments.py'.
Comments type: stable
Converting fields and arguments name to snake case.
Generating async client.
No files to copy.
Plugins to use: ariadne_codegen.contrib.no_reimports.NoReimportsPlugin,ariadne_codegen.contrib.client_forward_refs.ClientForwardRefsPlugin
================================================================================
<ast.Name object at 0x7d2e44ae0ed0> ('lineno', 'col_offset', 'end_lineno', 'end_col_offset') ('id', 'ctx')
self
Traceback (most recent call last):
  File "/workspaces/python-devpod-try/xxDev/graphqltest/.venv/bin/ariadne-codegen", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/workspaces/python-devpod-try/xxDev/graphqltest/.venv/lib/python3.12/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/python-devpod-try/xxDev/graphqltest/.venv/lib/python3.12/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/workspaces/python-devpod-try/xxDev/graphqltest/.venv/lib/python3.12/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/python-devpod-try/xxDev/graphqltest/.venv/lib/python3.12/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/python-devpod-try/xxDev/graphqltest/.venv/lib/python3.12/site-packages/ariadne_codegen/main.py", line 37, in main
    client(config_dict)
  File "/workspaces/python-devpod-try/xxDev/graphqltest/.venv/lib/python3.12/site-packages/ariadne_codegen/main.py", line 81, in client
    generated_files = package_generator.generate()
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/python-devpod-try/xxDev/graphqltest/.venv/lib/python3.12/site-packages/ariadne_codegen/client_generators/package.py", line 171, in generate
    self._generate_client()
  File "/workspaces/python-devpod-try/xxDev/graphqltest/.venv/lib/python3.12/site-packages/ariadne_codegen/client_generators/package.py", line 257, in _generate_client
    client_module = self.client_generator.generate()
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/python-devpod-try/xxDev/graphqltest/.venv/lib/python3.12/site-packages/ariadne_codegen/client_generators/client.py", line 148, in generate
    module = self.plugin_manager.generate_client_module(module)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/python-devpod-try/xxDev/graphqltest/.venv/lib/python3.12/site-packages/ariadne_codegen/plugins/manager.py", line 60, in generate_client_module
    return self._apply_plugins_on_object("generate_client_module", module)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/python-devpod-try/xxDev/graphqltest/.venv/lib/python3.12/site-packages/ariadne_codegen/plugins/manager.py", line 40, in _apply_plugins_on_object
    modified_obj = method(modified_obj, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/python-devpod-try/xxDev/graphqltest/.venv/lib/python3.12/site-packages/ariadne_codegen/contrib/client_forward_refs.py", line 91, in generate_client_module
    self._insert_import_statement_in_method(method_def)
  File "/workspaces/python-devpod-try/xxDev/graphqltest/.venv/lib/python3.12/site-packages/ariadne_codegen/contrib/client_forward_refs.py", line 188, in _insert_import_statement_in_method
    module=self.imported_classes[import_class_id],
           ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
KeyError: 'self'

Suggestion

import_class_name = import_class.name
# We add the class to our set of imported in methods - these classes
# don't need to be imported at all in the global scope.
self.imported_in_method.add(import_class_name)
method_def.body.insert(
0,
ast.ImportFrom(
module=self.imported_classes[import_class_name],
names=[import_class],
level=1,
),
)

        import_class_id = import_class.id
        
+        if import_class_id == "self":
+            return

        # We add the class to our set of imported in methods - these classes
        # don't need to be imported at all in the global scope.
        self.imported_in_method.add(import_class.id)
        method_def.body.insert(
            0,
            ast.ImportFrom(
                module=self.imported_classes[import_class_id],
                names=[import_class],
            ),
        )

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions