mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	 8f88190af5
			
		
	
	
		8f88190af5
		
			
		
	
	
	
	
		
			
			* bpo-40204: Allow pre-Sphinx 3 syntax in the doc (GH-21844) Enable Sphinx 3.2 "c_allow_pre_v3" option and disable the c_warn_on_allowed_pre_v3 option to make the documentation compatible with Sphinx 2 and Sphinx 3. (cherry picked from commit423e77d6de) * bpo-40204: Fix Sphinx sytanx in howto/instrumentation.rst (GH-21858) Use generic '.. object::' to declare markers, rather than abusing '.. c:function::' which fails on Sphinx 3. (cherry picked from commit43577c01a2) * bpo-40204: Fix duplicates in the documentation (GH-21857) Fix two Sphinx 3 issues: Doc/c-api/buffer.rst:304: WARNING: Duplicate C declaration, also defined in 'c-api/buffer'. Declaration is 'PyBUF_ND'. Doc/c-api/unicode.rst:1603: WARNING: Duplicate C declaration, also defined in 'c-api/unicode'. Declaration is 'PyObject* PyUnicode_Translate(PyObject *str, PyObject *table, const char *errors)'. (cherry picked from commit46d10b1237) * bpo-40204: Add :noindex: in the documentation (GH-21859) Add :noindex: to duplicated documentation to fix "duplicate object description" errors. For example, fix this Sphinx 3 issue: Doc/library/configparser.rst:1146: WARNING: duplicate object description of configparser.ConfigParser.optionxform, other instance in library/configparser, use :noindex: for one of them (cherry picked from commitd3ded08048) * bpo-40204, doc: Fix syntax of C variables (GH-21846) For example, fix the following Sphinx 3 errors: Doc/c-api/buffer.rst:102: WARNING: Error in declarator or parameters Invalid C declaration: Expected identifier in nested name. [error at 5] void \*obj -----^ Doc/c-api/arg.rst:130: WARNING: Unparseable C cross-reference: 'PyObject*' Invalid C declaration: Expected end of definition. [error at 8] PyObject* --------^ The modified documentation is compatible with Sphinx 2 and Sphinx 3. (cherry picked from commit474652fe93) * bpo-40204: Fix reference to terms in the doc (GH-21865) Sphinx 3 requires to refer to terms with the exact case. For example, fix the Sphinx 3 warning: Doc/library/pkgutil.rst:71: WARNING: term Loader not found in case sensitive match.made a reference to loader instead. (cherry picked from commitbb0b08540c) * bpo-40204: Fix duplicated productionlist names in the doc (GH-21900) Sphinx 3 disallows having more than one productionlist markup with the same name. Simply remove names in this case, since names are not shown anyway. For example, fix the Sphinx 3 warning: Doc/reference/introduction.rst:96: duplicate token description of *:name, other instance in reference/expressions (cherry picked from commit1abeda80f7)
		
			
				
	
	
		
			94 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. highlight:: c
 | |
| 
 | |
| .. _marshalling-utils:
 | |
| 
 | |
| Data marshalling support
 | |
| ========================
 | |
| 
 | |
| These routines allow C code to work with serialized objects using the same
 | |
| data format as the :mod:`marshal` module.  There are functions to write data
 | |
| into the serialization format, and additional functions that can be used to
 | |
| read the data back.  Files used to store marshalled data must be opened in
 | |
| binary mode.
 | |
| 
 | |
| Numeric values are stored with the least significant byte first.
 | |
| 
 | |
| The module supports two versions of the data format: version 0 is the
 | |
| historical version, version 1 shares interned strings in the file, and upon
 | |
| unmarshalling.  Version 2 uses a binary format for floating point numbers.
 | |
| ``Py_MARSHAL_VERSION`` indicates the current file format (currently 2).
 | |
| 
 | |
| 
 | |
| .. c:function:: void PyMarshal_WriteLongToFile(long value, FILE *file, int version)
 | |
| 
 | |
|    Marshal a :c:type:`long` integer, *value*, to *file*.  This will only write
 | |
|    the least-significant 32 bits of *value*; regardless of the size of the
 | |
|    native :c:type:`long` type.  *version* indicates the file format.
 | |
| 
 | |
| 
 | |
| .. c:function:: void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)
 | |
| 
 | |
|    Marshal a Python object, *value*, to *file*.
 | |
|    *version* indicates the file format.
 | |
| 
 | |
| 
 | |
| .. c:function:: PyObject* PyMarshal_WriteObjectToString(PyObject *value, int version)
 | |
| 
 | |
|    Return a bytes object containing the marshalled representation of *value*.
 | |
|    *version* indicates the file format.
 | |
| 
 | |
| 
 | |
| The following functions allow marshalled values to be read back in.
 | |
| 
 | |
| 
 | |
| .. c:function:: long PyMarshal_ReadLongFromFile(FILE *file)
 | |
| 
 | |
|    Return a C :c:type:`long` from the data stream in a :c:type:`FILE*` opened
 | |
|    for reading.  Only a 32-bit value can be read in using this function,
 | |
|    regardless of the native size of :c:type:`long`.
 | |
| 
 | |
|    On error, sets the appropriate exception (:exc:`EOFError`) and returns
 | |
|    ``-1``.
 | |
| 
 | |
| 
 | |
| .. c:function:: int PyMarshal_ReadShortFromFile(FILE *file)
 | |
| 
 | |
|    Return a C :c:type:`short` from the data stream in a :c:type:`FILE*` opened
 | |
|    for reading.  Only a 16-bit value can be read in using this function,
 | |
|    regardless of the native size of :c:type:`short`.
 | |
| 
 | |
|    On error, sets the appropriate exception (:exc:`EOFError`) and returns
 | |
|    ``-1``.
 | |
| 
 | |
| 
 | |
| .. c:function:: PyObject* PyMarshal_ReadObjectFromFile(FILE *file)
 | |
| 
 | |
|    Return a Python object from the data stream in a :c:type:`FILE*` opened for
 | |
|    reading.
 | |
| 
 | |
|    On error, sets the appropriate exception (:exc:`EOFError`, :exc:`ValueError`
 | |
|    or :exc:`TypeError`) and returns ``NULL``.
 | |
| 
 | |
| 
 | |
| .. c:function:: PyObject* PyMarshal_ReadLastObjectFromFile(FILE *file)
 | |
| 
 | |
|    Return a Python object from the data stream in a :c:type:`FILE*` opened for
 | |
|    reading.  Unlike :c:func:`PyMarshal_ReadObjectFromFile`, this function
 | |
|    assumes that no further objects will be read from the file, allowing it to
 | |
|    aggressively load file data into memory so that the de-serialization can
 | |
|    operate from data in memory rather than reading a byte at a time from the
 | |
|    file.  Only use these variant if you are certain that you won't be reading
 | |
|    anything else from the file.
 | |
| 
 | |
|    On error, sets the appropriate exception (:exc:`EOFError`, :exc:`ValueError`
 | |
|    or :exc:`TypeError`) and returns ``NULL``.
 | |
| 
 | |
| 
 | |
| .. c:function:: PyObject* PyMarshal_ReadObjectFromString(const char *data, Py_ssize_t len)
 | |
| 
 | |
|    Return a Python object from the data stream in a byte buffer
 | |
|    containing *len* bytes pointed to by *data*.
 | |
| 
 | |
|    On error, sets the appropriate exception (:exc:`EOFError`, :exc:`ValueError`
 | |
|    or :exc:`TypeError`) and returns ``NULL``.
 | |
| 
 |