fzyzcjy / grafana_dashboard_python

Write Grafana dashboards in Python, without losing thousands of dashboards in the zoo
MIT License
53 stars 8 forks source link

can't convert a panel from Python to JSON #4

Open latsygin opened 3 weeks ago

latsygin commented 3 weeks ago

I can't convert a panel from Python to JSON. The error : "NameError: name 'PanelOptions' is not defined" occurs

What could be the matter?

fzyzcjy commented 3 weeks ago

It is defined (e.g. https://github.com/search?q=repo%3Afzyzcjy%2Fgrafana_dashboard_python%20PanelOptions&type=code). Maybe share a bit more details?

latsygin commented 3 weeks ago

Here's the traceback. Maybe you had something specific in mind?

> grafana_dashboard python-to-json \\
  --python-base-dir python_to_json \
  --python-base-package input_python \
  --json-dir python_to_json/output_json

convert_package examine python_to_json/input_python/output.py (input_python.output)
╭────────────────────────────────────────────────────────────────────────────────────────────────────── Traceback (most recent call last) ──────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ in python_to_json:29                                                                                                                                                                                                                          │
│                                                                                                                                                                                                                                               │
│ in convert_package:28                                                                                                                                                                                                                         │
│                                                                                                                                                                                                                                               │
│ /Users/silatsygin/.pyenv/versions/3.10.14/lib/python3.10/importlib/__init__.py:126 in import_module                                                                                                                                           │
│                                                                                                                                                                                                                                               │
│   123 │   │   │   if character != '.':                                                         ╭──────────── locals ─────────────╮                                                                                                            │
│   124 │   │   │   │   break                                                                    │   level = 0                     │                                                                                                            │
│   125 │   │   │   level += 1                                                                   │    name = 'input_python.output' │                                                                                                            │
│ ❱ 126 │   return _bootstrap._gcd_import(name[level:], package, level)                          │ package = None                  │                                                                                                            │
│   127                                                                                          ╰─────────────────────────────────╯                                                                                                            │
│   128                                                                                                                                                                                                                                         │
│   129 _RELOADING = {}                                                                                                                                                                                                                         │
│ in _gcd_import:1050                                                                                                                                                                                                                           │
│ ╭──────────── locals ─────────────╮                                                                                                                                                                                                           │
│ │   level = 0                     │                                                                                                                                                                                                           │
│ │    name = 'input_python.output' │                                                                                                                                                                                                           │
│ │ package = None                  │                                                                                                                                                                                                           │
│ ╰─────────────────────────────────╯                                                                                                                                                                                                           │
│ in _find_and_load:1027                                                                                                                                                                                                                        │
│ ╭──────────────── locals ─────────────────╮                                                                                                                                                                                                   │
│ │ module = <object object at 0x1020a8060> │                                                                                                                                                                                                   │
│ │   name = 'input_python.output'          │                                                                                                                                                                                                   │
│ ╰─────────────────────────────────────────╯                                                                                                                                                                                                   │
│ in _find_and_load_unlocked:1006                                                                                                                                                                                                               │
│ ╭───────────────────────────────────────────────────────────────────────────────────────────────── locals ──────────────────────────────────────────────────────────────────────────────────────────────────╮                                 │
│ │          name = 'input_python.output'                                                                                                                                                                     │                                 │
│ │        parent = 'input_python'                                                                                                                                                                            │                                 │
│ │ parent_module = <module 'input_python' (<_frozen_importlib_external._NamespaceLoader object at 0x102cb0d30>)>                                                                                             │                                 │
│ │          path = _NamespacePath(['/Users/silatsygin/temp/python_to_json/input_python'])                                                                                                                    │                                 │
│ │          spec = ModuleSpec(name='input_python.output', loader=<_frozen_importlib_external.SourceFileLoader object at 0x102cb0910>, origin='/Users/silatsygin/temp/python_to_json/input_python/output.py') │                                 │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯                                 │
│ in _load_unlocked:688                                                                                                                                                                                                                         │
│ ╭────────────────────────────────────────────────────────────────────────────────────────────── locals ──────────────────────────────────────────────────────────────────────────────────────────────╮                                        │
│ │ module = <module 'input_python.output' from '/Users/silatsygin/temp/python_to_json/input_python/output.py'>                                                                                        │                                        │
│ │   spec = ModuleSpec(name='input_python.output', loader=<_frozen_importlib_external.SourceFileLoader object at 0x102cb0910>, origin='/Users/silatsygin/temp/python_to_json/input_python/output.py') │                                        │
│ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯                                        │
│ in exec_module:883                                                                                                                                                                                                                            │
│ ╭────────────────────────────────────────────────────────── locals ───────────────────────────────────────────────────────────╮                                                                                                               │
│ │   code = <code object <module> at 0x1032d35d0, file "/Users/silatsygin/temp/python_to_json/input_python/output.py", line 1> │                                                                                                               │
│ │ module = <module 'input_python.output' from '/Users/silatsygin/temp/python_to_json/input_python/output.py'>                 │                                                                                                               │
│ │   self = <_frozen_importlib_external.SourceFileLoader object at 0x102cb0910>                                                │                                                                                                               │
│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯                                                                                                               │
│ in _call_with_frames_removed:241                                                                                                                                                                                                              │
│ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────── locals ────────────────────────────────────────────────────────────────────────────────────────────────────────╮                     │
│ │ args = (                                                                                                                                                                                                              │                     │
│ │        │   <code object <module> at 0x1032d35d0, file "/Users/silatsygin/temp/python_to_json/input_python/output.py", line 1>,                                                                                        │                     │
│ │        │   {                                                                                                                                                                                                          │                     │
│ │        │   │   '__name__': 'input_python.output',                                                                                                                                                                     │                     │
│ │        │   │   '__doc__': None,                                                                                                                                                                                       │                     │
│ │        │   │   '__package__': 'input_python',                                                                                                                                                                         │                     │
│ │        │   │   '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x102cb0910>,                                                                                                                     │                     │
│ │        │   │   '__spec__': ModuleSpec(name='input_python.output', loader=<_frozen_importlib_external.SourceFileLoader object at 0x102cb0910>, origin='/Users/silatsygin/temp/python_to_json/input_python/output.py'), │                     │
│ │        │   │   '__file__': '/Users/silatsygin/temp/python_to_json/input_python/output.py',                                                                                                                            │                     │
│ │        │   │   '__cached__': '/Users/silatsygin/temp/python_to_json/input_python/__pycache__/output.cpython-31'+5,                                                                                                    │                     │
│ │        │   │   '__builtins__': {                                                                                                                                                                                      │                     │
│ │        │   │   │   '__name__': 'builtins',                                                                                                                                                                            │                     │
│ │        │   │   │   '__doc__': 'Built-in functions, exceptions, and other objects.\n\nNoteworthy: None is the `nil'+46,                                                                                                │                     │
│ │        │   │   │   '__package__': '',                                                                                                                                                                                 │                     │
│ │        │   │   │   '__loader__': <class '_frozen_importlib.BuiltinImporter'>,                                                                                                                                         │                     │
│ │        │   │   │   '__spec__': ModuleSpec(name='builtins', loader=<class '_frozen_importlib.BuiltinImporter'>, origin='built-in'),                                                                                    │                     │
│ │        │   │   │   '__build_class__': <built-in function __build_class__>,                                                                                                                                            │                     │
│ │        │   │   │   '__import__': <built-in function __import__>,                                                                                                                                                      │                     │
│ │        │   │   │   'abs': <built-in function abs>,                                                                                                                                                                    │                     │
│ │        │   │   │   'all': <built-in function all>,                                                                                                                                                                    │                     │
│ │        │   │   │   'any': <built-in function any>,                                                                                                                                                                    │                     │
│ │        │   │   │   ... +145                                                                                                                                                                                           │                     │
│ │        │   │   },                                                                                                                                                                                                     │                     │
│ │        │   │   'annotations': _Feature((3, 7, 0, 'beta', 1), (3, 11, 0, 'alpha', 0), 16777216),                                                                                                                       │                     │
│ │        │   │   'datetime': <class 'datetime.datetime'>,                                                                                                                                                               │                     │
│ │        │   │   ... +77                                                                                                                                                                                                │                     │
│ │        │   }                                                                                                                                                                                                          │                     │
│ │        )                                                                                                                                                                                                              │                     │
│ │    f = <built-in function exec>                                                                                                                                                                                       │                     │
│ │ kwds = {}                                                                                                                                                                                                             │                     │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯                     │
│                                                                                                                                                                                                                                               │
│ /Users/silatsygin/temp/python_to_json/input_python/output.py:35 in <module>                                                                                                                                                                   │
│                                                                                                                                                                                                                                               │
│    32 │   │   │   title='Current total size of queue buffers',                                                                                                                                                                                │
│    33 │   │   │   datasource=Datasource(uid='${datasource}'),                                                                                                                                                                                 │
│    34 │   │   │   gridPos=GridPos(),                                                                                                                                                                                                          │
│ ❱  35 │   │   │   options=PanelOptions(                                                                                                                                                                                                       │
│    36 │   │   │   │   legend=VizLegendOptions(displayMode=LegendDisplayMode.list, placement=Le                                                                                                                                                │
│    37 │   │   │   │   tooltip=VizTooltipOptions(mode=TooltipDisplayMode.single, sort=SortOrder                                                                                                                                                │
│    38 │   │   │   ),                                                                                                                                                                                                                          │
│                                                                                                                                                                                                                                               │
│ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────── locals ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │                  annotations = _Feature((3, 7, 0, 'beta', 1), (3, 11, 0, 'alpha', 0), 16777216)                                                                                                                                           │ │
│ │                          Any = typing.Any                                                                                                                                                                                                 │ │
│ │                       conint = <cyfunction conint at 0x103622c20>                                                                                                                                                                         │ │
│ │                       constr = <cyfunction constr at 0x103623510>                                                                                                                                                                         │ │
│ │                         Dict = typing.Dict                                                                                                                                                                                                │ │
│ │                        Field = <cyfunction Field at 0x103650930>                                                                                                                                                                          │ │
│ │                         List = typing.List                                                                                                                                                                                                │ │
│ │                     Optional = typing.Optional                                                                                                                                                                                            │ │
│ │   piechartpanelcfg_types_gen = <module 'grafana_dashboard.model.piechartpanelcfg_types_gen' from                                                                                                                                          │ │
│ │                                '/Users/silatsygin/Documents/Dept/Work/Git/venv/lib/python3.10/site-packages/grafana_dashboard-0.1.1-py3.10.egg/grafana_dashboard/model/piechartpanelcfg_types_gen.py'>                                    │ │
│ │ timeseriespanelcfg_types_gen = <module 'grafana_dashboard.model.timeseriespanelcfg_types_gen' from                                                                                                                                        │ │
│ │                                '/Users/silatsygin/Documents/Dept/Work/Git/venv/lib/python3.10/site-packages/grafana_dashboard-0.1.1-py3.10.egg/grafana_dashboard/model/timeseriespanelcfg_types_gen.py'>                                  │ │
│ │                        Union = typing.Union                                                                                                                                                                                               │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
NameError: name 'PanelOptions' is not defined
fzyzcjy commented 3 weeks ago

Hmm I guess it is because of missing imports. Maybe check why it is not imported.

latsygin commented 3 weeks ago

Maybe some specific version of Python is needed?

fzyzcjy commented 3 weeks ago

Could you please firstly check python_to_json/input_python/output.py, maybe an import of the PanelOptions is missing

latsygin commented 3 weeks ago

He's really missing. What code should I add to the output.py file to fix this?

fzyzcjy commented 3 weeks ago

Just import it...