mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-31 12:03:46 +00:00 
			
		
		
		
	mypy: Remove daemon mode.
mypy in daemon mode takes some 400 MiB of memory, and cannot follow imports of type-annotated third-party packages; meanwhile, non-daemon mode is no longer nearly as slow as it once was. Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
This commit is contained in:
		
				
					committed by
					
						 Tim Abbott
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							9c49049c9e
						
					
				
				
					commit
					99904527f5
				
			| @@ -48,14 +48,6 @@ To run mypy on Zulip's python code, you can run the command: | |||||||
|  |  | ||||||
|     tools/run-mypy |     tools/run-mypy | ||||||
|  |  | ||||||
| This will take a while to start running, since it runs mypy as a |  | ||||||
| long-running daemon (server) process and send type-checking requests |  | ||||||
| to the server; this makes checking mypy about 100x faster.  But if |  | ||||||
| you're debugging or for whatever reason don't want the daemon, you can |  | ||||||
| use: |  | ||||||
|  |  | ||||||
|     tools/run-mypy --no-daemon |  | ||||||
|  |  | ||||||
| Mypy outputs errors in the same style as a compiler would.  For | Mypy outputs errors in the same style as a compiler would.  For | ||||||
| example, if your code has a type error like this: | example, if your code has a type error like this: | ||||||
|  |  | ||||||
| @@ -118,10 +110,6 @@ everything in the third-party module as an `Any`, which is the right | |||||||
| model (one certainly wouldn't want to need stubs for everything just | model (one certainly wouldn't want to need stubs for everything just | ||||||
| to use `mypy`!), but means the code can't be fully type-checked. | to use `mypy`!), but means the code can't be fully type-checked. | ||||||
|  |  | ||||||
| **Note**: When editing stubs, we recommend using |  | ||||||
| `tools/run-mypy --no-daemon`, because the mypy daemon's caching |  | ||||||
| system has some bugs around editing stubs that can be confusing. |  | ||||||
|  |  | ||||||
| ## `type_debug.py` | ## `type_debug.py` | ||||||
|  |  | ||||||
| `zerver/lib/type_debug.py` has a useful decorator `print_types`.  It | `zerver/lib/type_debug.py` has a useful decorator `print_types`.  It | ||||||
|   | |||||||
| @@ -1,6 +1,3 @@ | |||||||
| # NOTE: When editing stubs, we recommend using `tools/run-mypy --no-daemon`, |  | ||||||
| # because the mypy daemon's caching system has some bugs around editing stubs |  | ||||||
| # |  | ||||||
| # See https://zulip.readthedocs.io/en/latest/testing/mypy.html#mypy-stubs-for-third-party-modules | # See https://zulip.readthedocs.io/en/latest/testing/mypy.html#mypy-stubs-for-third-party-modules | ||||||
| # for notes on how we manage mypy stubs. | # for notes on how we manage mypy stubs. | ||||||
|  |  | ||||||
|   | |||||||
| @@ -17,10 +17,7 @@ set -x | |||||||
| # We run mypy after the backend tests so we get output from the | # We run mypy after the backend tests so we get output from the | ||||||
| # backend tests, which tend to uncover more serious problems, first. | # backend tests, which tend to uncover more serious problems, first. | ||||||
| ./tools/run-mypy --version | ./tools/run-mypy --version | ||||||
| # We run mypy without daemon mode, since that's faster given that | ./tools/run-mypy | ||||||
| # we're only going to run it once, and catches more errors since |  | ||||||
| # daemon mode doesn't follow package imports. |  | ||||||
| ./tools/run-mypy --no-daemon |  | ||||||
|  |  | ||||||
| ./tools/test-migrations | ./tools/test-migrations | ||||||
| ./tools/setup/optimize-svg | ./tools/setup/optimize-svg | ||||||
|   | |||||||
| @@ -27,8 +27,6 @@ parser.add_argument('--quick', action='store_true', | |||||||
|                     help="pass --quick to mypy") |                     help="pass --quick to mypy") | ||||||
| parser.add_argument('-m', '--modified', action='store_true', | parser.add_argument('-m', '--modified', action='store_true', | ||||||
|                     help="check only modified files") |                     help="check only modified files") | ||||||
| parser.add_argument('--no-daemon', action='store_true', |  | ||||||
|                     help="Start and run the mypy fine-grained incremental daemon") |  | ||||||
| parser.add_argument('--scripts-only', action='store_true', | parser.add_argument('--scripts-only', action='store_true', | ||||||
|                     help="only check extensionless python scripts") |                     help="only check extensionless python scripts") | ||||||
| parser.add_argument('-a', '--all', action='store_true', | parser.add_argument('-a', '--all', action='store_true', | ||||||
| @@ -39,7 +37,7 @@ args = parser.parse_args() | |||||||
|  |  | ||||||
| assert_provisioning_status_ok(args.force) | assert_provisioning_status_ok(args.force) | ||||||
|  |  | ||||||
| command_name = "mypy" if (args.no_daemon or args.version) else "dmypy" | command_name = "mypy" | ||||||
|  |  | ||||||
| # Use zulip-py3-venv's mypy if it's available. | # Use zulip-py3-venv's mypy if it's available. | ||||||
| VENV_DIR = "/srv/zulip-py3-venv" | VENV_DIR = "/srv/zulip-py3-venv" | ||||||
| @@ -75,15 +73,7 @@ if args.quick: | |||||||
|     extra_args.append("--quick") |     extra_args.append("--quick") | ||||||
|  |  | ||||||
| mypy_args = extra_args + python_files + pyi_files | mypy_args = extra_args + python_files + pyi_files | ||||||
| if args.no_daemon: | rc = subprocess.call([mypy_command] + mypy_args) | ||||||
|     rc = subprocess.call([mypy_command] + mypy_args) |  | ||||||
| else: |  | ||||||
|     mypy_args += ["--follow-imports=skip"] |  | ||||||
|     rc = subprocess.call([mypy_command, "status"], stdout=subprocess.PIPE) |  | ||||||
|     if rc != 0: |  | ||||||
|         print("Starting mypy daemon, this will take a minute...") |  | ||||||
|         sys.stdout.flush() |  | ||||||
|     rc = subprocess.call([mypy_command, 'run', '--'] + mypy_args) |  | ||||||
|  |  | ||||||
| if rc != 0: | if rc != 0: | ||||||
|     print("") |     print("") | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user