Compare commits

..

1 Commits

Author SHA1 Message Date
Jakub Adamski
ba1be1ec14 fixes 2022-06-15 10:32:26 +02:00
9 changed files with 102 additions and 132 deletions

View File

@ -4,11 +4,11 @@ grammar brefing;
public <brefing> = <action> {action} (<git> {git} | [repozytorium] <repo> {repo});
<repozytoria> = gra - kolko i krzyzyk | zajecia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia;
<repozytoria> = gra - kolko i krzyzyk | zajęcia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia;
<git> = gicie | githubie | githubie;
<action> = [opowiedz | powiedz] co nowego na moim | [opowiedz | powiedz] co nowego w moich | (opowiedz | powiedz) mi co sie u mnie dzialo na;
<action> = [opowiedz | powiedz] co nowego na moim | [opowiedz | powiedz] co nowego w moim | (opowiedz | powiedz) mi co sie u mnie dzialo na;
<repo> = <repozytoria> {repozytoria};

View File

@ -4,7 +4,7 @@ grammar issues;
public <issue> = (pokaz [mi] [moje] | wyswietl [mi] [moje] | powiedz mi o| przedstaw [mi] [moje]) [nowe | nowych] <issues> [<time>] w <repo>;
<repozytoria> = gra - kolko i krzyzyk | zajecia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia;
<repozytoria> = gra - kolko i krzyzyk | zajęcia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia;
<time> = <time_when> {time_when} [ostatniego | ostatnich] [<liczba> {liczba}] <timeunit> {timeunit};
@ -16,7 +16,7 @@ public <issue> = (pokaz [mi] [moje] | wyswietl [mi] [moje] | powiedz mi o| przed
<new> = [nowe] | [nowych];
<repo> = <repozytoria> {repo};
<repo> = <repozytoria> {repozytoria};
<liczba> = (dwa | dwoch | dwojki) | (trzy | trzech | trojki ) | (cztery | czterech) | (piec | pieciu ) | (szesc | szesciu ) | (siedem| siedmiu) | (osiem | osmiu) | (dziewiec | dziewieciu );

View File

@ -8,14 +8,14 @@ public <notifications> = (pokaz [mi] | wyświetl [mi] | przedstaw [mi]) [<liczba
<time_when> = z | od | ze | w;
<repozytoria> = gra - kolko i krzyzyk | zajecia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia;
<repo> = <repozytoria> {repo};
<timeunit> = (miesiaca | miesiecy | <miesiac>) | tygodni | miesiecy | dni;
<liczba> = (dwa | dwoch | dwojki | dwojki) | (trzy | trzech | trojki ) | (cztery | czterech) | (piec | pieciu ) | (szesc | szesciu ) | (siedem | siedmiu) | (osiem | osmiu) | (dziewiec | dziewieciu );
<powiadomienia> = notif | pow | powiadomienia | notification | notifications;
<repo> = <repozytoria> {repo};
<repozytoria> = gra - kolko i krzyzyk | zajęcia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia;
<miesiac> = (styczen | stycznia | styczniu) | (luty | lutego | lutym) | (marzec | marca | marcu) | (kwiecien | kwietniu | kwietnia) | (maj | maja | maju) | (czerwiec | czerwca | czerwcu) | (lipiec | lipca | lipcu) | (sierpien | sierpnia | sierpniu) | (wrzesien | wrzesieniu | wrzesnia) | (pazdziernik | październiku | pazdziernika) | (listopad | listopada | listopadzie) | (grudzien | grudnia | grudniu);

View File

@ -4,11 +4,11 @@ grammar pullrequest;
public <pull_request_zapytanie> = <action> {action} <new> <pullrequest> [w <repo> {repo}];
<repozytoria> = gra - kolko i krzyzyk | zajecia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia;
<repozytoria> = gra - kolko i krzyzyk | zajęcia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia;
<new> = [nowe] | [nowych];
<repo> = <repozytoria> {repo};
<repo> = <repozytoria> {repozytoria};
<pullrequest> = pull requesty | pull requestow;

View File

@ -2,9 +2,9 @@
grammar tests;
public <tests> = (pokaz mi | wyswietl mi | powiedz mi o | przedstaw mi) [<new>] <test> {test} [<time>] w <repo>;
public <tests> = (pokaz mi | wyswietl mi | powiedz mi o | przedstaw mi) [<new>] <test> {test} w <repo> [<time>];
<repozytoria> = gra - kolko i krzyzyk | zajecia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia;
<repozytoria> = gra - kolko i krzyzyk | zajęcia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia;
<time> = <time_when> {time_when} [ostatniego | ostatnich] [<liczba> {liczba}] <timeunit> {timeunit};
@ -18,7 +18,7 @@ public <tests> = (pokaz mi | wyswietl mi | powiedz mi o | przedstaw mi) [<new>]
<new> = [nowe] | [nowych];
<repo> = <repozytoria> {repo};
<repo> = <repozytoria> {repozytoria};
<test> = testy | testach | test;

View File

@ -1,5 +1,4 @@
repositoriesMock = ["repo1", "repo2", "repo3", "repo4"]
repositoriesPublicMock = ["repo1", "repo2", "repo3"]
repositoriesMock = ["repo1", "repo2", "repo3"]
issuesMock = [
{
"name": "Issue 1",
@ -68,7 +67,7 @@ def listRepositories():
return repositoriesMock
def listPublicRepositories():
return repositoriesPublicMock
return repositoriesMock
def listRepositoryIssues(repositoryName):
return issuesMock
@ -79,8 +78,8 @@ def listRepositoryPullRequests(repositoryName):
def listNotifications(repositoryName):
return notificationsMock
def listRepositoryTests(repositoryName):
return testMock
def getBrefing():
return brefingMock
def listRepositoryTests(repositoryName):
return testMock

View File

@ -5,10 +5,10 @@ import sys
commands = [
'pomoc',
'powiedz co nowego na moim repozytorium nazwa',
'powiedz co nowego w moim repozytorium x',
'do widzenia',
'pokaz issue w',
'pokaz mi powiadomienia w',
'pokaz mi powiadomienia',
'jakie sa pull requesty',
'pokaz mi testy w'
]
@ -56,98 +56,74 @@ howmany = ["Ile ostatnich elemntów chcesz zobaczyć?", "Ile ostatnich elmentów
error_time = ["Podano nie prawidłowy czas, popraw ramy czasowe", "Czas jest nie prawidłowy, podaj ponownie", "Podaj przedział czasowy jeszcze raz"]
error_repo = ["Podano nieprawidłową nazwę repozytorium", "Podaj ponownie nazwę repozytorium, ponieważ podania nie prawidłową"]
def find(args, key):
#print(args, key)
for item in args:
if item[0] == key:
return item
def generator_jezyka_nautalnego(frame, tactic, state, text):
#print(tactic)
if tactic == 'null':
beastMatch = dl.get_close_matches(text, commands)
print(random.choice(unknown))
if len(beastMatch) > 0:
print(random.choice(other) + ', '.join(beastMatch))
elif tactic[0] == False: #ASK
_, required_empty, act, req_args, opt_args = tactic
# print('DEBUG: ', act, 'req', req_args, opt_args,sep = '\n')
if required_empty[0] == 'repo':
print("Dodaj nazwę repozytorium na końcu komendy")
print("np. w nazwarepozytorium")
else:
print(f'Proszę podaj {required_empty[0]}')
elif tactic[1] == 'help':
print(random.choice(help))
print("Dostępne komendy: \n - " + '\n - '.join(commands))
elif tactic == 'bye':
print(random.choice(bye))
print()
sys.exit(0)
elif tactic[0] == 'ANSWER' and tactic[1] == 'issues':
print("Lista issues w repozytorium " + tactic[2][0][1] + ":")
issues = listRepositoryIssues(tactic[2][0][1])
for issue in issues:
print(issue['name'])
print(issue['description'])
print(issue['status'])
print()
elif tactic[0] == True:
_, act, req_args, opt_args = tactic
# print('DEBUG: ', act, 'req', req_args, opt_args,sep = '\n')
if act == 'help':
print(random.choice(help))
print("Dostępne komendy: \n - " + '\n - '.join(commands))
elif act == 'bye':
print(random.choice(bye))
elif tactic[0] == 'ANSWER' and tactic[1] == 'pullrequest':
print("Lista pull requestów w repozytorium " + tactic[2][0][1] + ":")
prs = listRepositoryPullRequests(tactic[2][0][1])
for pr in prs:
print(pr['name'])
print(pr['description'])
print(pr['state'])
print()
sys.exit(0)
elif act == 'hello':
print(random.choice(welcome))
elif tactic[0] == 'ANSWER' and tactic[1] == 'brefing':
print("Podsumowanie w repozytorium " + tactic[2][0][1] + ":")
brefings = getBrefing()
for brefing in brefings:
print(brefing['name'])
print(brefing['description'])
print()
elif act == 'issues':
print("Lista issues w repozytorium " + find(req_args, 'repo')[0] + ":")
issues = listRepositoryIssues(find(req_args, 'repo'))
for issue in issues:
print(issue['name'])
print(issue['description'])
print(issue['status'])
print()
elif tactic[0] == 'ANSWER' and tactic[1] == 'tests':
print("Lista testów w repozytorium " + tactic[2][0][1] + ":")
tests = listRepositoryTests(tactic[2][0][1])
for test in tests:
print(test['name'])
print(test['description'])
print(test['status'])
print()
elif act == 'pullrequest':
print("Lista pull requestów w repozytorium " + find(req_args, 'repo')[0] + ":")
prs = listRepositoryPullRequests(find(req_args, repo))
for pr in prs:
print(pr['name'])
print(pr['description'])
print(pr['state'])
print()
elif tactic[0] == 'ANSWER' and tactic[1] == 'notifications':
print("Lista powidomień w repozytorium " + tactic[2][0][1] + ":")
notifications = listNotifications(tactic[2][0][1])
for notification in notifications:
print(notification['name'])
print(notification['description'])
print()
elif act == 'brefing':
print("Podsumowanie w repozytorium " + find(req_args, 'repo')[0] + ":")
brefings = getBrefing()
for brefing in brefings:
print(brefing['name'])
print(brefing['description'])
print()
elif tactic == 'hello':
print(random.choice(welcome))
elif act == 'tests':
print("Lista testów w repozytorium " + find(req_args, 'repo')[0] + ":")
tests = listRepositoryTests(find(req_args, 'repo')[0])
for test in tests:
print(test['name'])
print(test['description'])
print(test['status'])
print()
elif act == 'notifications':
print("Lista powidomień w repozytorium " + find(req_args, 'repo')[0] + ":")
notifications = listNotifications(find(req_args, 'repo')[0])
for notification in notifications:
print(notification['name'])
print(notification['description'])
print()
#
# elif tactic[0] == 'QUESTION' and act[0] == 'repo':
# print("Dodaj nazwę repozytorium na końcu komendy")
# print("np. w nazwarepozytorium")
else:
print(tactic)
elif tactic[0] == 'QUESTION' and tactic[1][0] == 'repo':
print("Dodaj nazwę repozytorium na końcu komendy")
print("np. w nazwarepozytorium")
else:
print('ERROR')
print(tactic)
print()

View File

@ -12,10 +12,6 @@ dialogue_state = {
'counter': 0
}
def add_fact(key, value):
global dialogue_state
dialogue_state['facts'][key] = value
def monitor_stanu_dialogowego(frame):
not_pivot_acts = ['time',

View File

@ -1,5 +1,4 @@
from apimock import *
from monitor_stanu_dialogowego import add_fact
gramar_slots = {
'pullrequest': (('action', 'optional'),
@ -12,7 +11,7 @@ gramar_slots = {
('repo', 'required')
),
'tests': (('test', 'optional'),
('repo', 'required')
('repozytoria', 'required')
),
'time': (('time_when', 'required'),
('timeunit', 'required'),
@ -21,14 +20,14 @@ gramar_slots = {
'issues': (('time_when','optional'),
('liczba','optional'),
('timeunit','optional'),
('repo', 'required')
('repozytoria', 'required')
),
'number': (('liczba', 'required')
),
'help': (('functions', 'optional'),
('help', 'optional')
),
'repo': (('repo', 'required')
'repo': (('repozytoria', 'required')
),
'hello': (),
'bye': (),
@ -38,22 +37,22 @@ gramar_slots = {
def taktyka_dialogu(state, frame):
if frame['act'] == 'null':
return 'null'
# if state['current_context'] in ['hello', 'pomoc', 'bye']:
# return short_thread(state)
# else:
return long_thread(state)
if state['current_context'] in ['hello', 'pomoc', 'bye']:
return short_thread(state)
else:
return long_thread(state)
# def short_thread(state):
# if state['current_context'] == 'pomoc':
# return state['current_context']
# else:
# return state['current_context']
def short_thread(state):
if state['current_context'] == 'pomoc':
return state['current_context']
else:
return state['current_context']
def validate_repo(repo):
if repo not in listRepositories():
print('repo not in listRepositories')
return 'repo not in listRepositories'
if repo not in listPublicRepositories():
print('repo not in listPublicRepositories')
return 'repo not in listPublicRepositories'
def long_thread(state):
act = state['current_context']
@ -64,13 +63,13 @@ def long_thread(state):
slots = topic['slots']
required = gramar_slots[act]
req_args, opt_args = agregate(required, slots)
facts = state['facts']
facts = state['facts']# osobno validuj repo z req i z facts
req_args = add_facts(req_args, facts)
opt_args = add_facts(opt_args, facts)
required_empty = check_req(req_args)
if required_empty:
return False, required_empty[0], act, req_args, opt_args #slot do uzupełnienia
return True, act, req_args, opt_args #wyświetl użytkownikowi
return "QUESTION", required_empty[0] #slot do uzupełnienia
return "ANSWER", act, req_args, opt_args #wyświetl użytkownikowi
def check_req(req_args):
req = []
@ -82,13 +81,12 @@ def check_req(req_args):
def add_facts(args, facts):
for key, value in facts.items():
for idx, item in enumerate(args):
if key == item[0]:
if value != None and item[1] == None:
args[idx][1] = value
if key == 'repo':
validate_repo(value)
if value == None and item[1] != None:
add_fact(key, item[1])
if key == item[0] and value != None and item[1] == None:
args[idx] = value
if key == 'repo':
validate_repo(value)
return args
def agregate(grammar, slots):
@ -103,3 +101,4 @@ def agregate(grammar, slots):
elif item[1] == 'optional':
opt_args.append([item[0], value])
return req_args, opt_args