{ "info": { "author": "Asher Pembroke", "author_email": "apembroke@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6" ], "description": "\n\n```python\n%load_ext autoreload\n\n%autoreload 2\n```\n\n# Hourly\nA simple hour tracker for git projects. ```hourly``` parses your commit messages for \"clock in/out\" keywords and uses their unix timestamps to precisely calculate work hours.\n\n\n## Getting Started\n\n## Install\n\n pip install hourly\n\n\n### Requirements\n\n\tpandas\n gitpython\n\n### Usage\n\nHourly will look for key words for clocking in/out.\n\nTo clock in:\n\n git commit -m \"clock in - starting work on new feature\"\n\ndo stuff as usual, then clock out\n\n git commit -m \"clock out - finished feature\"\n\n\n# Tutorial\n\nWe can illustrate how to use hourly on the hourly repo itself.\n\n git clone https://github.com/asherp/hourly.git\n cd hourly\n\n\n```python\nfrom hourly.hourly import get_work_commits, get_labor, get_earnings\n```\n\n```get_work_commits``` gathers all commits into a pandas array\n\n\n```python\nwork = get_work_commits('.')\nwork\n```\n\n c:\\programdata\\miniconda2\\lib\\site-packages\\pandas\\core\\sorting.py:257: FutureWarning: Converting timezone-aware DatetimeArray to timezone-naive ndarray with 'datetime64[ns]' dtype. In the future, this will return an ndarray with 'object' dtype where each element is a 'pandas.Timestamp' with the correct 'tz'.\n \tTo accept the future behavior, pass 'dtype=object'.\n \tTo keep the old behavior, pass 'dtype=\"datetime64[ns]\"'.\n items = np.asanyarray(items)\n\n\n\n\n\n
| \n | message | \nhash | \n
|---|---|---|
| time | \n\n | \n |
| 2018-10-19 23:40:41-04:00 | \nInitial commit | \nef5690543bfb354b9325d1fbd1f9abbafbb4d9a4 | \n
| 2018-10-19 23:57:48-04:00 | \nclock in | \n5c8f05b57b739ec525291c248ea9200651b49997 | \n
| 2018-10-20 00:21:40-04:00 | \npreparing setup.py | \n254ecdacb52fc70bc358f8d55be58df3b70c7609 | \n
| 2018-10-20 00:39:11-04:00 | \nclock out - work done for the day | \n0e33fa3d74f663f954b05dd9f30e0128ca7af162 | \n
| 2018-10-20 01:06:08-04:00 | \nclock in - start adding requirements and examp... | \ndc065b17337b14c2f8e0458de61e6880a338d6ae | \n
| 2018-10-20 01:47:01-04:00 | \nclock out | \n644ad6ebf4c9015fd512ed47b858602d784d6204 | \n
| 2018-10-20 01:47:45-04:00 | \nclock in - pro bono | \ne6b5f78daa68e3731f82effccb66fd4bd14996bf | \n
| 2018-10-20 01:51:36-04:00 | \nclock out - pro bono | \n1aff88af5e9688645966ccd15da8e1530205cfea | \n
| 2018-10-20 02:03:56-04:00 | \nclock in - finishing tutorial | \n53bd7316e579d8582c46af09277b40fbba3a390e | \n
| 2018-10-20 02:11:54-04:00 | \nclock out - converted notebook for README | \nd55b5718a3178ab6161f7e3a148c6561a305cd79 | \n
| 2018-10-20 02:14:21-04:00 | \nhad to clock out so notebook examples don't break | \nd9ec537b36475b565df6b28d0cab6edc3a89f2da | \n
| 2018-10-20 02:18:27-04:00 | \nfixed for rendering | \ne2f8a2ca212fa9e7568618934da18a0ec7164fa3 | \n
| 2018-10-20 02:22:56-04:00 | \nfixing requiremens that raised a security alert | \ne0e71a05c6c5af1fc5515040ec75f33b71bd3b15 | \n
| 2018-10-20 02:51:13-04:00 | \nfixed requirements, tutorial updates | \nd8d87767005022c9a8e83015d40f6fb736f2b73b | \n
| 2018-10-20 02:57:22-04:00 | \nmerging | \nf5585c89612a5fac2d948ee61536fffe276f8949 | \n
| 2018-10-20 03:24:58-04:00 | \nRemove autoreload | \nb2c1d8677ea57aeb959350d663475ba3077f2c96 | \n
| 2018-10-20 11:53:00-04:00 | \nclock in - handling errant messages | \nfa615994ba6b771594d711dea6087cc7ba0348b5 | \n
| 2018-10-20 13:16:13-04:00 | \nclock out - converting to pd.Timestamp | \ned7aab29e43e7120428816481216198a255de8f4 | \n
| 2018-10-20 13:47:56-04:00 | \nclock in - adding work log | \n5b398037bf24cd503a7fc88c3b078913fa184f7e | \n
| 2018-10-20 14:33:35-04:00 | \nclock out - see WorkLog.md | \n93c2aa04aeba7cfe1573205abec053c7da9e9864 | \n
| 2018-10-20 14:35:58-04:00 | \nmerged | \n6a7f4ac45de70d94fb943d0676265cafd5bf1e41 | \n
| 2018-10-20 17:34:38-04:00 | \npushing version | \n2b633644d6ba24b9c1bbff6881a99df6ab935a8d | \n
| 2018-10-28 13:44:48-04:00 | \nclock in | \nc4e95f59dc0c8ce296a40300760ab68800f7e139 | \n
| 2018-10-28 13:56:35-04:00 | \nclock out | \nf5200e718c062e828d436506286fd05e56b606c5 | \n
| 2018-11-23 13:51:05-05:00 | \nchanged formatting of wages earned | \n9630e123f8748bb8260da27498e3600a3271e4c2 | \n
| 2018-11-23 14:14:38-05:00 | \nchanged license to Apache 2.0' | \nb7791826f2df0212ce49b51b621dd7e7cc0d6f14 | \n
| 2019-02-25 10:19:10-05:00 | \nclock in T-1hr | \nd7add63b4d2e3e1ca1423296aaed25d9c28944da | \n
| 2019-02-25 12:49:51-05:00 | \nclock out T-5m | \nacfb8596317786e38177345aa2531098043a5c49 | \n
| \n | TimeIn | \nlog in | \nTimeOut | \nlog out | \nTimeDelta | \n
|---|---|---|---|---|---|
| 0 | \n2018-10-19 23:57:48-04:00 | \nclock in | \n2018-10-20 00:39:11-04:00 | \nclock out - work done for the day | \n00:41:23 | \n
| 1 | \n2018-10-20 01:06:08-04:00 | \nclock in - start adding requirements and examp... | \n2018-10-20 01:47:01-04:00 | \nclock out | \n00:40:53 | \n
| 2 | \n2018-10-20 01:47:45-04:00 | \nclock in - pro bono | \n2018-10-20 01:51:36-04:00 | \nclock out - pro bono | \n00:03:51 | \n
| 3 | \n2018-10-20 02:03:56-04:00 | \nclock in - finishing tutorial | \n2018-10-20 02:11:54-04:00 | \nclock out - converted notebook for README | \n00:07:58 | \n
| \n | message | \nhash | \n
|---|---|---|
| time | \n\n | \n |
| 2018-10-20 02:14:21-04:00 | \nhad to clock out so notebook examples don't break | \nd9ec537b36475b565df6b28d0cab6edc3a89f2da | \n
| \n | TimeIn | \nlog in | \nTimeOut | \nlog out | \nTimeDelta | \n
|---|---|---|---|---|---|
| 0 | \n2018-10-19 23:57:48-04:00 | \nclock in | \n2018-10-20 00:39:11-04:00 | \nclock out - work done for the day | \n00:41:23 | \n
| 1 | \n2018-10-20 01:06:08-04:00 | \nclock in - start adding requirements and examp... | \n2018-10-20 01:47:01-04:00 | \nclock out | \n00:40:53 | \n
| 2 | \n2018-10-20 01:47:45-04:00 | \nclock in - pro bono | \n2018-10-20 01:51:36-04:00 | \nclock out - pro bono | \n00:03:51 | \n
| 3 | \n2018-10-20 02:03:56-04:00 | \nclock in - finishing tutorial | \n2018-10-20 02:11:54-04:00 | \nclock out - converted notebook for README | \n00:07:58 | \n
| 4 | \n2018-10-20 11:53:00-04:00 | \nclock in - handling errant messages | \n2018-10-20 13:16:13-04:00 | \nclock out - converting to pd.Timestamp | \n01:23:13 | \n
| \n | TimeIn | \nlog in | \nTimeOut | \nlog out | \nTimeDelta | \n
|---|---|---|---|---|---|
| 0 | \n2018-10-19 23:57:48-04:00 | \nclock in | \n2018-10-20 00:39:11-04:00 | \nclock out - work done for the day | \n00:41:23 | \n
| 1 | \n2018-10-20 01:06:08-04:00 | \nclock in - start adding requirements and examp... | \n2018-10-20 01:47:01-04:00 | \nclock out | \n00:40:53 | \n
| 3 | \n2018-10-20 02:03:56-04:00 | \nclock in - finishing tutorial | \n2018-10-20 02:11:54-04:00 | \nclock out - converted notebook for README | \n00:07:58 | \n
| 4 | \n2018-10-20 11:53:00-04:00 | \nclock in - handling errant messages | \n2018-10-20 13:16:13-04:00 | \nclock out - converting to pd.Timestamp | \n01:23:13 | \n
| \n | message | \nhash | \n
|---|---|---|
| time | \n\n | \n |
| 2019-02-25 11:19:10-05:00 | \nclock in T-1hr | \nd7add63b4d2e3e1ca1423296aaed25d9c28944da | \n
| 2019-02-25 12:54:51-05:00 | \nclock out T-5m | \nacfb8596317786e38177345aa2531098043a5c49 | \n
| \n | message | \nhash | \n
|---|---|---|
| time | \n\n | \n |
| 2019-02-25 10:19:10-05:00 | \nclock in T-1hr | \nd7add63b4d2e3e1ca1423296aaed25d9c28944da | \n
| 2019-02-25 12:49:51-05:00 | \nclock out T-5m | \nacfb8596317786e38177345aa2531098043a5c49 | \n