Use absolute imports in catch-all module
authorJeremy Stanley <fungi@yuggoth.org>
Wed, 23 May 2012 21:07:52 +0000 (21:07 +0000)
committerJeremy Stanley <fungi@yuggoth.org>
Wed, 23 May 2012 21:07:52 +0000 (21:07 +0000)
* lib/mudpy/misc.py: Absolute imports are more readable and easier to
debug, so use them.

lib/mudpy/misc.py

index 73f0253..1bef3f3 100644 (file)
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 """Miscellaneous functions for the mudpy engine."""
 
-# Copyright (c) 2004-2011 Jeremy Stanley <fungi@yuggoth.org>. Permission
+# Copyright (c) 2004-2012 Jeremy Stanley <fungi@yuggoth.org>. Permission
 # to use, copy, modify, and distribute this software is granted under
 # terms provided in the LICENSE file distributed with this software.
 
@@ -12,7 +12,7 @@ class Element:
 
     def __init__(self, key, universe, filename=None):
         """Set up a new element."""
-        import data
+        import mudpy.data
         import os.path
 
         # keep track of our key name
@@ -56,7 +56,7 @@ class Element:
 
             # add the file if it doesn't exist yet
             if filename not in self.universe.files:
-                data.DataFile(filename, self.universe)
+                mudpy.data.DataFile(filename, self.universe)
 
         # record or reset a pointer to the origin file
         self.origin = self.universe.files[filename]
@@ -169,23 +169,23 @@ class Element:
 
     def getlist(self, facet, default=None):
         """Return values as list type."""
-        import data
+        import mudpy.data
         if default is None:
             default = []
         value = self.get(facet)
         if value:
-            return data.makelist(value)
+            return mudpy.data.makelist(value)
         else:
             return default
 
     def getdict(self, facet, default=None):
         """Return values as dict type."""
-        import data
+        import mudpy.data
         if default is None:
             default = {}
         value = self.get(facet)
         if value:
-            return data.makedict(value)
+            return mudpy.data.makedict(value)
         else:
             return default
 
@@ -457,7 +457,7 @@ class Universe:
 
     def load(self):
         """Load universe data from persistent storage."""
-        import data
+        import mudpy.data
 
         # the files dict must exist and filename needs to be read-only
         if not hasattr(
@@ -475,7 +475,7 @@ class Universe:
                         del self.files[data_filename]
 
             # start loading from the initial file
-            data.DataFile(self.filename, self)
+            mudpy.data.DataFile(self.filename, self)
 
         # make a list of inactive avatars
         inactive_avatars = []
@@ -575,7 +575,7 @@ class User:
 
     def __init__(self):
         """Default values for the in-memory user variables."""
-        import telnet
+        import mudpy.telnet
         self.account = None
         self.address = ""
         self.authenticated = False
@@ -755,12 +755,15 @@ class User:
 
     def adjust_echoing(self):
         """Adjust echoing to match state menu requirements."""
-        import telnet
-        if telnet.is_enabled(self, telnet.TELOPT_ECHO, telnet.US):
+        import mudpy.telnet
+        if mudpy.telnet.is_enabled(self, mudpy.telnet.TELOPT_ECHO,
+                                   mudpy.telnet.US):
             if menu_echo_on(self.state):
-                telnet.disable(self, telnet.TELOPT_ECHO, telnet.US)
+                mudpy.telnet.disable(self, mudpy.telnet.TELOPT_ECHO,
+                                     mudpy.telnet.US)
         elif not menu_echo_on(self.state):
-            telnet.enable(self, telnet.TELOPT_ECHO, telnet.US)
+            mudpy.telnet.enable(self, mudpy.telnet.TELOPT_ECHO,
+                                mudpy.telnet.US)
 
     def remove(self):
         """Remove a user from the list of connected users."""
@@ -778,7 +781,7 @@ class User:
         prepend_padding=True
     ):
         """Send arbitrary text to a connected user."""
-        import telnet
+        import mudpy.telnet
 
         # unless raw mode is on, clean it up all nice and pretty
         if not raw:
@@ -830,7 +833,8 @@ class User:
                 output = wrap_ansi_text(output, wrap)
 
             # if supported by the client, encode it utf-8
-            if telnet.is_enabled(self, telnet.TELOPT_BINARY, telnet.US):
+            if mudpy.telnet.is_enabled(self, mudpy.telnet.TELOPT_BINARY,
+                                       mudpy.telnet.US):
                 encoded_output = output.encode("utf-8")
 
             # otherwise just send ascii
@@ -839,12 +843,14 @@ class User:
 
             # end with a terminator if requested
             if add_prompt or add_terminator:
-                if telnet.is_enabled(self, telnet.TELOPT_EOR, telnet.US):
-                    encoded_output += telnet.telnet_proto(telnet.IAC,
-                                                          telnet.EOR)
-                elif not telnet.is_enabled(self, telnet.TELOPT_SGA, telnet.US):
-                    encoded_output += telnet.telnet_proto(telnet.IAC,
-                                                          telnet.GA)
+                if mudpy.telnet.is_enabled(
+                        self, mudpy.telnet.TELOPT_EOR, mudpy.telnet.US):
+                    encoded_output += mudpy.telnet.telnet_proto(
+                        mudpy.telnet.IAC, mudpy.telnet.EOR)
+                elif not mudpy.telnet.is_enabled(
+                        self, mudpy.telnet.TELOPT_SGA, mudpy.telnet.US):
+                    encoded_output += mudpy.telnet.telnet_proto(
+                        mudpy.telnet.IAC, mudpy.telnet.GA)
 
             # and tack it onto the queue
             self.output_queue.append(encoded_output)
