Hello, I'm using Python 3.5 and have two python scripts where one needs access to a class in the other script for authentication purposes.
The scripts runs through GitHub to poll for all pull requests and pull requests that meet a certain condition. The call from the second script to the class and variables in the first script are working, but I'm getting prompted for credentials several times. I wrapped the credentials in a class and created an object in the second script to access the class so that I would not be prompted for credentials in the second script. I've include both scripts below. I'm still new to python, but I think it's how I'm calling the class or the import in the second script??? Thanks in advance for your time. main_en_pr script: #! /usr/bin/python import os import github3 from github3 import login, GitHub, authorize from getpass import getuser, getpass import requests import csv import configparser import sys import datetime import codecs sys.__stdout__ = codecs.getwriter('utf8')(sys.stdout) # Class to authenticate to GitHub class GitAuth: gh = None def authentication(self): try: user = input('GitHub username: ') except KeyboardInterrupt: user = getuser() password = getpass('GitHub token for {0}: '.format(user)) self.gh = login(user, password) return user # Assign the class to an object myobjectx = GitAuth() # Assign the variable user to the function inside the class user = myobjectx.authentication() # Read the contents of the config file to pull in the repo name config = configparser.ConfigParser() config.read('repo.ini') repo = config.get('repos', 'repo1') result = myobjectx.gh.repository(user, repo).pull_requests('open') # Define function to list all pull requests def list_all_prs(): # open csv file and create header rows with open('c:\\pull.csv', 'w+', newline='') as f: csv_writer = csv.writer(f) csv_writer.writerow(['Id', 'Login', 'Title', 'Commits', 'Changed Files']) # iterate through repo for pull requests based on criteria and output to csv file for pr in result: data = pr.as_dict() changes = (myobjectx.gh.repository(user, repo).pull_request(data['number'])).as_dict() # keep print to console statement for testing purposes # print(changes['id'], changes['user']['login'], changes['title'], changes['commits'], changes['changed_files']) with open('c:\\pull.csv','a+',newline='') as f: csv_writer = csv.writer(f) csv_writer.writerow([changes['id'], changes['user']['login'], changes['title'], changes['commits'], changes['changed_files']]) list_all_prs() # Call the validation script exec(open("one_commit_one_file_change.py").read()) +++++++++++++++++++++++++++++++++++++++ one_commit_one_file_change script: #! /usr/bin/python import os import github3 from github3 import login, GitHub, authorize from getpass import getuser, getpass import requests import csv import configparser import sys import main_en_pr from main_en_pr import GitAuth import codecs sys.__stdout__ = codecs.getwriter('utf8')(sys.stdout) myobjecty = GitAuth() user = myobjecty.authentication() def one_commit_one_file_change_pr(): #open csv file and create header rows with open('c:\\commit_filechange.csv', 'w+') as f: csv_writer = csv.writer(f) csv_writer.writerow(['Login', 'Title', 'Commits', 'Changed Files','Deletions', 'Additions']) #iterate through repo for pull requests based on criteria and output to csv file for pr in main_en_pr.result: data = pr.as_dict() changes = (myobjecty.gh.repository(user, main_en_pr.repo).pull_request(data['number'])).as_dict() if changes['commits'] == 1 and changes['changed_files'] == 1: #keep print to console statement for testing purposes #print changes['user']['login'] with open('c:\\commit_filechange.csv', 'a+') as f: csv_writer = csv.writer(f) csv_writer.writerow([changes['user']['login'], changes['title'], changes['commits'], changes['changed_files']]) one_commit_one_file_change_pr() -- https://mail.python.org/mailman/listinfo/python-list