MINI MINI MANI MO
3
\E @ s d Z ddlZddlZddlT ddlmZ ddlmZ ddlmZ ddl m
Z
mZmZm
Z
ddlmZ ddlT dd lmZ dd
l mZ ddlmZ dd
ZG dd deZdS )zadistutils.command.sdist
Implements the Distutils 'sdist' command (create a source distribution). N)*)glob)warn)Command)dir_utildep_util file_utilarchive_util)TextFile)FileList)log)convert_pathc C sd ddl m} ddlm} g }x,|j D ] }|jd| d|| d f q&W |j | |jd dS )zoPrint all possible values for the 'formats' option (used by
the "--help-formats" command-line option).
r )FancyGetopt)ARCHIVE_FORMATSzformats=N z.List of available source distribution formats:)Zdistutils.fancy_getoptr Zdistutils.archive_utilr keysappendsortZ
print_help)r r formatsformat r //usr/lib64/python3.6/distutils/command/sdist.pyshow_formats s r c @ s e Zd ZdZdd ZdJdKdLdMdNdOdPdQdRdTdUdVdWdXgZd
ddddd"gZd*dd+efgZd
dd,Z d-efgZ
d.d/ Zd0d1 Zd2d3 Z
d4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdS )Ysdistz6create a source distribution (tarball, zip file, etc.)c C s | j S )zYCallable used for the check sub-command.
Placed here so user_options can view it)metadata_check)selfr r r checking_metadata% s zsdist.checking_metadata template=t5name of manifest template file [default: MANIFEST.in] manifest=m)name of manifest file [default: MANIFEST]use-defaultsNRinclude the default file set in the manifest [default; disable with --no-defaults]no-defaults"don't include the default file setprunespecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune]no-prune$don't automatically exclude anything
manifest-onlyoEjust regenerate the manifest and then stop (implies --force-manifest)force-manifestfkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.formats=6formats for source distribution (comma-separated list) keep-tempkz1keep the distribution tree around after creating zarchive file(s) dist-dir=dFdirectory to put the source distribution archive(s) in [default: dist]metadata-check[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default]owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]zhelp-formatsz#list available distribution formats)zno-defaultszno-prunecheckc C sT d | _ d | _d| _d| _d| _d| _dg| _d| _d | _d | _ d| _
d | _d | _d S )N r Zgztar)
templatemanifestuse_defaultsr'
manifest_onlyZforce_manifestr keep_tempdist_dir
archive_filesr ownergroup)r r r r initialize_options` s zsdist.initialize_optionsc C sZ | j d krd| _ | jd kr d| _| jd tj| j}|rFtd| | jd krVd| _d S )NZMANIFESTzMANIFEST.inr zunknown archive format '%s'Zdist)rC rB Zensure_string_listr Zcheck_archive_formatsr ZDistutilsOptionErrorrG )r Z
bad_formatr r r finalize_optionsw s
zsdist.finalize_optionsc C sB t | _x| j D ]}| j| qW | j | jr6d S | j d S )N)r filelistZget_sub_commandsZrun_command
get_file_listrE make_distribution)r Zcmd_namer r r run s z sdist.runc C s* t dt | jjd}|j |j dS )zDeprecated API.zadistutils.command.sdist.check_metadata is deprecated, use the check command insteadr@ N)r PendingDeprecationWarningdistributionZget_command_objZensure_finalizedrP )r r@ r r r check_metadata s
zsdist.check_metadatac C s t jj| j}| r<| j r<| j | jj | jj dS |sP| j d| j | jj
| jrh| j |rt| j
| jr| j | jj | jj | j dS )aC Figure out the list of files to include in the source
distribution, and put it in 'self.filelist'. This might involve
reading the manifest template (and writing the manifest), or just
reading the manifest, or just using the default file set -- it all
depends on the user's options.
Nz&manifest template '%s' does not exist z(using default file list)z?manifest template '%s' does not exist (using default file list))ospathisfilerB _manifest_is_not_generated
read_manifestrM r Zremove_duplicatesr findallrD add_defaults
read_templater' prune_file_listwrite_manifest)r Ztemplate_existsr r r rN s(
zsdist.get_file_listc C s2 d| j jg}x|D ]}t|trn|}d}x*|D ]"}tjj|r.d}| jj| P q.W |s| j ddj
| qtjj|r| jj| q| j d| qW dd g}x*|D ]"}ttjjt
|}| jj| qW | jd
}| j j r| jj|j x>|jD ]4\} }
}}x$|D ]}
| jjtjj
|
|
qW qW | j j rx|| j jD ]p}t|tr|t|}tjj|r| jj| n:|\}}x0|D ](}t|}tjj|r| jj| qW qHW | j j r| jd}| jj|j | j j r| jd}| jj|j | j j r.| jd
}| jj|j dS )a9 Add all the default files to self.filelist:
- README or README.txt
- setup.py
- test/test*.py
- all pure Python modules mentioned in setup script
- all files pointed by package_data (build_py)
- all files defined in data_files.
- all files defined as scripts.
- all C sources listed as part of extensions or C libraries
in the setup script (doesn't catch C headers!)
Warns if (README or README.txt) or setup.py are missing; everything
else is optional.
README
README.txtFTz,standard file not found: should have one of z, zstandard file '%s' not foundz
test/test*.pyz setup.cfgbuild_py build_ext
build_clib
build_scriptsN)r^ r_ )rR Zscript_name
isinstancetuplerT rU existsrM r r joinfilterrV r extendget_finalized_commandZhas_pure_modulesZget_source_filesZ
data_filesZhas_data_filesstrr
Zhas_ext_modulesZhas_c_librariesZhas_scripts)r Z standardsfnZaltsZgot_itZoptionalpatternfilesr` ZpkgZsrc_dirZ build_dir filenamesfilenameitemdirnamer/ ra rb rc r r r rZ s\
"
zsdist.add_defaultsc C s t jd| j t| jddddddd}zlxf|j }|dkr<P y| jj| W q* ttfk
r } z| j d|j
|j|f W Y dd}~X q*X q*W W d|j X dS )zRead and parse manifest template file named by self.template.
(usually "MANIFEST.in") The parsing and processing is done by
'self.filelist', which updates itself accordingly.
zreading manifest template '%s'rA )Zstrip_commentsZskip_blanksZ
join_linesZ lstrip_wsZ rstrip_wsZ
collapse_joinNz%s, line %d: %s)
r inforB r
readlinerM Zprocess_template_lineZDistutilsTemplateError
ValueErrorr rp Zcurrent_lineclose)r rB linemsgr r r r[ s
$zsdist.read_templatec C s | j d}| jj }| jjd|jd | jjd|d tjdkrFd}nd}ddd d
ddd
g}d|dj||f }| jj|dd dS )av Prune off branches that might slip into the file list as created
by 'read_template()', but really don't belong there:
* the build tree (typically "build")
* the release tree itself (only an issue if we ran "sdist"
previously with --keep-temp, or it aborted)
* any RCS, CVS, .svn, .hg, .git, .bzr, _darcs directories
buildN)prefixZwin32z/|\\/ZRCSZCVSz\.svnz\.hgz\.gitz\.bzrZ_darcsz(^|%s)(%s)(%s).*|rA )Zis_regex) rj rR get_fullnamerM Zexclude_patternZ
build_basesysplatformrg )r ry base_dirZsepsZvcs_dirsZvcs_ptrnr r r r\ : s
zsdist.prune_file_listc C sX | j rtjd| j dS | jjdd }|jdd | jtj | j|fd| j dS )zWrite the file list in 'self.filelist' (presumably as filled in
by 'add_defaults()' and 'read_template()') to the manifest file
named by 'self.manifest'.
z5not writing to manually maintained manifest file '%s'Nr z*# file GENERATED by distutils, do NOT editzwriting manifest file '%s')
rW r rs rC rM rn insertZexecuter Z
write_file)r Zcontentr r r r] R s
zsdist.write_manifestc
C s<