@@ -912,7 +918,7 @@ class User:
 
     def enqueue_input(self):
         """Process and enqueue any new input."""
-        import telnet
+        import mudpy.telnet
         import unicodedata
 
         # check for some input
@@ -928,7 +934,7 @@ class User:
             self.partial_input += raw_input
 
             # reply to and remove any IAC negotiation codes
-            telnet.negotiate_telnet_options(self)
+            mudpy.telnet.negotiate_telnet_options(self)
 
             # separate multiple input lines
             new_input_lines = self.partial_input.split("\n")
@@ -951,7 +957,8 @@ class User:
                 line = line.strip()
 
                 # log non-printable characters remaining
-                if telnet.is_enabled(self, telnet.TELOPT_BINARY, telnet.HIM):
+                if mudpy.telnet.is_enabled(self, mudpy.telnet.TELOPT_BINARY,
+                                           mudpy.telnet.HIM):
                     asciiline = filter(lambda x: " " <= x <= "~", line)
                     if line != asciiline:
                         logline = "Non-ASCII characters from "
@@ -1322,7 +1329,7 @@ def random_name():
 def replace_macros(user, text, is_input=False):
     """Replaces macros in text output."""
     import codecs
-    import data
+    import mudpy.data
     import os.path
 
     # third person pronouns
@@ -1372,7 +1379,7 @@ def replace_macros(user, text, is_input=False):
 
         # this is how we handle local file inclusion (dangerous!)
         elif macro.startswith("inc:"):
-            incfile = data.find_file(macro[4:], universe=universe)
+            incfile = mudpy.data.find_file(macro[4:], universe=universe)
             if os.path.exists(incfile):
                 incfd = codecs.open(incfile, "r", "utf-8")
                 replacement = ""
@@ -1495,7 +1502,7 @@ def reload_data():
 
 def check_for_connection(listening_socket):
     """Check for a waiting connection and return a new user object."""
-    import telnet
+    import mudpy.telnet
 
     # try to accept a new connection
     try:
@@ -1519,7 +1526,7 @@ def check_for_connection(listening_socket):
     user.address = address[0]
 
     # let the client know we WILL EOR (RFC 885)
-    telnet.enable(user, telnet.TELOPT_EOR, telnet.US)
+    mudpy.telnet.enable(user, mudpy.telnet.TELOPT_EOR, mudpy.telnet.US)
     user.negotiation_pause = 2
 
     # return the new user object
@@ -1712,10 +1719,11 @@ def get_choice_action(user, choice):
 
 def handle_user_input(user):
     """The main handler, branches to a state-specific handler."""
-    import telnet
+    import mudpy.telnet
 
     # if the user's client echo is off, send a blank line for aesthetics
-    if telnet.is_enabled(user, telnet.TELOPT_ECHO, telnet.US):
+    if mudpy.telnet.is_enabled(user, mudpy.telnet.TELOPT_ECHO,
+                               mudpy.telnet.US):
         user.send("", add_prompt=False, prepend_padding=False)
 
     # check to make sure the state is expected, then call that handler
@@ -1789,13 +1797,13 @@ def handler_entering_account_name(user):
 
 def handler_checking_password(user):
     """Handle the login account password."""
-    import password
+    import mudpy.password
 
     # get the next waiting line of input
     input_data = user.input_queue.pop(0)
 
     # does the hashed input equal the stored hash?
-    if password.verify(input_data, user.account.get("passhash")):
+    if mudpy.password.verify(input_data, user.account.get("passhash")):
 
         # if so, set the username and load from cold storage
         if not user.replace_old_connections():
@@ -1823,7 +1831,7 @@ def handler_checking_password(user):
 
 def handler_entering_new_password(user):
     """Handle a new password entry."""
-    import password
+    import mudpy.password
 
     # get the next waiting line of input
     input_data = user.input_queue.pop(0)
@@ -1839,7 +1847,7 @@ def handler_entering_new_password(user):
     ):
 
         # hash and store it, then move on to verification
-        user.account.set("passhash", password.create(input_data))
+        user.account.set("passhash", mudpy.password.create(input_data))
         user.state = "verifying_new_password"
 
     # the password was weak, try again if you haven't tried too many times
@@ -1864,13 +1872,13 @@ def handler_entering_new_password(user):
 
 def handler_verifying_new_password(user):
     """Handle the re-entered new password for verification."""
-    import password
+    import mudpy.password
 
     # get the next waiting line of input
     input_data = user.input_queue.pop(0)
 
     # hash the input and match it to storage
-    if password.verify(input_data, user.account.get("passhash")):
+    if mudpy.password.verify(input_data, user.account.get("passhash")):
         user.authenticate()
 
         # the hashes matched, so go active