Package: configly-python-configly
Configly Python LibraryThe Python library forConfigly: the modern config/static data key/value store.Table of ContentsWhat is Configly?Core FeaturesConcepts/ Data ModelGetting Started1. Get your API Key2. Create your first Config3. Install the client library4. Fetch the ConfigUsageFeature FlagsConfiguring this library to use websocketsLicenseConfigly Python LibraryWhat is Configly?Configlyis the place software developers put their static / config data—like
copy, styling, and minor configuration values.
They can then update that data directly fromhttps://www.config.lywithout having to wait for a deploy process / app store review. Their app or webapp receives the data near instantly.
Non-technical folks themselves can publish changes freeing developers to focus on hard software problems and not copy tweaks.On the backend,Configlyprovides a read-optimized static-data key/value store built
with the aim of being low-latency, and high-availability. The client libraries are made to be dead-simple, lean, and efficient
(via enhancements like caching). There is a fancyweb UI called the Configulatorfor setting and updating the configs as well as seeing things like change history. Configly is built for modern software development.There are a host of other benefits to using Configly (
such as ensuring you do not havedata duplicated across clients, reducing load on your primary DB, and better tolerance for traffic spikes),
read more about the benefits atConfigly.Core FeaturesAPI to fetch Strings, JSON Blobs (arrays and objects), Booleans, and Numbers from the Configly backendWeb interfacefor modifying these values without having to deploy code (we call our beloved web interfacethe Configulator).High availability, high-throughput, low-latency backend.Smart caching on the client libraries to minimize server requests.Client libraries available in an expanding amount of languages.Concepts/ Data ModelA Configly account contains a set of Configs.A Config is a key-value pair along with associated metadata (like TTL).The keys are strings.The values are one of the following types:TypesTypenotesExample(s)string"I <3 Configly!"numberCan be integers or decimal;be aware some clients require you to specify which when fetching31337, 1.618booleanonly true or falsetrue, falsejsonBlobAJSON5(more relaxed JSON) array or object.["one", 5, true],{"text": "Buy now!", color: "#0F0"}MorejsonBlobexamplesYou can make arbitrarily complex JSON structures --as longas the top level is
an object or array. This is incredibly powerful as you can send a host of data
with a singleconfig:A more complex array for a store inventory. Note that because we're using JSON5, quotes
are optional for single words.["Simple T-shirt","Basic hoodie",{item:"Complex T-shirt",sizes:['S','M','L'],price_us_cents:[1099,1499,1599],}]And a more complex object showing how you can internationalize and set style:{"welcome_message":{copy:{'en':'Welcome!','es':"¡Bienvenidos!",},style:{color:'#0F0',fontWeight:'700',}},"buy_button":{copy:{'en':'Buy','es':"Comprar",},style:{backgroundColor:"#F00",border:"border-radius 10px",}}}Getting StartedIn four easy steps!1. Get your API KeyYou'll need aConfiglyaccount. Registration is lightning quick—you can register via
visitinghttps://www.config.ly/signup.After signing up, you can grab your API Key fromhttps://www.config.ly/register.
You'll need your API Key to setup the API below.2. Create your first ConfigFromhttps://www.config.ly/config, create a new Config via the "Add" button:Consider creating a simpleJSON Object or ArrayConfig calledgreetingsand give it the value of:['hello', 'hola', '你好', 'नमस्ते']:https://www.config.ly/configshould look like this:Be sure to save via clicking 'Send to Clients'. Now, we'll write client code to fetch this key.3. Install the client libraryIf you're usingBundler(as is often the case with Rails), add the following line to your project'sGemfile:gem'configly-ruby','~> 1.0.0'Or, if you're using the Gem directly from your application, you can run:geminstallconfigly-rubyYou will need to set theCONFIGLY_API_KEYenvironment variable.4. Fetch the ConfigIn a Rails controller, add the following codedefgetbeginkey=Configly::Client.get(params[:key])renderplain:keyrescueConfigly::KeyErrorrender:status=>404endendMap the route, and then request it in your browser with thekeyparams (e.g.http://localhost:3000/configly?key=test1234).Try changing some values onhttps://www.config.ly/configto confirm that
the client is getting the updates.Congratulations you have Configly working end-to-end! Now, feel free to use Configly with all your projects!Configuring this library to use websocketsComing soon...UsageThe golden rule of Configly library use is:do NOTassign the result of aget()to a long-lived variable; in order to check for new values from the server, you must callget().The package needs to be configured with your account's API key, which is available in theConfigly Configulator// This value is stored on the Config.ly servers.
store_catalog:
{
   has_sale: true,
   discount: 0.8,
   items: ['T Shirt', 'Hoodie', 'Ferrari'],
   price: [ 100, 250,  200000],
}On the Python client:# You can try this example out by setting the `CONFIGLY_API_KEY` environmental variable to our demo account: 'Dem0apiKEY'begincatalog=Configly::Client.get("store_catalog")items=catalog['items']prices=catalog['prices']items.each_with_indexdo|item,index|Rails.logger.debug("#{item}:#{prices[index]}USD")endrescueConfigly::KeyErrorRails.logger.error("Something went wrong")endNote: If the key doesn't exist, this will raise aConfigly::KeyErrorFeature FlagsHere is an example with feature flags.// These values are stored on the Config.ly server

feature1_enabled: true
feature2_enabled: falseOn the ruby client:# Remember, you need to set the `CONFIGLY_API_KEY` environment variable.# You can find your API Key on https://www.config.ly/config.beginifConfigly::Client.get('feature1_enabled')# Logic for feature 1endifConfigly::Client.get('feature2_enabled')# Logic for feature 2endrescueConfigly::KeyErrorRails.logger.error("Something went wrong")endLicenseThis repository is published under theMITlicense.