mirror of
				https://github.com/psycopg/psycopg2.git
				synced 2025-10-30 07:17:28 +03:00 
			
		
		
		
	Added table of sqlstate exceptions in the docs
Note that the column-spanning cells break text docs. I don't think anybody cares about them, so going to drop them.
This commit is contained in:
		
							parent
							
								
									d08be18671
								
							
						
					
					
						commit
						e5e8cec350
					
				
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							|  | @ -7,10 +7,6 @@ MANIFEST | ||||||
| *.egg-info/ | *.egg-info/ | ||||||
| dist/* | dist/* | ||||||
| build/* | build/* | ||||||
| doc/src/_build/* |  | ||||||
| doc/html/* |  | ||||||
| doc/psycopg2.txt |  | ||||||
| scripts/pypi_docs_upload.py |  | ||||||
| env | env | ||||||
| env? | env? | ||||||
| .idea | .idea | ||||||
|  |  | ||||||
							
								
								
									
										5
									
								
								doc/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								doc/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | ||||||
|  | env | ||||||
|  | src/_build/* | ||||||
|  | html/* | ||||||
|  | psycopg2.txt | ||||||
|  | src/sqlstate_errors.rst | ||||||
|  | @ -13,16 +13,19 @@ PYTHON_VERSION ?= $(shell $(PYTHON) -c 'import sys; print ("%d.%d" % sys.version | ||||||
| SPHINXBUILD ?= $$(pwd)/env/bin/sphinx-build | SPHINXBUILD ?= $$(pwd)/env/bin/sphinx-build | ||||||
| SPHOPTS = PYTHONPATH=$$(pwd)/../build/lib.$(PYTHON_VERSION)/ SPHINXBUILD=$(SPHINXBUILD) | SPHOPTS = PYTHONPATH=$$(pwd)/../build/lib.$(PYTHON_VERSION)/ SPHINXBUILD=$(SPHINXBUILD) | ||||||
| 
 | 
 | ||||||
| html: | html: src/sqlstate_errors.rst | ||||||
| 	$(MAKE) PYTHON=$(PYTHON) -C .. package | 	$(MAKE) PYTHON=$(PYTHON) -C .. package | ||||||
| 	$(MAKE) $(SPHOPTS) -C src $@ | 	$(MAKE) $(SPHOPTS) -C src $@ | ||||||
| 	cp -r src/_build/html . | 	cp -r src/_build/html . | ||||||
| 
 | 
 | ||||||
| text: | text: src/sqlstate_errors.rst | ||||||
| 	$(MAKE) PYTHON=$(PYTHON) -C .. package | 	$(MAKE) PYTHON=$(PYTHON) -C .. package | ||||||
| 	$(MAKE) $(SPHOPTS) -C src $@ | 	$(MAKE) $(SPHOPTS) -C src $@ | ||||||
| 	cd src && tools/stitch_text.py index.rst _build/text > ../psycopg2.txt | 	cd src && tools/stitch_text.py index.rst _build/text > ../psycopg2.txt | ||||||
| 
 | 
 | ||||||
|  | src/sqlstate_errors.rst: ../psycopg/sqlstate_errors.h | ||||||
|  | 	PYTHONPATH=`pwd`/../build/lib.$(PYTHON_VERSION) $(PYTHON) src/tools/make_sqlstate_docs.py $< > $@ | ||||||
|  | 
 | ||||||
| doctest: | doctest: | ||||||
| 	$(MAKE) PYTHON=$(PYTHON) -C .. package | 	$(MAKE) PYTHON=$(PYTHON) -C .. package | ||||||
| 	$(MAKE) $(SPHOPTS) -C src $@ | 	$(MAKE) $(SPHOPTS) -C src $@ | ||||||
|  | @ -33,7 +36,7 @@ upload: | ||||||
| 
 | 
 | ||||||
| clean: | clean: | ||||||
| 	$(MAKE) $(SPHOPTS) -C src $@ | 	$(MAKE) $(SPHOPTS) -C src $@ | ||||||
| 	rm -rf html psycopg2.txt | 	rm -rf html psycopg2.txt src/sqlstate_errors.rst | ||||||
| 
 | 
 | ||||||
| env: requirements.txt | env: requirements.txt | ||||||
| 	virtualenv env | 	virtualenv env | ||||||
|  |  | ||||||
|  | @ -54,10 +54,6 @@ idiomatic error handler: | ||||||
|     except psycopg2.errors.LockNotAvailable: |     except psycopg2.errors.LockNotAvailable: | ||||||
|         locked = True |         locked = True | ||||||
| 
 | 
 | ||||||
| For completeness, the module also exposes all the :ref:`DB-API-defined |  | ||||||
| exceptions <dbapi-exceptions>` and :ref:`a few psycopg-specific ones |  | ||||||
| <extension-exceptions>` exposed by the `!extensions` module.  One stop shop |  | ||||||
| for all your mistakes... |  | ||||||
| 
 | 
 | ||||||
| .. autofunction:: lookup | .. autofunction:: lookup | ||||||
| 
 | 
 | ||||||
|  | @ -67,3 +63,17 @@ for all your mistakes... | ||||||
|             cur.execute("LOCK TABLE mytable IN ACCESS EXCLUSIVE MODE NOWAIT") |             cur.execute("LOCK TABLE mytable IN ACCESS EXCLUSIVE MODE NOWAIT") | ||||||
|         except psycopg2.errors.lookup("55P03"): |         except psycopg2.errors.lookup("55P03"): | ||||||
|             locked = True |             locked = True | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | SQLSTATE exception classes | ||||||
|  | ========================== | ||||||
|  | 
 | ||||||
|  | The following table contains the list of all the SQLSTATE classes exposed by | ||||||
|  | the module. | ||||||
|  | 
 | ||||||
|  | Note that, for completeness, the module also exposes all the | ||||||
|  | :ref:`DB-API-defined exceptions <dbapi-exceptions>` and :ref:`a few | ||||||
|  | psycopg-specific ones <extension-exceptions>` exposed by the `!extensions` | ||||||
|  | module, which are not listed here. | ||||||
|  | 
 | ||||||
|  | .. include:: sqlstate_errors.rst | ||||||
|  |  | ||||||
							
								
								
									
										58
									
								
								doc/src/tools/make_sqlstate_docs.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								doc/src/tools/make_sqlstate_docs.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,58 @@ | ||||||
|  | #!/usr/bin/env python | ||||||
|  | """Create the docs table of the sqlstate errors. | ||||||
|  | """ | ||||||
|  | 
 | ||||||
|  | from __future__ import print_function | ||||||
|  | 
 | ||||||
|  | import re | ||||||
|  | import sys | ||||||
|  | from collections import namedtuple | ||||||
|  | 
 | ||||||
|  | from psycopg2._psycopg import sqlstate_errors | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def main(): | ||||||
|  |     sqlclasses = {} | ||||||
|  |     clsfile = sys.argv[1] | ||||||
|  |     with open(clsfile) as f: | ||||||
|  |         for l in f: | ||||||
|  |             m = re.match(r'/\* Class (..) - (.+) \*/', l) | ||||||
|  |             if m is not None: | ||||||
|  |                 sqlclasses[m.group(1)] = m.group(2) | ||||||
|  | 
 | ||||||
