summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/processors.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/processors.py')
-rw-r--r--lib/sqlalchemy/processors.py132
1 files changed, 0 insertions, 132 deletions
diff --git a/lib/sqlalchemy/processors.py b/lib/sqlalchemy/processors.py
deleted file mode 100644
index 156005c6a..000000000
--- a/lib/sqlalchemy/processors.py
+++ /dev/null
@@ -1,132 +0,0 @@
-# sqlalchemy/processors.py
-# Copyright (C) 2010-2021 the SQLAlchemy authors and contributors
-# <see AUTHORS file>
-# Copyright (C) 2010 Gaetan de Menten gdementen@gmail.com
-#
-# This module is part of SQLAlchemy and is released under
-# the MIT License: https://www.opensource.org/licenses/mit-license.php
-
-"""defines generic type conversion functions, as used in bind and result
-processors.
-
-They all share one common characteristic: None is passed through unchanged.
-
-"""
-
-import datetime
-import re
-
-from . import util
-
-
-def str_to_datetime_processor_factory(regexp, type_):
- rmatch = regexp.match
- # Even on python2.6 datetime.strptime is both slower than this code
- # and it does not support microseconds.
- has_named_groups = bool(regexp.groupindex)
-
- def process(value):
- if value is None:
- return None
- else:
- try:
- m = rmatch(value)
- except TypeError as err:
- util.raise_(
- ValueError(
- "Couldn't parse %s string '%r' "
- "- value is not a string." % (type_.__name__, value)
- ),
- from_=err,
- )
- if m is None:
- raise ValueError(
- "Couldn't parse %s string: "
- "'%s'" % (type_.__name__, value)
- )
- if has_named_groups:
- groups = m.groupdict(0)
- return type_(
- **dict(
- list(
- zip(
- iter(groups.keys()),
- list(map(int, iter(groups.values()))),
- )
- )
- )
- )
- else:
- return type_(*list(map(int, m.groups(0))))
-
- return process
-
-
-def py_fallback():
- def to_decimal_processor_factory(target_class, scale):
- fstring = "%%.%df" % scale
-
- def process(value):
- if value is None:
- return None
- else:
- return target_class(fstring % value)
-
- return process
-
- def to_float(value): # noqa
- if value is None:
- return None
- else:
- return float(value)
-
- def to_str(value): # noqa
- if value is None:
- return None
- else:
- return str(value)
-
- def int_to_boolean(value): # noqa
- if value is None:
- return None
- else:
- return bool(value)
-
- DATETIME_RE = re.compile(
- r"(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)(?:\.(\d+))?"
- )
- TIME_RE = re.compile(r"(\d+):(\d+):(\d+)(?:\.(\d+))?")
- DATE_RE = re.compile(r"(\d+)-(\d+)-(\d+)")
-
- str_to_datetime = str_to_datetime_processor_factory( # noqa
- DATETIME_RE, datetime.datetime
- )
- str_to_time = str_to_datetime_processor_factory( # noqa
- TIME_RE, datetime.time
- ) # noqa
- str_to_date = str_to_datetime_processor_factory( # noqa
- DATE_RE, datetime.date
- ) # noqa
- return locals()
-
-
-try:
- from sqlalchemy.cprocessors import DecimalResultProcessor # noqa
- from sqlalchemy.cprocessors import int_to_boolean # noqa
- from sqlalchemy.cprocessors import str_to_date # noqa
- from sqlalchemy.cprocessors import str_to_datetime # noqa
- from sqlalchemy.cprocessors import str_to_time # noqa
- from sqlalchemy.cprocessors import to_float # noqa
- from sqlalchemy.cprocessors import to_str # noqa
-
- def to_decimal_processor_factory(target_class, scale):
- # Note that the scale argument is not taken into account for integer
- # values in the C implementation while it is in the Python one.
- # For example, the Python implementation might return
- # Decimal('5.00000') whereas the C implementation will
- # return Decimal('5'). These are equivalent of course.
- return DecimalResultProcessor(target_class, "%%.%df" % scale).process
-
-
-except ImportError:
- globals().update(py_fallback())