theenglishway (time) пре 6 година
комит
7129769c3d
10 измењених фајлова са 156 додато и 0 уклоњено
  1. 5 0
      .gitignore
  2. 6 0
      pyplanner/__init__.py
  3. 13 0
      pyplanner/cli.py
  4. 11 0
      pyplanner/database.py
  5. 11 0
      pyplanner/models/__init__.py
  6. 15 0
      pyplanner/models/milestones.py
  7. 24 0
      pyplanner/utils.py
  8. 7 0
      requirements.txt
  9. 61 0
      setup.cfg
  10. 3 0
      setup.py

+ 5 - 0
.gitignore

@@ -0,0 +1,5 @@
+.idea
+*.egg-info
+venv/
+*.pyc
+*.db

+ 6 - 0
pyplanner/__init__.py

@@ -0,0 +1,6 @@
+__author__ = """theenglishway"""
+__email__ = 'me@theenglishway.eu'
+__version__ = '0.1.0'
+
+
+from .database import Session

+ 13 - 0
pyplanner/cli.py

@@ -0,0 +1,13 @@
+import click
+
+
+@click.group()
+@click.option('-v', '--db', type=str, default='./planning.json', show_default=True)
+@click.pass_context
+def main(ctx, db):
+    """Basic CLI project-handling"""
+    ctx.ensure_object(dict)
+
+
+if __name__ == '__main__':
+    main()

+ 11 - 0
pyplanner/database.py

@@ -0,0 +1,11 @@
+from sqlalchemy import create_engine
+from sqlalchemy.orm import sessionmaker
+from sqlalchemy.ext.declarative import declarative_base
+
+
+SQLABase = declarative_base()
+
+
+engine = create_engine('sqlite:///./sqlite3.db')
+SQLABase.metadata.create_all(engine)
+Session = sessionmaker(bind=engine)

+ 11 - 0
pyplanner/models/__init__.py

@@ -0,0 +1,11 @@
+from pyplanner.database import SQLABase
+from datetime import datetime
+from sqlalchemy import Column, DateTime
+
+
+class Base(SQLABase):
+    date_created = Column(DateTime, default=datetime.utcnow)
+    date_updated = Column(DateTime, onupdate=datetime.utcnow)
+
+
+from .milestones import Milestone

+ 15 - 0
pyplanner/models/milestones.py

@@ -0,0 +1,15 @@
+from pyplanner.models import Base
+from sqlalchemy import Column, Integer, String, Text
+
+
+
+class Milestone(Base):
+    __tablename__ = 'milestones'
+
+    id = Column(Integer, primary_key=True)
+    name = Column(String)
+    description = Column(Text)
+    uuid = Column(String)
+
+    def __str__(self):
+        return f"{self.__class__.__qualname__} '{self.name}'"

+ 24 - 0
pyplanner/utils.py

@@ -0,0 +1,24 @@
+from termcolor import colored
+
+
+class Term:
+    def success(text):
+        return colored(text, 'green')
+
+    def failure(text):
+        return colored(text, 'red')
+
+    def important(text):
+        return colored(text, 'red')
+
+    def not_important(text):
+        return colored(text, 'green')
+
+    def mildly_important(text):
+        return colored(text, 'yellow')
+
+    def bold(text):
+        return colored(text, attrs=['bold'])
+
+    def uuid(text):
+        return colored(text, 'magenta')

+ 7 - 0
requirements.txt

@@ -0,0 +1,7 @@
+Click
+colorama
+Jinja2
+pydantic
+PyYaml
+SQLAlchemy
+termcolor

+ 61 - 0
setup.cfg

@@ -0,0 +1,61 @@
+[bumpversion]
+current_version = 0.1.0
+commit = True
+tag = True
+allow_dirty = True
+
+[metadata]
+name = PyPlanner
+author = theenglishway
+author_email = me@theenglishway.eu
+version = attr: pyplanner.__version__
+description = PyPlanner
+long_description = file: README.rst, CHANGELOG.rst
+license = BSD 3-Clause License
+classifiers = 
+	Programming Language :: Python :: 3
+	Programming Language :: Python :: 3.7
+url = https://code.theenglishway.eu/theenglishway-corp/humanizen/
+
+[options]
+zip_safe = False
+include_package_data = True
+packages = find:
+install_requires = 
+	Cerberus
+	Click
+	colorama
+	PyYaml
+	termcolor
+	TinyDb
+
+[options.packages.find]
+exclude = 
+	tests
+	tests.*
+
+[options.entry_points]
+console_scripts =
+	pyplanner = pyplanner.cli:main
+
+
+[bumpversion:file:pyplanner/__init__.py]
+search = __version__ = '{current_version}'
+replace = __version__ = '{new_version}'
+
+[tool:pytest]
+filterwarnings =
+    error
+    ignore::DeprecationWarning
+
+[coverage:run]
+branch = True
+source = pyplanner, tests
+
+[coverage:report]
+precision = 2
+
+[coverage:paths]
+paths = 
+	.
+	/tmp/build/*/source/

+ 3 - 0
setup.py

@@ -0,0 +1,3 @@
+from setuptools import setup
+
+setup()