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)
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:
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"""
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())
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 = """
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()
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')
) 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), )
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')) а
"-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"),
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'
""" 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')
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')