error[unresolved-import]: Cannot resolve imported module `tabulate`
  --> scenario_list.py:45:6
   |
44 | from simpleeval import EvalWithCompoundTypes, NameNotDefined  # type: ignore
45 | from tabulate import tabulate_formats
   |      ^^^^^^^^
46 |
47 | try:
   |
info: make sure your Python environment is properly configured: https://docs.astral.sh/ty/modules/#python-environment
info: rule `unresolved-import` is enabled by default

error[unresolved-import]: Module `edsl.jobs` has no member `Job`
  --> scenario_list.py:57:30
   |
55 |     from urllib.parse import ParseResult
56 |     from ..dataset import Dataset
57 |     from ..jobs import Jobs, Job
   |                              ^^^
58 |     from ..surveys import Survey
59 |     from ..questions import QuestionBase, Question
   |
info: rule `unresolved-import` is enabled by default

error[invalid-argument-type]: Argument to bound method `__init__` is incorrect
   --> scenario_list.py:403:13
    |
402 |         q = QuestionList(
403 |             question_name=name,
    |             ^^^^^^^^^^^^^^^^^^ Expected `str`, found `str | None`
404 |             question_text=description
405 |             + f"\n Please try to return {target_number} examples.",
    |
info: Function defined here
   --> /Users/johnhorton/tools/ep/edsl/edsl/questions/question_list.py:445:9
    |
443 |     response_validator_class = ListResponseValidator
444 |
445 |     def __init__(
    |         ^^^^^^^^
446 |         self,
447 |         question_name: str,
    |         ------------------ Parameter declared here
448 |         question_text: str,
449 |         include_comment: bool = True,
    |
info: rule `invalid-argument-type` is enabled by default

error[invalid-parameter-default]: Default value of type `None` is not assignable to annotated parameter type `list[str]`
   --> scenario_list.py:456:9
    |
454 |     def pivot(
455 |         self,
456 |         id_vars: List[str] = None,
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
457 |         var_name="variable",
458 |         value_name="value",
    |
info: rule `invalid-parameter-default` is enabled by default

error[unresolved-attribute]: Type `(...) -> Unknown` has no attribute `__name__`
   --> scenario_list.py:527:29
    |
525 |         if len(func_params) != len(variables):
526 |             raise ScenarioError(
527 |                 f"Function {func.__name__} expects {len(func_params)} arguments, but {len(variables)} variables were provided"
    |                             ^^^^^^^^^^^^^
528 |             )
    |
info: rule `unresolved-attribute` is enabled by default

error[unresolved-attribute]: Type `(...) -> Unknown` has no attribute `__name__`
   --> scenario_list.py:547:33
    |
545 |             if not isinstance(aggregated, dict):
546 |                 raise ScenarioError(
547 |                     f"Function {func.__name__} must return a dictionary"
    |                                 ^^^^^^^^^^^^^
548 |                 )
    |
info: rule `unresolved-attribute` is enabled by default

error[invalid-argument-type]: Argument to bound method `__init__` is incorrect
    --> scenario_list.py:1143:32
     |
1141 |         from .scenario_source import URLSource
1142 |
1143 |         return URLSource(urls, field_name).to_scenario_list()
     |                                ^^^^^^^^^^ Expected `str`, found `str | None`
1144 |
1145 |     @classmethod
     |
info: Function defined here
   --> scenario_source.py:159:9
    |
157 |     source_type = "urls"
158 |
159 |     def __init__(self, urls: list[str], field_name: str):
    |         ^^^^^^^^                        --------------- Parameter declared here
160 |         self.urls = urls
161 |         self.field_name = field_name
    |
info: rule `invalid-argument-type` is enabled by default

error[invalid-parameter-default]: Default value of type `None` is not assignable to annotated parameter type `str`
    --> scenario_list.py:1860:9
     |
1858 |         cls,
1859 |         url: str,
1860 |         sheet_name: str = None,
     |         ^^^^^^^^^^^^^^^^^^^^^^
1861 |         column_names: Optional[List[str]] = None,
1862 |         **kwargs,
     |
info: rule `invalid-parameter-default` is enabled by default

error[invalid-assignment]: Object of type `DelimitedFileSource` is not assignable to `str | ParseResult`
    --> scenario_list.py:1917:9
     |
1915 |             file_or_url = source
1916 |
1917 |         source = DelimitedFileSource(
     |         ^^^^^^
1918 |             file_or_url=file_or_url, delimiter=delimiter, encoding=encoding, **kwargs
1919 |         )
     |
info: rule `invalid-assignment` is enabled by default

error[unresolved-attribute]: Type `str | ParseResult` has no attribute `to_scenario_list`
    --> scenario_list.py:1920:16
     |
1918 |             file_or_url=file_or_url, delimiter=delimiter, encoding=encoding, **kwargs
1919 |         )
1920 |         return source.to_scenario_list()
     |                ^^^^^^^^^^^^^^^^^^^^^^^
1921 |
1922 |     # Convenience methods for specific file types
     |
info: rule `unresolved-attribute` is enabled by default

error[invalid-assignment]: Object of type `CSVSource` is not assignable to `str | ParseResult`
    --> scenario_list.py:1952:9
     |
1950 |             file_or_url = source
1951 |
1952 |         source = CSVSource(
     |         ^^^^^^
1953 |             file_or_url=file_or_url, has_header=has_header, encoding=encoding, **kwargs
1954 |         )
     |
info: rule `invalid-assignment` is enabled by default

error[unresolved-attribute]: Type `str | ParseResult` has no attribute `to_scenario_list`
    --> scenario_list.py:1955:16
     |
1953 |             file_or_url=file_or_url, has_header=has_header, encoding=encoding, **kwargs
1954 |         )
1955 |         return source.to_scenario_list()
     |                ^^^^^^^^^^^^^^^^^^^^^^^
1956 |
1957 |     @classmethod
     |
info: rule `unresolved-attribute` is enabled by default

error[invalid-assignment]: Object of type `TSVSource` is not assignable to `str | ParseResult`
    --> scenario_list.py:1986:9
     |
1984 |             file_or_url = source
1985 |
1986 |         source = TSVSource(
     |         ^^^^^^
1987 |             file_or_url=file_or_url, has_header=has_header, encoding=encoding, **kwargs
1988 |         )
     |
info: rule `invalid-assignment` is enabled by default

error[unresolved-attribute]: Type `str | ParseResult` has no attribute `to_scenario_list`
    --> scenario_list.py:1989:16
     |
1987 |             file_or_url=file_or_url, has_header=has_header, encoding=encoding, **kwargs
1988 |         )
1989 |         return source.to_scenario_list()
     |                ^^^^^^^^^^^^^^^^^^^^^^^
