{"library":"luigi","title":"Luigi Workflow Management","description":"Luigi is a Python module that helps you build complex pipelines of batch jobs. It handles dependency resolution, workflow management, visualization, and much more. It's developed by Spotify and is currently in version 3.8.0, with minor releases typically occurring every few months.","language":"python","status":"active","last_verified":"Thu May 14","install":{"commands":["pip install luigi"],"cli":{"name":"luigi","version":"No task specified"}},"imports":["import luigi\n\nclass MyTask(luigi.Task): ...","import luigi\n\nclass MyTask(luigi.Task):\n    param = luigi.Parameter()","import luigi\n\nluigi.LocalTarget('path/to/file')","import luigi\n\nluigi.build([my_task_instance], local_scheduler=True)"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import luigi\nimport datetime\nimport os\n\nclass GenerateReport(luigi.Task):\n    date = luigi.DateParameter(default=datetime.date.today())\n\n    def run(self):\n        # Simulate some data processing\n        report_content = f\"Daily Report for {self.date.isoformat()}\\n\" \\\n                         f\"Generated by Luigi.\\n\"\n\n        # Write the report to a target file\n        with self.output().open('w') as f:\n            f.write(report_content)\n\n    def output(self):\n        # Define where the output of this task will be stored\n        # Using an environment variable for flexibility or defaulting to current dir\n        output_dir = os.environ.get('LUIGI_OUTPUT_DIR', '.')\n        return luigi.LocalTarget(os.path.join(output_dir, f'report_{self.date.isoformat()}.txt'))\n\nif __name__ == '__main__':\n    # To run this task using the command line (most common):\n    # 1. Start the Luigi scheduler daemon in a separate terminal: luigid --port 8082\n    # 2. Run your script: python your_script_name.py GenerateReport --date 2023-10-26\n    #    (or omit --date for today's date if default is set)\n    # 3. If you don't want to run luigid, use the --local-scheduler flag:\n    #    python your_script_name.py GenerateReport --local-scheduler\n\n    # For programmatic execution (e.g., in a wrapper script or test):\n    # The 'local_scheduler=True' ensures it runs without an external luigid daemon.\n    luigi.build([GenerateReport(date=datetime.date(2023, 10, 26))], local_scheduler=True)","lang":"python","description":"This quickstart defines a simple Luigi task `GenerateReport` that takes a `date` parameter, simulates generating a report, and writes it to a local file. It demonstrates defining a task, its `run` method, and its `output` target using `luigi.LocalTarget`. The example also shows how to trigger tasks programmatically using `luigi.build` with a local scheduler.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-14","installed_version":"3.7.3","pypi_latest":"3.8.1","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.3,"avg_import_s":0.52,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"luigi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.35,"mem_mb":10.7,"disk_size":"27.4M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"luigi","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.41,"mem_mb":10.7,"disk_size":"27.4M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"luigi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.2,"import_time_s":0.28,"mem_mb":10.7,"disk_size":"28M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"luigi","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.33,"mem_mb":10.7,"disk_size":"28M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"luigi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.47,"mem_mb":12.1,"disk_size":"31.0M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"luigi","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.59,"mem_mb":12.1,"disk_size":"31.0M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"luigi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.4,"import_time_s":0.41,"mem_mb":12.1,"disk_size":"32M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"luigi","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.52,"mem_mb":12.1,"disk_size":"32M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"luigi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.64,"mem_mb":12.5,"disk_size":"22.4M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"luigi","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.83,"mem_mb":12.5,"disk_size":"22.4M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"luigi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.2,"import_time_s":0.64,"mem_mb":12.5,"disk_size":"23M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"luigi","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.88,"mem_mb":12.5,"disk_size":"23M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"luigi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.67,"mem_mb":12.8,"disk_size":"22.2M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"luigi","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.78,"mem_mb":12.8,"disk_size":"22.1M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"luigi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.3,"import_time_s":0.61,"mem_mb":12.8,"disk_size":"23M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"luigi","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.76,"mem_mb":12.8,"disk_size":"23M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"luigi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.28,"mem_mb":10.6,"disk_size":"26.9M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"luigi","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.34,"mem_mb":10.6,"disk_size":"26.9M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"luigi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.6,"import_time_s":0.24,"mem_mb":10.6,"disk_size":"27M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"luigi","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.35,"mem_mb":10.6,"disk_size":"27M"}]}}