mirror of
				https://github.com/openzim/warc2zim.git
				synced 2025-10-31 11:50:54 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			109 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # pyright: strict, reportUntypedFunctionDecorator=false
 | |
| import os
 | |
| 
 | |
| from invoke.context import Context
 | |
| from invoke.tasks import task  # pyright: ignore [reportUnknownVariableType]
 | |
| 
 | |
| use_pty = not os.getenv("CI", "")
 | |
| 
 | |
| 
 | |
| @task(optional=["args"], help={"args": "pytest additional arguments"})
 | |
| def test(ctx: Context, args: str = ""):
 | |
|     """run tests (without coverage)"""
 | |
|     ctx.run(f"pytest {args}", pty=use_pty)
 | |
| 
 | |
| 
 | |
| @task(optional=["args"], help={"args": "pytest additional arguments"})
 | |
| def test_cov(ctx: Context, args: str = ""):
 | |
|     """run test vith coverage"""
 | |
|     ctx.run(f"coverage run -m pytest {args}", pty=use_pty)
 | |
| 
 | |
| 
 | |
| @task(optional=["html"], help={"html": "flag to export html report"})
 | |
| def report_cov(ctx: Context, *, html: bool = False):
 | |
|     """report coverage"""
 | |
|     ctx.run("coverage combine", warn=True, pty=use_pty)
 | |
|     ctx.run("coverage report --show-missing", pty=use_pty)
 | |
|     if html:
 | |
|         ctx.run("coverage html", pty=use_pty)
 | |
| 
 | |
| 
 | |
| @task(
 | |
|     optional=["args", "html"],
 | |
|     help={
 | |
|         "args": "pytest additional arguments",
 | |
|         "html": "flag to export html report",
 | |
|     },
 | |
| )
 | |
| def coverage(ctx: Context, args: str = "", *, html: bool = False):
 | |
|     """run tests and report coverage"""
 | |
|     test_cov(ctx, args=args)
 | |
|     report_cov(ctx, html=html)
 | |
| 
 | |
| 
 | |
| @task(optional=["args"], help={"args": "black additional arguments"})
 | |
| def lint_black(ctx: Context, args: str = "."):
 | |
|     args = args or "."  # needed for hatch script
 | |
|     ctx.run("black --version", pty=use_pty)
 | |
|     ctx.run(f"black --check --diff {args}", pty=use_pty)
 | |
| 
 | |
| 
 | |
| @task(optional=["args"], help={"args": "ruff additional arguments"})
 | |
| def lint_ruff(ctx: Context, args: str = "."):
 | |
|     args = args or "."  # needed for hatch script
 | |
|     ctx.run("ruff --version", pty=use_pty)
 | |
|     ctx.run(f"ruff check {args}", pty=use_pty)
 | |
| 
 | |
| 
 | |
| @task(
 | |
|     optional=["args"],
 | |
|     help={
 | |
|         "args": "linting tools (black, ruff) additional arguments, typically a path",
 | |
|     },
 | |
| )
 | |
| def lintall(ctx: Context, args: str = "."):
 | |
|     """Check linting"""
 | |
|     args = args or "."  # needed for hatch script
 | |
|     lint_black(ctx, args)
 | |
|     lint_ruff(ctx, args)
 | |
| 
 | |
| 
 | |
| @task(optional=["args"], help={"args": "check tools (pyright) additional arguments"})
 | |
| def check_pyright(ctx: Context, args: str = ""):
 | |
|     """check static types with pyright"""
 | |
|     ctx.run("pyright --version")
 | |
|     ctx.run(f"pyright {args}", pty=use_pty)
 | |
| 
 | |
| 
 | |
| @task(optional=["args"], help={"args": "check tools (pyright) additional arguments"})
 | |
| def checkall(ctx: Context, args: str = ""):
 | |
|     """check static types"""
 | |
|     check_pyright(ctx, args)
 | |
| 
 | |
| 
 | |
| @task(optional=["args"], help={"args": "black additional arguments"})
 | |
| def fix_black(ctx: Context, args: str = "."):
 | |
|     """fix black formatting"""
 | |
|     args = args or "."  # needed for hatch script
 | |
|     ctx.run(f"black {args}", pty=use_pty)
 | |
| 
 | |
| 
 | |
| @task(optional=["args"], help={"args": "ruff additional arguments"})
 | |
| def fix_ruff(ctx: Context, args: str = "."):
 | |
|     """fix all ruff rules"""
 | |
|     args = args or "."  # needed for hatch script
 | |
|     ctx.run(f"ruff --fix {args}", pty=use_pty)
 | |
| 
 | |
| 
 | |
| @task(
 | |
|     optional=["args"],
 | |
|     help={
 | |
|         "args": "linting tools (black, ruff) additional arguments, typically a path",
 | |
|     },
 | |
| )
 | |
| def fixall(ctx: Context, args: str = "."):
 | |
|     """Fix everything automatically"""
 | |
|     args = args or "."  # needed for hatch script
 | |
|     fix_black(ctx, args)
 | |
|     fix_ruff(ctx, args)
 | |
|     lintall(ctx, args)
 | 
