Ë
    üûàg{  ã                   óª   — d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZ d	d
lmZ d	dlmZ d	dlmZmZ  G d„ de«      Zy)é    N)Úget_user_model)ÚImproperlyConfigured)ÚBaseCommand)Úimport_string)Úapi_settings)ÚAPIRequestFactoryÚforce_authenticate)ÚAPIViewé   )Úopenapi)Úswagger_settings)ÚOpenAPICodecJsonÚOpenAPICodecYamlc                   ó6   — e Zd ZdZd„ Zd„ Zd	d„Zd„ Zd„ Zd„ Z	y)
ÚCommandz8Write the Swagger schema to disk in JSON or YAML format.c           	      ó¸  — |j                  ddddt        d¬«       |j                  ddd	d
d¬«       |j                  ddddddgt        d¬«       |j                  ddddt        d¬«       |j                  dddd	d
d¬«       |j                  dd t        d!¬"«       |j                  d#d$d%¬&«       |j                  d'd(d	d
d)¬«       |j                  d*d+d,dd-¬.«       y )/NÚoutput_filezoutput-fileú?ú-z>Output path for generated swagger document, or "-" for stdout.)ÚmetavarÚnargsÚdefaultÚtypeÚhelpz-oz--overwriteFÚ
store_truezfOverwrite the output file if it already exists. Default behavior is to stop if the output file exists.)r   Úactionr   z-fz--formatÚformatÚ ÚjsonÚyamlz_Output format. If not given, it is guessed from the output file extension and defaults to json.)Údestr   Úchoicesr   r   z-uz--urlÚapi_urlzMBase API URL - sets the host and scheme attributes of the generated document.)r!   r   r   r   z-mz--mock-requestÚmockz™Use a mock request when generating the swagger schema. This is useful if your views or serializers depend on context from a request in order to function.)r!   r   r   r   z--api-versionÚapi_versionzFVersion to use to generate schema. This option implies --mock-request.)r!   r   r   z--userÚuserzbUsername of an existing user to use for mocked authentication. This option implies --mock-request.)r!   r   z-pz	--privatea  Hides endpoints not accessible to the target user. If --user is not given, only shows endpoints that are accessible to unauthenticated users.
This has the same effect as passing public=False to get_schema_view() or OpenAPISchemaGenerator.get_schema().
This option implies --mock-request.z-gz--generator-classÚgenerator_class_namezZImport string pointing to an OpenAPISchemaGenerator subclass to use for schema generation.)r!   r   r   )Úadd_argumentÚstr)ÚselfÚparsers     úk/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/drf_yasg/management/commands/generate_swagger.pyÚadd_argumentszCommand.add_arguments   sI  € Ø×ÑØ =ØØÜØQð 	ô 	
ð 	×ÑØ�-Ø ,ðJð 	ô 	
ð 	×ÑØ�* 8Ø ¨Ð 0ÜØrð	 	ô 	
ð 	×ÑØ�' 	ØÜØ`ð	 	ô 	
ð 	×ÑØÐ"¨Ø ,ðJð 	ô 	
ð 	×ÑØ -ÜØYð 	ô 	
ð
 	×ÑØ˜6Øuð 	ô 	
ð 	×ÑØ�+Ø ,ð7ð 	ô 	
ð 	×ÑØÐ%Ð,BØØmð 	õ 	
ó    c                 ó,  — |dk(  r?t        g d¬«      }|j                  |«      j                  d«      }|j                  |«       y |dk(  r>t	        g ¬«      }|j                  |«      j                  d«      }|j                  |«       y t        d|z  «      ‚)Nr   T)Ú
validatorsÚprettyzutf-8r    )r0   zunknown format %s)r   ÚencodeÚdecodeÚwriter   Ú
ValueError)r*   ÚschemaÚstreamr   ÚcodecÚswagger_jsonÚswagger_yamls          r,   Úwrite_schemazCommand.write_schemaL   sƒ   € Ø�VÒÜ$°¸4Ô@ˆEØ Ÿ<™<¨Ó/×6Ñ6°wÓ?ˆLØ�L‰L˜Õ&Ø�vÒÜ$°Ô3ˆEØ Ÿ<™<¨Ó/×6Ñ6°wÓ?ˆLà�L‰L˜Õ&äÐ0°6Ñ9Ó:Ð:r.   Nc                 ó˜   — t        «       }|j                  |dz   |z   «      }|�t        ||¬«       t        «       j	                  |«      }|S )Nz	/swagger.)r&   )r   Úgetr	   r
   Úinitialize_request)r*   Úurlr   r&   ÚfactoryÚrequests         r,   Úget_mock_requestzCommand.get_mock_requestY   sI   € Ü#Ó%ˆà—+‘+˜c KÑ/°&Ñ8Ó9ˆØÐÜ˜w¨TÕ2Ü“)×.Ñ.¨wÓ7ˆØˆr.   c                 óR   — t         j                  }|rt        |«      } ||||¬«      S )N)ÚinfoÚversionr?   )r   ÚDEFAULT_GENERATOR_CLASSr   )r*   r'   Úapi_infor%   r#   Úgenerator_classs         r,   Úget_schema_generatorzCommand.get_schema_generatorb   s1   € Ü*×BÑBˆÙÜ+Ð,@ÓAˆOáØØØô
