Import pygrader, instead of pygrader.ENCODING.
authorW. Trevor King <wking@tremily.us>
Wed, 19 Sep 2012 21:37:33 +0000 (17:37 -0400)
committerW. Trevor King <wking@tremily.us>
Thu, 20 Sep 2012 00:15:28 +0000 (20:15 -0400)
If your just import ENCODING, changing the value rebinds the local
copy, but other modules will still see the original value.

bin/pg.py
pygrader/storage.py

index b308278b1c0412419b536ab7e895e0c322be13a9..d035d1812c3660ef65e8a966a4c6fba89e3df5fd 100755 (executable)
--- a/bin/pg.py
+++ b/bin/pg.py
@@ -30,8 +30,8 @@ import sys as _sys
 
 import pgp_mime as _pgp_mime
 
+import pygrader as _pygrader
 from pygrader import __version__
-from pygrader import ENCODING as _ENCODING
 from pygrader import LOG as _LOG
 from pygrader import color as _color
 from pygrader.email import test_smtp as _test_smtp
@@ -185,12 +185,12 @@ if __name__ == '__main__':
         _pgp_mime.LOG.addHandler(syslog)
     _color.USE_COLOR = args.color
 
-    _ENCODING = args.encoding
+    _pygrader.ENCODING = args.encoding
 
     config = _configparser.ConfigParser()
     config.read([
             _os_path.expanduser(_os_path.join('~', '.config', 'smtplib.conf')),
-            ], encoding=_ENCODING)
+            ], encoding=_pygrader.ENCODING)
 
     func_args = _inspect.getargspec(args.func).args
     kwargs = {}
index 892f18e788634eef61377fde8863edc24bb973f0..b69b798a66f90f0fa7cafb8ece519a491174c1eb 100644 (file)
@@ -26,8 +26,8 @@ import re as _re
 import sys as _sys
 import time as _time
 
+import pygrader as _pygrader
 from . import LOG as _LOG
-from . import ENCODING as _ENCODING
 from .model.assignment import Assignment as _Assignment
 from .model.course import Course as _Course
 from .model.grade import Grade as _Grade
@@ -58,7 +58,8 @@ def load_course(basedir):
     """
     _LOG.debug('loading course from {}'.format(basedir))
     config = _configparser.ConfigParser()
-    config.read([_os_path.join(basedir, 'course.conf')], encoding=_ENCODING)
+    config.read([_os_path.join(basedir, 'course.conf')],
+                encoding=_pygrader.ENCODING)
     name = config.get('course', 'name')
     names = {'robot': [config.get('course', 'robot').strip()]}
     for option in ['assignments', 'professors', 'assistants', 'students']:
@@ -294,8 +295,8 @@ def load_grade(basedir, assignment, person):
     _LOG.debug('loading {} grade for {}'.format(assignment, person))
     path = assignment_path(basedir, assignment, person)
     gpath = _os_path.join(path, 'grade')
-    g = parse_grade(_io.open(gpath, 'r', encoding=_ENCODING),
-                        assignment, person)
+    g = parse_grade(_io.open(gpath, 'r', encoding=_pygrader.ENCODING),
+                    assignment, person)
     #g.late = _os.stat(gpath).st_mtime > assignment.due
     g.late = _os_path.exists(_os_path.join(path, 'late'))
     npath = _os_path.join(path, 'notified')
@@ -348,7 +349,7 @@ def save_grade(basedir, grade):
     if not _os_path.isdir(path):
         _os.makedirs(path)
     gpath = _os_path.join(path, 'grade')
-    with _io.open(gpath, 'w', encoding=_ENCODING) as f:
+    with _io.open(gpath, 'w', encoding=_pygrader.ENCODING) as f:
         f.write('{}\n'.format(grade.points))
         if grade.comment:
             f.write('\n{}\n'.format(grade.comment.strip()))