1990 |
1991 |     def left_join(self, other: ScenarioList, by: Union[str, list[str]]) -> ScenarioList:
     |
info: rule `unresolved-attribute` is enabled by default

warning[possibly-unbound-attribute]: Attribute `duplicate` on type `Question | Survey | Unknown` is possibly unbound
    --> scenario_list.py:2144:28
     |
2142 |         intermediate_result = self
2143 |         for i in range(iterations):
2144 |             clean_target = target.duplicate()
     |                            ^^^^^^^^^^^^^^^^
2145 |             new_jobs = clean_target.by(intermediate_result)
2146 |             intermediate_result = new_jobs.run()
     |
info: rule `possibly-unbound-attribute` is enabled by default

error[invalid-return-type]: Return type does not match returned value
    --> scenario_list.py:2217:16
     |
2215 |             names.append(f"scenario_{index}")
2216 |         lines.append(f"scenarios = ScenarioList([{', '.join(names)}])")
2217 |         return lines
     |                ^^^^^ expected `str`, found `list[Unknown]`
2218 |
2219 |     @classmethod
     |
    ::: scenario_list.py:2205:23
     |
2203 |         return s
2204 |
2205 |     def code(self) -> str:
     |                       --- Expected `str` because of return type
2206 |         """Create the Python code representation of a survey."""
2207 |         header_lines = [
     |
info: rule `invalid-return-type` is enabled by default

Found 16 diagnostics
