Re: Disabling docstrings in generated .so?
author"Gustavo Sverzut Barbieri" <barbieri@gmail.com>
Wed, 7 Nov 2007 17:20:20 +0000 (09:20 -0800)
committer"Gustavo Sverzut Barbieri" <barbieri@gmail.com>
Wed, 7 Nov 2007 17:20:20 +0000 (09:20 -0800)
Cython/Compiler/CmdLine.py
Cython/Compiler/Nodes.py
Cython/Compiler/Options.py

index 0cf66f2d10357661fd25e18a2f0c876c57309ef5..716e0f256e25ee4169d23cca91c95b3763da7432 100644 (file)
@@ -23,7 +23,8 @@ Options:
                                  module. Emulates the behavior of putting 
                                  "from <module> import *" at the top of the file. 
   --incref-local-binop           Force local an extra incref on local variables before
-                                 performing any binary operations. 
+                                 performing any binary operations.
+  -D, --no-docstrings            Remove docstrings.
 """  
 #The following experimental options are supported only on MacOSX:
 #  -C, --compile    Compile generated .c file to .o file
@@ -82,6 +83,8 @@ def parse_command_line(args):
                 Options.incref_local_binop = 1
             elif option == "--cleanup":
                 Options.generate_cleanup_code = int(pop_arg())
+            elif option in ("-D", "--no-docstrings"):
+                Options.docstrings = False
             else:
                 bad_usage()
         else:
index d5a8887d29f5e3f9bb5ea4f8cbc71836c054ab01..2479dd877719965156f7d8dae2e6ceb48a3d3918 100644 (file)
@@ -1024,7 +1024,9 @@ class DefNode(FuncDefNode):
             Naming.pyfunc_prefix + prefix + name
         entry.pymethdef_cname = \
             Naming.pymethdef_prefix + prefix + name
-        if not entry.is_special:
+        if not Options.docstrings:
+            self.entry.doc = None
+        elif not entry.is_special:
             if Options.embed_pos_in_docstring:
                 entry.doc = 'File: %s (starting at line %s)'%relative_position(self.pos)
                 if not self.doc is None:
@@ -1120,7 +1122,7 @@ class DefNode(FuncDefNode):
         code.putln("%s; /*proto*/" % header)
         if proto_only:
             return
-        if self.entry.doc:
+        if self.entry.doc and Options.docstrings:
             code.putln(
                 'static char %s[] = "%s";' % (
                     self.entry.doc_cname,
@@ -1433,7 +1435,7 @@ class PyClassDefNode(StatNode, BlockNode):
         self.body = body
         import ExprNodes
         self.dict = ExprNodes.DictNode(pos, key_value_pairs = [])
-        if self.doc:
+        if self.doc and Options.docstrings:
             if Options.embed_pos_in_docstring:
                 doc = 'File: %s (starting at line %s)'%relative_position(self.pos)
             doc = doc + '\\n' + self.doc
@@ -1546,7 +1548,7 @@ class CClassDefNode(StatNode):
             api = self.api)
         scope = self.entry.type.scope
         
-        if self.doc:
+        if self.doc and Options.docstrings:
             if Options.embed_pos_in_docstring:
                 scope.doc = 'File: %s (starting at line %s)'%relative_position(self.pos)
                 scope.doc = scope.doc + '\\n' + self.doc
@@ -1588,7 +1590,7 @@ class PropertyNode(StatNode):
     def analyse_declarations(self, env):
         entry = env.declare_property(self.name, self.doc, self.pos)
         if entry:
-            if self.doc:
+            if self.doc and Options.docstrings:
                 doc_entry = env.get_string_const(self.doc)
                 entry.doc_cname = doc_entry.cname
             self.body.analyse_declarations(entry.scope)
index 8c190978087a0e2556e1ccab9ced39190d91ae64..04151a9330a48e154cb343bb2b5368ca902a08e4 100644 (file)
@@ -9,6 +9,7 @@ embed_pos_in_docstring = 0
 gcc_branch_hints = 1
 
 pre_import = None
+docstrings = True
 
 # This is a SAGE-specific option that will 
 # cause Cython to incref local variables before