Giter VIP home page Giter VIP logo

goit-pyweb-hw-02's Introduction

Assistant bot

Pre-installation

$ pip[3] install poetry
$ poetry config virtualenvs.in-project true

Installation

$ git clone https://github.com/lexhouk/goit-pyweb-hw-02.git goit-pyweb-hw-02
$ cd goit-pyweb-hw-02
$ poetry shell
$ poetry install

Usage

$ python main.py

or with debug:

$ python main.py --debug

Classes diagram

classDiagram
    Field <|--* Name
    Field <|--* Phone
    Field <|--* Birthday

    Name <|--* Record
    Phone "0..*" <|--o "1" Record
    Birthday <|--o Record

    UserDict <|-- AddressBook
    Record "0..*" <|--o "1" AddressBook

    Exception <|-- PhoneError
    Exception <|-- BirthdayError
    Exception <|-- RecordError

    ABC <|-- Reader
    Reader <|-- CliReader

    ABC <|-- Writer
    Writer <|-- CliWriter

    class Field {
        <<abstract>>
        +str value
        +__init__(str value) None
        +__str__() str
    }

    Phone: +__init__(str value) None

    class Birthday {
        +str FORMAT
        +__init__(str value) None
        +__str__() str
    }

    class Record {
        +Name name
        +list~Phone~ phones
        +Birthday|None birthday
        +__init__(str name) None
        +__str__() str
        #find(str phone, bool get_instance) int | Phone | None
        +add_phone(str phone) None
        +remove_phone(str phone) None
        +edit_phone(str current, str new) None
        +find_phone(str phone) Phone | None
        +add_birthday(str birthday) None
    }

    class UserDict {
        <<abstract>>
    }

    class AddressBook {
        +data: Dict[str, Record]
        +add_record(Record record) None
        +find(str name) Record
        +delete(str name) None
        date_to_string(datetime.datetime date) str$
        find_next_weekday(datetime.datetime start_date, int weekday) datetime.datetime$
        +adjust_for_weekend(datetime.datetime birthday) datetime.datetime
        +get_upcoming_birthdays(int days) Dict[str, list[str]]
    }

    class Exception {
        <<abstract>>
    }

    PhoneError: +__init__() None
    BirthdayError: +__init__() None

    class RecordError {
        +str MESSAGE
        +__init__() None
    }

    class ABC {
        <<abstract>>
    }

    class Reader {
        <<abstract>>
        -prompt
        +__init__(str prompt) None
        read() tuple~str~*
    }

    CliReader: +read() tuple~str~

    class Writer {
        <<interface>>
        write(str data) None*
    }

    class CliWriter {
        +__init__() None
        +write(str data) None
    }
Loading

goit-pyweb-hw-02's People

Contributors

lexhouk avatar

Watchers

 avatar

goit-pyweb-hw-02's Issues

Docker

Створіть Dockerfile, в якому встановіть домашню роботу "Персональний помічник" та запустіть його як окремий застосунок в окремому контейнері. Для безпосередньої взаємодії зі своїм CLI застосунком "Персональний помічник", запустіть Docker контейнер в інтерактивному режимі з приєднаним терміналом. Використовуйте параметри -it при запуску контейнера:

$ docker run -it <image-name> /bin/bash

Після цього ви потрапите до оболонки контейнера, де зможете викликати ваш застосунок "Персональний помічник".

Якщо контейнер вже працює, ви можете запускати команди в ньому, використовуючи docker exec. Наприклад:

$ docker exec -it <container-id> /bin/bash

Критерії:

  • Створено коректний Dockerfile:
    • Вказано базовий образ, який відповідає необхідностям застосунку.
    • Додано інструкції для копіювання файлів застосунку або джерел коду всередину образу.
    • Встановлено необхідні залежності застосунку через команди в Dockerfile.
    • Вказано команди для запуску застосунку "Персональний помічник" як основної команди контейнера CMD або ENTRYPOINT.
  • Виконання команди docker build для створення образу із Dockerfile відбувається без помилок.
  • Існує можливість взаємодії з застосунком "Персональний помічник" через командний рядок всередині контейнера.

Віртуальне середовище

Візьміть вашу останню домашню роботу с курсу Core проект "Персональний помічник". Скористайтеся будь-яким зручним інструментом pipenv або poetry, на ваш вибір, для створення віртуального середовища для вашої програми. Зафіксуйте версію Python у цьому середовищі (вкажіть чітко: який Python слід використовувати) та налаштуйте ваше робоче середовище (IDE) для роботи зі створеним середовищем. Якщо використовували сторонні проекти, вони також повинні тепер мати конкретну версію.

Критерії:

  • Чітко зазначено, який з інструментів pipenv або poetry використано для створення віртуального середовища.
  • Віртуальне середовище успішно створено за допомогою обраного інструменту.
  • У конфігураційному файлі віртуального середовища, Pipfile для pipenv або pyproject.toml для poetry, чітко зазначена версія Python, яку слід використовувати для проекту.
  • Якщо існують, то усі необхідні залежності проекту вказані та зафіксовані у файлі залежностей Pipfile для pipenv або pyproject.toml для poetry.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.