# SPDX-License-Identifier: MIT
# Independently authored ordinary round/index protocol interactions.
class Places:
    def __index__(self):
        print('precision')
        return -2

class Base:
    def __round__(self, places=-1):
        return round(1250, places)

class Number(Base):
    pass

class DerivedPlaces(Places):
    pass

value = Number()
value.__round__ = lambda: 999
places = DerivedPlaces()
places.__index__ = lambda: 4
print(round(value), round(value, None), round(value, places))
print(round(-1350, places), round(True, places))

class Echo:
    def __round__(self, places='omitted'):
        return places

echo = Echo()
print(round(echo), round(echo, None), round(echo, 'raw'))
print(round(echo, places) is places)
