import pinboard
import requests
import typer

from bs4 import BeautifulSoup
from envparse import Env
from pathlib import Path
from stop_words import safe_get_stop_words
from titlecase import titlecase
from unidecode import unidecode
from yarl import URL

env = Env(GITHUB_USERNAME=str, GITHUB_TOKEN=str, PINBOARD_TOKEN=str)

GITHUB_TOKEN = env.str("GITHUB_TOKEN")
GITHUB_USERNAME = env.str("GITHUB_USERNAME")
PINBOARD_TOKEN = env.str("PINBOARD_TOKEN")

IGNORE_WORDS = set(
    [word.lower() for word in Path("IGNORE_WORDS.txt").read_text().split()])

STOP_WORDS = set(
    [word.lower() for word in Path("STOP_WORDS.txt").read_text().split()])
STOP_WORDS.update(set(safe_get_stop_words("english")))

IGNORE_TAGS = IGNORE_WORDS | STOP_WORDS


def get_dev_to_info_for_url(url):
    try:
        req = requests.get(url, timeout=1.0)
Ejemplo n.º 2
0
          HTTP_PORT=dict(cast=int, default='5000'),
          DATA_DIR=dict(cast=str, default='data'),
          DOWNLOADS_PER_DAY=dict(cast=int, default='10'))
