{ "info": { "author": "Thomas Levine", "author_email": "_@thomaslevine.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3.5" ], "description": "bguo\n====\nFile-based contact management\n\nConcept\n-------\nEach contact corresponds to a single file inside of the bguo directory.\nContact information should be edited in this directory and then exported\nto various output formats for use by other programs. They can also be\nroughly imported to this directory, but you will have to proofread the\nresults; the importers are intended for one-time imports, not for\nregular synchronization with other programs.\n\nFor our purposes, a contact is a thing with a single name.\nPeople, mailing lists, and organizations can all be\ncontacts. bguo has no special features for grouping contacts.\n\nbguo contact file format\n------------------------\nHere is an example of a contact file. ::\n\n name: Thomas Levine\n email: sngmscrmrchroh@thomaslevine.com\n phone: 8835 1000 990 2082\n x-favorite-color: pink\n\nThe contact file format is similar to that of an email\n(`RFC-5322 `_ internet message)\nexcept for the following changes.\n\n* Header names are different. (See below.)\n* Line breaks do not need to include carriage returns;\n it is acceptable to break lines either with CRLF or just LF.\n* Non-ASCII data may be included in headers; MIME encoded-word syntax is\n optional.\n* The message body must be empty.\n\nA contact file may contain any of the following case-insensitive fields\nand any field beginning with \"x-\" or \"X-\".\n\nname\n Name of a person, mailing list, organization, &c.\nname-latin\n Same as \"name\", but used when \"name\" isn't acceptable for the output\n format because it is in a different alphabet\nphone\n Telephone number\nemail\\*\n Email address\nfeed\\*\n News feed address, like for an RSS or Atom feed\nweb\n Website address\npost\n Postal address\n\nbguo will report an error if any other field is present.\nFields marked with \"\\*\" may be included multiple times;\nother fields may be included only once.\n\nUsage\n-------\nInstall ::\n\n pip3 install bguo\n\nThe Seltzer importer has a special dependency. If you need the Seltzer\nimporter, install like this in order to ensure that the dependency is met.\n\n pip3 install 'bguo[seltzer]'\n\nHelp ::\n\n bguo -h\n\nExamples are distributed with the package, in the \"examples\" directory.\npip downloads the package, but you can download the package\n`from PyPI `_, and you can download\nthe development version\n`from thomaslevine.com `_.\n\nHere is how you can download the development version and run the examples. ::\n \n wget https://thomaslevine.com/scm/bguo/tarball/bguo.tar.gz\n tar xzf bguo.tar.gz\n cd bguo/examples\n make clean\n make\n\nSupported formats\n-----------------\nbguo supports only the formats that I (`Tom `_) have used.\nLet's separate the formats into two groups. The first group of formats\nis for specific integrations with other software.\n\nkonftel\n `Konftel 300IP `_ phonebook file\nmh\n `MH `_ aliases file\nmutt\n `Mutt `_ ``alias_file``\nnewsbeuter\n `Newsbeuter `_ ``~/.newsbeuter/urls``\nseltzer\n `Seltzer CRM `_ member listing (``/?q=members``)\nvoipms\n `VoIP.ms `_ phonebook export\n\nThe second group is generic exports that could be helpful for making\nyour own exports.\n\npython (the default)\n Python string representation, as a list of dicts, one dict per contact\ncustom\n Your own format, specified as a Python\n `format string `_,\n using the fields that you can check with the ``bguo format`` subcommand\n\nThe format arguments include all of the raw fields from the contact file\nformat (name, name-latin, &c.) and the following derived fields.\n\nphone-numeric\n Phone number from the \"phone\" field with non-numeric characters removed\npost-formatted\n Postal address from the \"post\" field formatted for inclusion on a\n letter, with the contact's name or identifier and with slashes\n replaced by line breaks.\n\nFor most of these formats, only the import or the export is supported,\nnot both. This is summarized in the table below.\n\n============= ====== ======\nFormat Import Export\n============= ====== ======\nKonftel No Yes\nMH Yes Yes\nMutt Yes Yes\nNewsbeuter Yes Yes\nSeltzer Yes No\nVoIP.ms Yes No\n------------- ------ ------\nPython No Yes\nCustom No Yes\n============= ====== ======\n\nFor imports, command-line program expects that you are converting from\nonly one format to bguo. To merge multiple formats during an export,\nwrite a custom merging program with the functions in ``bguo.parse``.\nI did this once with email addresses (MH) and phone numbers (VoIP.MS);\nsee ``examples/merge.py``.\n\nExport workflow\n---------------\nLet us categorize exports into two types.\n\n1. STDOUT is sent to a configuration file.\n2. STDOUT is sent directly to another program.\n\nAn example of the former type is the MH format; I run a command like this,\nand my contacts are made available when I am composing emails. ::\n\n bguo export ./my-contacts mh > ~/mh/aliases\n\nAn example of the latter type is connecting the generic phone number\nexport to a Session Initicialization Protocol (SIP) client; I can call\nmyself with the following command.\n::\n\n pjsua \"$(bguo export ./thomas.levine custom 'sip:{phone-numeric}@paris.voip.ms')\"\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://src.thomaslevine.com/bguo/", "keywords": null, "license": "AGPL", "maintainer": null, "maintainer_email": null, "name": "bguo", "package_url": "https://pypi.org/project/bguo/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/bguo/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://src.thomaslevine.com/bguo/" }, "release_url": "https://pypi.org/project/bguo/0.2.3/", "requires_dist": null, "requires_python": null, "summary": "File-based contact management", "version": "0.2.3" }, "last_serial": 2765952, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "573d06db0b5399631505334c9267242f", "sha256": "648cf4fae3a02acfbd7677ffdbe331769d58609083dafdd6318ec202b33fe68e" }, "downloads": -1, "filename": "bguo-0.2.tar.gz", "has_sig": false, "md5_digest": "573d06db0b5399631505334c9267242f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3579, "upload_time": "2016-12-22T12:21:00", "url": "https://files.pythonhosted.org/packages/ad/a3/f2fd98c2001e83933de368104c9b3921640fbf777d9d25cc8e60e7a486b7/bguo-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "45fcdd712013f04e0469c728674bfaa6", "sha256": "db15d0fac1363a8d5de0a3f0c2382a003ddd8718e4a54679514abbe24b406064" }, "downloads": -1, "filename": "bguo-0.2.1.tar.gz", "has_sig": false, "md5_digest": "45fcdd712013f04e0469c728674bfaa6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3587, "upload_time": "2016-12-24T17:10:51", "url": "https://files.pythonhosted.org/packages/f1/d6/f7e2ba30c5324f3702afcf65354af3ea96883e7c9eebbd05aabdc55108ad/bguo-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "65afdde279dfc98e773a1586bce6e734", "sha256": "7fc6fcc9ad49e3f5d44b21eee487b788d05d5948845677898f774d9370fc574d" }, "downloads": -1, "filename": "bguo-0.2.2.tar.gz", "has_sig": false, "md5_digest": "65afdde279dfc98e773a1586bce6e734", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4068, "upload_time": "2016-12-24T18:03:57", "url": "https://files.pythonhosted.org/packages/ac/41/ff141f54e79d3cf8a2ef0865985c00d6f8b33ebe83ec239f3f9d3deaa842/bguo-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "944acb9424bef35a49cd3934756c35d4", "sha256": "8d974c8c569ac7a53597a76e16381f42b40a43d5be5fea70a07c4cb8bf1415b1" }, "downloads": -1, "filename": "bguo-0.2.3.tar.gz", "has_sig": false, "md5_digest": "944acb9424bef35a49cd3934756c35d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12209, "upload_time": "2017-04-10T12:29:04", "url": "https://files.pythonhosted.org/packages/bd/33/04ec0c51dc0ff3c32001266e0864e0c7729bd0f19149e20cc0bec434db35/bguo-0.2.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "944acb9424bef35a49cd3934756c35d4", "sha256": "8d974c8c569ac7a53597a76e16381f42b40a43d5be5fea70a07c4cb8bf1415b1" }, "downloads": -1, "filename": "bguo-0.2.3.tar.gz", "has_sig": false, "md5_digest": "944acb9424bef35a49cd3934756c35d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12209, "upload_time": "2017-04-10T12:29:04", "url": "https://files.pythonhosted.org/packages/bd/33/04ec0c51dc0ff3c32001266e0864e0c7729bd0f19149e20cc0bec434db35/bguo-0.2.3.tar.gz" } ] }