from pyson.JsonValue import JsonValue
from uri.uri import URI

from geniusweb import party
from geniusweb.references.Reference import Reference


class PartyRef (Reference):
	'''
	A URI reference to create a new instance of a party on a party factory
	server. These are used to describe sesion and tournament settings.
	'''


	def __init__(self, party:URI ):
		if not isinstance(party, URI):
			raise ValueError("expected URI, but got "+repr(party))
		self._party = party

	@JsonValue()
	def getURI(self)-> URI :
		return self._party;

	def __repr__(self) ->str:
		return "PartyRef[" + str(self._party) + "]"


	def __eq__(self, other):
		return isinstance(other, self.__class__) and self._party==other._party

	def __hash__(self):
		return hash(self._party)
