added initial
This commit is contained in:
		
							parent
							
								
									1d70071d75
								
							
						
					
					
						commit
						bc925ef767
					
				
					 5 changed files with 257 additions and 0 deletions
				
			
		
							
								
								
									
										158
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										158
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,158 @@ | |||
| 
 | ||||
| ### Python | ||||
| # Byte-compiled / optimized / DLL files | ||||
| __pycache__/ | ||||
| *.py[cod] | ||||
| *$py.class | ||||
| 
 | ||||
| # C extensions | ||||
| *.so | ||||
| 
 | ||||
| # Distribution / packaging | ||||
| .Python | ||||
| build/ | ||||
| develop-eggs/ | ||||
| dist/ | ||||
| downloads/ | ||||
| eggs/ | ||||
| .eggs/ | ||||
| lib/ | ||||
| lib64/ | ||||
| parts/ | ||||
| sdist/ | ||||
| var/ | ||||
| wheels/ | ||||
| pip-wheel-metadata/ | ||||
| share/python-wheels/ | ||||
| *.egg-info/ | ||||
| .installed.cfg | ||||
| *.egg | ||||
| MANIFEST | ||||
| 
 | ||||
| # PyInstaller | ||||
| #  Usually these files are written by a python script from a template | ||||
| #  before PyInstaller builds the exe, so as to inject date/other infos into it. | ||||
| *.manifest | ||||
| *.spec | ||||
| 
 | ||||
| # Installer logs | ||||
| pip-log.txt | ||||
| pip-delete-this-directory.txt | ||||
| 
 | ||||
| # Unit test / coverage reports | ||||
| htmlcov/ | ||||
| .tox/ | ||||
| .nox/ | ||||
| .coverage | ||||
| .coverage.* | ||||
| .cache | ||||
| nosetests.xml | ||||
| coverage.xml | ||||
| *.cover | ||||
| *.py,cover | ||||
| .hypothesis/ | ||||
| .pytest_cache/ | ||||
| cover/ | ||||
| 
 | ||||
| # Translations | ||||
| *.mo | ||||
| *.pot | ||||
| 
 | ||||
| # Django stuff: | ||||
| *.log | ||||
| local_settings.py | ||||
| db.sqlite3 | ||||
| db.sqlite3-journal | ||||
| 
 | ||||
| # Flask stuff: | ||||
| instance/ | ||||
| .webassets-cache | ||||
| 
 | ||||
| # Scrapy stuff: | ||||
| .scrapy | ||||
| 
 | ||||
| # Sphinx documentation | ||||
| docs/_build/ | ||||
| 
 | ||||
| # PyBuilder | ||||
| target/ | ||||
| 
 | ||||
| # Jupyter Notebook | ||||
| .ipynb_checkpoints | ||||
| 
 | ||||
| # IPython | ||||
| profile_default/ | ||||
| ipython_config.py | ||||
| 
 | ||||
| # pyenv | ||||
| #   For a library or package, you might want to ignore these files since the code is | ||||
| #   intended to run in multiple environments; otherwise, check them in: | ||||
| # .python-version | ||||
| 
 | ||||
| # pipenv | ||||
| #   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. | ||||
| #   However, in case of collaboration, if having platform-specific dependencies or dependencies | ||||
| #   having no cross-platform support, pipenv may install dependencies that don't work, or not | ||||
| #   install all needed dependencies. | ||||
| #Pipfile.lock | ||||
| 
 | ||||
| # PEP 582; used by e.g. github.com/David-OConnor/pyflow | ||||
| __pypackages__/ | ||||
| 
 | ||||
| # Celery stuff | ||||
| celerybeat-schedule | ||||
| celerybeat.pid | ||||
| 
 | ||||
| # SageMath parsed files | ||||
| *.sage.py | ||||
| 
 | ||||
| # Environments | ||||
| .env | ||||
| .venv | ||||
| env/ | ||||
| venv/ | ||||
| ENV/ | ||||
| env.bak/ | ||||
| venv.bak/ | ||||
| 
 | ||||
| # Spyder project settings | ||||
| .spyderproject | ||||
| .spyproject | ||||
| 
 | ||||
| # Rope project settings | ||||
| .ropeproject | ||||
| 
 | ||||
| # mkdocs documentation | ||||
| /site | ||||
| 
 | ||||
| # mypy | ||||
| .mypy_cache/ | ||||
| .dmypy.json | ||||
| dmypy.json | ||||
| 
 | ||||
| # Pyre type checker | ||||
| .pyre/ | ||||
| 
 | ||||
| # pytype static type analyzer | ||||
| .pytype/ | ||||
| 
 | ||||
| ### Vim | ||||
| # Swap | ||||
| [._]*.s[a-v][a-z] | ||||
| !*.svg  # comment out if you don't need vector files | ||||
| [._]*.sw[a-p] | ||||
| [._]s[a-rt-v][a-z] | ||||
| [._]ss[a-gi-z] | ||||
| [._]sw[a-p] | ||||
| 
 | ||||
| # Session | ||||
| Session.vim | ||||
| Sessionx.vim | ||||
| 
 | ||||
