This file is indexed.

/usr/share/pyshared/kinterbasdb/typeconv_fixed_stdlib.py is in python-kinterbasdb 3.3.0-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# KInterbasDB Python Package - Type Conv : Fixed/Standard Library
#
# Version 3.3
#
# The following contributors hold Copyright (C) over their respective
# portions of code (see license.txt for details):
#
# [Original Author (maintained through version 2.0-0.3.1):]
#   1998-2001 [alex]  Alexander Kuznetsov   <alexan@users.sourceforge.net>
# [Maintainers (after version 2.0-0.3.1):]
#   2001-2002 [maz]   Marek Isalski         <kinterbasdb@maz.nu>
#   2002-2006 [dsr]   David Rushby          <woodsplitter@rocketmail.com>
# [Contributors:]
#   2001      [eac]   Evgeny A. Cherkashin  <eugeneai@icc.ru>
#   2001-2002 [janez] Janez Jere            <janez.jere@void.si>

__all__ = (
    # kinterbasdb-native fixed point converters (old, precison_mode style):
    'fixed_conv_in_imprecise', 'fixed_conv_in_precise',
    'fixed_conv_out_imprecise', 'fixed_conv_out_precise',
  )

import sys
from kinterbasdb.k_exceptions import *

################################################################################
## FIXED POINT
################################################################################

_tenTo = [10**x for x in range(20)]
del x

# The fixed point input funcions are GUARANTEED to receive a single parameter
# that is a 2-tuple of the form: (original input object, scale).
# The original input object may, of course, be None.
def fixed_conv_in_imprecise((val, scale)):
    if val is None or isinstance(val, basestring): # Allow implicit param conv.
        return val
    if not isinstance(val, (float, int, long)):
        raise InterfaceError(
            'float required as input for fixed point field in imprecise mode.'
          )
    absScale = abs(scale)
    return int(round(val, absScale) * _tenTo[absScale])

def fixed_conv_in_precise((val, scale)):
    if val is None or isinstance(val, basestring): # Allow implicit param conv.
        return val
    if not isinstance(val, (int, long)):
        raise InterfaceError(
            'int or long required as input for fixed point field in precise mode.'
          )
    # $val is already a scaled integer; just pass it through.
    return val


# The fixed point output funcions receive a single parameter that is either
# - None (if the SQL value is NULL), or
# - a 2-tuple of the form: (scaled integer value, scale)
def fixed_conv_out_imprecise(x):
    # Return a floating point representation of the scaled integer.
    if x is None:
        return None
    (val, scale) = x
    if scale == 0:
        return val # Don't convert to float if no decimal places.
    return float(val) / _tenTo[abs(scale)]

def fixed_conv_out_precise(x):
    # Simply return the scaled integer, not interpreted in any way.
    if x is None:
        return None
    return x[0]