diff options
author | gilad_ilsar <gandismidas1> | 2016-09-22 11:51:49 +0300 |
---|---|---|
committer | gilad_ilsar <gandismidas1> | 2016-09-22 11:51:49 +0300 |
commit | e34be2e06f88032824beaec5173419c60602591f (patch) | |
tree | fef5b1046980bb07631f0c92c1a87046c795cdc9 | |
parent | bd3956dc019d7f56bfd2cb8b667e8cacf9e80f59 (diff) |
tester and person entity
-rw-r--r-- | .idea/misc.xml | 12 | ||||
-rw-r--r-- | .idea/modules.xml | 2 | ||||
-rw-r--r-- | .idea/parser.iml | 12 | ||||
-rw-r--r-- | .idea/workspace.xml | 517 | ||||
-rw-r--r-- | entities/person.py | 34 | ||||
-rw-r--r-- | factories/INL_factory.py | 73 | ||||
-rw-r--r-- | parsers/INL_xml_parser.py | 14 | ||||
-rw-r--r-- | parsers/__init__.py | 3 | ||||
-rw-r--r-- | testers/factorytester.py | 21 |
9 files changed, 524 insertions, 164 deletions
diff --git a/.idea/misc.xml b/.idea/misc.xml index df245c4..f778c9e 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,14 +1,4 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> - <component name="ProjectLevelVcsManager" settingsEditedManually="false"> - <OptionsSetting value="true" id="Add" /> - <OptionsSetting value="true" id="Remove" /> - <OptionsSetting value="true" id="Checkout" /> - <OptionsSetting value="true" id="Update" /> - <OptionsSetting value="true" id="Status" /> - <OptionsSetting value="true" id="Edit" /> - <ConfirmationsSetting value="0" id="Add" /> - <ConfirmationsSetting value="0" id="Remove" /> - </component> - <component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7.10 (C:\Python27\python.exe)" project-jdk-type="Python SDK" /> + <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.5.2 (C:\Users\Ilsar\Anaconda3\python.exe)" project-jdk-type="Python SDK" /> </project>
\ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 9a7bd2d..405d108 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ <project version="4"> <component name="ProjectModuleManager"> <modules> - <module fileurl="file://$PROJECT_DIR$/.idea/lib2wiki.iml" filepath="$PROJECT_DIR$/.idea/lib2wiki.iml" /> + <module fileurl="file://$PROJECT_DIR$/.idea/parser.iml" filepath="$PROJECT_DIR$/.idea/parser.iml" /> </modules> </component> </project>
\ No newline at end of file diff --git a/.idea/parser.iml b/.idea/parser.iml new file mode 100644 index 0000000..6f63a63 --- /dev/null +++ b/.idea/parser.iml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="PYTHON_MODULE" version="4"> + <component name="NewModuleRootManager"> + <content url="file://$MODULE_DIR$" /> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> + <component name="TestRunnerService"> + <option name="projectConfiguration" value="Nosetests" /> + <option name="PROJECT_TEST_RUNNER" value="Nosetests" /> + </component> +</module>
\ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index f2b732c..69eda32 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,9 +1,16 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="ChangeListManager"> - <list default="true" id="b3a73108-18f8-44f3-8073-d1952fb9639d" name="Default" comment=""> + <list default="true" id="1d9b5e9b-4282-4345-b663-d1b92a287a32" name="Default" comment="tester and person entity"> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/parser.iml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/testers/factorytester.py" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/misc.xml" afterPath="$PROJECT_DIR$/.idea/misc.xml" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/modules.xml" afterPath="$PROJECT_DIR$/.idea/modules.xml" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/entities/person.py" afterPath="$PROJECT_DIR$/entities/person.py" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/factories/INL_factory.py" afterPath="$PROJECT_DIR$/factories/INL_factory.py" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/parsers/INL_xml_parser.py" afterPath="$PROJECT_DIR$/parsers/INL_xml_parser.py" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/readers/xml_reader.py" afterPath="$PROJECT_DIR$/readers/xml_reader.py" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/parsers/__init__.py" afterPath="$PROJECT_DIR$/parsers/__init__.py" /> </list> <ignored path="lib2wiki.iws" /> <ignored path=".idea/workspace.xml" /> @@ -16,7 +23,7 @@ <option name="LAST_RESOLUTION" value="IGNORE" /> </component> <component name="CoverageDataManager"> - <SUITE FILE_PATH="coverage/lib2wiki$xml_reader.coverage" NAME="xml_reader Coverage Results" MODIFIED="1474527548475" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/readers" /> + <SUITE FILE_PATH="coverage/parser$factorytester.coverage" NAME="factorytester Coverage Results" MODIFIED="1474534270581" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testers" /> </component> <component name="CreatePatchCommitExecutor"> <option name="PATCH_PATH" value="" /> @@ -27,21 +34,97 @@ </component> <component name="FileEditorManager"> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> - <file leaf-file-name="xml_reader.py" pinned="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/readers/xml_reader.py"> + <file leaf-file-name="basic_factory.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/factories/basic_factory.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="435"> - <caret line="26" column="43" selection-start-line="26" selection-start-column="0" selection-end-line="27" selection-end-column="0" /> + <state relative-caret-position="17"> + <caret line="1" column="37" selection-start-line="1" selection-start-column="37" selection-end-line="1" selection-end-column="37" /> <folding /> </state> </provider> </entry> </file> - <file leaf-file-name="INL_xml_parser.py" pinned="false" current-in-tab="true"> + <file leaf-file-name="INL_xml_parser.py" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/parsers/INL_xml_parser.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="333"> - <caret line="30" column="0" selection-start-line="30" selection-start-column="0" selection-end-line="30" selection-end-column="0" /> + <state relative-caret-position="153"> + <caret line="23" column="46" selection-start-line="23" selection-start-column="46" selection-end-line="23" selection-end-column="46" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="__init__.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/parsers/__init__.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="INL_factory.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/factories/INL_factory.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="629"> + <caret line="37" column="31" selection-start-line="37" selection-start-column="31" selection-end-line="37" selection-end-column="31" /> + <folding> + <element signature="e#0#15#0" expanded="true" /> + <element signature="e#1812#2015#0" expanded="false" /> + <element signature="e#2263#2459#0" expanded="false" /> + </folding> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="person.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/entities/person.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="680"> + <caret line="40" column="20" selection-start-line="40" selection-start-column="8" selection-end-line="40" selection-end-column="20" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="factorytester.py" pinned="false" current-in-tab="true"> + <entry file="file://$PROJECT_DIR$/testers/factorytester.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="255"> + <caret line="15" column="40" selection-start-line="15" selection-start-column="40" selection-end-line="15" selection-end-column="40" /> + <folding> + <element signature="e#0#38#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="location.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/entities/location.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="68"> + <caret line="4" column="51" selection-start-line="4" selection-start-column="51" selection-end-line="4" selection-end-column="51" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="__init__.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/entities/__init__.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="34"> + <caret line="2" column="14" selection-start-line="2" selection-start-column="14" selection-end-line="2" selection-end-column="14" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="json_tools.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/libs/json_tools.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="51"> + <caret line="3" column="22" selection-start-line="3" selection-start-column="6" selection-end-line="3" selection-end-column="22" /> <folding /> </state> </provider> @@ -49,14 +132,35 @@ </file> </leaf> </component> + <component name="FileTemplateManagerImpl"> + <option name="RECENT_TEMPLATES"> + <list> + <option value="Python Script" /> + </list> + </option> + </component> <component name="Git.Settings"> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> </component> <component name="IdeDocumentHistory"> <option name="CHANGED_PATHS"> <list> + <option value="$PROJECT_DIR$/parsers/basic_parser.py" /> + <option value="$PROJECT_DIR$/libs/json_tools.py" /> + <option value="$PROJECT_DIR$/factories/basic_factory.py" /> + <option value="$PROJECT_DIR$/entities/basic_entity.py" /> + <option value="$PROJECT_DIR$/entities/institution.py" /> + <option value="$PROJECT_DIR$/.gitignore" /> + <option value="$PROJECT_DIR$/entities/__init__.py" /> + <option value="$PROJECT_DIR$/factories/__init__.py" /> + <option value="$PROJECT_DIR$/libs/__init__.py" /> + <option value="$PROJECT_DIR$/entities/location.py" /> + <option value="$PROJECT_DIR$/entities/testers/factorytester.py" /> + <option value="$PROJECT_DIR$/parsers/__init__.py" /> + <option value="$PROJECT_DIR$/factories/INL_factory.py" /> + <option value="$PROJECT_DIR$/entities/person.py" /> + <option value="$PROJECT_DIR$/testers/factorytester.py" /> <option value="$PROJECT_DIR$/parsers/INL_xml_parser.py" /> - <option value="$PROJECT_DIR$/readers/xml_reader.py" /> </list> </option> </component> @@ -69,8 +173,8 @@ <component name="ProjectFrameBounds"> <option name="x" value="-8" /> <option name="y" value="-8" /> - <option name="width" value="1616" /> - <option name="height" value="876" /> + <option name="width" value="1382" /> + <option name="height" value="744" /> </component> <component name="ProjectLevelVcsManager" settingsEditedManually="false"> <OptionsSetting value="true" id="Add" /> @@ -101,87 +205,17 @@ <subPane> <PATH> <PATH_ELEMENT> - <option name="myItemId" value="lib2wiki" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> - </PATH_ELEMENT> - </PATH> - <PATH> - <PATH_ELEMENT> - <option name="myItemId" value="lib2wiki" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> - </PATH_ELEMENT> - <PATH_ELEMENT> - <option name="myItemId" value="lib2wiki" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> - </PATH_ELEMENT> - </PATH> - <PATH> - <PATH_ELEMENT> - <option name="myItemId" value="lib2wiki" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> - </PATH_ELEMENT> - <PATH_ELEMENT> - <option name="myItemId" value="lib2wiki" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> - </PATH_ELEMENT> - <PATH_ELEMENT> - <option name="myItemId" value="readers" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> - </PATH_ELEMENT> - </PATH> - <PATH> - <PATH_ELEMENT> - <option name="myItemId" value="lib2wiki" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> - </PATH_ELEMENT> - <PATH_ELEMENT> - <option name="myItemId" value="lib2wiki" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> - </PATH_ELEMENT> - <PATH_ELEMENT> - <option name="myItemId" value="parsers" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> - </PATH_ELEMENT> - </PATH> - <PATH> - <PATH_ELEMENT> - <option name="myItemId" value="lib2wiki" /> + <option name="myItemId" value="parser" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> </PATH_ELEMENT> - <PATH_ELEMENT> - <option name="myItemId" value="lib2wiki" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> - </PATH_ELEMENT> - <PATH_ELEMENT> - <option name="myItemId" value="libs" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> - </PATH_ELEMENT> </PATH> <PATH> <PATH_ELEMENT> - <option name="myItemId" value="lib2wiki" /> + <option name="myItemId" value="parser" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> </PATH_ELEMENT> <PATH_ELEMENT> - <option name="myItemId" value="lib2wiki" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> - </PATH_ELEMENT> - <PATH_ELEMENT> - <option name="myItemId" value="factories" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> - </PATH_ELEMENT> - </PATH> - <PATH> - <PATH_ELEMENT> - <option name="myItemId" value="lib2wiki" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> - </PATH_ELEMENT> - <PATH_ELEMENT> - <option name="myItemId" value="lib2wiki" /> - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> - </PATH_ELEMENT> - <PATH_ELEMENT> - <option name="myItemId" value="entities" /> + <option name="myItemId" value="parser" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> </PATH> @@ -192,11 +226,28 @@ </panes> </component> <component name="PropertiesComponent"> - <property name="last_opened_file_path" value="$PROJECT_DIR$/readers/xml_reader.py" /> + <property name="last_opened_file_path" value="$PROJECT_DIR$" /> <property name="WebServerToolWindowFactoryState" value="false" /> - <property name="prop_add_unversioned_files" value="true" /> </component> - <component name="RunManager" selected="Python.xml_reader"> + <component name="RunManager" selected="Python.factorytester"> + <configuration default="false" name="factorytester" type="PythonConfigurationType" factoryName="Python" temporary="true"> + <option name="INTERPRETER_OPTIONS" value="" /> + <option name="PARENT_ENVS" value="true" /> + <envs> + <env name="PYTHONUNBUFFERED" value="1" /> + </envs> + <option name="SDK_HOME" value="" /> + <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/testers" /> + <option name="IS_MODULE_SDK" value="true" /> + <option name="ADD_CONTENT_ROOTS" value="true" /> + <option name="ADD_SOURCE_ROOTS" value="true" /> + <module name="parser" /> + <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" /> + <option name="SCRIPT_NAME" value="$PROJECT_DIR$/testers/factorytester.py" /> + <option name="PARAMETERS" value="" /> + <option name="SHOW_COMMAND_LINE" value="false" /> + <method /> + </configuration> <configuration default="true" type="DjangoTestsConfigurationType" factoryName="Django tests"> <option name="INTERPRETER_OPTIONS" value="" /> <option name="PARENT_ENVS" value="true" /> @@ -254,7 +305,7 @@ <envs> <env name="PYTHONUNBUFFERED" value="1" /> </envs> - <option name="SDK_HOME" value="C:\Python27\python.exe" /> + <option name="SDK_HOME" value="" /> <option name="WORKING_DIRECTORY" value="" /> <option name="IS_MODULE_SDK" value="false" /> <option name="ADD_CONTENT_ROOTS" value="true" /> @@ -405,54 +456,56 @@ <option name="USE_KEYWORD" value="false" /> <method /> </configuration> - <configuration default="false" name="xml_reader" type="PythonConfigurationType" factoryName="Python"> - <option name="INTERPRETER_OPTIONS" value="" /> - <option name="PARENT_ENVS" value="true" /> - <envs> - <env name="PYTHONUNBUFFERED" value="1" /> - </envs> - <option name="SDK_HOME" value="C:\Python27\python.exe" /> - <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/readers" /> - <option name="IS_MODULE_SDK" value="false" /> - <option name="ADD_CONTENT_ROOTS" value="true" /> - <option name="ADD_SOURCE_ROOTS" value="true" /> - <module name="lib2wiki" /> - <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" /> - <option name="SCRIPT_NAME" value="$PROJECT_DIR$/readers/xml_reader.py" /> - <option name="PARAMETERS" value="" /> - <option name="SHOW_COMMAND_LINE" value="false" /> - <method /> - </configuration> <list size="1"> - <item index="0" class="java.lang.String" itemvalue="Python.xml_reader" /> + <item index="0" class="java.lang.String" itemvalue="Python.factorytester" /> </list> + <recent_temporary> + <list size="1"> + <item index="0" class="java.lang.String" itemvalue="Python.factorytester" /> + </list> + </recent_temporary> </component> <component name="ShelveChangesManager" show_recycled="false"> <option name="remove_strategy" value="false" /> </component> <component name="TaskManager"> <task active="true" id="Default" summary="Default task"> - <changelist id="b3a73108-18f8-44f3-8073-d1952fb9639d" name="Default" comment="" /> - <created>1474498136177</created> + <changelist id="1d9b5e9b-4282-4345-b663-d1b92a287a32" name="Default" comment="" /> + <created>1474481137431</created> <option name="number" value="Default" /> <option name="presentableId" value="Default" /> - <updated>1474498136177</updated> + <updated>1474481137431</updated> + </task> + <task id="LOCAL-00001" summary="implemented the factory"> + <created>1474490333649</created> + <option name="number" value="00001" /> + <option name="presentableId" value="LOCAL-00001" /> + <option name="project" value="LOCAL" /> + <updated>1474490333649</updated> + </task> + <task id="LOCAL-00002" summary="update the parser"> + <created>1474498941858</created> + <option name="number" value="00002" /> + <option name="presentableId" value="LOCAL-00002" /> + <option name="project" value="LOCAL" /> + <updated>1474498941858</updated> </task> + <option name="localTasksCounter" value="3" /> <servers /> </component> <component name="ToolWindowManager"> - <frame x="-8" y="-8" width="1616" height="876" extended-state="6" /> + <frame x="-8" y="-8" width="1382" height="744" extended-state="6" /> <editor active="true" /> <layout> - <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> + <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25549048" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> - <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32898173" sideWeight="0.5025" order="7" side_tool="true" content_ui="tabs" /> + <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" /> <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> - <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> - <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> - <window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32898173" sideWeight="0.4975" order="2" side_tool="false" content_ui="tabs" /> + <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3298969" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" /> + <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" /> + <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32913387" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> - <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> + <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" /> <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> @@ -475,12 +528,34 @@ <component name="VcsContentAnnotationSettings"> <option name="myLimit" value="2678400000" /> </component> + <component name="VcsManagerConfiguration"> + <MESSAGE value="implemented the factory" /> + <option name="LAST_COMMIT_MESSAGE" value="implemented the factory" /> + </component> <component name="XDebuggerManager"> - <breakpoint-manager /> + <breakpoint-manager> + <option name="time" value="4" /> + </breakpoint-manager> <watches-manager /> </component> <component name="editorHistoryManager"> - <entry file="file://$PROJECT_DIR$/.gitignore"> + <entry file="file://$PROJECT_DIR$/factories/basic_factory.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="17"> + <caret line="1" column="37" selection-start-line="1" selection-start-column="37" selection-end-line="1" selection-end-column="37" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/parsers/INL_xml_parser.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="374"> + <caret line="22" column="38" selection-start-line="22" selection-start-column="38" selection-end-line="22" selection-end-column="38" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/parsers/__init__.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="0"> <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> @@ -488,29 +563,219 @@ </state> </provider> </entry> + <entry file="file://$PROJECT_DIR$/factories/INL_factory.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="629"> + <caret line="37" column="31" selection-start-line="37" selection-start-column="31" selection-end-line="37" selection-end-column="31" /> + <folding> + <element signature="e#0#15#0" expanded="true" /> + <element signature="e#1812#2015#0" expanded="false" /> + <element signature="e#2263#2459#0" expanded="false" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/entities/person.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="680"> + <caret line="40" column="20" selection-start-line="40" selection-start-column="8" selection-end-line="40" selection-end-column="20" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/testers/factorytester.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding> + <element signature="e#0#38#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/entities/location.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="68"> + <caret line="4" column="51" selection-start-line="4" selection-start-column="51" selection-end-line="4" selection-end-column="51" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/entities/__init__.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="34"> + <caret line="2" column="14" selection-start-line="2" selection-start-column="14" selection-end-line="2" selection-end-column="14" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/libs/json_tools.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="51"> + <caret line="3" column="22" selection-start-line="3" selection-start-column="6" selection-end-line="3" selection-end-column="22" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/factories/basic_factory.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="17"> + <caret line="1" column="37" selection-start-line="1" selection-start-column="37" selection-end-line="1" selection-end-column="37" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/factories/INL_factory.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding> + <element signature="e#0#15#0" expanded="true" /> + <element signature="e#1812#2015#0" expanded="false" /> + <element signature="e#2263#2459#0" expanded="false" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/libs/json_tools.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="51"> + <caret line="3" column="22" selection-start-line="3" selection-start-column="6" selection-end-line="3" selection-end-column="22" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/entities/basic_entity.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="85"> + <caret line="5" column="0" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/entities/institution.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="85"> + <caret line="5" column="34" selection-start-line="5" selection-start-column="34" selection-end-line="5" selection-end-column="34" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/parsers/basic_parser.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="85"> + <caret line="5" column="22" selection-start-line="5" selection-start-column="0" selection-end-line="6" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> <entry file="file://$PROJECT_DIR$/.gitignore"> <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="255"> + <caret line="15" column="5" selection-start-line="15" selection-start-column="5" selection-end-line="15" selection-end-column="5" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/factories/__init__.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="17"> + <caret line="1" column="15" selection-start-line="1" selection-start-column="15" selection-end-line="1" selection-end-column="15" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/libs/__init__.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="10" selection-start-line="0" selection-start-column="10" selection-end-line="0" selection-end-column="10" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/entities/__init__.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="34"> + <caret line="2" column="14" selection-start-line="2" selection-start-column="14" selection-end-line="2" selection-end-column="14" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/libs/json_tools.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="51"> + <caret line="3" column="22" selection-start-line="3" selection-start-column="6" selection-end-line="3" selection-end-column="22" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/entities/location.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="68"> + <caret line="4" column="51" selection-start-line="4" selection-start-column="51" selection-end-line="4" selection-end-column="51" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/entities/person.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="680"> + <caret line="40" column="20" selection-start-line="40" selection-start-column="8" selection-end-line="40" selection-end-column="20" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/parsers/__init__.py"> + <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="0"> <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/readers/xml_reader.py"> + <entry file="file://$PROJECT_DIR$/factories/basic_factory.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="435"> - <caret line="26" column="43" selection-start-line="26" selection-start-column="0" selection-end-line="27" selection-end-column="0" /> + <state relative-caret-position="17"> + <caret line="1" column="37" selection-start-line="1" selection-start-column="37" selection-end-line="1" selection-end-column="37" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/factories/INL_factory.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="629"> + <caret line="37" column="31" selection-start-line="37" selection-start-column="31" selection-end-line="37" selection-end-column="31" /> + <folding> + <element signature="e#0#15#0" expanded="true" /> + <element signature="e#1812#2015#0" expanded="false" /> + <element signature="e#2263#2459#0" expanded="false" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/factories/basic_factory.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="17"> + <caret line="1" column="37" selection-start-line="1" selection-start-column="37" selection-end-line="1" selection-end-column="37" /> <folding /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/parsers/INL_xml_parser.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="333"> - <caret line="30" column="0" selection-start-line="30" selection-start-column="0" selection-end-line="30" selection-end-column="0" /> + <state relative-caret-position="153"> + <caret line="23" column="46" selection-start-line="23" selection-start-column="46" selection-end-line="23" selection-end-column="46" /> <folding /> </state> </provider> </entry> + <entry file="file://$PROJECT_DIR$/testers/factorytester.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="255"> + <caret line="15" column="40" selection-start-line="15" selection-start-column="40" selection-end-line="15" selection-end-column="40" /> + <folding> + <element signature="e#0#38#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> </component> </project>
\ No newline at end of file diff --git a/entities/person.py b/entities/person.py index b9e9d78..d541bb4 100644 --- a/entities/person.py +++ b/entities/person.py @@ -2,7 +2,7 @@ from entities.basic_entity import BasicEntity class Person(BasicEntity): - def __init__(self, name, date_of_birth, name_in_langs): + def __init__(self, name, date_of_birth, name_in_langs, bio_data): """ :param name: @@ -14,5 +14,35 @@ class Person(BasicEntity): } """ self.name = name - self.date_of_birth = date_of_birth + years_parts = date_of_birth.split('-') + if (len(years_parts) == 2): + self.birth_year = years_parts[0] + self.death_year = years_parts[1] + else: + self.birth_year = date_of_birth.strip() + self.death_year = '' self.name_in_langs = name_in_langs + place_of_birth = list() + place_of_death = list() + profession = list() + for comment in bio_data: + encoded_comment = ''.join(comment).strip() + if encoded_comment.startswith(u"מקום לידה: "): + place_of_birth.append(encoded_comment.partition(u"מקום לידה: ")[2]) + if encoded_comment.startswith(u"מקום פטירה: "): + place_of_death.append(encoded_comment.partition(u"מקום פטירה: ")[2]) + if encoded_comment.startswith(u"מקצוע: "): + profession.append(encoded_comment.partition(u"מקום פטירה: ")[2]) + + self.place_of_birth = place_of_birth + self.place_of_death = place_of_death + self.profession = profession + + def print_entity(self): + print("Name = " + self.name) + print("Birth year = " + self.birth_year) + print("Death year = " + self.death_year) + print("Names in langs" + str(self.name_in_langs)) + print("Places of birth = " + str(self.place_of_birth)) + print("Places of death = " + str(self.place_of_death)) + print("profession = " + str(self.profession)) diff --git a/factories/INL_factory.py b/factories/INL_factory.py index b61c487..adc5b1a 100644 --- a/factories/INL_factory.py +++ b/factories/INL_factory.py @@ -1,5 +1,6 @@ import entities from factories import BasicFactory +import xml.etree.cElementTree as ET TAG_TO_ENTITY_MAPPING = { '100': entities.Person, @@ -10,15 +11,20 @@ TAG_TO_ENTITY_MAPPING = { ENTITY_KEYS = { '100.a': 'name', + '100.9': 'name_langindic', '100.d': 'date_of_birth', '400.a': 'name_in_langs', + '400.9': 'langs_langindic', + '678.a': 'bio_data', '151.a': 'name', + '151.9': 'name_langindic', '451:a': 'name_in_langs', + '451:9': 'langs_langindic', '550.a': 'type' } -def get_record_key(self, record): +def get_record_key(record): root = record.getroot() for field in root: field_tag = field.attrib.get('tag') @@ -33,40 +39,73 @@ class INLFactory(BasicFactory): def __init__(self, tag_to_entity_mapping=None): self.mapping = tag_to_entity_mapping or TAG_TO_ENTITY_MAPPING - def get_entity(self, entity_keys, raw_object): + def get_entity(self, raw_object, entity_keys=ENTITY_KEYS): record_key = get_record_key(raw_object) if record_key == '100': - has_name = False - name_in_langs = [] + name = '' + name_in_langs = dict() + bio_data = list() + eng_name = '' + date_of_birth = '' + #get the names and date of birth and bio data for field in raw_object.getroot(): key = field.attrib.get('tag') tag = entity_keys.get(key) - if tag == 'name' and not has_name: + if tag == 'name': name = field.text - has_name = True + elif tag == 'name_langindic': + # chack if this english name + if field.text == 'lat': + eng_name = name + # else add it to name_in_langs + else: + if field.text in name_in_langs: + name_in_langs.get(field.text).append(name) + else: + name_in_langs.update({field.text: [name]}) elif tag == 'date_of_birth': date_of_birth = field.text elif tag == 'name_in_langs': - name_in_langs.append(field.text) - return entities.Person(name, date_of_birth, name_in_langs) + name_diff = field.text + elif tag == 'langs_langindic': + if field.text in name_in_langs: + name_in_langs.get(field.text).append(name_diff) + else: + name_in_langs.update({field.text: [name]}) + elif tag == 'bio_data': + bio_data.append(field.text) + return entities.Person(eng_name, date_of_birth, name_in_langs, bio_data) elif record_key == '110': return entities.Institution() elif record_key == '151': - has_name = False - name_in_langs = [] - type = [] + name_in_langs = dict() + types = [] for field in raw_object.getroot(): key = field.attrib.get('tag') tag = entity_keys.get(key) - if tag == 'name' and not has_name: + if tag == 'name': name = field.text - has_name = True + elif tag == 'name_langindic': + # chack if this english name + if field.text == 'lat': + eng_name = name + # else add it to name_in_langs + else: + if field.text in name_in_langs: + name_in_langs.get(field.text).append(name) + else: + name_in_langs.update({field.text: [name]}) elif tag == 'type': - type.append(field.text) + types.append(field.text) elif tag == 'name_in_langs': - name_in_langs.append(field.text) - return entities.Location(name, type, name_in_langs) + name_diff = field.text + elif tag == 'langs_langindic': + if field.text in name_in_langs: + name_in_langs.get(field.text).append(name_diff) + else: + name_in_langs.update({field.text: [name]}) + return entities.Location(eng_name, types, name_in_langs) else: - raise KeyError('Key {} was not recognized for factory {}'.format(entity_key, type(self))) + raise KeyError('Key {} was not recognized for factory {}'.format(entity_keys, type(self))) diff --git a/parsers/INL_xml_parser.py b/parsers/INL_xml_parser.py index 4cd04ef..968bf55 100644 --- a/parsers/INL_xml_parser.py +++ b/parsers/INL_xml_parser.py @@ -20,14 +20,16 @@ class INLXmlParser: for field in self.reader: fieldtag = field.attrib.get('tag') if fieldtag in self.whitelist: - newFieldTag = fieldtag + temptag = fieldtag # tag 700 and 400 are the same - if newFieldTag == '700': - newFieldTag = '400' - newTag = ET.SubElement(newRecord, 'datafield', {'tag': newFieldTag}) + if temptag == '700': + temptag = '400' for data in field: - subData = ET.SubElement(newTag, data.tag, data.attrib) - subData.text = data.text + newFieldTag = temptag + newFieldTag += '.' + newFieldTag += data.attrib.get('code') + newTag = ET.SubElement(newRecord, 'datafield', {'tag': newFieldTag}) + newTag.text = data.text newRecordTree = ET.ElementTree(newRecord) return newRecordTree diff --git a/parsers/__init__.py b/parsers/__init__.py index e3a246d..d32c917 100644 --- a/parsers/__init__.py +++ b/parsers/__init__.py @@ -1 +1,2 @@ -from INL_xml_parser import INLXmlParser
\ No newline at end of file + +from .INL_xml_parser import INLXmlParser
\ No newline at end of file diff --git a/testers/factorytester.py b/testers/factorytester.py new file mode 100644 index 0000000..cc95bab --- /dev/null +++ b/testers/factorytester.py @@ -0,0 +1,21 @@ +from __future__ import absolute_import +import parsers +import factories +import xml.etree.cElementTree as ET + +xmlpath = 'C:/Users/Ilsar/Documents/datahack/xml_example.xml' +whitelist = ['100', '374', '400', '151', '451', '550', '551', '678'] + + +xmltree = ET.parse(xmlpath) +entities = list() +inl_factory = factories.INLFactory() + +for record in xmltree.getroot(): + inl_parser = parsers.INLXmlParser(record, whitelist) + clean_record = inl_parser.clearxml() + entities.append(inl_factory.get_entity(clean_record)) + +for entity in entities: + entity.print_entity() + |