<commit_before>homepage: https://github.com/mihaimaruseac/hindent
changelog-type: markdown
hash: 070a3622d13e6f0c44d8d189df8f780f61d0b813435a902925ef6d9386b42260
test-bench-deps:
  hindent: -any
  exceptions: -any
  bytestring: -any
  base: ==4.*
  Diff: -any
  hspec: -any
  monad-loops: -any
  criterion: -any
  haskell-src-exts: -any
  utf8-string: -any
  ghc-prim: -any
  mtl: -any
  deepseq: -any
  directory: -any
maintainer: <EMAIL>
synopsis: Extensible Haskell pretty printer
changelog: "5.3.0:\n    * Handle multiple deriving clauses in a DerivingStrategies
  scenario\n    * Ignore non-files in findCabalFiles\n    * Allow batch processing
  of multiple files\n    * Prevent hindent from trying to open non-files when searching
  for\n      .cabal files\n    * Specify default extensions in configuration file\n
  \   * Fix bad output for [p|Foo|] pattern quasi-quotes\n    * Parse C preprocessor
  line continuations\n    * Fix pretty printing of '(:)\n    * Add parens around symbols
  (:|) when required\n    * Support $p pattern splices\n    * Fix associated type
  families\n    * Non-dependent record constructor formatting\n\n5.2.7:\n    * Fix
  -X option bug\n\n5.2.6:\n    * Switch to optparse-applicative\n\n5.2.5:\n\n    *
  Support get extensions from `.cabal` file\n    * Improve indention with record constructions
  and updates\n    * Fix `let ... in` bug\n    * Fix top-level lambda expressions
  in TemplateHaskell slices\n    * Update to haskell-src-exts dependency to version
  `>= 1.20.0`\n\n5.2.4:\n\n    * Pretty print imports\n    * Fix pretty print for
  string literals for `DataKinds`\n    * Support `--validate` option for checking
  the format without reformatting\n    * Support parse `#include`, `#error`, `#warning`
  directives\n    * Support read `LANGUAGE` pragma and parse the declared extensions
  from source\n    * Treat `TypeApplications` extension as 'badExtensions' due to
  the `@` symbol\n    * Improve pretty print for unboxed tuples\n    * Fix many issues
  related to infix operators, includes TH name quotes,\n      `INLINE`/`NOINLINE`
  pragmas, infix type operator and infix constructor\n    * Fix pretty print for operators
  in `INLINE`/`NOINLINE` pragmas\n    * Support for `EmptyCases` extension\n    *
  Fix TH name quotes on operator names\n    * Optimize pretty print for many fundeps\n
  \   * Fix extra linebreaks after short identifiers\n\n5.2.3:\n\n    * Sort explicit
  import lists\n    * Report the `SrcLoc` when there's a parse error\n    * Improve
  long type signatures pretty printing\n    * Support custom line-break operators,
  add `--line-breaks` argument\n    * Fix infix data constructor\n    * Disable `RecursiveDo`
  and `DoRec` extensions by default\n    * Add RecStmt support\n    * Improve GADT
  records, data declaration records\n    * Complicated type alias and type signatures
  pretty printing\n    * Fix quasi-quoter names\n\n5.2.2:\n\n    * Parallel list comprehensions\n
  \   * Leave do, lambda, lambda-case on previous line of $\n    * Misc fixes\n\n5.2.1:\n\n
  \   * Fix hanging on large constraints\n    * Render multi-line comments\n    *
  Rename --tab-size to --indent-size\n    * Don't add a spurious space for comments
  at the end of the file\n    * Don't add trailing whitespace on <-\n    * Disable
  PatternSynonyms\n    * Put a newline before the closing bracket on a list\n\n5.2.0:\n\n
  \   * Default tab-width is now 2\n    * Supports .hindent.yaml file to specify alt
  tab-width and max\n      column\n    * Put last paren of export list on a new line\n
  \   * Implement tab-size support in Emacs Lisp\n\n5.1.1:\n\n    * Preserve spaces
  between groups of imports (fixes #200)\n    * Support shebangs (closes #208)\n    *
  Output filename for parse errors (fixes #179)\n    * Input with newline ends with
  newline (closes #211)\n    * Document -X (closes #212)\n    * Fix explicit forall
  in instances (closes #218)\n    * Put last paren of export list on a new line #227\n\n5.1.0:\n\n
  \   * Rewrote comment association, more reliable\n    * Added --tab-size flag for
  indentation spaces\n    * Fixed some miscellaneous bugs\n\n5.0.1:\n\n    * Re-implement
  using bytestring instead of text\n    * Made compatible with GHC 7.8 through to
  GHC 8.0\n    * Added test suite and benchmarks in TESTS.md and BENCHMARKS.md\n\n5.0.0:\n\n\t*
  Drop support for styles\n\n4.6.4\n\n\t* Copy/delete file instead of renaming\n\n4.4.6\n\n\t*
  Fix whole module printer\n\t* Accept a filename to reformat\n\n4.4.5\n\n\t* Fix
  bug in infix patterns\n\n4.4.2\n\n\t* Bunch of Gibiansky style fixes.\n\t* Support
  CPP.\n\t* Tibell style fixes.\n\n4.3.8\n\n\t* Fixed: bug in printing operators in
  statements.\n\n4.5.4\n\n\t* Improvements to Tibell style.\n\t* 6x speed up on rendering
  operators.\n"
basic-deps:
  hindent: -any
  exceptions: -any
  bytestring: -any
  Cabal: -any
  path: -any
  base: '>=4.7 && <5'
  text: -any
  monad-loops: -any
  unix-compat: -any
  filepath: -any
  containers: -any
  haskell-src-exts: '>=1.20'
  utf8-string: -any
  ghc-prim: -any
  mtl: -any
  transformers: -any
  optparse-applicative: -any
  deepseq: -any
  path-io: -any
  yaml: -any
  directory: -any
all-versions:
- '0.0'
- '1.0'
- '2.0'
- '2.1'
- '2.2'
- '2.3'
- '2.4'
- '3.0'
- '3.1'
- '3.2'
- '3.3'
- '3.4'
- '3.5'
- '3.6'
- '3.7'
- '3.8'
- '3.9'
- 3.9.1
- '4.0'
- 4.1.0
- 4.1.1
- 4.2.0
- 4.2.1
- 4.2.2
- 4.2.3
- 4.2.4
- 4.3.0
- 4.3.1
- 4.3.2
- 4.3.3
- 4.3.4
- 4.3.5
- 4.3.6
- 4.3.7
- 4.3.8
- 4.3.9
- 4.3.10
- 4.3.11
- 4.3.12
- 4.4.0
- 4.4.1
- 4.4.2
- 4.5.0
- 4.5.1
- 4.5.2
- 4.5.3
- 4.5.4
- 4.5.5
- 4.5.6
- 4.5.7
- 4.6.0
- 4.6.1
- 4.6.2
- 4.6.3
- 4.6.4
- 5.0.0
- 5.0.1
- 5.1.0
- 5.1.1
- 5.2.0
- 5.2.1
- 5.2.2
- 5.2.3
- 5.2.4.1
- 5.2.5
- 5.2.6
- 5.2.7
- 5.3.0
- 5.3.1
- 5.3.2
author: <NAME>, <NAME>, <NAME>, <NAME>, <NAME>
latest: 5.3.2
description-type: markdown
description: "# hindent [![Hackage](https://img.shields.io/hackage/v/hindent.svg?style=flat)](https://hackage.haskell.org/package/hindent)
  ![CI (Stack)](https://github.com/mihaimaruseac/hindent/workflows/CI%20(Stack)/badge.svg)
  ![CI (Cabal)](https://github.com/mihaimaruseac/hindent/workflows/CI%20(Cabal)/badge.svg)\n\nHaskell
  pretty printer\n\n[Examples](https://github.com/mihaimaruseac/hindent/blob/master/TESTS.md)\n\n##
  Install\n\n    $ stack install hindent\n\n## Usage\n\n    $ hindent --help\n    hindent
  --version --help --style STYLE --line-length <...> --indent-size <...> --no-force-newline
  [-X<...>]* [<FILENAME>]\n    Version 5.1.1\n    Default --indent-size is 2. Specify
  --indent-size 4 if you prefer that.\n    -X to pass extensions e.g. -XMagicHash
  etc.\n    The --style option is now ignored, but preserved for backwards-compatibility.\n
  \   <NAME> is the default and only style.\n\nhindent is used in a pipeline
  style\n\n    $ cat path/to/sourcefile.hs | hindent\n\nThe default indentation size
  is `2` spaces. Configure indentation size with `--indent-size`:\n\n    $ echo 'example
  = case x of Just p -> foo bar' | hindent --indent-size 2; echo\n    example =\n
  \     case x of\n        Just p -> foo bar\n    $ echo 'example = case x of Just
  p -> foo bar' | hindent --indent-size 4; echo\n    example =\n        case x of\n
  \           Just p -> foo bar\n\n## Customization\n\nCreate a `.hindent.yaml` file
  in your project directory or in your\n`~/` home directory. The following fields
  are accepted and are the\ndefault:\n\n``` yaml\nindent-size: 2\nline-length: 80\nforce-trailing-newline:
  true\nline-breaks: [\":>\", \":<|>\"]\nextensions:\n  - DataKinds\n  - GADTs\n  -
  TypeApplications\n```\n\nBy default, hindent preserves the newline or lack of newline
  in your input. With `force-trailing-newline`, it will make sure there is always
  a trailing newline.\n\nhindent can be forced to insert a newline before specific
  operators and tokens with `line-breaks`. This is especially useful when utilizing
  libraries like [`servant`](https://www.servant.dev/) which use long type aliases.\n\nUsing
  `extensions`, hindent can be made aware of valid syntactic compiler extensions that
  would normally be considered invalid syntax.\n\nIt is also possible to specify which
  extensions HIndent runs\nwith in your `.hindent.yaml`:\n\n```yaml\nextensions:\n
  \ - MagicHash\n  - RecursiveDo\n```\n\n## Emacs\n\nIn\n[elisp/hindent.el](https://github.com/mihaimaruseac/hindent/blob/master/elisp/hindent.el)\nthere
  is `hindent-mode`, which provides keybindings to reindent parts of the\nbuffer:\n\n-
  `M-q` reformats the current declaration.  When inside a comment, it fills the\n
  \ current paragraph instead, like the standard `M-q`.\n- `C-M-\\` reformats the
  current region.\n\nTo enable it, add the following to your init file:\n\n```lisp\n(add-to-list
  'load-path \"/path/to/hindent/elisp\")\n(require 'hindent)\n(add-hook 'haskell-mode-hook
  #'hindent-mode)\n```\n\n## Vim\n\nThe `'formatprg'` option lets you use an external
  program (like\nhindent) to format your text. Put the following line into\n~/.vim/ftplugin/haskell.vim
  to set this option for Haskell files:\n\n    setlocal formatprg=hindent\n\nThen
  you can format with hindent using `gq`. Read `:help gq` and `help\n'formatprg'`
  for more details.\n\nNote that unlike in emacs you have to take care of selecting
  a\nsensible buffer region as input to hindent yourself. If that is too\nmuch trouble
  you can try\n[vim-textobj-haskell](https://github.com/gilligan/vim-textobj-haskell)\nwhich
  provides a text object for top level bindings.\n\nIn order to format an entire source
  file execute:\n\n    :%!hindent\n\nAlternatively you could use the\n[vim-hindent](https://github.com/alx741/vim-hindent)
  plugin which runs hindent\nautomatically when a Haskell file is saved.\n\n## Atom\n\nFortunately,
  you can use https://atom.io/packages/ide-haskell with the\npath to hindent specified
  instead of that to stylish-haskell. Works\nlike a charm that way!\n\n## IntelliJ
  / other JetBrains IDEs\n1. Install the \"HaskForce\" Haskell plugin (this is so
  we get the language type recognized in the file watcher)\n2. Install the \"File
  Watchers\" plugin under \"Browse Repositories\"\n3. Add a File Watcher with \n    1.
  File type: Haskell Language\n    2. Program: `/path/to/hindent`\n    3. Arguments:
  `$FilePath$`\n    4. Immediate file synchronization: off\n    5. Show console: Error\n<img<commit_msg>Update from Hackage at 2022-07-07T04:31:48Z<commit_after>homepage: https://github.com/mihaimaruseac/hindent
changelog-type: markdown
hash: e91af715995a49805ddcc634fc14622de01e557b6d14abba82fa4ac232866a93
test-bench-deps:
  hindent: -any
  exceptions: -any
  bytestring: -any
  base: ==4.*
  Diff: -any
  hspec: -any
  monad-loops: -any
  criterion: -any
  haskell-src-exts: -any
  utf8-string: -any
  ghc-prim: -any
  mtl: -any
  deepseq: -any
  directory: -any
maintainer: <EMAIL>
synopsis: Extensible Haskell pretty printer
changelog: "5.3.0:\n    * Handle multiple deriving clauses in a DerivingStrategies
  scenario\n    * Ignore non-files in findCabalFiles\n    * Allow batch processing
  of multiple files\n    * Prevent hindent from trying to open non-files when searching
  for\n      .cabal files\n    * Specify default extensions in configuration file\n
  \   * Fix bad output for [p|Foo|] pattern quasi-quotes\n    * Parse C preprocessor
  line continuations\n    * Fix pretty printing of '(:)\n    * Add parens around symbols
  (:|) when required\n    * Support $p pattern splices\n    * Fix associated type
  families\n    * Non-dependent record constructor formatting\n\n5.2.7:\n    * Fix
  -X option bug\n\n5.2.6:\n    * Switch to optparse-applicative\n\n5.2.5:\n\n    *
  Support get extensions from `.cabal` file\n    * Improve indention with record constructions
  and updates\n    * Fix `let ... in` bug\n    * Fix top-level lambda expressions
  in TemplateHaskell slices\n    * Update to haskell-src-exts dependency to version
  `>= 1.20.0`\n\n5.2.4:\n\n    * Pretty print imports\n    * Fix pretty print for
  string literals for `DataKinds`\n    * Support `--validate` option for checking
  the format without reformatting\n    * Support parse `#include`, `#error`, `#warning`
  directives\n    * Support read `LANGUAGE` pragma and parse the declared extensions
  from source\n    * Treat `TypeApplications` extension as 'badExtensions' due to
  the `@` symbol\n    * Improve pretty print for unboxed tuples\n    * Fix many issues
  related to infix operators, includes TH name quotes,\n      `INLINE`/`NOINLINE`
  pragmas, infix type operator and infix constructor\n    * Fix pretty print for operators
  in `INLINE`/`NOINLINE` pragmas\n    * Support for `EmptyCases` extension\n    *
  Fix TH name quotes on operator names\n    * Optimize pretty print for many fundeps\n
  \   * Fix extra linebreaks after short identifiers\n\n5.2.3:\n\n    * Sort explicit
  import lists\n    * Report the `SrcLoc` when there's a parse error\n    * Improve
  long type signatures pretty printing\n    * Support custom line-break operators,
  add `--line-breaks` argument\n    * Fix infix data constructor\n    * Disable `RecursiveDo`
  and `DoRec` extensions by default\n    * Add RecStmt support\n    * Improve GADT
  records, data declaration records\n    * Complicated type alias and type signatures
  pretty printing\n    * Fix quasi-quoter names\n\n5.2.2:\n\n    * Parallel list comprehensions\n
  \   * Leave do, lambda, lambda-case on previous line of $\n    * Misc fixes\n\n5.2.1:\n\n
  \   * Fix hanging on large constraints\n    * Render multi-line comments\n    *
  Rename --tab-size to --indent-size\n    * Don't add a spurious space for comments
  at the end of the file\n    * Don't add trailing whitespace on <-\n    * Disable
  PatternSynonyms\n    * Put a newline before the closing bracket on a list\n\n5.2.0:\n\n
  \   * Default tab-width is now 2\n    * Supports .hindent.yaml file to specify alt
  tab-width and max\n      column\n    * Put last paren of export list on a new line\n
  \   * Implement tab-size support in Emacs Lisp\n\n5.1.1:\n\n    * Preserve spaces
  between groups of imports (fixes #200)\n    * Support shebangs (closes #208)\n    *
  Output filename for parse errors (fixes #179)\n    * Input with newline ends with
  newline (closes #211)\n    * Document -X (closes #212)\n    * Fix explicit forall
  in instances (closes #218)\n    * Put last paren of export list on a new line #227\n\n5.1.0:\n\n
  \   * Rewrote comment association, more reliable\n    * Added --tab-size flag for
  indentation spaces\n    * Fixed some miscellaneous bugs\n\n5.0.1:\n\n    * Re-implement
  using bytestring instead of text\n    * Made compatible with GHC 7.8 through to
  GHC 8.0\n    * Added test suite and benchmarks in TESTS.md and BENCHMARKS.md\n\n5.0.0:\n\n\t*
  Drop support for styles\n\n4.6.4\n\n\t* Copy/delete file instead of renaming\n\n4.4.6\n\n\t*
  Fix whole module printer\n\t* Accept a filename to reformat\n\n4.4.5\n\n\t* Fix
  bug in infix patterns\n\n4.4.2\n\n\t* Bunch of Gibiansky style fixes.\n\t* Support
  CPP.\n\t* Tibell style fixes.\n\n4.3.8\n\n\t* Fixed: bug in printing operators in
  statements.\n\n4.5.4\n\n\t* Improvements to Tibell style.\n\t* 6x speed up on rendering
  operators.\n"
basic-deps:
  hindent: -any
  exceptions: -any
  bytestring: -any
  Cabal: -any
  path: -any
  base: '>=4.7 && <5'
  text: -any
  monad-loops: -any
  unix-compat: -any
  filepath: -any
  containers: -any
  haskell-src-exts: '>=1.20'
  utf8-string: -any
  ghc-prim: -any
  mtl: -any
  transformers: -any
  optparse-applicative: -any
  deepseq: -any
  path-io: -any
  yaml: -any
  directory: -any
all-versions:
- '0.0'
- '1.0'
- '2.0'
- '2.1'
- '2.2'
- '2.3'
- '2.4'
- '3.0'
- '3.1'
- '3.2'
- '3.3'
- '3.4'
- '3.5'
- '3.6'
- '3.7'
- '3.8'
- '3.9'
- 3.9.1
- '4.0'
- 4.1.0
- 4.1.1
- 4.2.0
- 4.2.1
- 4.2.2
- 4.2.3
- 4.2.4
- 4.3.0
- 4.3.1
- 4.3.2
- 4.3.3
- 4.3.4
- 4.3.5
- 4.3.6
- 4.3.7
- 4.3.8
- 4.3.9
- 4.3.10
- 4.3.11
- 4.3.12
- 4.4.0
- 4.4.1
- 4.4.2
- 4.5.0
- 4.5.1
- 4.5.2
- 4.5.3
- 4.5.4
- 4.5.5
- 4.5.6
- 4.5.7
- 4.6.0
- 4.6.1
- 4.6.2
- 4.6.3
- 4.6.4
- 5.0.0
- 5.0.1
- 5.1.0
- 5.1.1
- 5.2.0
- 5.2.1
- 5.2.2
- 5.2.3
- 5.2.4.1
- 5.2.5
- 5.2.6
- 5.2.7
- 5.3.0
- 5.3.1
- 5.3.2
- 5.3.3
author: <NAME>, <NAME>, <NAME>, <NAME>, <NAME>
latest: 5.3.3
description-type: markdown
description: "# hindent [![Hackage](https://img.shields.io/hackage/v/hindent.svg?style=flat)](https://hackage.haskell.org/package/hindent)
  ![CI (Stack)](https://github.com/mihaimaruseac/hindent/workflows/CI%20(Stack)/badge.svg)
  ![CI (Cabal)](https://github.com/mihaimaruseac/hindent/workflows/CI%20(Cabal)/badge.svg)\n\nHaskell
  pretty printer\n\n[Examples](https://github.com/mihaimaruseac/hindent/blob/master/TESTS.md)\n\n##
  Install\n\n    $ stack install hindent\n\n## Usage\n\n    $ hindent --help\n    hindent
  --version --help --style STYLE --line-length <...> --indent-size <...> --no-force-newline
  [-X<...>]* [<FILENAME>]\n    Version 5.1.1\n    Default --indent-size is 2. Specify
  --indent-size 4 if you prefer that.\n    -X to pass extensions e.g. -XMagicHash
  etc.\n    The --style option is now ignored, but preserved for backwards-compatibility.\n
  \   <NAME> is the default and only style.\n\nhindent is used in a pipeline
  style\n\n    $ cat path/to/sourcefile.hs | hindent\n\nThe default indentation size
  is `2` spaces. Configure indentation size with `--indent-size`:\n\n    $ echo 'example
  = case x of Just p -> foo bar' | hindent --indent-size 2; echo\n    example =\n
  \     case x of\n        Just p -> foo bar\n    $ echo 'example = case x of Just
  p -> foo bar' | hindent --indent-size 4; echo\n    example =\n        case x of\n
  \           Just p -> foo bar\n\n## Customization\n\nCreate a `.hindent.yaml` file
  in your project directory or in your\n`~/` home directory. The following fields
  are accepted and are the\ndefault:\n\n``` yaml\nindent-size: 2\nline-length: 80\nforce-trailing-newline:
  true\nline-breaks: [\":>\", \":<|>\"]\nextensions:\n  - DataKinds\n  - GADTs\n  -
  TypeApplications\n```\n\nBy default, hindent preserves the newline or lack of newline
  in your input. With `force-trailing-newline`, it will make sure there is always
  a trailing newline.\n\nhindent can be forced to insert a newline before specific
  operators and tokens with `line-breaks`. This is especially useful when utilizing
  libraries like [`servant`](https://docs.servant.dev/) which use long type aliases.\n\nUsing
  `extensions`, hindent can be made aware of valid syntactic compiler extensions that
  would normally be considered invalid syntax.\n\nIt is also possible to specify which
  extensions HIndent runs\nwith in your `.hindent.yaml`:\n\n```yaml\nextensions:\n
  \ - MagicHash\n  - RecursiveDo\n```\n\n## Emacs\n\nIn\n[elisp/hindent.el](https://github.com/mihaimaruseac/hindent/blob/master/elisp/hindent.el)\nthere
  is `hindent-mode`, which provides keybindings to reindent parts of the\nbuffer:\n\n-
  `M-q` reformats the current declaration.  When inside a comment, it fills the\n
  \ current paragraph instead, like the standard `M-q`.\n- `C-M-\\` reformats the
  current region.\n\nTo enable it, add the following to your init file:\n\n```lisp\n(add-to-list
  'load-path \"/path/to/hindent/elisp\")\n(require 'hindent)\n(add-hook 'haskell-mode-hook
  #'hindent-mode)\n```\n\n## Vim\n\nThe `'formatprg'` option lets you use an external
  program (like\nhindent) to format your text. Put the following line into\n~/.vim/ftplugin/haskell.vim
  to set this option for Haskell files:\n\n    setlocal formatprg=hindent\n\nThen
  you can format with hindent using `gq`. Read `:help gq` and `help\n'formatprg'`
  for more details.\n\nNote that unlike in emacs you have to take care of selecting
  a\nsensible buffer region as input to hindent yourself. If that is too\nmuch trouble
  you can try\n[vim-textobj-haskell](https://github.com/gilligan/vim-textobj-haskell)\nwhich
  provides a text object for top level bindings.\n\nIn order to format an entire source
  file execute:\n\n    :%!hindent\n\nAlternatively you could use the\n[vim-hindent](https://github.com/alx741/vim-hindent)
  plugin which runs hindent\nautomatically when a Haskell file is saved.\n\n## Atom\n\nFortunately,
  you can use https://atom.io/packages/ide-haskell with the\npath to hindent specified
  instead of that to stylish-haskell. Works\nlike a charm that way!\n\n## IntelliJ
  / other JetBrains IDEs\n1. Install the \"HaskForce\" Haskell plugin (this is so
  we get the language type recognized in the file watcher)\n2. Install the \"File
  Watchers\" plugin under \"Browse Repositories\"\n3. Add a File Watcher with \n    1.
  File type: Haskell Language\n    2. Program: `/path/to/hindent`\n    3. Arguments:
  `$FilePath$`\n    4. Immediate file synchronization: off\n    5. Show console: Error\n<img
{'fraction_non_alphanumeric': 0.13612640651185062, 'fraction_numerical': 0.035767297103184104, 'mean_word_length': 2.7988359403419425, 'pattern_counts': {'":': 4, '<': 33, '<?xml version=': 0, '>': 43, 'https://': 22, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '323238', 'n_tokens_mistral': 8179, 'n_tokens_neox': 7761, 'n_words': 2260}