• Get Review Board
  • What's New
  • Products
  • Review Board Code review, image review, and document review
  • Documentation
  • Release Notes
  • Power Pack Enterprise integrations, reports, and enhanced document review
  • Try for 60 Days
  • Purchase
  • RBCommons Review Board as a Service, hosted by us
  • Pricing
  • RBTools Command line tools and Python API for Review Board
  • Documentation
  • Release Notes
  • Review Bot Automated code review, connecting tools you already use
  • Documentation
  • Release Notes
  • RB Gateway Manage Git and Mercurial repositories in your network
  • Documentation
  • Release Notes
  • Learn and Explore
  • What is Code Review?
  • Documentation
  • Frequently Asked Questions
  • Support Options
  • Third-Party Integrations
  • Demo
  • Review Board RBTools Power Pack Review Bot Djblets RB Gateway
    1. RBTools 5.x
    2. Version 5.x
    3. Version 4.x
    4. Version 3.x
    5. Version 2.0
    6. Version 1.0
    7. Version 0.7
    8. Version 0.6
    9. Version 0.5
    10. RBTools Python API
    11. Module and Class References
    12. rbtools.diffs.writers
  • Home
  • Installing RBTools
  • rbt Command
  • Configuration
  • Authenticating to Review Board
  • Repository Configuration
  • Per-User Configuration
  • Team Foundation Server Configuration
  • Commands
  • alias
  • api-get
  • attach
  • clear-cache
  • close
  • diff
  • install
  • land
  • list-repo-types
  • login
  • logout
  • patch
  • post
  • publish
  • review
  • setup-completion
  • setup-repo
  • stamp
  • status
  • status-update
  • RBTools Workflows
  • Using RBTools With Cliosoft SOS
  • Using RBTools with Git
  • Using RBTools with HCL VersionVault and IBM ClearCase
  • Using RBTools With Perforce
  • RBTools Python API
  • Overview of the Python API Client
  • Tutorial
  • Resource-Specific Functionality
  • Module and Class References
  • rbtools
  • rbtools.deprecation
  • rbtools.api
  • rbtools.api.cache
  • rbtools.api.capabilities
  • rbtools.api.client
  • rbtools.api.decode
  • rbtools.api.decorators
  • rbtools.api.errors
  • rbtools.api.factory
  • rbtools.api.request
  • rbtools.api.resource
  • rbtools.api.transport
  • rbtools.api.transport.sync
  • rbtools.api.utils
  • rbtools.clients
  • rbtools.clients.base
  • rbtools.clients.base.patch
  • rbtools.clients.base.registry
  • rbtools.clients.base.repository
  • rbtools.clients.base.scmclient
  • rbtools.clients.errors
  • rbtools.clients.bazaar
  • rbtools.clients.clearcase
  • rbtools.clients.cvs
  • rbtools.clients.git
  • rbtools.clients.mercurial
  • rbtools.clients.perforce
  • rbtools.clients.plastic
  • rbtools.clients.sos
  • rbtools.clients.svn
  • rbtools.clients.tfs
  • rbtools.config
  • rbtools.config.config
  • rbtools.config.loader
  • rbtools.diffs
  • rbtools.diffs.patches
  • rbtools.diffs.patcher
  • rbtools.diffs.tools
  • rbtools.diffs.tools.backends
  • rbtools.diffs.tools.backends.gnu
  • rbtools.diffs.tools.base
  • rbtools.diffs.tools.base.diff_file_result
  • rbtools.diffs.tools.base.diff_tool
  • rbtools.diffs.tools.errors
  • rbtools.diffs.tools.registry
  • rbtools.diffs.writers
  • rbtools.commands
  • rbtools.commands.main
  • rbtools.commands
  • rbtools.commands.base
  • rbtools.commands.base.commands
  • rbtools.commands.base.errors
  • rbtools.commands.base.options
  • rbtools.commands.base.output
  • rbtools.commands.alias
  • rbtools.commands.api_get
  • rbtools.commands.attach
  • rbtools.commands.clearcache
  • rbtools.commands.close
  • rbtools.commands.diff
  • rbtools.commands.info
  • rbtools.commands.install
  • rbtools.commands.land
  • rbtools.commands.list_repo_types
  • rbtools.commands.login
  • rbtools.commands.logout
  • rbtools.commands.patch
  • rbtools.commands.post
  • rbtools.commands.publish
  • rbtools.commands.review
  • rbtools.commands.setup_completion
  • rbtools.commands.setup_repo
  • rbtools.commands.stamp
  • rbtools.commands.status
  • rbtools.commands.status_update
  • rbtools.hooks
  • rbtools.hooks.common
  • rbtools.hooks.git
  • rbtools.testing
  • rbtools.testing.api
  • rbtools.testing.api.payloads
  • rbtools.testing.api.transport
  • rbtools.testing.commands
  • rbtools.testing.testcase
  • rbtools.testing.transport
  • rbtools.utils
  • rbtools.utils.aliases
  • rbtools.utils.browser
  • rbtools.utils.checks
  • rbtools.utils.commands
  • rbtools.utils.console
  • rbtools.utils.diffs
  • rbtools.utils.encoding
  • rbtools.utils.errors
  • rbtools.utils.filesystem
  • rbtools.utils.graphs
  • rbtools.utils.mimetypes
  • rbtools.utils.process
  • rbtools.utils.repository
  • rbtools.utils.review_request
  • rbtools.utils.source_tree
  • rbtools.utils.users
  • Glossary
  • General Index
  • Python Module Index
  • Release Notes
  • rbtools.diffs.writers¶

    Writers to help programmatically generate new diffs.

    New in version 4.0.

    Classes

    UnifiedDiffWriter(stream[, encoding, newline])

    Writer for generating Unified Diff files.

    class rbtools.diffs.writers.UnifiedDiffWriter(stream: BufferedIOBase, encoding: str = 'utf-8', newline: bytes = b'\n')[source]¶

    Bases: object

    Writer for generating Unified Diff files.

    This can be used to incrementally build up one or more Unified Diff files from any provided input or from results from a diff tool.

    It takes care of ensuring proper newlines at the end of the file.

    This is the preferred interface for programmatically generating Unified Diff payloads, whether for DiffX or otherwise, starting in RBTools 4.0.

    New in version 4.0.

    __init__(stream: BufferedIOBase, encoding: str = 'utf-8', newline: bytes = b'\n') → None[source]¶

    Initialize the writer.

    Parameters:
    • stream (io.BufferedIOBase) – The stream to write to.

    • encoding (str, optional) –

      The encoding to use to encode Unicode strings.

      This defaults to encoding as UTF-8. It should generally not be changed.

    • newline (bytes, optional) –

      The newline character(s) to use at the end of each line.

      This defaults to UNIX newlines.

    encoding: str¶

    The encoding to use to encode Unicode strings.

    Type:

    str

    newline: bytes¶

    The newline character(s) to use at the end of each line.

    Type:

    bytes

    write_orig_file_header(path: Union[bytes, str], extra: Optional[Union[bytes, str]] = None) → None[source]¶

    Write a header for the original file.

    This will write the --- file header in a standard form, optionally containing extra data after the filename.

    String arguments will be encoded using the default encoding for the writer. Byte string arguments are expected to already be in the proper encoding.

    Parameters:
    • path (bytes or str) – The path to include in the header.

    • extra (bytes or str, optional) – Optional extra detail to include after the filename.

    write_modified_file_header(path: Union[bytes, str], extra: Optional[Union[bytes, str]] = None) → None[source]¶

    Write a header for the modified file.

    This will write the +++ file header in a standard form, optionally containing extra data after the filename.

    String arguments will be encoded using the default encoding for the writer. Byte string arguments are expected to already be in the proper encoding.

    Parameters:
    • path (bytes or str) – The path to include in the header.

    • extra (bytes or str, optional) – Optional extra detail to include after the filename.

    write_file_headers(*, orig_path: Union[bytes, str], modified_path: Union[bytes, str], orig_extra: Optional[Union[bytes, str]] = None, modified_extra: Optional[Union[bytes, str]] = None) → None[source]¶

    Write both original and modified file headers.

    This will write headers for the original and modified files, basing them on provided data.

    String arguments will be encoded using the default encoding for the writer. Byte string arguments, or byte strings from the diff result, are expected to already be in the proper encoding.

    Parameters:
    • orig_path (bytes or str) – The file path to use for the original file header.

    • modified_path (bytes or str) – The file path to use for the modified file header.

    • orig_extra (bytes or str, optional) – Extra details for the original file header.

    • modified_extra (bytes or str, optional) – Extra details for the modified file header.

    write_index(contents: Union[bytes, str]) → None[source]¶

    Write a standard Index line.

    This is used by some Unified Diff variants to separate sections for different files, regardless of contents.

    This is in the form of Index content, followed by a line with 67 = characters.

    Parameters:

    contents (bytes or str) – The contents to write after Index:.

    write_hunks(hunks: Union[bytes, Iterable[bytes]]) → None[source]¶

    Write hunks.

    This takes either a byte string of hunks to write, or an iterator yielding lines of hunks.

    If taking a byte string, the bytes are expected to have the proper encoding and newlines for the diff.

    If taking an iterator, the iterator is expected to yield byte strings in the proper encoding without any newlines.

    Parameters:

    hunks (bytes or iterable) – The hunks to write.

    write_binary_files_differ(*, orig_path: Union[bytes, str], modified_path: Union[bytes, str]) → None[source]¶

    Write a marker indicating that binary files differ.

    This provides the standard text used when diffing binary files without showing an actual difference between those files.

    Parameters:
    • orig_path (bytes or str) – The original file path.

    • modified_path (bytes or str) – The modified file path.

    write_diff_file_result_headers(diff_file_result: DiffFileResult, *, orig_path: Optional[Union[bytes, str]] = None, modified_path: Optional[Union[bytes, str]] = None, orig_extra: Optional[Union[bytes, str]] = None, modified_extra: Optional[Union[bytes, str]] = None) → None[source]¶

    Write file headers based on the result from a diff tool.

    This will write headers for the original and modified files, basing them on provided data or that found in the result of a diff operation.

    Provided arguments take precedence.

    String arguments will be encoded using the default encoding for the writer. Byte string arguments, or byte strings from the diff result, are expected to already be in the proper encoding.

    Parameters:
    • diff_file_result (rbtools.diffs.tools.base.diff_file_result.DiffFileResult) – The result of a diff operation, used to provide defaults for the headers.

    • orig_path (bytes or str, optional) – An explicit file path to use for the original file header.

    • modified_path (bytes or str, optional) – An explicit file path to use for the modified file header.

    • orig_extra (bytes or str, optional) – Explicit extra details for the original file header.

    • modified_extra (bytes or str, optional) – Explicit extra details for the modified file header.

    write_diff_file_result_hunks(diff_file_result: DiffFileResult) → None[source]¶

    Write hunks from the result of a diff tool.

    This is the most optimal way of writing hunks based on a diff result from a diff tool. Each line will be written with any original newlines stripped and the writer’s configured newlines appended.

    Parameters:

    diff_file_result (rbtools.diffs.tools.base.diff_file_result.DiffFileResult) – The result of a diff operation, used to provide hunks.

    write_line(line: Union[bytes, str]) → None[source]¶

    Write a line to the diff.

    This must not have a newline appended. The writer’s configured newline will be used instead.

    String arguments will be encoded using the default encoding for the writer. Byte string arguments are expected to already be in the proper encoding.

    Parameters:

    line (bytes or str) – The line to write, without a trailing newline.

    Keep up with the latest Review Board releases, security updates, and helpful information.

    About
    News
    Demo
    RBCommons Hosting
    Integrations
    Happy Users
    Support Options
    Documentation
    FAQ
    User Manual
    RBTools
    Administration Guide
    Power Pack
    Release Notes
    Downloads
    Review Board
    RBTools
    Djblets
    Power Pack
    Package Store
    PGP Signatures
    Contributing
    Bug Tracker
    Submit Patches
    Development Setup
    Wiki
    Follow Us
    Mailing Lists
    Reddit
    Twitter
    Mastodon
    Facebook
    YouTube

    Copyright © 2006-2025 Beanbag, Inc. All rights reserved.

    Terms of Service — Privacy Policy — AI Ethics Policy — Branding

    On this page

    • [Top]
    • UnifiedDiffWriter
      • UnifiedDiffWriter.__init__()
      • UnifiedDiffWriter.encoding
      • UnifiedDiffWriter.newline
      • UnifiedDiffWriter.write_orig_file_header()
      • UnifiedDiffWriter.write_modified_file_header()
      • UnifiedDiffWriter.write_file_headers()
      • UnifiedDiffWriter.write_index()
      • UnifiedDiffWriter.write_hunks()
      • UnifiedDiffWriter.write_binary_files_differ()
      • UnifiedDiffWriter.write_diff_file_result_headers()
      • UnifiedDiffWriter.write_diff_file_result_hunks()
      • UnifiedDiffWriter.write_line()