<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_calendar_event(self, calendar_event_context_code, calendar_event_child_event_data_X_context_code=None, calendar_event_child_event_data_X_end_at=None, calendar_event_child_event_data_X_start_at=None, calendar_event_description=None, calendar_event_duplicate_append_iterator=None, calendar_event_duplicate_count=None, calendar_event_duplicate_frequency=None, calendar_event_duplicate_interval=None, calendar_event_end_at=None, calendar_event_location_address=None, calendar_event_location_name=None, calendar_event_start_at=None, calendar_event_time_zone_edited=None, calendar_event_title=None):

 """
 Create a calendar event.
 
 Create and return a new calendar event
 """

        path = {}
        data = {}
        params = {}

        # REQUIRED - calendar_event[context_code]
        """Context code of the course/group/user whose calendar this event should be
        added to."""
        data["calendar_event[context_code]"] = calendar_event_context_code

        # OPTIONAL - calendar_event[title]
        """Short title for the calendar event."""
        if calendar_event_title is not None:
            data["calendar_event[title]"] = calendar_event_title

        # OPTIONAL - calendar_event[description]
        """Longer HTML description of the event."""
        if calendar_event_description is not None:
            data["calendar_event[description]"] = calendar_event_description

        # OPTIONAL - calendar_event[start_at]
        """Start date/time of the event."""
        if calendar_event_start_at is not None:
            data["calendar_event[start_at]"] = calendar_event_start_at

        # OPTIONAL - calendar_event[end_at]
        """End date/time of the event."""
        if calendar_event_end_at is not None:
            data["calendar_event[end_at]"] = calendar_event_end_at

        # OPTIONAL - calendar_event[location_name]
        """Location name of the event."""
        if calendar_event_location_name is not None:
            data["calendar_event[location_name]"] = calendar_event_location_name

        # OPTIONAL - calendar_event[location_address]
        """Location address"""
        if calendar_event_location_address is not None:
            data["calendar_event[location_address]"] = calendar_event_location_address

        # OPTIONAL - calendar_event[time_zone_edited]
        """Time zone of the user editing the event. Allowed time zones are
        {http://www.iana.org/time-zones IANA time zones} or friendlier
        {http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html Ruby on Rails time zones}."""
        if calendar_event_time_zone_edited is not None:
            data["calendar_event[time_zone_edited]"] = calendar_event_time_zone_edited

        # OPTIONAL - calendar_event[child_event_data][X][start_at]
        """Section-level start time(s) if this is a course event. X can be any
        identifier, provided that it is consistent across the start_at, end_at
        and context_code"""
        if calendar_event_child_event_data_X_start_at is not None:
            data["calendar_event[child_event_data][X][start_at]"] = calendar_event_child_event_data_X_start_at

        # OPTIONAL - calendar_event[child_event_data][X][end_at]
        """Section-level end time(s) if this is a course event."""
        if calendar_event_child_event_data_X_end_at is not None:
            data["calendar_event[child_event_data][X][end_at]"] = calendar_event_child_event_data_X_end_at

        # OPTIONAL - calendar_event[child_event_data][X][context_code]
        """Context code(s) corresponding to the section-level start and end time(s)."""
        if calendar_event_child_event_data_X_context_code is not None:
            data["calendar_event[child_event_data][X][context_code]"] = calendar_event_child_event_data_X_context_code

        # OPTIONAL - calendar_event[duplicate][count]
        """Number of times to copy/duplicate the event."""
        if calendar_event_duplicate_count is not None:
            data["calendar_event[duplicate][count]"] = calendar_event_duplicate_count

        # OPTIONAL - calendar_event[duplicate][interval]
        """Defaults to 1 if duplicate `count` is set.  The interval between the duplicated events."""
        if calendar_event_duplicate_interval is not None:
            data["calendar_event[duplicate][interval]"] = calendar_event_duplicate_interval

        # OPTIONAL - calendar_event[duplicate][frequency]
        """Defaults to "weekly".  The frequency at which to duplicate the event"""
        if calendar_event_duplicate_frequency is not None:
            self._validate_enum(calendar_event_duplicate_frequency, ["daily", "weekly", "monthly"])
            data["calendar_event[duplicate][frequency]"] = calendar_event_duplicate_frequency

        # OPTIONAL - calendar_event[duplicate][append_iterator]
        """Defaults to false.  If set to `true`, an increasing counter number will be appended to the event title
        when the event is duplicated.  (e.g. Event 1, Event 2, Event 3, etc)"""
        if calendar_event_duplicate_append_iterator is not None:
            data["calendar_event[duplicate][append_iterator]"] = calendar_event_duplicate_append_iterator

        self.logger.debug("POST /api/v1/calendar_events with query params: {params} and form data: {data}".format(params=params, data=data, **path))
        return self.generic_request("POST", "/api/v1/calendar_events".format(**path), data=data, params=params, no_data=True)