ð 	
r.   c                 ó(   — |j                  ||¬«      S )N)rA   Úpublic)Ú
get_schema)r*   Ú	generatorrA   rK   s       r,   rL   zCommand.get_schemam   s   € Ø×#Ñ#¨G¸FÐ#ÓCÐCr.   c
                 óf  — t        j                  t         j                  «       t        t        dd «      }t        |t        j                  «      st        d«      ‚|s&t        j                  j                  |«      d   dv rd}|xs d}|xs t        j                  }|r8 t        «       j                  j                  di t        «       j                   |i¤Ž}|xs |xs
 |d uxs |d u}|r|st        d«      ‚d }|r| j#                  |||«      }|xs t$        j&                  }|r	|r||_        | j+                  |	|||«      }| j-                  ||| «      }|dk(  r| j/                  || j0                  |«       y |rd	nd
}t3        ||«      5 }| j/                  |||«       d d d «       y # 1 sw Y   y xY w)NÚDEFAULT_INFOzgsettings.SWAGGER_SETTINGS["DEFAULT_INFO"] should be an import string pointing to an openapi.Info objecté   )z.ymlz.yamlr    r   zh--mock-request requires an API url; either provide the --url argument or set the DEFAULT_API_URL settingr   ÚwÚx© )ÚloggingÚdisableÚWARNINGÚgetattrr   Ú
isinstancer   ÚInfor   ÚosÚpathÚsplitextÚDEFAULT_API_URLr   Úobjectsr=   ÚUSERNAME_FIELDrB   r   ÚDEFAULT_VERSIONrE   rI   rL   r;   ÚstdoutÚopen)r*   r   Ú	overwriter   r#   r$   r%   r&   Úprivater'   ÚargsÚkwargsrD   rA   rM   r6   Úflagsr7   s                     r,   ÚhandlezCommand.handlep   s®  € ô 	�‰œŸ™Ô(äÔ'¨¸Ó>ˆÜ˜$¤§¡Ô-Ü&ðCóð ñ
 Ü�w‰w×Ñ Ó,¨QÑ/Ð3DÑDØ�ØÒ!˜6ˆàÒ=Ô-×=Ñ=ˆáð 0”>Ó#×+Ñ+×/Ñ/ÑZ´>Ó3C×3RÑ3RÐTXÐ2YÑZˆDàÒQ�wÒQ 4¨tÐ#3ÒQ¸ÈDÐ9PˆÙ™Ü&ðHóð ð
 ˆÙØ×+Ñ+¨G°V¸TÓBˆGà!ÒA¤\×%AÑ%AˆÙ‘{Ø)ˆGŒOà×-Ñ-Ð.BÀDÈ+ÐW^Ó_ˆ	Ø—‘ ¨G¸°[ÓAˆà˜#ÒØ×Ñ˜f d§k¡k°6Õ:á$‘C¨#ˆEÜ�k 5Ó)ð :¨VØ×!Ñ! &¨&°&Ô9÷:÷ :ñ :ús   Æ
F'Æ'F0)N)
Ú__name__Ú
__module__Ú__qualname__r   r-   r;   rB   rI   rL   rh   rS   r.   r,   r   r      s'   „ ØE€Dò6
òp;óò	
òDó/:r.   r   )rT   rZ   Údjango.contrib.authr   Údjango.core.exceptionsr   Údjango.core.management.baser   Údjango.utils.module_loadingr   Úrest_framework.settingsr   Úrest_framework.testr   r	   Úrest_framework.viewsr
   r   r   Úapp_settingsr   Úcodecsr   r   r   rS   r.   r,   ú<module>ru      s7   ðÛ Û 	å .Ý 7Ý 3Ý 5Ý 0ß EÝ (å Ý ,ß 8ôN:ˆkõ N:r.   