Polish: clearer errors, corrected docstrings, setuptools pin

- insert/upsert into a name that is actually a view now shows a
  clean error instead of a traceback
- db.view() on a name that is a table now says so in its error
- Database.__getitem__ docstring documents that views are returned
  for view names; hash_id docstring corrected (it is a column name,
  not a boolean)
- Registering two migrations with the same name in one set now
  raises ValueError at registration time instead of executing both
  and failing with IntegrityError at apply time
- build-system requires setuptools>=77, needed for the PEP 639
  license expression

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UnLnhsH25Nnv7LHhekUfPd
This commit is contained in:
Claude 2026-07-04 19:13:15 +00:00
commit 397cdcc491
No known key found for this signature in database
7 changed files with 58 additions and 7 deletions

View file

@ -1382,7 +1382,10 @@ def test_bad_table_and_view_exceptions(fresh_db):
assert ex.value.args[0] == "Table v is actually a view"
with pytest.raises(NoView) as ex2:
fresh_db.view("t")
assert ex2.value.args[0] == "View t does not exist"
assert ex2.value.args[0] == "View t does not exist - t is a table"
with pytest.raises(NoView) as ex3:
fresh_db.view("missing")
assert ex3.value.args[0] == "View missing does not exist"
# Tests for issue #655: Table configuration should be stored in _defaults