Skip to main content

tn3270lib

Python TN3270/TN3270E client for test automation (IBM-3278 models 2–5). Not an x3270 clone.

Documentation (intended Read the Docs project): https://tn3270lib.readthedocs.io

import tn3270lib
tn = tn3270lib.TN3270(device_type="IBM-3278-3", codepage="cp037")
tn.initiate("host", 23)
tn.wait_for_text("LOGON", timeout=10)
tn.fill("Userid", "IBMUSER")
tn.wait_unlock()
tn.send_enter()
tn.save_screen_html("screen.html")
print(tn.get_screen())
tn.disconnect()

Wait helpers: wait_for_text, wait_unlock, wait_cursor, wait_stable raise TN3270Timeout (screen, cursor, lock, last AID, raw records attached). Field helpers: fields(), field(label) (case-insensitive substring of the preceding protected text), fill, type, tab. Numeric unprotected fields (FA_NUMERIC) reject letters. codepage="cp273" etc.; extra IBM codecs: pip install tn3270lib[i18n]. EW uses the default 24×80 buffer; EWA switches to the model alternate (32×80 / 43×80 / 27×132). SFE/SA store per-cell color and highlighting; save_screen / save_screen_txt / save_screen_html dump the screen (HTML keeps protected vs unprotected and color spans). send_enter / send_pf / send_aid raise TN3270KeyboardLocked while locked and lock again after a successful AID.

TN3270E: BIND_IMAGE is parsed (raw + PLU/SLU/size hints on bind / bind_image); UNBIND clears it. FUNCTIONS advertised are RESPONSES and SYSREQ (not BIND_IMAGE-as-function, not SCS). sysreq() / send_aid('SYSREQ') send a TN3270E REQUEST and toggle SSCP-LU when SYSREQ was negotiated; otherwise the 3270 SYSREQ AID is used. In SSCP-LU mode, type + send_enter send DT_SSCP_LU_DATA (not Read Modified); get_sscp() returns inbound SSCP text. get_nvt() is an ASCII line buffer for DT_NVT and pre-3270 telnet bytes — not a full NVT terminal. Outbound 3270-DATA headers carry an incrementing 16-bit seq (IAC-doubled). Set Reply Mode is honored: field, extended-field (SFE on RM/RB), character (best-effort SA). reconnect() disconnects, resets 3270E/bind/buffers, and initiates again.

TLS defaults to CERT_NONE plus old ciphers for z/OS AT-TLS; verify=True is not the AT-TLS path. Use ssl_context= or certfile= / keyfile= for mTLS. require_tls=True refuses plaintext; allow_plaintext=True restores fallback. STARTTLS, SCS/3287 printer sessions, extra partitions, and DBCS are out of scope. Licensed GPL-3.0-or-later.

Install

From a checkout (the package is not assumed to be on PyPI yet):

pip install .
pip install '.[i18n]'   # extra IBM SBCS codecs
pip install '.[docs]'   # Sphinx / Read the Docs

When published:

pip install tn3270lib
pip install tn3270lib[i18n]

Build artifacts locally (no upload):

python3 -m pip install build twine
python3 -m build
python3 -m twine check dist/*

See CHANGELOG.md for 0.3.0 (parser fixes and phases A–C).

Metadata

Release files for tn3270lib 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tn3270lib 0.3.0
File Size Uploaded
tn3270lib-0.3.0.tar.gz 61.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tn3270lib 0.3.0
File Interpreter ABI Platform
tn3270lib-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 119.2 kB

Release files / tn3270lib-0.3.0.tar.gz

Download URL tn3270lib-0.3.0.tar.gz
Size 61.2 kB
Tags Source
SHA-256 checksum
How to use checksums
163b61d6f857f172bdb0c5afc1f8972762079738591b82bab4589ccaec8a2624
BLAKE2b-256 checksum
How to use checksums
169156fc246a51759e2a8eda24820c0b06e47eccfd24346dfc3e7bcbb56d89a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7

Release files / tn3270lib-0.3.0-py3-none-any.whl

Download URL tn3270lib-0.3.0-py3-none-any.whl
Size 58.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
44806277b9abb8a5bcad4dd9f6bf06ddc5c0a4d3e63605012eb73dc1171a344e
BLAKE2b-256 checksum
How to use checksums
2bae50be92e4ceeb27eb8dd96c9ab7bdbeef0e883b356bb6ba419ce10ccd9ba8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page