mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-06 12:20:52 +01:00
Summary: There is a module called `2to3` which you can target for future specifically to remove these, the directory of `caffe2` has the most redundant imports: ```2to3 -f future -w caffe2``` Pull Request resolved: https://github.com/pytorch/pytorch/pull/45033 Reviewed By: seemethere Differential Revision: D23808648 Pulled By: bugra fbshipit-source-id: 38971900f0fe43ab44a9168e57f2307580d36a38
126 lines
4.0 KiB
Python
126 lines
4.0 KiB
Python
## @package github
|
|
# Module caffe2.python.docs.github
|
|
|
|
|
|
|
|
|
|
import argparse
|
|
import os
|
|
from caffe2.python.docs.formatter import Markdown
|
|
from caffe2.python.docs.generator import OpDocGenerator, DocUploader
|
|
from caffe2.python.docs.generator import OperatorDoc, OperatorEngine
|
|
|
|
|
|
class GHOpDocUploader(DocUploader):
|
|
def __init__(self):
|
|
pass
|
|
|
|
def upload(self, content_body):
|
|
print(content_body)
|
|
|
|
|
|
class GHMarkdown(Markdown):
|
|
def addHeader(self, text, h=1):
|
|
self.addLine("\n{header} {text}\n".format(header=h * '#', text=text), True)
|
|
|
|
def addDocHeader(self):
|
|
self.addLine("---")
|
|
self.addLine("docid: operators-catalog")
|
|
self.addLine("title: Operators Catalog")
|
|
self.addLine("layout: operators")
|
|
self.addLine("permalink: /docs/operators-catalogue.html")
|
|
self.addLine("---")
|
|
self.addLine("* TOC")
|
|
self.addLine("{:toc}")
|
|
|
|
def addTable(self, table, noTitle=False):
|
|
self.addLinebreak()
|
|
assert(len(table) > 1)
|
|
self.addLine(' | '.join(['----------' for i in range(len(table[0]))]))
|
|
self.addLine(' | '.join(table[0]))
|
|
for row in table[1:]:
|
|
self.addLine(' | '.join(row))
|
|
|
|
def addTableHTML(self, table, noTitle=False):
|
|
self.addRaw("<table>")
|
|
for row in table:
|
|
self.addRaw("<tr>")
|
|
for cell in row:
|
|
self.addRaw("<td>")
|
|
self.addLine("{cell}".format(cell=cell))
|
|
self.addRaw("</td>")
|
|
self.addRaw("</tr>")
|
|
self.addRaw("</table>")
|
|
|
|
def getCodeLink(formatter, schema):
|
|
formatter = formatter.clone()
|
|
path = os.path.relpath(schema.file, "caffe2")
|
|
schemaLink = ('https://github.com/pytorch/pytorch/blob/master/{path}'
|
|
.format(path=path))
|
|
formatter.addLink('{path}'.format(path=path), schemaLink)
|
|
return formatter.dump()
|
|
|
|
|
|
class GHOperatorEngine(OperatorEngine):
|
|
def generateDoc(self, formatter):
|
|
for device, _ in self.getDeviceImpl():
|
|
formatter.addCode('{engine}'.format(engine=self.engine), True)
|
|
if device:
|
|
formatter.addRaw(' on ')
|
|
formatter.addEmphasis("{device}".format(device=device), 1)
|
|
|
|
|
|
class GHOperatorDoc(OperatorDoc):
|
|
def generateCodeLink(self, formatter):
|
|
formatter.addHeader("Code", 3)
|
|
formatter.addLinebreak()
|
|
formatter.addRaw(getCodeLink(formatter, self.schema))
|
|
|
|
def getInfo(self, formatter, name, impl):
|
|
formatter = formatter.clone()
|
|
if impl:
|
|
formatter.addEmphasis('{name}'.format(name=name), 1)
|
|
formatter.addRaw(' ')
|
|
formatter.addCode('{impl}'.format(impl=impl), True)
|
|
return formatter.dump()
|
|
|
|
def generateSchema(self, formatter):
|
|
formatter.addHeader(self.name, 2)
|
|
if self.schema:
|
|
self.generateDoc(formatter)
|
|
self.generateInterface(formatter)
|
|
self.generateCodeLink(formatter)
|
|
formatter.addBreak()
|
|
else:
|
|
formatter.addLine("No schema documented yet.")
|
|
|
|
|
|
class GHOpDocGenerator(OpDocGenerator):
|
|
def getOperatorDoc(self, name, schema, priority):
|
|
return GHOperatorDoc(name, schema, priority)
|
|
|
|
def getOperatorEngine(self, name):
|
|
return GHOperatorEngine(name)
|
|
|
|
def createBody(self):
|
|
self.formatter.addDocHeader()
|
|
operators = self.getOperators()
|
|
|
|
for operator in operators:
|
|
operator.generateSchema(self.formatter)
|
|
|
|
self.content_body += self.formatter.dump()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description="Operators catalog generator.")
|
|
parser.add_argument('catalog_path', type=str,
|
|
help='operators-catalogue.md to write out to')
|
|
args = parser.parse_args()
|
|
|
|
with open(args.catalog_path, 'w') as fp:
|
|
ops = GHOpDocGenerator(GHMarkdown(), GHOpDocUploader)
|
|
ops.createBody()
|
|
fp.write(ops.content_body)
|
|
print("Updated {}!".format(args.catalog_path))
|