rules:
  - id: writing-to-file-in-read-mode
    message: >-
      The file object '$FD' was opened in read mode, but is being
      written to. This will cause a runtime error.
    patterns:
      - pattern-either:
          - pattern-inside: |
              $FD = open($NAME, "r", ...)
              ...
          - pattern-inside: |
              $FD = open($NAME, "rb", ...)
              ...
          - pattern-inside: |
              with open($NAME, "r", ...) as $FD:
                ...
          - pattern-inside: |
              with open($NAME, "rb", ...) as $FD:
                ...
      - pattern: $FD.write(...)
    severity: ERROR
    languages:
      - python
    metadata:
      category: correctness
      technology:
        - python
