Skip to content
📗 Change settings in configuration text files
Python HTML Roff Shell
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.


Build Status

Setconf is a small utility for changing settings in configuration textfiles.

It has no dependencies except the built-in Python modules.

Pull requests are welcome.

Packaging status

Compile time features

  • It can be compiled to native with nuitka. Try these parameters: --exe --lto --python-version=2.7


  • A flag for changing the n'th occurence.
  • A cleaner way to handle arguments, without adding an external dependency.
  • A flag for commenting out keys (adding "# ")
  • A flag for removing a value instead of using ''.
  • A flag for removing both the key and the value.
  • Rewrite in a different language?
  • Optimize the code that is used for adding options with -a.
  • A way to add an option with -a after a given string occurs.
  • Test and fix the combination of -a and multiline markers.
  • Fix the behavior when " is the multiline marker and : the delimiter (the yml format).
  • Document which assignment symbols and comment markers are supported.
  • Refactor.
  • Support both #define and %define (ref asmttpd).
  • When changing settings in JSON files, a line may look like this: "go.formatTool": "gofmt",. Add a flag for being able to set the key and value without having to specify the quotes and the final comma.

Changes from 0.7.5 to 0.7.6

  • Add test cases.
  • Allow uncommenting keys without providing a value.
  • Update documentation.

Changes from 0.7.4 to 0.7.5

  • Can now uncomment configuration options with the -u flag.
  • Uncommenting and setting values also works on Linux kernel configuration (#CONFIG_KERNEL_XY is not set to CONFIG_KERNEL_XY=y).

Changes from 0.7.3 to 0.7.4

  • Correctly formatted help text.

Changes from 0.7.2 to 0.7.3

  • Can change single-line #define values by using the -d flag.

Changes from 0.7.1 to 0.7.2

  • Fixed an issue that only happened on Python 3.2.
  • Several minor changes.

Changes from 0.7 to 0.7.1

  • Removed a dependency on chardet

Changes from 0.6.8 to 0.7

  • Fix issue #6, a failing testcase for +=.

Changes from 0.6.7 to 0.6.8

  • Deal mainly with bytes instead of strings.
  • Handle ISO-8859-1 (Latin1) better, for Python 3.

Changes from 0.6.6 to 0.6.7

  • Can use floating point numbers together with += and -=

Changes from 0.6.5 to 0.6.6

  • Fixed a problem with files without newline endings

Changes from 0.6.4 to 0.6.5

  • Can now use += or -= for increasing or decreasing integer values

Changes from 0.6.3 to 0.6.4

  • Better error messages when write permissions are denied

Changes from 0.6.2 to 0.6.3

  • Fixed a problem with -a that occurred when a key existed but was commented out
  • Added regression test

Changes from 0.6.1 to 0.6.2

  • Now runs on Python 2 and Python 3 (tested with 2.4, 2.5, 2.6, 2.7 and 3.3)

Changes from 0.6 to 0.6.1

  • Fixed a problem with the -a option
  • Creates the file when -a or --add is given, if needed

Changes from 0.5.3 to 0.6

  • Made -a add options only when not already present

Changes from 0.5.2 to 0.5.3

  • Made it compile with the latest version of shedskin
  • Added an option -a for adding keys/values to a file

Changes from 0.5.1 to 0.5.2

  • Fixed a problem with ascii/utf-8 encoding

Changes from 0.5 to 0.5.1

  • Fixed a problem with => assignments
  • Changed the way files are opened with open()
  • Added more tests relating to ascii/utf-8

Changes from 0.4 to 0.5

  • Add support for => as well
  • Fixed a bug where comments were not ignored for multiline values
  • New logo

Changes from 0.3.2 to 0.4 (released)

  • Ignored configuration options that are commented out

General information

  • License: GPL2
  • Author: Alexander F. Rødseth
You can’t perform that action at this time.