<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def post(self, obj_class, url_path, data):
 """POST an object to the JSS. For creating new objects only. The data argument is POSTed to the JSS, which, upon success, returns the complete XML for the new object. This data is used to get the ID of the new object, and, via the JSSObjectFactory, GET that ID to instantiate a new JSSObject of class obj_class. This allows incomplete (but valid) XML for an object to be used to create a new object, with the JSS filling in the remaining data. Also, only the JSS may specify things like ID, so this method retrieves those pieces of data. In general, it is better to use a higher level interface for creating new objects, namely, creating a JSSObject subclass and then using its save method. Args: obj_class: JSSObject subclass to create from POST. url_path: String API endpoint path to POST (e.g. "/packages/id/0") data: xml.etree.ElementTree.Element with valid XML for the desired obj_class. Returns: An object of class obj_class, representing a newly created object on the JSS. The data is what has been returned after it has been parsed by the JSS and added to the database. Raises: JSSPostError if provided url_path has a >= 400 response. """

        # The JSS expects a post to ID 0 to create an object

        request_url = "%s%s" % (self._url, url_path)
        data = ElementTree.tostring(data)
        response = self.session.post(request_url, data=data)

        if response.status_code == 201 and self.verbose:
            print "POST %s: Success" % request_url
        elif response.status_code >= 400:
            error_handler(JSSPostError, response)

        # Get the ID of the new object. JSS returns xml encoded in utf-8

        jss_results = response.text.encode("utf-8")
        id_ = int(re.search(r"<id>([0-9]+)</id>", jss_results).group(1))

        return self.factory.get_object(obj_class, id_)