This file is indexed.

/usr/share/pyshared/zope/minmax/minmax.txt is in python-zope.minmax 1.1.2-0ubuntu5.

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
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
===================================================
Conflict Resolution using Maximum or Minimum Values
===================================================

The `zope.minmax.AbstractValue` class provides a super class which can
be subclassed to store arbitrary *homogeneous* values in a persistent
storage and apply different conflict resolution policies.

The subclasses defined here are resolving the conflicts using always
either the maximum or the minimum of the conflicting values.

Maximum
-------

The `zope.minmax.Maximum` class always resolves conflicts favoring the
maximum value.  Let's instantiate one object and verify that it
satisfies the interface.

    >>> import zope.minmax
    >>> import zope.interface.verify
    >>> max_favored = zope.minmax.Maximum()
    >>> zope.interface.verify.verifyObject(
    ...     zope.minmax.interfaces.IAbstractValue, max_favored)
    True

We can confirm that the initial value is zero.

    >>> bool(max_favored)
    False
    >>> print max_favored.value
    None

Now, we can store a new value in the object.

    >>> max_favored.value = 11
    >>> print max_favored.value
    11
    >>> bool(max_favored)
    True

Or we can use the methods.

    >>> max_favored.__setstate__(4532)
    >>> max_favored.__getstate__()
    4532
    >>> print max_favored.value
    4532
    >>> bool(max_favored)
    True

Do notice that using a direct assignment to the value attribute is a
more natural use.

Minimum
-------

The `zope.minmax.Minimum` class always resolves conflicts favoring the
minimum value.  Again, we instantiate an object and verify that it
satisfies the interface.

    >>> min_favored = zope.minmax.Minimum()
    >>> zope.interface.verify.verifyObject(
    ...     zope.minmax.interfaces.IAbstractValue, min_favored)
    True

We need a confirmation that the initial value is zero.

    >>> bool(min_favored)
    False
    >>> print min_favored.value
    None

Let's populate this one too.

    >>> min_favored.value = 22
    >>> print min_favored.value
    22
    >>> bool(min_favored)
    True

Or we can use the methods, again.

    >>> min_favored.__setstate__(8796)
    >>> min_favored.__getstate__()
    8796
    >>> print min_favored.value
    8796
    >>> bool(min_favored)
    True

Please, notice, again, that using a direct assignment to the value
attribute is a more natural use.

Conflict Resolution
-------------------

Now, we need to exercise the conflict resolution interface.
First for the `zope.minmax.Maximum`:

Let's try differing values larger than the old value.

    >>> max_favored._p_resolveConflict(max_favored.value, 4536, 4535)
    4536
    >>> max_favored._p_resolveConflict(max_favored.value, 4573, 4574)
    4574

What happens when all the values are equal, including the old.

    >>> max_favored._p_resolveConflict(max_favored.value, 4532, 4532)
    4532

Notice that when the old value is larger than both the committed and
new, it is still disregarded.

    >>> max_favored._p_resolveConflict(max_favored.value, 4531, 4530)
    4531

Now, the `zope.minmax.Minimum`:

Let's try differing values smaller than the old value.

    >>> min_favored._p_resolveConflict(min_favored.value, 8792, 8791)
    8791
    >>> min_favored._p_resolveConflict(min_favored.value, 8785, 8786)
    8785

What happens when all the values are equal, including the old.

    >>> min_favored._p_resolveConflict(min_favored.value, 8796, 8796)
    8796

Notice that when the old value is smaller than both the committed and
new, it is still disregarded.

    >>> min_favored._p_resolveConflict(min_favored.value, 8798, 8799)
    8798

How about an example that is not numerical?

    >>> max_word = zope.minmax.Maximum('joy')
    >>> print max_word.value
    joy
    >>> bool(max_word)
    True
    >>> max_word._p_resolveConflict(max_word.value, 'happiness', 'exuberance')
    'happiness'
    >>> max_word._p_resolveConflict(max_word.value, 'exuberance', 'happiness')
    'happiness'
    >>> min_word = zope.minmax.Minimum(max_word.value)
    >>> print min_word.value
    joy
    >>> bool(min_word)
    True
    >>> min_word._p_resolveConflict(min_word.value, 'happiness', 'exuberance')
    'exuberance'
    >>> min_word._p_resolveConflict(min_word.value, 'exuberance', 'happiness')
    'exuberance'

As indicated, we don't need to have numbers, just *homegeneous* items.
The homogeneous values are not really inherently required.  However, it
makes no sense to apply min() or max() on, say, one number and one
string.  Simply, the ordering relations do not work at all on
heterogeneous values.