{ "info": { "author": "Scott Belden", "author_email": "scott.a.belden@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries" ], "description": "Formic: Apache Ant FileSet and Globs in Python\n==============================================\n\nFeatures\n--------\n\nFormic is a Python implementation of Apache Ant `FileSet and Globs\n`_ including the directory\nwildcard `**`.\n\nFileSet provides a terse way of specifying a set of files without having to\nenumerate individual files. It:\n\n1. **Includes** files from one or more Ant Globs, then\n2. Optionally **excludes** files matching further Ant Globs.\n\nAnt Globs are a superset of ordinary file system globs. The key differences:\n\n* They match whole paths, eg ``/root/myapp/*.py``\n* \\*\\* matches *any* directory or *directories*, eg ``/root/**/*.py`` matches\n ``/root/one/two/my.py``\n* You can match the topmost directory or directories, eg ``/root/**``, or\n* The parent directory of the file, eg ``**/parent/*.py``, or\n* Any parent directory, eg ``**/test/**/*.py``\n\nThis approach is the de-facto standard in several other languages and tools,\nincluding Apache Ant and Maven, Ruby (Dir) and Perforce (...).\n\nPython has built-in support for simple globs in `fnmatcher\n`_ and `glob\n`_, but Formic:\n\n* Can recursively scan subdirectories\n* Matches arbitrary directories *in* the path (eg ``/1/**/2/**/3/**/*.py``).\n* Has a high level interface:\n\n * Specify one or more globs to find files\n * Globs can be used to exclude files\n * Ant, and Formic, has a set of *default excludes*. These are files and\n directories that, by default, are automatically excluded from all searches.\n The majority of these are files and directories related to VCS (eg .svn\n directories). Formic adds ``__pycache__``.\n * Iterate through all matches in the sub-tree\n\n* Is more efficient with many common patterns; it runs relatively faster on\n large directory trees with large numbers of files.\n\nQuickstart\n----------\n\nFormic can be installed with pip::\n\n $ pip install formic-py3\n\nOnce installed, you can use Formic either from the command line::\n\n $ formic -i \"*.py\" -e \"__init__.py\" \"**/*test*/\" \"test_*\"\n\nThis will search for files all Python files under the current directory\nexcluding all `__init__.py` files, any file in directories whose name contains\nthe word 'test', and any files that start `test_`.\n\nOr integrated right into your Python project::\n\n import formic\n fileset = formic.FileSet(include=\"**.py\",\n exclude=[\"**/*test*/**\", \"test_*\"]\n )\n\n for file_name in fileset:\n # Do something with file_name\n ...\n\nThat's about it :)\n\nAbout\n-----\n\nFormic was originally written by `Andrew Alcock `_\nof `Aviser LLP `_, Singapore. It was forked by Scott\nBelden to add python 3 support.\n\nFormic is Copyright (C) 2012, Aviser LLP and python and released under\n`GPLv3 `_.\nFormic-Py3 is Copyright (C) 2017, Scott Belden.\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.github.com/scottbelden/formic", "keywords": "Apache Ant,glob,recurse,FileSet,file utilities,find", "license": "GPLv3+", "maintainer": "", "maintainer_email": "", "name": "formic-py3", "package_url": "https://pypi.org/project/formic-py3/", "platform": "", "project_url": "https://pypi.org/project/formic-py3/", "project_urls": { "Homepage": "http://www.github.com/scottbelden/formic" }, "release_url": "https://pypi.org/project/formic-py3/0.1.0/", "requires_dist": [ "future" ], "requires_python": "", "summary": "An implementation of Apache Ant FileSet and Globs", "version": "0.1.0" }, "last_serial": 3082143, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "eccd5c8a18042308c7d9bff9a55a3cee", "sha256": "020f8a0174ec6f6b5b96159fe42e254fd2f1f5d0695438f2e18d54a7c2b3d844" }, "downloads": -1, "filename": "formic_py3-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eccd5c8a18042308c7d9bff9a55a3cee", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34002, "upload_time": "2017-08-08T19:34:30", "url": "https://files.pythonhosted.org/packages/a9/43/528aca5b0f3394acb9d556dc8a86c2b65b482b5c5ede4198f632dad21c4a/formic_py3-0.1.0-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "eccd5c8a18042308c7d9bff9a55a3cee", "sha256": "020f8a0174ec6f6b5b96159fe42e254fd2f1f5d0695438f2e18d54a7c2b3d844" }, "downloads": -1, "filename": "formic_py3-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eccd5c8a18042308c7d9bff9a55a3cee", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34002, "upload_time": "2017-08-08T19:34:30", "url": "https://files.pythonhosted.org/packages/a9/43/528aca5b0f3394acb9d556dc8a86c2b65b482b5c5ede4198f632dad21c4a/formic_py3-0.1.0-py2.py3-none-any.whl" } ] }