<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_services(self, info):
 """Add auth service descriptions to an IIIFInfo object. Login service description is the wrapper for all other auth service descriptions so we have nothing unless self.login_uri is specified. If we do then add any other auth services at children. Exactly the same structure is used in the authorized and unauthorized cases (although in the data could be different). """

        if (self.login_uri):
            svc = self.login_service_description()
            svcs = []
            if (self.logout_uri):
                svcs.append(self.logout_service_description())
            if (self.client_id_uri):
                svcs.append(self.client_id_service_description())
            if (self.access_token_uri):
                svcs.append(self.access_token_service_description())
            # Add one as direct child of service property, else array for >1
            if (len(svcs) == 1):
                svc['service'] = svcs[0]
            elif (len(svcs) > 1):
                svc['service'] = svcs
            info.add_service(svc)