{"id":26976,"library":"fab-classic","title":"Fabric Classic","description":"fab-classic is a maintained fork of the original Fabric 1.x line, providing a simple, Pythonic tool for remote execution and deployment via SSH. The current version is 1.21.0, with quarterly releases and support for Python 3.5+.","status":"active","version":"1.21.0","language":"python","source_language":"en","source_url":"https://github.com/ploxiln/fab-classic","tags":["remote-execution","deployment","ssh","fabric"],"install":[{"cmd":"pip install fab-classic","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Core SSH transport (upstream, not paramiko-ng)","package":"paramiko","optional":false}],"imports":[{"note":"Fabric 2/3 uses 'from fabric import Connection'; classic uses fabric.api.","wrong":"from fabric import run","symbol":"run","correct":"from fabric.api import run"}],"quickstart":{"code":"from fabric.api import run, env, cd\nenv.host_string = 'example.com'\nenv.user = 'user'\nwith cd('/var/www'):\n    run('ls -la')\nrun('uname -a')","lang":"python","description":"Minimal remote command execution using fabric.api."},"warnings":[{"fix":"Upgrade to Python 3.5+ or pin fab-classic<1.20.0.","message":"Python 2.7 support dropped in 1.20.0","severity":"breaking","affected_versions":"<1.20.0"},{"fix":"Set multiprocessing context to 'fork': import multiprocessing as mp; mp.set_start_method('fork') before using --parallel.","message":"Parallel mode may hang on macOS Python 3.8+ without explicit fork context. Use env.parallel = True with caution.","severity":"gotcha","affected_versions":"1.20.0+"},{"fix":"Ensure paramiko (not paramiko-ng) is installed.","message":"paramiko-ng is no longer supported by default; use upstream paramiko.","severity":"deprecated","affected_versions":">=1.21.0"},{"fix":"Check return code explicitly if using capture=False.","message":"local() capture behavior changed in 1.19.0; failing commands with capture=False no longer raise SystemExit.","severity":"gotcha","affected_versions":">=1.19.0"}],"env_vars":null,"search_vec":"'1':14 '1.21.0':33 '3.5':41 'classic':2,5 'current':30 'deploy':26,45 'execut':24,44 'fab':4 'fab-class':3 'fabric':1,13,47 'fork':9 'line':16 'maintain':8 'origin':12 'provid':17 'python':20,40 'quarter':35 'releas':36 'remot':23,43 'remote-execut':42 'simpl':19 'ssh':28,46 'support':38 'tool':21 'version':31 'via':27 'x':15","created_at":"2026-05-01T17:43:52.486619+00:00","updated_at":"2026-05-01T17:43:52.486619+00:00","problems":[{"fix":"Uninstall fabric/fabric3 and install fab-classic: pip uninstall fabric; pip install fab-classic.","cause":"Installed Fabric 2+ (fabric3) instead of fab-classic.","error":"ImportError: No module named fabric.api"},{"fix":"Increase timeout or retry: env.timeout = 30; env.connection_attempts = 3.","cause":"Network issue or server drops connection early.","error":"paramiko.ssh_exception.SSHException: Error reading protocol banner"},{"fix":"Upgrade to fab-classic>=1.20.2.","cause":"Incompatible with Python 3.14 (struct buffer size change).","error":"TypeError: _pty_size() got an unexpected keyword argument 'height'","affected_versions":"<1.20.2"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"fab","cli_version":"fab-classic 1.21.0","type":"library","homepage":null,"github":"https://github.com/ploxiln/fab-classic","docs":null,"changelog":null,"pypi":"https://pypi.org/project/fab-classic/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops","http-networking"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-29","last_verified":"2026-06-29","next_check":"2026-07-29","install_tag":null}}