class_docstr: In order to support editable installations (see :pep:`660`) all
  build subcommands **SHOULD** implement this protocol. They also **MUST** inherit
  from ``setuptools.Command``.
  
  When creating an :pep:`editable wheel <660>`, ``setuptools`` will try to evaluate
  custom ``build`` subcommands using the following procedure:
  
  1. ``setuptools`` will set the ``editable_mode`` attribute to ``True``
  2. ``setuptools`` will execute the ``run()`` command.
  
     .. important::
        Subcommands **SHOULD** take advantage of ``editable_mode=True`` to adequate
        its behaviour or perform optimisations.
  
        For example, if a subcommand doesn't need to generate an extra file and
        all it does is to copy a source file into the build directory,
        ``run()`` **SHOULD** simply "early return".
  
        Similarly, if the subcommand creates files that would be placed alongside
        Python files in the final distribution, during an editable install
        the command **SHOULD** generate these files "in place" (i.e. write them to
        the original source directory, instead of using the build directory).
        Note that ``get_output_mapping()`` should reflect that and include mappings
        for "in place" builds accordingly.
  
  3. ``setuptools`` use any knowledge it can derive from the return values of
     ``get_outputs()`` and ``get_output_mapping()`` to create an editable wheel.
     When relevant ``setuptools`` **MAY** attempt to use file links based on the value
     of ``get_output_mapping()``. Alternatively, ``setuptools`` **MAY** attempt to use
     :doc:`import hooks <python:reference/import>` to redirect any attempt to import
     to the directory with the original source code and other files built in place.
  
  Please note that custom sub-commands **SHOULD NOT** rely on ``run()`` being
  executed (or not) to provide correct return values for ``get_outputs()``,
  ``get_output_mapping()`` or ``get_source_files()``. The ``get_*`` methods should
  work independently of ``run()``.
class_docstr_tok: ["In","order","to","support","editable","installations","(","see",":","pep",":","`","660","`",")","all","build","subcommands","*","*","SHOULD","*","*","implement","this","protocol",".","They","also","*","*","MUST","*","*","inherit","from","``","setuptools.Command","``",".","When","creating","an",":","pep",":","`","editable","wheel","<","660",">","`",",","``","setuptools","``","will","try","to","evaluate","custom","``","build","``","subcommands","using","the","following","procedure",":","1",".","``","setuptools","``","will","set","the","``","editable_mode","``","attribute","to","``","True","``","2",".","``","setuptools","``","will","execute","the","``","run","(",")","``","command",".","..","important",":",":","Subcommands","*","*","SHOULD","*","*","take","advantage","of","``","editable_mode=True","``","to","adequate","its","behaviour","or","perform","optimisations",".","For","example",",","if","a","subcommand","does","n't","need","to","generate","an","extra","file","and","all","it","does","is","to","copy","a","source","file","into","the","build","directory",",","``","run","(",")","``","*","*","SHOULD","*","*","simply","``","early","return","''",".","Similarly",",","if","the","subcommand","creates","files","that","would","be","placed","alongside","Python","files","in","the","final","distribution",",","during","an","editable","install","the","command","*","*","SHOULD","*","*","generate","these","files","``","in","place","''","(","i.e",".","write","them","to","the","original","source","directory",",","instead","of","using","the","build","directory",")",".","Note","that","``","get_output_mapping","(",")","``","should","reflect","that","and","include","mappings","for","``","in","place","''","builds","accordingly",".","3",".","``","setuptools","``","use","any","knowledge","it","can","derive","from","the","return","values","of","``","get_outputs","(",")","``","and","``","get_output_mapping","(",")","``","to","create","an","editable","wheel",".","When","relevant","``","setuptools","``","*","*","MAY","*","*","attempt","to","use","file","links","based","on","the","value","of","``","get_output_mapping","(",")","``",".","Alternatively",",","``","setuptools","``","*","*","MAY","*","*","attempt","to","use",":","doc",":","`","import","hooks","<","python",":","reference\/import",">","`","to","redirect","any","attempt","to","import","to","the","directory","with","the","original","source","code","and","other","files","built","in","place",".","Please","note","that","custom","sub-commands","*","*","SHOULD","NOT","*","*","rely","on","``","run","(",")","``","being","executed","(","or","not",")","to","provide","correct","return","values","for","``","get_outputs","(",")","``",",","``","get_output_mapping","(",")","``","or","``","get_source_files","(",")","``",".","The","``","get_","*","``","methods","should","work","independently","of","``","run","(",")","``","."]
docstr: Return a list of all files that are used by the command to create the expected
  outputs.
  For example, if your build command transpiles Java files into Python, you should
  list here all the Java files.
  The primary purpose of this function is to help populating the ``sdist``
  with all the files necessary to build the distribution.
  All files should be strings relative to the project root directory.
docstr_tok: ["Return","a","list","of","all","files","that","are","used","by","the","command","to","create","the","expected","outputs",".","For","example",",","if","your","build","command","transpiles","Java","files","into","Python",",","you","should","list","here","all","the","Java","files",".","The","primary","purpose","of","this","function","is","to","help","populating","the","``","sdist","``","with","all","the","files","necessary","to","build","the","distribution",".","All","files","should","be","strings","relative","to","the","project","root","directory","."]
code: def get_source_files(self) -> List[str]:
      """
      Return a list of all files that are used by the command to create the expected
      outputs.
      For example, if your build command transpiles Java files into Python, you should
      list here all the Java files.
      The primary purpose of this function is to help populating the ``sdist``
      with all the files necessary to build the distribution.
      All files should be strings relative to the project root directory.
      """
  
file_path: catboost/contrib/python/setuptools/py3/setuptools/command/build.py
imports: import sys
  from typing import TYPE_CHECKING, List, Dict
  from distutils.command.build import build
  from ..warnings import SetuptoolsDeprecationWarning
label_desc: Use image node_id 4 for calling the SubCommand obj's underlying member method code with example usage: obj.get_source_files() without return types