# Path: ratatosk/job.py
# class InputJobTask(JobTask):
#     """Input job task. Should have as a parent task one of the tasks
#     in ratatosk.lib.files.external"""
#     def requires(self):
#         cls = self.parent()[0]
#         return cls(target=self.target)
#     
#     def run(self):
#         """No run should be defined"""
#         pass


import luigi
from ratatosk.job import InputJobTask
analyses. Each file type has as default :attr:`parent_task
<ratatosk.job.BaseJobTask.parent_task>` one of the :mod:`.external`
tasks.

The use of these classes is mainly intended for two cases:

1. Input file tasks can be used to connect different modules by changing
   the :attr:`parent_task` to depend on a task from another module
2. (Future work) The input file tasks implicitly defines a file type
   and could therefore be used to validate input/output

Usage
-----

Import the module and subclass any of the input files:

.. code-block:: python

   import ratatosk.lib.files.input

   class InputBamFile(ratatosk.lib.files.input.InputBamFile)
       pass

This effectively gives :class:`InputBamFile` its own namespace in the
configuration file.

Classes
-------
"""


# Path: ratatosk/job.py
# class InputJobTask(JobTask):
#     """Input job task. Should have as a parent task one of the tasks
#     in ratatosk.lib.files.external"""
#     def requires(self):
#         cls = self.parent()[0]
#         return cls(target=self.target)
#     
#     def run(self):
#         """No run should be defined"""
#         pass


# Path: ratatosk/lib/files/input.py
import luigi
from ratatosk.job import InputJobTask

analyses. Each file type has as default :attr:`parent_task
<ratatosk.job.BaseJobTask.parent_task>` one of the :mod:`.external`
tasks.

The use of these classes is mainly intended for two cases:

1. Input file tasks can be used to connect different modules by changing
   the :attr:`parent_task` to depend on a task from another module
2. (Future work) The input file tasks implicitly defines a file type
   and could therefore be used to validate input/output

Usage
-----

Import the module and subclass any of the input files:

.. code-block:: python

   import ratatosk.lib.files.input

   class InputBamFile(ratatosk.lib.files.input.InputBamFile)
       pass

This effectively gives :class:`InputBamFile` its own namespace in the
configuration file.

Classes
-------
"""


class InputBamFile(InputJobTask):