# Path: batma/util.py
# class classproperty(property):
#     '''Decorator for class property'''
#     def __get__(self, cls, owner):
#         return self.fget.__get__(None, owner)()


import math
import random
import operator
from batma.util import classproperty

__all__ = ['Vector2', 'Vector3']


class Vector2(list):
    def __init__(self, x=0, y=0):
        super(Vector2, self).__init__((x, y))

    def get_x(self):
        return self[0]
    def set_x(self, value):
        self[0] = value
    x = property(get_x, set_x)

    def get_y(self):
        return self[1]
    def set_y(self, value):
        self[1] = value
    y = property(get_y, set_y)

    @classproperty
    @classmethod
    def Zero(cls):
        return Vector2(0.0, 0.0)

    @classproperty
    @classmethod
    def One(cls):
        return Vector2(1.0, 1.0)


# Path: batma/util.py
# class classproperty(property):
#     '''Decorator for class property'''
#     def __get__(self, cls, owner):
#         return self.fget.__get__(None, owner)()


# Path: batma/maths/algebra.py
import math
import random
import operator
from batma.util import classproperty


__all__ = ['Vector2', 'Vector3']


class Vector2(list):
    def __init__(self, x=0, y=0):
        super(Vector2, self).__init__((x, y))

    def get_x(self):
        return self[0]
    def set_x(self, value):
        self[0] = value
    x = property(get_x, set_x)

    def get_y(self):
        return self[1]
    def set_y(self, value):
        self[1] = value
    y = property(get_y, set_y)

    @classproperty
    @classmethod
    def Zero(cls):
        return Vector2(0.0, 0.0)

    @classproperty
    @classmethod
    def One(cls):
        return Vector2(1.0, 1.0)


    @classproperty