Home >Backend Development >Python Tutorial >HOCON - secret behind .conf files

HOCON - secret behind .conf files

Susan Sarandon
Susan SarandonOriginal
2024-12-28 01:25:17691browse

HOCON - secret behind .conf files

HOCON (Human-Optimized Config Object Notation) is a flexible and user-friendly configuration format often used in .conf files. It builds on JSON but introduces several enhancements that make it more human-readable and easier to work with.

Key Features:

  • Syntax Simplicity: HOCON allows for relaxed syntax: Commas between fields are optional. Quotes are not always required around keys or strings.
  • Inheritance: It supports configuration merging and inheritance, enabling overrides or extensions of base configurations.
  • Comments: Unlike JSON, HOCON supports comments (# or //), making files easier to document.
  • Substitutions: It allows variable substitution using placeholders (${}) for dynamic configurations.
  • Conciseness: Supports multi-line strings, unquoted keys, and compact object definitions.
  • Extensibility: Easily integrates with tools like the Typesafe Config library, often used in Scala and Java applications, especially with frameworks like Akka and Play.

To Interact with .conf files in python - you need pyhocon library

pip install pyhocon

Below is the sample code to create config files on runtime

from pyhocon import ConfigFactory, HOCONConverter
import json

# Create a configuration object
config = ConfigFactory.parse_string("""
app {
    name = "MyApp"
    version = "1.0.0"
    features = {
        enable_feature_x = true
        enable_feature_y = false
    }
    database {
        url = "jdbc:postgresql://localhost:5432/mydb"
        user = "db_user"
        password = "db_password"
    }
}
""")

# Save the configuration to a file
with open('config.conf', 'w') as file:
    file.write(HOCONConverter.convert(config, 'hocon'))
print("HOCON file created: config.conf")

you can read the created files as below

from pyhocon import ConfigFactory

# Load the configuration file
config = ConfigFactory.parse_file('config.conf')

# Access configuration values
app_name = config.get('app.name')
db_url = config.get('app.database.url')
enable_feature_x = config.get('app.features.enable_feature_x')

# Print configuration values
print(f"App Name: {app_name}")
print(f"Database URL: {db_url}")
print(f"Is Feature X Enabled? {enable_feature_x}")

So the output will be as below

HOCON file created: config.conf
App Name: MyApp
Database URL: jdbc:postgresql://localhost:5432/mydb
Is Feature X Enabled? True
  • You can flag features with the help of configuration management.
  • You can refresh the configuration over periodic intervals or expose an API endpoint to refresh the configuration of the running application.

Library link : https://github.com/chimpler/pyhocon

If you found this helpful, let me know by leaving a ? or a comment!, or if you think this post could help someone, feel free to share it! Thank you very much! ?

The above is the detailed content of HOCON - secret behind .conf files. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn