1 - pylint.1

pylint(1) - Python Script Verification Utility
  1. pylint(1)
  2. Python Script Verification Tool
  3. pylint(1)

NAME

pylint - Python Script Verification Utility

SYNOPSIS

pylint [ OPTIONS ] [ arguments ]

DESCRIPTION

pylint is a Python source code analyzer which looks for programming errors, helps enforcing a coding standard and sniffs for some code smells (as defined in Martin Fowler's Refactoring book).

Nexteer did not create nor does it maintain pylint. This page was copied from the Linux manpage for pylint. Nexteer did, however, add [a section below][#INSTALLATION] regarding configuration of the tool for use on Nexteer tools/scripts.

OPTIONS

--version

Show program's version number and exit.

--help, -h

Show this help message and exit.

--long-help

Print a more verbose help.

MASTER

--rcfile=<file>

Specify a configuration file.

--init-hook=<code>

Python code to execute, usually for sys.path manipulation such as pygtk.require().

--errors-only, -E

In error mode, checkers without error messages are disabled and for others, only the ERROR messages are displayed, and no reports are done by default.

--ignore=<file>

Add file or directory to the black list. It should be a base name, not a path. You may set this option multiple times. [default: CVS]

--persistent=<y_or_n>

Pickle collected data for later comparisons. [default: yes]

--load-plugins=<modules>

List of plugins (as comma separated values of python modules names) to load, usually to register additional checkers. [default: none]

COMMANDS

--help-msg=<msg-id>

Display a help message for the given message id and exit. The value may be a comma separated list of message ids.

--list-msgs

Generate pylint's messages.

--full-documentation

Generate pylint's full documentation.

--generate-rcfile

Generate a sample configuration file according to the default configuration. You can put other options before this one to get them in the generated configuration.

MESSAGES CONTROL

--enable=<msg ids>, -e <msg ids>

Enable the message, report, category or checker with the given id(s). You can either give multiple identifier separated by comma (,) or put this option multiple time.

--disable=<msg ids>, -d <msg ids>

Disable the message, report, category or checker with the given id(s). You can either give multiple identifier separated by comma (,) or put this option multiple time.

REPORTS

--output-format=<format>, -f <format>

Set the output format. Available formats are text, parseable, colorized, msvs (visual studio) and html. [default: text]

--include-ids=<y_or_n>, -i <y_or_n>

Include message's id in output. [default: no]

--files-output=<y_or_n>

Put messages in a separate file for each module / package specified on the command line instead of printing them on stdout. Reports (if any) will be written in a file name "pylint_global.[txt|html]". [default: no]

--reports=<y_or_n>, -r <y_or_n>

Tells whether to display a full report or only the messages. [default: yes]

--evaluation=<python_expression>

Python expression which should return a note less than 10 (10 is the highest note). You have access to the variables errors warning, statement which respectively contain the number of errors / warnings messages and the total number of statements analyzed. This is used by the global evaluation report (R0004). [default: 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)]

--comment=<y_or_n>

Add a comment according to your evaluation note. This is used by the global evaluation report (R0004). [default: no]

BASIC

--required-attributes=<attributes>

Required attributes for module, separated by a comma [default: none]

--bad-functions=<builtin function names>

List of builtins function names that should not be used, separated by a comma. [default: map, filter, apply, input]

--module-rgx=<regexp>

Regular expression which should only match correct module names. [default: (([a-z][a-z0-9]*)|([A-Z][a-zA-Z0-9]+))$]

--const-rgx=<regexp>

Regular expression which should only match correct module level names. [default: (([a-zA-Z][A-Z0-9])|(__.__))$]

--class-rgx=<regexp>

Regular expression which should only match correct class names. [default: [A-Z_][a-zA-Z0-9]+$]

--function-rgx=<regexp>

Regular expression which should only match correct function names. [default: [a-z][a-z0-9]{2,30}$]

--method-rgx=<regexp>

Regular expression which should only match correct method names. [default: [a-z][a-z0-9]{2,30}$]

--attr-rgx=<regexp>

Regular expression which should only match correct instance attribute names. [default: [a-z][a-z0-9]{2,30}$]

--argument-rgx=<regexp>

Regular expression which should only match correct argument names. [default: [a-z][a-zA-Z0-9]{2,30}$]

--variable-rgx=<regexp>

Regular expression which should only match correct variable names. [default: [a-z][a-zA-Z0-9]{2,30}$]

--inlinevar-rgx=<regexp>

Regular expression which should only match correct list comprehension / generator expression variable names. [default: [A-Za-z][A-Za-z0-9]*$]

--good-names=<names>

Good variable names which should always be accepted, separated by a comma. [default: i,j,k,ex,Run,_]

--bad-names=<names>

Bad variable names which should always be refused, separated by a comma. [default: foo, bar, baz, toto, tutu, tata]

--no-docstring-rgx=<regexp>

Regular expression which should only match functions or classes name which do not require a docstring. [default: .*]

MISCELLANEOUS

--notes=<comma separated values>
List of note tags to take in consideration, separated by a comma. [default: FIXME,XXX,TODO]

SIMILARITIES

--min-similarity-lines=<int>

Minimum lines number of a similarity. [default: 4]

--ignore-comments=<y or n>

Ignore comments when computing similarities. [default: yes]

--ignore-docstrings=<y or n>

Ignore docstrings when computing similarities. [default: yes]

IMPORTS

--deprecated-modules=<modules>

Deprecated modules which should not be used, separated by a comma. [default: regsub, string, TERMIOS, Bastion, rexec]

--import-graph=<file.dot>

Create a graph of every (i.e. internal and external) dependencies in the given file (report RP0402 must not be disabled). [default: none]

--ext-import-graph=<file.dot>

Create a graph of external dependencies in the given file (report RP0402 must not be disabled). [default: none]

--int-import-graph=<file.dot>

Create a graph of internal dependencies in the given file (report RP0402 must not be disabled). [default: none]

TYPECHECK

--ignore-mixin-members=<y_or_n>

Tells whether missing members accessed in mixin class should be ignored. A mixin class is detected if its name ends with "mixin" (case insensitive). [default: yes]

--ignored-classes=<members names>

List of classes names for which member attributes should not be checked (useful for classes with attributes dynamically set). [default: SQLObject]

--zope=<y_or_n>

When zope mode is activated, add a predefined set of Zope acquired attributes to generated-members. [default: no]

--generated-members=<members names>

List of members which are set dynamically and missed by pylint inference system, and so shouldn't trigger E0201 when accessed. [default: REQUEST, acl_users, aq_parent]

CLASSES

--ignore-iface-methods=<method names>

List of interface methods to ignore, separated by a comma. This is used for instance to not check methods defines in Zope's Interface base class. [default: isImplementedBy, deferred, extends, names, namesAndDescriptions, queryDescriptionFor, getBases, getDescriptionFor, getDoc, getName, getTaggedValue, getTaggedValueTags, isEqualOrExtendedBy, setTaggedValue, isImplementedByInstancesOf, adaptWith, is_implemented_by]

--defining-attr-methods=<method names>

List of method names used to declare (i.e. assign) instance attributes. [default: init,new,setUp]

DESIGN

--max-args=<int>

Maximum number of arguments for function / method. [default: 5]

--ignored-argument-names=<regexp>

Argument names that match this expression will be ignored. Default to name with leading underscore. [default: _.*]

--max-locals=<int>

Maximum number of locals for function / method body. [default: 15]

--max-returns=<int>

Maximum number of return / yield for function / method body. [default: 6]

--max-branchs=<int>

Maximum number of branch for function / method body. [default: 12]

--max-statements=<int>

Maximum number of statements in function / method body. [default: 50]

--max-parents=<num>

Maximum number of parents for a class (see R0901). [default: 7]

--max-attributes=<num>

Maximum number of attributes for a class (see R0902). [default: 7]

--min-public-methods=<num>

Minimum number of public methods for a class (see R0903). [default: 2]

--max-public-methods=<num>

Maximum number of public methods for a class (see R0904). [default: 20]

VARIABLES

--init-import=<y_or_n>

Tells whether we should check for unused import in init files. [default: no]

--dummy-variables-rgx=<regexp>

A regular expression matching names used for dummy variables (i.e. not used). [default: _|dummy]

--additional-builtins=<comma separated list>

List of additional names supposed to be defined in builtins. Remember that you should avoid to define new builtins when possible. [default: none]

FORMAT

--max-line-length=<int>

Maximum number of characters on a single line. [default: 120]

--max-module-lines=<int>

Maximum number of lines in a module. [default: 1000]

--indent-string=<string>

String used as indentation unit. This is usually " " (4 spaces) or "t" (1 tab). [default: ' ']

ENVIRONMENT VARIABLES

The following environment variables are used:

PYLINTHOME

Path to the directory where data of persistent run will be stored. If not found, it defaults to ~/.pylint.d/ or .pylint.d (in the default working directory).

PYLINTRC

Path to the configuration file. If not found, it will use the first existent file in ~/.pylintrc, /etc/pylintrc.

OUTPUT

Using the default text output, the message format is:

MESSAGE_TYPE: LINE_NUM:[OBJECT:] MESSAGE

There are 5 kind of message types:

  • (C) convention, for programming standard violation.
  • (R) refactor, for bad code smell.
  • (W) warning, for python specific problems.
  • (E) error, for probable bugs in the code.
  • (F) fatal, if an error occurred which prevented pylint from doing further processing.

RETURN CODE

Pylint should leave with following status code:

  • 0 if everything went fine.
  • 1 if a fatal message was issued.
  • 2 if an error message was issued.
  • 4 if a warning message was issued.
  • 8 if a refactor message was issued.
  • 16 if a convention message was issued.
  • 32 on usage error

Status 1 to 16 will be bit-OR'd so you can know which different categories has been issued by analyzing pylint output status code.

INSTALLATION

To setup pylint, copy the configuration file (.pylintrc) from the TL112A_Python\doc folder and place a copy in your user folder (C:\User\username). Pylint will automatically determine this path when invoked and use the settings from the file located there. Alternatively, you can manually specify the path to the config file when invoking pylint by using the --rcfile=<rcfile> switch.

DOCUMENTATION

This documentation was generated using ronn. ronn converts a text file with a format similar to Markdown into an HTML file with a format typical of a standard manpage. For more information about ronn see it's manpage: ronn(1). For more information on the syntax see that manpage: ronn-format(7).

(c) 2017 Nexteer Automotive

  1. Nexteer Automotive
  2. July 2017
  3. pylint(1)

2 - TL112A_Python Peer Review Checklist


Overview

Summary Sheet
Synergy Project


Sheet 1: Summary Sheet
























Rev 1.28-Jun-15

Peer Review Summary Sheet


























Synergy Project Name:


kzshz2: Intended Use: Identify which component is being reviewed. This should be the Module Short Name from Synergy Rationale: Required for traceability. It will help to ensure this form is not attaced to the the wrong change request. TL112A_Python
Revision / Baseline:


kzshz2: Intended Use: Identify which Synergy revision of this component is being reviewed Rationale: Required for traceability. It will help to ensure this form is not attaced to the the wrong change request. TL112A_Python_2.7.10_04

























Change Owner:


kzshz2: Intended Use: Identify the developer who made the change(s) Rationale: A change request may have more than one resolver, this will help identify who made what change. Change owner identification may be required by indusrty standards. Jared Julien
Work CR ID:


EA4#13574





























kzshz2: Intended Use: Intended to identify at a high level to the reviewers which areas of the component have been changed. Rationale: This will be good information to know when ensuring appropriate reviews have been completed. Modified File Types:















































































































































































kzshz2: Intended Use: Identify who where the reviewers, what they reviewed, and if the reviewed changes have been approved to release the code for testing. Comments here should be at a highlevel, the specific comments should be present on the specific review form sheet. Rationale: Since this Form will be attached to the Change Request it will confirm the approval and provides feedback in case of audits. ADD DR Level Move reviewer and approval to individual checklist form Review Checklist Summary:






















































Reviewed:































N/AMDD


N/ASource Code


N/APolySpace









































N/AIntegration Manual


N/ADavinci Files








































































Comments:

Tool component. Only files and folder structure were reviewed.



























































































General Guidelines:
- The reviews shall be performed over the portions of the component that were modified as a result of the Change Request.
- New components should include FDD Owner and Integrator as apart of the Group Review Board (Source Code, Integration Manual, and Davinci Files)
- Enter any rework required into the comment field and select No. When the rework is complete, review again using this same review sheet and select Yes. Add date and additional comment stating that the rework is completed.
- To review a component with multiple source code files use the "Add Source" button to create a Source code tab for each source file.
- .h file should be reviewed with the source file as part of the source file.





















Sheet 2: Synergy Project

Peer Review Meeting Log (Component Synergy Project Review)



















































Quality Check Items:




































Rationale is required for all answers of No










New baseline version name from Summary Sheet follows








Yes
Comments:



naming convention





































Project contains necessary subprojects








Yes
Comments:










































Project contains the correct version of subprojects








Yes
Comments:










































Design subproject is correct version








N/A
Comments:

No design








































General Notes / Comments:























Jared brought in pylint executable, configuration, and documentation as well as a bugfix in checksumdir preventing CopyCat from building properly.

Gustavo added numpy, openpyxl, padas, pip, pylint (source), and pytz for a new tool component that he is creating.

Changed the library directory to be "include" folder and zipped libraries rather than checking in massive folders




























LN: Intended Use: Identify who were the reviewers and if the reviewed changes have been approved. Rationale: Since this Form will be attached to the Change Request it will confirm the approval and provides feedback in case of audits. KMC: Group Review Level removed in Rev 4.0 since the design review is not checked in until approved, so it would always be DR4. Review Board:


























Change Owner:

Jared Julien, Gustavo Nunes


Review Date :

07/11/17
































Lead Peer Reviewer:


Matthew Leser


Approved by Reviewer(s):



Yes































Other Reviewer(s):









































































3 - sgml_input

  MetalCristalDeuterioEnerga  
160.6363.40639.230-80/3.965

Flotas (max. 9)
Num.MisinCantidadComienzoSalidaObjetivoLlegadaOrden
1Espionaje (F)3[2:250:6]Wed Aug 9 18:00:02[2:242:5]Wed Aug 9 18:01:02
2Espionaje (V)3[2:250:6]Wed Aug 9 17:59:55[2:242:1]Wed Aug 9 18:01:55
Nueva misin: elegir naves
NavesDisponibles--
Nave pequea de carga10 mx
Nave grande de carga19 mx
Crucero6 mx
Reciclador1 mx
Sonda de espionaje139 mx
Ninguna naveTodas las naves


4 - test_difflib_expect


from
to
f1f1
n2   1. Beautiful is beTTer than ugly.n2   1. Beautiful is better than ugly.
3   2. Explicit is better than implicit.
4   3. Simple is better than complex.3   3.   Simple is better than complex.
5   4. Complex is better than complicated.4   4. Complicated is better than complex.
5   5. Flat is better than nested.
61236123
71237123
81238123
91239123
1012310123
1112311123
1212312123
1312313123
1412314123
1512315123
1616
n17   1. Beautiful is beTTer than ugly.n17   1. Beautiful is better than ugly.
18   2. Explicit is better than implicit.
19   3. Simple is better than complex.18   3.   Simple is better than complex.
20   4. Complex is better than complicated.19   4. Complicated is better than complex.
20   5. Flat is better than nested.
2112321123
2212322123
2312323123
2412324123
2512325123
2612326123
2712327123
2812328123
2912329123
3012330123
3131
t32   1. Beautiful is beTTer than ugly.t32   1. Beautiful is better than ugly.
33   2. Explicit is better than implicit.
34   3. Simple is better than complex.33   3.   Simple is better than complex.
35   4. Complex is better than complicated.34   4. Complicated is better than complex.
35   5. Flat is better than nested.
3612336123
3712337123
3812338123
3912339123
4012340123
4112341123
4212342123
4312343123
4412344123
4512345123
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op

Context (first diff within numlines=5(default))


from
to
f1f1
n2   1. Beautiful is beTTer than ugly.n2   1. Beautiful is better than ugly.
3   2. Explicit is better than implicit.
4   3. Simple is better than complex.3   3.   Simple is better than complex.
5   4. Complex is better than complicated.4   4. Complicated is better than complex.
5   5. Flat is better than nested.
61236123
71237123
81238123
91239123
1012310123
1212312123
1312313123
1412314123
1512315123
1616
n17   1. Beautiful is beTTer than ugly.n17   1. Beautiful is better than ugly.
18   2. Explicit is better than implicit.
19   3. Simple is better than complex.18   3.   Simple is better than complex.
20   4. Complex is better than complicated.19   4. Complicated is better than complex.
20   5. Flat is better than nested.
2112321123
2212322123
2312323123
2412324123
2512325123
2712327123
2812328123
2912329123
3012330123
3131
t32   1. Beautiful is beTTer than ugly.t32   1. Beautiful is better than ugly.
33   2. Explicit is better than implicit.
34   3. Simple is better than complex.33   3.   Simple is better than complex.
35   4. Complex is better than complicated.34   4. Complicated is better than complex.
35   5. Flat is better than nested.
3612336123
3712337123
3812338123
3912339123
4012340123

Context (first diff after numlines=5(default))


from
to
74567456
84568456
94569456
1045610456
1111
n12   1. Beautiful is beTTer than ugly.n12   1. Beautiful is better than ugly.
13   2. Explicit is better than implicit.
14   3. Simple is better than complex.13   3.   Simple is better than complex.
15   4. Complex is better than complicated.14   4. Complicated is better than complex.
15   5. Flat is better than nested.
1612316123
1712317123
1812318123
1912319123
2012320123
2212322123
2312323123
2412324123
2512325123
2626
n27   1. Beautiful is beTTer than ugly.n27   1. Beautiful is better than ugly.
28   2. Explicit is better than implicit.
29   3. Simple is better than complex.28   3.   Simple is better than complex.
30   4. Complex is better than complicated.29   4. Complicated is better than complex.
30   5. Flat is better than nested.
3112331123
3212332123
3312333123
3412334123
3512335123
3712337123
3812338123
3912339123
4012340123
4141
t42   1. Beautiful is beTTer than ugly.t42   1. Beautiful is better than ugly.
43   2. Explicit is better than implicit.
44   3. Simple is better than complex.43   3.   Simple is better than complex.
45   4. Complex is better than complicated.44   4. Complicated is better than complex.
45   5. Flat is better than nested.
4612346123
4712347123
4812348123
4912349123
5012350123

Context (numlines=6)


from
to
f1f1
n2   1. Beautiful is beTTer than ugly.n2   1. Beautiful is better than ugly.
3   2. Explicit is better than implicit.
4   3. Simple is better than complex.3   3.   Simple is better than complex.
5   4. Complex is better than complicated.4   4. Complicated is better than complex.
5   5. Flat is better than nested.
61236123
71237123
81238123
91239123
1012310123
1112311123
1212312123
1312313123
1412314123
1512315123
1616
n17   1. Beautiful is beTTer than ugly.n17   1. Beautiful is better than ugly.
18   2. Explicit is better than implicit.
19   3. Simple is better than complex.18   3.   Simple is better than complex.
20   4. Complex is better than complicated.19   4. Complicated is better than complex.
20   5. Flat is better than nested.
2112321123
2212322123
2312323123
2412324123
2512325123
2612326123
2712327123
2812328123
2912329123
3012330123
3131
t32   1. Beautiful is beTTer than ugly.t32   1. Beautiful is better than ugly.
33   2. Explicit is better than implicit.
34   3. Simple is better than complex.33   3.   Simple is better than complex.
35   4. Complex is better than complicated.34   4. Complicated is better than complex.
35   5. Flat is better than nested.
3612336123
3712337123
3812338123
3912339123
4012340123
4112341123

Context (numlines=0)


from
to
n2   1. Beautiful is beTTer than ugly.n2   1. Beautiful is better than ugly.
3   2. Explicit is better than implicit.
4   3. Simple is better than complex.3   3.   Simple is better than complex.
5   4. Complex is better than complicated.4   4. Complicated is better than complex.
5   5. Flat is better than nested.
n17   1. Beautiful is beTTer than ugly.n17   1. Beautiful is better than ugly.
18   2. Explicit is better than implicit.
19   3. Simple is better than complex.18   3.   Simple is better than complex.
20   4. Complex is better than complicated.19   4. Complicated is better than complex.
20   5. Flat is better than nested.
t32   1. Beautiful is beTTer than ugly.t32   1. Beautiful is better than ugly.
33   2. Explicit is better than implicit.
34   3. Simple is better than complex.33   3.   Simple is better than complex.
35   4. Complex is better than complicated.34   4. Complicated is better than complex.
35   5. Flat is better than nested.

Same Context


from
to
t No Differences Found t No Differences Found 

Same Full


from
to
t1t1
2   1. Beautiful is beTTer than ugly.2   1. Beautiful is beTTer than ugly.
3   2. Explicit is better than implicit.3   2. Explicit is better than implicit.
4   3. Simple is better than complex.4   3. Simple is better than complex.
5   4. Complex is better than complicated.5   4. Complex is better than complicated.
61236123
71237123
81238123
91239123
1012310123
1112311123
1212312123
1312313123
1412314123
1512315123
1616
17   1. Beautiful is beTTer than ugly.17   1. Beautiful is beTTer than ugly.
18   2. Explicit is better than implicit.18   2. Explicit is better than implicit.
19   3. Simple is better than complex.19   3. Simple is better than complex.
20   4. Complex is better than complicated.20   4. Complex is better than complicated.
2112321123
2212322123
2312323123
2412324123
2512325123
2612326123
2712327123
2812328123
2912329123
3012330123
3131
32   1. Beautiful is beTTer than ugly.32   1. Beautiful is beTTer than ugly.
33   2. Explicit is better than implicit.33   2. Explicit is better than implicit.
34   3. Simple is better than complex.34   3. Simple is better than complex.
35   4. Complex is better than complicated.35   4. Complex is better than complicated.
3612336123
3712337123
3812338123
3912339123
4012340123
4112341123
4212342123
4312343123
4412344123
4512345123

Empty Context


from
to
t No Differences Found t No Differences Found 

Empty Full


from
to
t Empty File t Empty File 

tabsize=2

f1f1
t2    Line 1: preceeded by from:[tt] to:[ssss]t2    Line 1: preceeded by from:[tt] to:[ssss]
3      Line 2: preceeded by from:[sstt] to:[sssst]3      Line 2: preceeded by from:[sstt] to:[sssst]
4      Line 3: preceeded by from:[sstst] to:[ssssss]4      Line 3: preceeded by from:[sstst] to:[ssssss]
5Line 4:   has from:[sst] to:[sss] after :5Line 4:   has from:[sst] to:[sss] after :
6Line 5: has from:[t] to:[ss] at end 6Line 5: has from:[t] to:[ss] at end

tabsize=default

f1f1
t2                Line 1: preceeded by from:[tt] to:[ssss]t2    Line 1: preceeded by from:[tt] to:[ssss]
3                Line 2: preceeded by from:[sstt] to:[sssst]3        Line 2: preceeded by from:[sstt] to:[sssst]
4                Line 3: preceeded by from:[sstst] to:[ssssss]4      Line 3: preceeded by from:[sstst] to:[ssssss]
5Line 4:         has from:[sst] to:[sss] after :5Line 4:   has from:[sst] to:[sss] after :
6Line 5: has from:[t] to:[ss] at end     6Line 5: has from:[t] to:[ss] at end

Context (wrapcolumn=14,numlines=0)

n4line 2n4line 2    adde
 >d
n6line 4   changn6line 4   chanG
>ed>Ed
7line 5   chang7line 5a  chanG
>ed>ed
8line 6   chang8line 6a  chang
>ed>Ed
n10line 8  subtran10line 8
>cted 
t1212345678901234t121234567890
>56789012345689 
>012345 
13short line13another long l
 >ine that needs
 > to be wrapped
14just fits in!!14just fitS in!!
15just fits in t15just fits in t
>wo lines yup!!>wo lineS yup!!

wrapcolumn=14,splitlines()

f1line 0f1line 0
212345678901234212345678901234
>56789012345689>56789012345689
>012345>012345
3line 13line 1
n4line 2n4line 2    adde
 >d
5line 35line 3
n6line 4   changn6line 4   chanG
>ed>Ed
7line 5   chang7line 5a  chanG
>ed>ed
8line 6   chang8line 6a  chang
>ed>Ed
9line 79line 7
n10line 8  subtran10line 8
>cted 
11line 911line 9
t1212345678901234t121234567890
>56789012345689 
>012345 
13short line13another long l
 >ine that needs
 > to be wrapped
14just fits in!!14just fitS in!!
15just fits in t15just fits in t
>wo lines yup!!>wo lineS yup!!
16the end16the end

wrapcolumn=14,splitlines(True)

f1line 0f1line 0
212345678901234212345678901234
>56789012345689>56789012345689
>012345>012345
3line 13line 1
n4line 2n4line 2    adde
 >d
5line 35line 3
n6line 4   changn6line 4   chanG
>ed>Ed
7line 5   chang7line 5a  chanG
>ed>ed
8line 6   chang8line 6a  chang
>ed>Ed
9line 79line 7
n10line 8  subtran10line 8
>cted 
11line 911line 9
t1212345678901234t121234567890
>56789012345689 
>012345 
13short line13another long l
 >ine that needs
 > to be wrapped
14just fits in!!14just fitS in!!
15just fits in t15just fits in t
>wo lines yup!!>wo lineS yup!!
16the end16the end