Skip to content

[DRC-561] [Bug] AttributeError: 'list' object has no attribute 'from_dict' #384

Open
@SBurwash

Description

@SBurwash

Current Behavior

When running the row_count diff, I get the following error

Future exception was never retrieved
future: <Future finished exception=AttributeError("'list' object has no attribute 'from_dict'")>
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/recce/apis/run_func.py", line 87, in fn
    raise e
  File "/usr/local/lib/python3.11/site-packages/recce/apis/run_func.py", line 80, in fn
    result = task.execute()
             ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/recce/tasks/rowcount.py", line 121, in execute
    return self.execute_dbt()
           ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/recce/tasks/rowcount.py", line 59, in execute_dbt
    node_ids = dbt_adapter.select_nodes(self.params.get('select', ""), self.params.get('exclude', ""))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/recce/adapter/dbt_adapter/__init__.py", line 635, in select_nodes
    manifest = self.manifest.deepcopy()
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/dbt/contracts/graph/manifest.py", line 1004, in deepcopy
    disabled={k: _deepcopy(v) for k, v in self.disabled.items()},
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/dbt/contracts/graph/manifest.py", line 1004, in <dictcomp>
    disabled={k: _deepcopy(v) for k, v in self.disabled.items()},
                 ^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/dbt/contracts/graph/manifest.py", line 548, in _deepcopy
    return value.from_dict(value.to_dict(omit_none=True))
           ^^^^^^^^^^^^^^^
AttributeError: 'list' object has no attribute 'from_dict'

Expected Behavior

I expect to be capable of running the row count diff with error.

I get the same error when running recce run

Steps To Reproduce

  1. In main - dbt compile --target prod --target-path target-base/ # Tables already exist in prod
  2. In main - dbt docs generate --target prod --target-path target-base/
  3. In branch - dbt compile # Tables already exist in dev
  4. In branch - dbt compile
  5. In branch - recce run

Relevant log output

INFO:     192.168.65.1:59150 - "GET /api/version HTTP/1.1" 200 OK
INFO:     192.168.65.1:48857 - "GET /api/info HTTP/1.1" 200 OK
INFO:     192.168.65.1:53986 - "POST /api/runs/aggregate HTTP/1.1" 200 OK
INFO:     192.168.65.1:32861 - "POST /api/runs HTTP/1.1" 201 Created
INFO:     192.168.65.1:32861 - "GET /api/runs/cac3aa5e-ab5e-4300-9951-fbc43831db96/wait HTTP/1.1" 200 OK
INFO:     192.168.65.1:32861 - "POST /api/runs/aggregate HTTP/1.1" 200 OK
INFO:     192.168.65.1:37180 - "GET /api/checks HTTP/1.1" 200 OK
INFO:     192.168.65.1:37180 - "GET /api/checks/ab462be2-9083-4f11-a790-dee89d3f8b15 HTTP/1.1" 200 OK
INFO:     192.168.65.1:37180 - "POST /api/checks/ab462be2-9083-4f11-a790-dee89d3f8b15/run HTTP/1.1" 201 Created
Future exception was never retrieved
future: <Future finished exception=AttributeError("'list' object has no attribute 'from_dict'")>
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/recce/apis/run_func.py", line 87, in fn
    raise e
  File "/usr/local/lib/python3.11/site-packages/recce/apis/run_func.py", line 80, in fn
    result = task.execute()
             ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/recce/tasks/rowcount.py", line 121, in execute
    return self.execute_dbt()
           ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/recce/tasks/rowcount.py", line 59, in execute_dbt
    node_ids = dbt_adapter.select_nodes(self.params.get('select', ""), self.params.get('exclude', ""))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/recce/adapter/dbt_adapter/__init__.py", line 635, in select_nodes
    manifest = self.manifest.deepcopy()
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/dbt/contracts/graph/manifest.py", line 1004, in deepcopy
    disabled={k: _deepcopy(v) for k, v in self.disabled.items()},
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/dbt/contracts/graph/manifest.py", line 1004, in <dictcomp>
    disabled={k: _deepcopy(v) for k, v in self.disabled.items()},
                 ^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/dbt/contracts/graph/manifest.py", line 548, in _deepcopy
    return value.from_dict(value.to_dict(omit_none=True))
           ^^^^^^^^^^^^^^^
AttributeError: 'list' object has no attribute 'from_dict'
INFO:     192.168.65.1:37180 - "GET /api/runs/c0bb79fd-4662-4556-9c25-731cbc96c0d9/wait?timeout=2 HTTP/1.1" 200 OK
INFO:     192.168.65.1:37180 - "GET /api/checks/ab462be2-9083-4f11-a790-dee89d3f8b15 HTTP/1.1" 200 OK
INFO:     192.168.65.1:37180 - "POST /api/runs/c0bb79fd-4662-4556-9c25-731cbc96c0d9/cancel HTTP/1.1" 200 OK
INFO:     192.168.65.1:32016 - "GET /api/checks HTTP/1.1" 200 OK
INFO:     192.168.65.1:43032 - "GET /api/info HTTP/1.1" 200 OK
INFO:     192.168.65.1:48994 - "POST /api/runs/aggregate HTTP/1.1" 200 OK


### Environment

- recce: 0.25.2
- OS: 14.1.1 (23B81)
- Python: 3.11.7
- Data Warehouse: BigQuery
- dbt: 1.7.15


### Additional Context

I am running dbt inside a container which is not at root of my repo (within a `/dbt` subdirectory)

From SyncLinear.com | DRC-561

Metadata

Metadata

Assignees

Labels

bugSomething isn't workinglinearCreated by Linear-GitHub SynctriageTriage required

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions