Definition: gopkg.in/<v>/<repo> || gopkg.in/<repo>.<v> || gopkg.in/<project>/<repo>

def parseGopkgImportPath(self, path):
		"""
		Definition: gopkg.in/<v>/<repo> || gopkg.in/<repo>.<v> || gopkg.in/<project>/<repo>
		"""
		parts = path.split('/')
		if re.match('v[0-9]+', parts[1]):
			if len(parts) < 3:
				raise ValueError("Import path %s is not in gopkg.in/<v>/<repo> form" % path)

			project = ""
			repository = parts[2]
			version = parts[1]
			prefix = "/".join(parts[:3])
			provider_prefix = "gopkg.in/%s/%s" % (parts[1], parts[2])
		else:
			if len(parts) < 2:
				raise ValueError("Import path %s is not in gopkg.in/[<repo>.<v>|<project>/<repo>] form" % path)

			dotparts = parts[1].split(".")
			if len(dotparts) == 1:
				# gopkg.in/<project>/<repo>
				if len(parts) != 3:
					raise ValueError("Import path %s is not in gopkg.in/<project>/<repo> form" % path)
				prefix = "/".join(parts[:3])
				project = parts[1]
				dotparts = parts[2].split(".")
				repository = dotparts[0]
				if len(dotparts) == 0:
					version = ""
				else:
					version = dotparts[1]

				provider_prefix = "gopkg.in/%s/%s" % (parts[1], parts[2])

			else:
				if len(dotparts) != 2:
					raise ValueError("Import path %s is not in gopkg.in/<repo>.<v> form" % path)
				prefix = "/".join(parts[:2])
				project = ""
				repository = dotparts[0]
				version = dotparts[1]
				provider_prefix = "gopkg.in/%s" % parts[1]

		repo = {}
		repo["prefix"] = prefix
		repo["signature"] = {"provider": "gopkg", "username": project, "project": repository, "version": version}

		return repo