MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / _format_url

Function _format_url

lib/sqlalchemy/dialects/sqlite/provision.py:38–82  ·  view source on GitHub ↗

given a sqlite url + desired driver + ident, make a canonical URL out of it

(url, driver, ident)

Source from the content-addressed store, hash-verified

36
37
38def _format_url(url, driver, ident):
39 """given a sqlite url + desired driver + ident, make a canonical
40 URL out of it
41
42 """
43 url = sa_url.make_url(url)
44
45 if driver is None:
46 driver = url.get_driver_name()
47
48 filename = url.database
49
50 needs_enc = driver == "pysqlcipher"
51 name_token = None
52
53 if filename and filename != ":memory:":
54 assert "test_schema" not in filename
55 tokens = re.split(r"[_\.]", filename)
56
57 for token in tokens:
58 if token in _drivernames:
59 if driver is None:
60 driver = token
61 continue
62 elif token in ("db", "enc"):
63 continue
64 elif name_token is None:
65 name_token = token.strip("_")
66
67 assert name_token, f"sqlite filename has no name token: {url.database}"
68
69 new_filename = f"{name_token}_{driver}"
70 if ident:
71 new_filename += f"_{ident}"
72 new_filename += ".db"
73 if needs_enc:
74 new_filename += ".enc"
75 url = url.set(database=new_filename)
76
77 if needs_enc:
78 url = url.set(password="test")
79
80 url = url.set(drivername="sqlite+%s" % (driver,))
81
82 return url
83
84
85@generate_driver_url.for_db("sqlite")

Callers 2

generate_driver_urlFunction · 0.85

Calls 4

get_driver_nameMethod · 0.80
splitMethod · 0.80
stripMethod · 0.80
setMethod · 0.45

Tested by

no test coverage detected