<commit_before>homepage: https://conferer.ludat.io
changelog-type: markdown
hash: c751be8308345f791dada2b627923e820fd6b8e69faf4388ca29296cb79239eb
test-bench-deps:
  conferer: -any
  bytestring: '>=0.10 && <0.11'
  base: '>=4.3 && <5'
  hspec: -any
  text: '>=1.1 && <1.3'
  filepath: '>=1.0 && <2.0'
  containers: '>=0.5 && <0.7'
  deepseq: -any
  QuickCheck: -any
  directory: '>=1.2 && <2.0'
maintainer: <EMAIL>
synopsis: Configuration management library
changelog: |
  # Changelog
  All notable changes to this project will be documented in this file.

  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
  and this project adheres to [PVP](https://pvp.haskell.org/).

  ## [Unreleased]

  Nothing

  ## [v1.0.0.0] - 2020-12-29

  First release

  [Unreleased]: https://github.com/ludat/conferer/compare/conferer_v1.0.0.0...HEAD
  [v1.0.0.0]: https://github.com/ludat/conferer/releases/tag/v0.0.0.0...conferer_v1.0.0.0
basic-deps:
  bytestring: '>=0.10 && <0.11'
  base: '>=4.3 && <5'
  text: '>=1.1 && <1.3'
  filepath: '>=1.0 && <2.0'
  containers: '>=0.5 && <0.7'
  directory: '>=1.2 && <2.0'
all-versions:
- 0.1.0.0
- 0.1.0.1
- 0.1.0.2
- 0.1.0.3
- 0.1.0.4
- 0.2.0.0
- 0.3.0.0
- 0.4.0.0
- 0.4.1.0
- 0.4.1.1
- 1.0.0.0
author: <NAME>
latest: 1.0.0.0
description-type: markdown
description: "<h1 align=\"center\">Conferer</h1>\n<p align=\"center\">\n    <a href=\"https://img.shields.io/travis/ludat/conferer\"
  alt=\"Travis CI\">\n        <img src=\"https://img.shields.io/travis/ludat/conferer\"
  />\n    </a>\n    <a href=\"https://img.shields.io/hackage/v/conferer\" alt=\"Hackage
  version\">\n        <img src=\"https://img.shields.io/hackage/v/conferer\" />\n
  \   </a>\n    <a href=\"https://img.shields.io/hackage-deps/v/conferer\" alt=\"Hackage
  deps\">\n        <img src=\"https://img.shields.io/hackage-deps/v/conferer\" />\n
  \   </a>\n</p>\n\n## The problem\n\nHave you ever tried configuring a Haskell application?
  If you are not the author\nyou are usually out of luck and the only way to configure
  it is recompiling, and\neven if you are the author you have to write that logic
  yourself (reading env vars,\nfiles or cli params), what about partial updates? and
  environments? or error handling?\n\n## One solution: Conferer\n\nConferer is a library
  that defines ways of getting configuration for your\nHaskell application and the
  libraries it uses in a very ergonomical way.\n\n## Example: one Settings\n\nLet's
  say I want to configure a warp server, then we'd do:\n\n```haskell\nmain = do\n
  \ -- First we create a Config, which defines which sources our config will be\n
  \ -- reading, by default cli params, env vars and .properties files\n  config <-
  defaultConfig \"awesomeapp\"\n  -- Then we use getFromConfig with some arbitrary
  key (to scope the server\n  -- config) and we use our Config to generate a Warp
  Settings\n  warpConfig :: Warp.Settings <- getFromConfig \"server\" config\n\n  --
  Afterwards we use the Settings as usual\n  Warp.runSettings warpConfig myApp\n```\n\nNow
  I need to chage the port of the app, I can change it by either:\n\n* Setting cli
  params like `./myApp --server.port=5555`\n* Setting an environment variable called<commit_msg>Update from Hackage at 2021-01-18T00:31:52Z<commit_after>homepage: https://conferer.ludat.io
changelog-type: markdown
hash: 48534c0c19ded80082a7110bfa3089bb17fe93d4b1f5c7ea4d41f809ba8106fb
test-bench-deps:
  conferer: -any
  bytestring: '>=0.10 && <0.11'
  base: '>=4.3 && <5'
  hspec: -any
  text: '>=1.1 && <1.3'
  filepath: '>=1.0 && <2.0'
  containers: '>=0.5 && <0.7'
  deepseq: -any
  QuickCheck: -any
  directory: '>=1.2 && <2.0'
maintainer: <EMAIL>
synopsis: Configuration management library
changelog: |
  # Changelog
  All notable changes to this project will be documented in this file.

  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
  and this project adheres to [PVP](https://pvp.haskell.org/).

  ## [Unreleased]

  Nothing

  ## [v1.0.0.1] - 2021-01-17

  ### Fixed

  * In the `File`'s `FromConfig` instance, if the default is present and it's type
  is `File`, it throws, which doesn't follow the rest of the library.

  ### Added

  * Add `mkConfig'` which allows creating a config by passing a list of defaults and
  a list of source creators.
  * Add `addSources`, which allows to add several sources to a config.
  * Define the type `Defaults`, which is a list of associations from `Key` to
  `Dynamic`.

  ## [v1.0.0.0] - 2020-12-29

  First release

  [Unreleased]: https://github.com/ludat/conferer/compare/conferer_v1.0.0.0...HEAD
  [v1.0.0.0]: https://github.com/ludat/conferer/releases/tag/v0.0.0.0...conferer_v1.0.0.0
  [v1.0.0.1]: https://github.com/ludat/conferer/releases/tag/conferer_v1.0.0.0...conferer_v1.0.0.1
basic-deps:
  bytestring: '>=0.10 && <0.11'
  base: '>=4.3 && <5'
  text: '>=1.1 && <1.3'
  filepath: '>=1.0 && <2.0'
  containers: '>=0.5 && <0.7'
  directory: '>=1.2 && <2.0'
all-versions:
- 0.1.0.0
- 0.1.0.1
- 0.1.0.2
- 0.1.0.3
- 0.1.0.4
- 0.2.0.0
- 0.3.0.0
- 0.4.0.0
- 0.4.1.0
- 0.4.1.1
- 1.0.0.0
- 1.0.0.1
author: <NAME>
latest: 1.0.0.1
description-type: markdown
description: "<h1 align=\"center\">Conferer</h1>\n<p align=\"center\">\n    <a href=\"https://img.shields.io/travis/ludat/conferer\"
  alt=\"Travis CI\">\n        <img src=\"https://img.shields.io/travis/ludat/conferer\"
  />\n    </a>\n    <a href=\"https://img.shields.io/hackage/v/conferer\" alt=\"Hackage
  version\">\n        <img src=\"https://img.shields.io/hackage/v/conferer\" />\n
  \   </a>\n    <a href=\"https://img.shields.io/hackage-deps/v/conferer\" alt=\"Hackage
  deps\">\n        <img src=\"https://img.shields.io/hackage-deps/v/conferer\" />\n
  \   </a>\n</p>\n\n## The problem\n\nHave you ever tried configuring a Haskell application?
  If you are not the author\nyou are usually out of luck and the only way to configure
  it is recompiling, and\neven if you are the author you have to write that logic
  yourself (reading env vars,\nfiles or cli params), what about partial updates? and
  environments? or error handling?\n\n## One solution: Conferer\n\nConferer is a library
  that defines ways of getting configuration for your\nHaskell application and the
  libraries it uses in a very ergonomical way.\n\n## Example: one Settings\n\nLet's
  say I want to configure a warp server, then we'd do:\n\n```haskell\nmain = do\n
  \ -- First we create a Config, which defines which sources our config will be\n
  \ -- reading, by default cli params, env vars and .properties files\n  config <-
  defaultConfig \"awesomeapp\"\n  -- Then we use getFromConfig with some arbitrary
  key (to scope the server\n  -- config) and we use our Config to generate a Warp
  Settings\n  warpConfig :: Warp.Settings <- getFromConfig \"server\" config\n\n  --
  Afterwards we use the Settings as usual\n  Warp.runSettings warpConfig myApp\n```\n\nNow
  I need to chage the port of the app, I can change it by either:\n\n* Setting cli
  params like `./myApp --server.port=5555`\n* Setting an environment variable called
{'fraction_non_alphanumeric': 0.16558988764044943, 'fraction_numerical': 0.0550561797752809, 'mean_word_length': 3.0761305094447624, 'pattern_counts': {'":': 0, '<': 61, '<?xml version=': 0, '>': 57, 'https://': 23, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 39, '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': '4707107', 'n_tokens_mistral': 2951, 'n_tokens_neox': 2777, 'n_words': 737}