env.read_envfile()

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter(
    '%(asctime)s-%(name)s-%(levelname)s: %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)

raw_file_accessor = FileAccessor(env.str('DATA_DIR'), 'raw', 'zip')
patched_file_accessor = FileAccessor(env.str('DATA_DIR'), 'patched', 'zip')
load_protection = LoadProtection(
    env.str('DATA_DIR'), max_downloads_per_day=env.int('DOWNLOADS_PER_DAY'))
rio_downloader = RioClientDownloader(raw_file_accessor)
rio_tuner = RioZipTuner(raw_file_accessor, patched_file_accessor)
personalRecommendation = PersonalRecommendation()

running = True
enabled_scheduler = True


def format_date(date_long, message_in_case_date_is_zero):
    if date_long > 0.0:
        return datetime.fromtimestamp(date_long)
    else:
Ejemplo n.º 3
0
from pprint import pprint
from psycopg2 import connect
from envparse import Env
from datetime import date, datetime
from abc import ABC, abstractmethod

env = Env()
CONN_STRING = env.str("CONN")
conn = connect(CONN_STRING)


class DataRequiredException(Exception):
    pass


class BaseModel(ABC):
    @abstractmethod
    def get_data_by_column(self, *args):
        pass

    @abstractmethod
    def save(self):
        pass

    @abstractmethod
    def delete_data_by_id(self):
        pass


class Departments(BaseModel):
    __CREATE_DEPARTMENTS_QUERY = """INSERT INTO departments (department_name) VALUES (%s) RETURNING department_id"""
Ejemplo n.º 4
0
from envparse import Env
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

env = Env()
DB_URL = env.str("DB_URL")

app = Flask(__name__)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URL

db = SQLAlchemy(app)


class CustomersFromTg(db.Model):
    user_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    nickname = db.Column(db.String(100), nullable=False, unique=True)
    name = db.Column(db.String(100), nullable=False)
    surname = db.Column(db.String(100), nullable=False)
    chat_id = db.Column(db.Integer, nullable=False)
    is_subscribed = db.Column(db.Boolean, default=False)
    create_dt = db.Column(db.DateTime, default=datetime.utcnow())


class CustomersFromWebsite(db.Model):
    user_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    nickname = db.Column(db.String(100), nullable=False)
    name = db.Column(db.String(100), nullable=False)
    surname = db.Column(db.String(100), nullable=False)
    create_dt = db.Column(db.DateTime, default=datetime.utcnow())
Ejemplo n.º 5
0
import psycopg2
from psycopg2 import sql
from envparse import Env

env = Env()
MY_PASS = env.str("MY_PASS")

orders = [("Friday", 'order_type_1', 'Active', 12344, 1),
          ("Friday", 'order_type_2', 'Active', 45745, 1),
          ("Sunday", 'order_type_3', 'Closed', 45657, 2),
          ("Sunday", 'order_type_4', 'Active', 56777, 2),
          ("Sunday", 'order_type_4', 'Closed', 78978, 3)]

employees = [("Косенко Руслан Віталійвоч", "Сварщик", 1),
             ("Бмшко Микита Андрійович", "Сварщик", 1),
             ("Харлан Володимир Миколайович", "Механик", 3),
             ("Харлан Володимир Миколайович 2", "Механик", 3),
             ("Подиман Григорій Сергійович", "Програмист", 5),
             ("Телестакова Вікторія Вікторівна", "Менеджер", 2),
             ("Кто еще 1", "Програмист", 5),
             ("Кто еще 2", "Програмист", 5),
             ("Кто еще 3", "Програмист", 5),
             ("Кто еще 4", "Програмист", 5)]

departments = ["department_1",
               "department_2",
               "department_3",
               "department_4",
               "department_5"]

DEPARTMENTS_TABLE = """
Ejemplo n.º 6
0
from envparse import Env
import click

env = Env(
  LOG_LEVEL=dict(cast=str, default='info'),
)

@click.command()
@click.option("--log-level", default=env.str("LOG_LEVEL"))
def main(log_level):
    print("Clickapp...\n")
    print(log_level)


if __name__ == "__main__":
    main()

Ejemplo n.º 7
0
from envparse import Env

env = Env()

MONGO_HOST = env.str('MONGO_HOST', default='mongo')
MONGO_PORT = env.str('MONGO_PORT', default='27017')
MONGO_DB_NAME = env.str('MONGO_DB_NAME', default='notification_service')

NOTIFICATION_COLLECTION = env.str('NOTIFICATION_COLLECTION',
                                  default='notifications')

DATABASE_URL = f'mongodb://{MONGO_HOST}:{MONGO_PORT}'

NOTIFIER_ENDPOINT = env.str('NOTIFIER_ENDPOINT',
                            default='http://notifier:8081/api/task')

TIMEZONE = env.str('TIMEZONE', default='Europe/Samara')
Ejemplo n.º 8
0
        )
    except black.NothingChanged:
        return code


@app.route('/autopep8', methods=['POST'])
@as_formatter
def autopep8ify(code, width):
    return autopep8.fix_code(code)


@app.route('/bs4', methods=['POST'])
@as_formatter
def bs4ify(code, width):
    soup = bs4.BeautifulSoup(code, 'html5lib')
    # If the input document did not smell like a full HTML document, only
    # output the body; `html5lib` will otherwise insist on having all the
    # accoutrements.
    if not any(p in code.lower() for p in ('<html', '<head', '<body')):
        soup = soup.find('body', recursive=True)
        soup.hidden = True  # h/t https://groups.google.com/forum/#!topic/beautifulsoup/-VQdp2p0I8E
    return soup.prettify(formatter=bs4_formatter)


if __name__ == '__main__':
    app.run(
        host=env.str('NICEN_PY_HOST', default='0.0.0.0'),
        port=env.int('NICEN_PY_PORT', default='42080'),
        debug=env.bool('DEBUG', default=False),
    )
Ejemplo n.º 9
0
def initiative_add():
    name = request.args.get('name')
    value = request.args.get('value')
    holder = init.get_session_holder()
    holder.add_actor(name, int(value))
    return render_template('actors.html', init=holder)


@app.route('/api/v1/set_init')
def initiative_delay():
    actor_id = request.args.get('actor_id')
    value = request.args.get('value')
    holder = init.get_session_holder()
    holder.set_init_to_actor(actor_id, int(value))
    return render_template('actors.html', init=holder)


@app.route('/api/v1/delete')
def delete_actor():
    actor_id = request.args.get('actor_id')
    holder = init.get_session_holder()
    holder.delete_actor(actor_id)
    return render_template('actors.html', init=holder)


if __name__ == '__main__':
    print('INITIATIVE_PARSER_HOST =', env.str('INITIATIVE_PARSER_HOST'))
    print('INITIATIVE_PARSER_PORT =', env.int('INITIATIVE_PARSER_PORT'))
    app.run(host=env.str('INITIATIVE_PARSER_HOST'),
            port=env.int('INITIATIVE_PARSER_PORT'))
а
Ejemplo n.º 10
0
    "-o",
    "--output",
    type=click.Choice(["stdout", "azuredevops"], case_sensitive=False),
    default="stdout",
    help="Output driver",
)
@click.option(
    "-t",
    "--textonly",
    is_flag=True,
    help="Text-only output (disable emoji)",
    default=False,
)
@click.option(
    "--azdo-organization",
    default=env.str("SYSTEM_TEAMFOUNDATIONSERVERURI"),
    help="Azure DevOps Organization Service URL",
)
@click.option(
    "--azdo-project",
    default=env.str("SYSTEM_TEAMPROJECT"),
    help="Azure DevOps Project",
)
@click.option(
    "--azdo-repository",
    default=env.str("BUILD_REPOSITORY_ID"),
    help="Azure DevOps Repository ID",
)
@click.option(
    "--azdo-pullrequest",
    default=env.str("SYSTEM_PULLREQUEST_PULLREQUESTID"),
Ejemplo n.º 11
0
import json
from pathlib import Path

from envparse import Env


this_dir = Path(__file__).parent

env = Env()
env.read_envfile()

DEBUG_MODE = env.bool('DEBUG_MODE', default=True)
LOG_LEVEL = env('LOG_LEVEL', default='INFO').upper()
TELEGRAM_API_TOKEN = env.str('TELEGRAM_API_TOKEN')

assert TELEGRAM_API_TOKEN, 'TELEGRAM_API_TOKEN not provided.'

access_ids_file = Path(env.str('ACCESS_IDS_FILE', default=str(this_dir / 'allowed_accounts.json')))
assert access_ids_file.exists(), f'No such file: {access_ids_file=}'
with access_ids_file.open(encoding='utf-8') as f:
    ACCESS_IDS = set(json.load(f))

DB_NAME = 'database/timesheet.db'
DB_MIGRATIONS_DIR = 'database/migrations'
Ejemplo n.º 12
0
"""
Copyright Ⓒ 2020 "Sberbank Real Estate Center" Limited Liability Company. Licensed under the MIT license.
Please, see the LICENSE.md file in project's root for full licensing information.
"""
import os

from envparse import Env

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

env = Env()
env_file_path = os.path.join(BASE_DIR, '.env')
env.read_envfile(env_file_path)

APP_NAME = 'app_name'
HOST = env.str('HOST', default='0.0.0.0')

API_PORT = env.int('API_PORT', default=8090)
AMQ_PORT = env.int('AMQ_PORT', default=8091)
SCHEDULE_PORT = env.int('SCHEDULE_PORT', default=8092)

WORKERS = env.int('WORKERS', default=1)

ENV = env.str('ENV', default='local')
DEBUG = env.bool('DEBUG', default=False)
AUTO_RELOAD = env.bool('AUTO_RELOAD', default=False)

DB_HOST = env.str('DB_HOST', default='localhost')
DB_PORT = env.int('DB_PORT', default=5455)
DB_NAME = env.str('DB_NAME', default='example')
DB_USER = env.str('DB_USER', default='example')
Ejemplo n.º 13
0
from envparse import Env

env = Env()

NOTIFIER_LOGIN = env.str('NOTIFIER_LOGIN', default='login')
NOTIFIER_PASSWORD = env.str('NOTIFIER_PASSWORD', default='password')
NOTIFIER_SMTP_HOST = env.str('NOTIFIER_SMTP_HOST', default='smtp.mail.ru')
NOTIFIER_SMTP_PORT = env.int('NOTIFIER_SMTP_PORT', default=465)

BACKEND_CONFIRM_ENDPOINT = env.str(
    'BACKEND_CONFIRM_ENDPOINT',
    default='http://backend:8080/api/notification/confirm')