# Path: pysc2/lib/point.py
# class Point(collections.namedtuple("Point", ["x", "y"])):
# class Rect(collections.namedtuple("Rect", ["t", "l", "b", "r"])):
#   def build(cls, obj):
#   def unit_rand(cls):
#   def assign_to(self, obj):
#   def dist(self, other):
#   def dist_sq(self, other):
#   def round(self):
#   def floor(self):
#   def ceil(self):
#   def abs(self):
#   def len(self):
#   def scale(self, target_len):
#   def scale_max_size(self, max_size):
#   def scale_min_size(self, min_size):
#   def min_dim(self):
#   def max_dim(self):
#   def transpose(self):
#   def rotate_deg(self, angle):
#   def rotate_rad(self, angle):
#   def rotate_rand(self, angle=180):
#   def contained_circle(self, pt, radius):
#   def bound(self, p1, p2=None):
#   def __str__(self):
#   def __neg__(self):
#   def __add__(self, pt_or_val):
#   def __sub__(self, pt_or_val):
#   def __mul__(self, pt_or_val):
#   def __truediv__(self, pt_or_val):
#   def __floordiv__(self, pt_or_val):
#   def __new__(cls, *args):
#   def __str__(self):
#   def center(self):
#   def top(self):
#   def left(self):
#   def bottom(self):
#   def right(self):
#   def width(self):
#   def height(self):
#   def tl(self):
#   def br(self):
#   def tr(self):
#   def bl(self):
#   def diagonal(self):
#   def size(self):
#   def area(self):
#   def round(self):
#   def floor(self):
#   def ceil(self):
#   def contains_point(self, pt):
#   def contains_circle(self, pt, radius):
#   def intersects_circle(self, pt, radius):


from absl import flags
from pysc2.lib import point
import six
from __future__ import print_function



# Let absl.flags know that DEFINE_point should show up in the caller's module.
flags.disclaim_key_flags()


class PointParser(flags.ArgumentParser):
  """Parse a flag into a pysc2.lib.point.Point."""

  def parse(self, argument):
    if not argument or argument == "0":
      return None

    if isinstance(argument, int):
      args = [argument]
    elif isinstance(argument, (list, tuple)):
      args = argument
    elif isinstance(argument, six.string_types):
      args = argument.split(",")
    else:
      raise ValueError(
          "Invalid point: '%r'. Valid: '<int>' or '<int>,<int>'." % argument)

    args = [int(v) for v in args]

    if len(args) == 1:
      args *= 2
    if len(args) == 2:

# Path: pysc2/lib/point.py
# class Point(collections.namedtuple("Point", ["x", "y"])):
# class Rect(collections.namedtuple("Rect", ["t", "l", "b", "r"])):
#   def build(cls, obj):
#   def unit_rand(cls):
#   def assign_to(self, obj):
#   def dist(self, other):
#   def dist_sq(self, other):
#   def round(self):
#   def floor(self):
#   def ceil(self):
#   def abs(self):
#   def len(self):
#   def scale(self, target_len):
#   def scale_max_size(self, max_size):
#   def scale_min_size(self, min_size):
#   def min_dim(self):
#   def max_dim(self):
#   def transpose(self):
#   def rotate_deg(self, angle):
#   def rotate_rad(self, angle):
#   def rotate_rand(self, angle=180):
#   def contained_circle(self, pt, radius):
#   def bound(self, p1, p2=None):
#   def __str__(self):
#   def __neg__(self):
#   def __add__(self, pt_or_val):
#   def __sub__(self, pt_or_val):
#   def __mul__(self, pt_or_val):
#   def __truediv__(self, pt_or_val):
#   def __floordiv__(self, pt_or_val):
#   def __new__(cls, *args):
#   def __str__(self):
#   def center(self):
#   def top(self):
#   def left(self):
#   def bottom(self):
#   def right(self):
#   def width(self):
#   def height(self):
#   def tl(self):
#   def br(self):
#   def tr(self):
#   def bl(self):
#   def diagonal(self):
#   def size(self):
#   def area(self):
#   def round(self):
#   def floor(self):
#   def ceil(self):
#   def contains_point(self, pt):
#   def contains_circle(self, pt, radius):
#   def intersects_circle(self, pt, radius):


# Path: pysc2/lib/point_flag.py
from absl import flags
from pysc2.lib import point
import six

from __future__ import print_function



# Let absl.flags know that DEFINE_point should show up in the caller's module.
flags.disclaim_key_flags()


class PointParser(flags.ArgumentParser):
  """Parse a flag into a pysc2.lib.point.Point."""

  def parse(self, argument):
    if not argument or argument == "0":
      return None

    if isinstance(argument, int):
      args = [argument]
    elif isinstance(argument, (list, tuple)):
      args = argument
    elif isinstance(argument, six.string_types):
      args = argument.split(",")
    else:
      raise ValueError(
          "Invalid point: '%r'. Valid: '<int>' or '<int>,<int>'." % argument)

    args = [int(v) for v in args]

    if len(args) == 1:
      args *= 2
    if len(args) == 2:

      return point.Point(args[0], args[1])