| # Temporary | ||||
| .netrwhist | ||||
| *~ | ||||
| # Auto-generated tag files | ||||
| tags | ||||
| # Persistent undo | ||||
| [._]*.un~ | ||||
							
								
								
									
										33
									
								
								.style.yapf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								.style.yapf
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,33 @@ | |||
| [style] | ||||
| 
 | ||||
| # Insert a blank line before a module docstring. | ||||
| blank_line_before_module_docstring=True | ||||
| 
 | ||||
| # The column limit. | ||||
| column_limit=120 | ||||
| 
 | ||||
| # Split before the '.' if we need to split a longer expression: | ||||
| # | ||||
| #   foo = ('This is a really long string: {}, {}, {}, {}'.format(a, b, c, d)) | ||||
| # | ||||
| # would reformat to something like: | ||||
| # | ||||
| #   foo = ('This is a really long string: {}, {}, {}, {}' | ||||
| #          .format(a, b, c, d)) | ||||
| split_before_dot=True | ||||
| 
 | ||||
| # Set to True to split list comprehensions and generators that have | ||||
| # non-trivial expressions and multiple clauses before each of these | ||||
| # clauses. For example: | ||||
| # | ||||
| #   result = [ | ||||
| #       a_long_var + 100 for a_long_var in xrange(1000) | ||||
| #       if a_long_var % 10] | ||||
| # | ||||
| # would reformat to something like: | ||||
| # | ||||
| #   result = [ | ||||
| #       a_long_var + 100 | ||||
| #       for a_long_var in xrange(1000) | ||||
| #       if a_long_var % 10] | ||||
| split_complex_comprehension=True | ||||
							
								
								
									
										14
									
								
								pylama.ini
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								pylama.ini
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| [pylama] | ||||
| format = pylint | ||||
| linters = mccabe,pep257,pydocstyle,pep8,pycodestyle,pyflakes,pylint,isort | ||||
| ignore = D203 | ||||
| skip=.env/* | ||||
| 
 | ||||
| [pylama:pycodestyle] | ||||
| max_line_length = 120 | ||||
| 
 | ||||
| [pylama:pep8] | ||||
| max_line_length = 120 | ||||
| 
 | ||||
| [pylama:pylint] | ||||
| max_line_length = 120 | ||||
							
								
								
									
										4
									
								
								requirements.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								requirements.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| pylama>=7.7.0 | ||||
| pylint>=2.3.0 | ||||
| yapf>=0.27.0 | ||||
| timew>=0.0.22 | ||||
							
								
								
									
										48
									
								
								timewarrior.py
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										48
									
								
								timewarrior.py
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,48 @@ | |||
| #! /usr/bin/env python3 | ||||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| """Timewarrior adapter for `argos <https://github.com/p-e-w/argos>`.""" | ||||
| # <bitbar.title>timewarrior</bitbar.title> | ||||
| # <bitbar.version>v1.0</bitbar.version> | ||||
| # <bitbar.author>Tobias Schmidl</bitbar.author> | ||||
| # <bitbar.author.github>schtobia</bitbar.author.github> | ||||
| # <bitbar.desc>Greps and formats data from timewarrior.</bitbar.desc> | ||||
| # <bitbar.image></bitbar.image> | ||||
| # <bitbar.dependencies>python,timew</bitbar.dependencies> | ||||
| # <bitbar.abouturl>https://github.com/schtobia/argos-timewarrior/blob/master/timewarrior.py</bitbar.abouturl> | ||||
| 
 | ||||
| 
 | ||||
| import functools | ||||
| import locale | ||||
| from datetime import datetime, timedelta | ||||
| 
 | ||||
| from timew import TimeWarrior | ||||
| 
 | ||||
| TW = TimeWarrior() | ||||
| TIMEFORMATTER = '%Y%m%dT%H%M%S%z' | ||||
| locale.setlocale(locale.LC_ALL, '') | ||||
| RESULTS = sorted(map( | ||||
|     lambda x: { | ||||
|         'start': | ||||
|         datetime.strptime(x['start'], TIMEFORMATTER).astimezone(tz=None), | ||||
|         'end': | ||||
|         datetime.strptime(x['end'], TIMEFORMATTER).astimezone(tz=None) | ||||
|         if 'end' in x else datetime.now().astimezone(tz=None), | ||||
|         'id': | ||||
|         x['id'], | ||||
|         'tags': | ||||
|         x['tags'] | ||||
|     }, TW.summary()), | ||||
|                  key=lambda x: x['start']) | ||||
| 
 | ||||
| print("TW: {}\n-----".format( | ||||
|     str(functools.reduce(lambda total, x: total + x['end'] - x['start'], RESULTS, timedelta())).split(sep='.', maxsplit=1)[0] | ||||
| )) | ||||
| print( | ||||
|     " | font=monospace | size=8\n".join( | ||||
|         map( | ||||
|             lambda x: str({ | ||||
|                 'start': datetime.strftime(x['start'], "%x %X"), | ||||
|                 'end': datetime.strftime(x['end'], "%x %X"), | ||||
|                 'tags': x['tags'] | ||||
|             }), RESULTS)), "| font=monospace | size=8") | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue