{"id":18562470,"url":"https://github.com/replit/pyright-extended","last_synced_at":"2025-08-08T02:19:18.383Z","repository":{"id":179546983,"uuid":"659899276","full_name":"replit/pyright-extended","owner":"replit","description":"pyright with yapf and ruff","archived":false,"fork":false,"pushed_at":"2025-07-22T15:14:47.000Z","size":83387,"stargazers_count":32,"open_issues_count":10,"forks_count":2,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-07-24T02:43:25.223Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/replit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-06-28T20:07:38.000Z","updated_at":"2025-07-22T15:14:44.000Z","dependencies_parsed_at":"2024-07-18T23:03:05.138Z","dependency_job_id":"043a79ba-572e-4ea0-985e-625c0e17591b","html_url":"https://github.com/replit/pyright-extended","commit_stats":null,"previous_names":["replit/pyright-extended"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/replit/pyright-extended","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replit%2Fpyright-extended","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replit%2Fpyright-extended/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replit%2Fpyright-extended/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replit%2Fpyright-extended/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/replit","download_url":"https://codeload.github.com/replit/pyright-extended/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replit%2Fpyright-extended/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269332619,"owners_count":24399334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-07T02:00:09.698Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T22:09:51.706Z","updated_at":"2025-08-08T02:19:18.354Z","avatar_url":"https://github.com/replit.png","language":"Python","readme":"![Pyright](https://github.com/microsoft/pyright/blob/main/docs/img/PyrightLarge.png)\r\n\r\n[![Run on Repl.it](https://img.shields.io/badge/run-on_Replit-f26208?logo=replit)](https://repl.it/github/replit/pyright-extended) [![npm: @replit/pyright-extended](https://img.shields.io/npm/v/%40replit%2Fpyright-extended)](https://www.npmjs.com/package/@replit/pyright-extended)\r\n\r\nPyright is a full-featured, standards-based static type checker for Python. It is designed for high performance and can be used with large Python source bases.\r\n\r\nPyright includes both a [command-line tool](https://microsoft.github.io/pyright/#/command-line) and an [extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-pyright.pyright).\r\n\r\n\r\n## Pyright Playground\r\n\r\nTry Pyright in your browser using the [Pyright Playground](https://pyright-play.net/?code=MQAgKgFglgziMEMC2AHANgUxAEw0g9gHYwAuATgiRnBPgO4gDG%2BSBhIGZZ%2BZcjC7AEZZcVRlWzwSlKPzRoAniEFKUCslADmEEgDoAUPtwAzEAmzYAFAA8AXCGNp8lADQgF9x85IBKW-pBAkDIMEgBXMnZrEABqd0NQAAUEGBgoQk0zKTIQdNIBRiwUkBIILBgMZkJJBDJNMKQMQhJg6jC0Ejh0rLIw5qhGjmtClBIoIgNzKwBGNwAiOZ99IA).\r\n\r\n\r\n## Documentation\r\n\r\nRefer to [the documentation](https://microsoft.github.io/pyright) for installation, configuration, and usage details.\r\n\r\n`pyright-extended`, which lives in this repository, is a new Python meta-LSP that includes tools such as `pyright`, `ruff`, and `yapf`.\r\n\r\n`pyright-extended` provides the following capabilities:\r\n- Static analysis (through `pyright-langserver`)\r\n- Completions (though `pyright-langserver`)\r\n- Definitions (through `pyright-langserver`)\r\n- Hover (through `pyright-langserver`)\r\n- References (through `pyright-langserver`)\r\n- Formatting (through `yapf`)\r\n- Renaming (through `pyright-langserver`)\r\n- Import reorganization (through `ruff`)\r\n- Linting (through `ruff`, `pyright-langserver`)\r\n- Types (through `pyright-langserver`)\r\n\r\n# Building from source \r\n1. Install dependencies\r\n    - `node` and `npm`\r\n    - `ruff`\r\n    - `yapf`\r\n    - `npm run install:all`\r\n2. Build the LSP: `cd ./packages/pyright \u0026\u0026 npm run build`\r\n3. Mark file as executable: `chmod +x ./packages/pyright/langserver.index.js`\r\n3. Start LSP in your client of choice: `./packages/pyright/langserver.index.js --stdio`\r\n\r\n# Setup \r\n\r\n```bash\r\nnpm i -g @replit/pyright-extended\r\n```\r\n\r\n## Neovim\r\nAn example setup for the Neovim editor looks something like the following:\r\n\r\n```lua\r\nlocal lspconfig = require 'lspconfig'\r\nlocal configs = require 'lspconfig.configs'\r\nlocal util = require 'lspconfig.util'\r\nif not configs[\"pyright-extended\"] then\r\n  configs[\"pyright-extended\"] = {\r\n    default_config = {\r\n      cmd = {'pyright-langserver', '--stdio'},\r\n      filetypes = { \"python\" },\r\n      autostart = true,\r\n      root_dir = util.root_pattern('pyproject.toml'),\r\n      single_file_support = true,\r\n      settings = {\r\n        python = {\r\n          analysis = {\r\n            autoSearchPaths = true,\r\n            useLibraryCodeForTypes = true\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\nend\r\nlspconfig[\"pyright-extended\"].setup{}\r\nvim.lsp.set_log_level(\"INFO\")\r\n```\r\n## VSCode\r\nTo use `pyright-extended` in VS Code, you must build the extension from source.\r\n\r\n1. Install deps: `npm run install:all`\r\n2. Build the `.vsix` file: `cd packages/vscode-pyright; npm run package`, this generates a `.vsix` file\r\n3. In VS Code, go to extensions\r\n4. If you have Pylance, remove it, and reload\r\n5. If Pyright already exists, remove it, and reload\r\n6. In extensions, select \"Install from VSIX...\" and pick the .vsix file from step 2\r\n7. Make a `main.py`, start typing in code, and you should get context help\r\n\r\n# Updating from upstream and publishing \r\n1. `git pull upstream main`\r\n2. `npm run build:lsp`\r\n3. `npm run publish:lsp` (ensure you have proper NPM permissions)\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freplit%2Fpyright-extended","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freplit%2Fpyright-extended","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freplit%2Fpyright-extended/lists"}