Odoo18-Base/odoo/tools/pycompat.py

46 lines
1.5 KiB
Python
Raw Permalink Normal View History

2025-01-06 10:57:38 +07:00
# -*- coding: utf-8 -*-
#pylint: disable=deprecated-module
import csv
import codecs
import io
import typing
import warnings
_reader = codecs.getreader('utf-8')
_writer = codecs.getwriter('utf-8')
def csv_reader(stream, **params):
warnings.warn("Deprecated since Odoo 18.0: can just use `csv.reader` with a text stream or use `TextIOWriter` or `codec.getreader` to transcode.", DeprecationWarning, 2)
assert not isinstance(stream, io.TextIOBase),\
"For cross-compatibility purposes, csv_reader takes a bytes stream"
return csv.reader(_reader(stream), **params)
def csv_writer(stream, **params):
warnings.warn("Deprecated since Odoo 18.0: can just use `csv.writer` with a text stream or use `TextIOWriter` or `codec.getwriter` to transcode.", DeprecationWarning, 2)
assert not isinstance(stream, io.TextIOBase), \
"For cross-compatibility purposes, csv_writer takes a bytes stream"
return csv.writer(_writer(stream), **params)
def to_text(source: typing.Any) -> str:
""" Generates a text value from an arbitrary source.
* False and None are converted to empty strings
* text is passed through
* bytes are decoded as UTF-8
* rest is textified
"""
warnings.warn("Deprecated since Odoo 18.0.", DeprecationWarning, 2)
if source is None or source is False:
return ''
if isinstance(source, bytes):
return source.decode()
if isinstance(source, str):
return source
return str(source)