opensafely-core / opensafely-core/sqlrunner
Friendlier error message than `TypeError`
Open
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1
- Forks
- 0
- Avg merge
- 4d 23h
- Merged PRs (30d)
- 3
Description
When neither --dsn is passed nor DATABASE_URL is set, SQL Runner prints a stack trace:
Running actions: query
jobrunner.run loop started
query: Copying in code from /Users/iaindillingham/Code/opensafely/tpp-database-schema
query: Preparing
query: Executing
query: Logs written to: /Users/iaindillingham/Code/opensafely/tpp-database-schema/metadata/query.log
query: Finalizing
query: Job exited with error code 1
query: Cleaning up container and volume
=> query
Job exited with error code 1
log file: metadata/query.log
outputs:
(no outputs)
logs:
Traceback (most recent call last):
File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/app/sqlrunner/__main__.py", line 9, in <module>
results = main.run_sql(dsn=args.dsn, sql_query=sql_query)
File "/app/sqlrunner/main.py", line 51, in run_sql
database=parsed_dsn.path.strip("/"),
TypeError: a bytes-like object is required, not 'str'
parsed_dsn is an instance of ParseResultBytes rather than ParseResult because dsn was None:
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The traceback points to sqlrunner/main.py around line 44, with entry-point behavior shown in sqlrunner/main.py. Start by reproducing the run without --dsn or DATABASE_URL and inspect how that input is parsed. Done means the failure produces a friendlier error instead of the shown TypeError and stack trace.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli, databases
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100