|  |     Line = namedtuple('Line', 'colstate colexc colbase sqlstate') | ||||||
|  | 
 | ||||||
|  |     lines = [Line('SQLSTATE', 'Exception', 'Base exception', None)] | ||||||
|  |     for k in sorted(sqlstate_errors): | ||||||
|  |         exc = sqlstate_errors[k] | ||||||
|  |         lines.append(Line( | ||||||
|  |             "``%s``" % k, "`!%s`" % exc.__name__, | ||||||
|  |             "`!%s`" % get_base_exception(exc).__name__, k)) | ||||||
|  | 
 | ||||||
|  |     widths = [max(len(l[c]) for l in lines) for c in range(3)] | ||||||
|  |     h = Line(*(['=' * w for w in widths] + [None])) | ||||||
|  |     lines.insert(0, h) | ||||||
|  |     lines.insert(2, h) | ||||||
|  |     lines.append(h) | ||||||
|  | 
 | ||||||
|  |     h1 = '-' * (sum(widths) + len(widths) - 1) | ||||||
|  |     sqlclass = None | ||||||
|  |     for l in lines: | ||||||
|  |         cls = l.sqlstate[:2] if l.sqlstate else None | ||||||
|  |         if cls and cls != sqlclass: | ||||||
|  |             print("**Class %s**: %s" % (cls, sqlclasses[cls])) | ||||||
|  |             print(h1) | ||||||
|  |             sqlclass = cls | ||||||
|  | 
 | ||||||
|  |         print("%-*s %-*s %-*s" % ( | ||||||
|  |             widths[0], l.colstate, widths[1], l.colexc, widths[2], l.colbase)) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def get_base_exception(exc): | ||||||
|  |     for cls in exc.__mro__: | ||||||
|  |         if cls.__module__ == 'psycopg2': | ||||||
|  |             return cls | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if __name__ == '__main__': | ||||||
|  |     sys.exit(main()) | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user