Mercurial > p > roundup > code
annotate roundup/backends/__init__.py @ 8566:e4191aa7b402 default tip
doc: issue2551415 correct doc for change input->input_payload
in 2.5 the rest interface changed a variable name from input to
input_payload. An earlier commit changed the rest docs. This commit
adds an item for it to the upgrading 2.4.0->2.5.0 section. Also cross
reference added to the rest docs with the updated examples.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Thu, 09 Apr 2026 00:19:06 -0400 |
| parents | d7cc63d7a857 |
| children |
| rev | line source |
|---|---|
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
1 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
3 # This module is free software, and you may redistribute it and/or modify |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
4 # under the same terms as Python, so long as this copyright message and |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
5 # disclaimer are retained in their original form. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
6 # |
| 214 | 7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR |
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
10 # POSSIBILITY OF SUCH DAMAGE. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
11 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1190
diff
changeset
|
17 |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
18 '''Container for the hyperdb storage backend implementations. |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1190
diff
changeset
|
19 ''' |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
20 __docformat__ = 'restructuredtext' |
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
159
diff
changeset
|
21 |
|
2925
e54c95de4c6a
fix: second call to get_backend() succeeded...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
22 # These names are used to suppress import errors. |
|
e54c95de4c6a
fix: second call to get_backend() succeeded...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
23 # If get_backend raises an ImportError with appropriate |
|
e54c95de4c6a
fix: second call to get_backend() succeeded...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
24 # module name, have_backend quietly returns False. |
|
e54c95de4c6a
fix: second call to get_backend() succeeded...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
25 # Otherwise the error is reraised. |
|
2856
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2812
diff
changeset
|
26 _modules = { |
|
3718
0d561b24ceff
support sqlite3
Richard Jones <richard@users.sourceforge.net>
parents:
3503
diff
changeset
|
27 'mysql': ('MySQLdb',), |
|
5464
22eecc8a8bd4
fixed backend detection for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5425
diff
changeset
|
28 'postgresql': ('psycopg2',), |
|
8081
95f91b6f0386
issue2551343 - Remove support for PySQLite and sqlite v2.
John Rouillard <rouilj@ieee.org>
parents:
6365
diff
changeset
|
29 'sqlite': ('sqlite3', '_sqlite3'), |
|
2856
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2812
diff
changeset
|
30 } |
|
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2812
diff
changeset
|
31 |
|
8259
d7cc63d7a857
chore(ruff): var name changes; unused import; formatting
John Rouillard <rouilj@ieee.org>
parents:
8081
diff
changeset
|
32 |
|
2856
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2812
diff
changeset
|
33 def get_backend(name): |
|
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2812
diff
changeset
|
34 '''Get a specific backend by name.''' |
|
8259
d7cc63d7a857
chore(ruff): var name changes; unused import; formatting
John Rouillard <rouilj@ieee.org>
parents:
8081
diff
changeset
|
35 global_vars = globals() |
|
2925
e54c95de4c6a
fix: second call to get_backend() succeeded...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
36 # if requested backend has been imported yet, return current instance |
|
8259
d7cc63d7a857
chore(ruff): var name changes; unused import; formatting
John Rouillard <rouilj@ieee.org>
parents:
8081
diff
changeset
|
37 if name in global_vars: |
|
d7cc63d7a857
chore(ruff): var name changes; unused import; formatting
John Rouillard <rouilj@ieee.org>
parents:
8081
diff
changeset
|
38 return global_vars[name] |
|
2925
e54c95de4c6a
fix: second call to get_backend() succeeded...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
39 # import the backend module |
|
e54c95de4c6a
fix: second call to get_backend() succeeded...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
40 module_name = 'back_%s' % name |
|
8259
d7cc63d7a857
chore(ruff): var name changes; unused import; formatting
John Rouillard <rouilj@ieee.org>
parents:
8081
diff
changeset
|
41 module = __import__(module_name, global_vars, level=1) |
|
d7cc63d7a857
chore(ruff): var name changes; unused import; formatting
John Rouillard <rouilj@ieee.org>
parents:
8081
diff
changeset
|
42 global_vars[name] = module |
|
4687
4960a2c21590
Python 2.3 workarounds cleanup
anatoly techtonik <techtonik@gmail.com>
parents:
4570
diff
changeset
|
43 return module |
|
159
764db91c0dea
Checks for ability to import the specific back-end module.
Richard Jones <richard@users.sourceforge.net>
parents:
46
diff
changeset
|
44 |
|
8259
d7cc63d7a857
chore(ruff): var name changes; unused import; formatting
John Rouillard <rouilj@ieee.org>
parents:
8081
diff
changeset
|
45 |
|
2856
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2812
diff
changeset
|
46 def have_backend(name): |
|
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2812
diff
changeset
|
47 '''Is backend "name" available?''' |
|
1809
bd127cafe3a8
Simplify backend importing, by moving the imports into the backend modules.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1609
diff
changeset
|
48 try: |
|
2856
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2812
diff
changeset
|
49 get_backend(name) |
|
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2812
diff
changeset
|
50 return 1 |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5005
diff
changeset
|
51 except ImportError as e: |
|
5464
22eecc8a8bd4
fixed backend detection for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5425
diff
changeset
|
52 if hasattr(e, 'name'): |
|
22eecc8a8bd4
fixed backend detection for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5425
diff
changeset
|
53 modname = e.name |
|
22eecc8a8bd4
fixed backend detection for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5425
diff
changeset
|
54 else: |
|
22eecc8a8bd4
fixed backend detection for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5425
diff
changeset
|
55 modname = e.args[0][16:] if e.args[0].startswith('No module named ') else None |
|
22eecc8a8bd4
fixed backend detection for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5425
diff
changeset
|
56 |
|
6365
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5464
diff
changeset
|
57 # It's always ok if memorydb is not found |
|
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5464
diff
changeset
|
58 if modname.endswith('back_memorydb'): |
|
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5464
diff
changeset
|
59 return 0 |
|
5464
22eecc8a8bd4
fixed backend detection for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5425
diff
changeset
|
60 if modname and (modname in _modules.get(name, (name,))): |
|
22eecc8a8bd4
fixed backend detection for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5425
diff
changeset
|
61 return 0 |
|
3718
0d561b24ceff
support sqlite3
Richard Jones <richard@users.sourceforge.net>
parents:
3503
diff
changeset
|
62 raise |
|
2856
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2812
diff
changeset
|
63 return 0 |
|
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2812
diff
changeset
|
64 |
|
8259
d7cc63d7a857
chore(ruff): var name changes; unused import; formatting
John Rouillard <rouilj@ieee.org>
parents:
8081
diff
changeset
|
65 |
|
2856
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2812
diff
changeset
|
66 def list_backends(): |
|
2925
e54c95de4c6a
fix: second call to get_backend() succeeded...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
67 '''List all available backend names. |
|
e54c95de4c6a
fix: second call to get_backend() succeeded...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
68 |
|
e54c95de4c6a
fix: second call to get_backend() succeeded...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
69 This function has side-effect of registering backward-compatible |
|
e54c95de4c6a
fix: second call to get_backend() succeeded...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
70 globals for all available backends. |
|
e54c95de4c6a
fix: second call to get_backend() succeeded...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
71 |
|
6365
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5464
diff
changeset
|
72 Note: Since memorydb does not live in the backends directory, it will |
|
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5464
diff
changeset
|
73 never be found in the default setup. It *can* be enabled by preloading |
|
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5464
diff
changeset
|
74 test/memorydb and injecting into roundup.backends. So the normal user |
|
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5464
diff
changeset
|
75 can never configure memorydb but it makes using the tests easier |
|
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5464
diff
changeset
|
76 because we do not need to monkey-patch list_backends. |
|
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5464
diff
changeset
|
77 |
|
2925
e54c95de4c6a
fix: second call to get_backend() succeeded...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
78 ''' |
|
8259
d7cc63d7a857
chore(ruff): var name changes; unused import; formatting
John Rouillard <rouilj@ieee.org>
parents:
8081
diff
changeset
|
79 backend_list = [] |
|
6365
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5464
diff
changeset
|
80 for name in 'anydbm', 'mysql', 'sqlite', 'postgresql', 'memorydb': |
|
2856
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2812
diff
changeset
|
81 if have_backend(name): |
|
8259
d7cc63d7a857
chore(ruff): var name changes; unused import; formatting
John Rouillard <rouilj@ieee.org>
parents:
8081
diff
changeset
|
82 backend_list.append(name) |
|
d7cc63d7a857
chore(ruff): var name changes; unused import; formatting
John Rouillard <rouilj@ieee.org>
parents:
8081
diff
changeset
|
83 return backend_list |
|
854
3cdfa5d86cec
Added metakit backend to the db tests...
Richard Jones <richard@users.sourceforge.net>
parents:
733
diff
changeset
|
84 |
|
2925
e54c95de4c6a
fix: second call to get_backend() succeeded...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
85 # vim: set filetype=python sts=4 sw=4 et si : |
