wiki:GSoC/2018/FullSupportPython3

Version 6 (modified by sanjeet, 3 years ago) (diff)

Community bonding period activity report

Full support of Python 3 in GRASS GIS

Title: Full support of Python 3 in GRASS GIS
Student Name: Sanjeet Bhatti
Organization: OSGeo - Open Source Geospatial Foundation
Mentor Name: Anna Petrášová and Luca Delucchi
GSoC proposal: View proposal
Link to code: Code Repository

Abstract

The current GRASS GIS version has partial support for Python 3. This project aims to update core GRASS components for Python 3 and update all the python modules, libraries and components like script package, python/ctypes, pygrass, temporal, wxGUI, etc. At the end of this project, GRASS GIS will be compatible with both the versions of python, i.e Python 2.7 and Python 3 with its GUI having support for wxPython 4.

Timeline

Time Period

Milestones

Tasks

Status

April 23 - May 14
Community Bonding

  • Introduction to Community
  • Create Wiki page
  • Set up code repository
  • Add links to community wiki pages
  • Set up development environment
  • Discussion with community members and mentors about the design of the project
  • Get familiar with the testing framework
  • Update current tests of the python script library, adjust them to work with Python3
  • Get familiar with the overall working of GRASS GIS and understand Python dependencies in the system
  • Read documentation
  • Practice fixing bugs
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done

May 14 - May 20
Week 1

  • Dealing with Unicode & binary data (encoding and decoding).
  • Setting up the foundation for porting the main libraries and components

May 21 - May 27
Week 2

Porting script package module and its dependencies

May 28 - June 3
Week 3

Porting temporal module and its dependencies

June 4 - June 10
Week 4

  • Finish pending work for this phase, if any.
  • Preparing and testing the changes for the evaluation

July 11 - July 15
Evaluation 1

  • Evaluation of work done in the previous phase
  • Next phase discussions

June 11 - June 17
Week 5

  • Incorporate any changes, as necessary, from the discussions and feedback
  • Finish porting remaining libs, components and scripts

June 18 - June 24
Week 6

Work on porting ctypes module

June 25 - July 1
Week 7

  • Porting pygrass module and its dependencies
  • Porting other libs and their dependencies

July 2 - July 8
Week 8

  • Finish pending work for this phase, if any.
  • Preparing and testing the changes for the evaluation

July 9 - July 13
Evaluation 2

  • Evaluation of work done in the previous phase
  • Next phase discussions

July 9 - July 29
Week 9-11

  • Based on the feedback, make necessary changes
  • Writing additional classes in wrap.py for updating wxGUI to be compatible with both wxPython 3 and 4.
  • Finish porting to Python 3
  • Fixing all deprecated messages
  • Testing the changes.

July 30 - August 5
Week 12

  • Preparing and testing all the changes
  • Writing documentation for the final evaluation

August 6 - August 14
Evaluation 3 (Final)

  • Final code submission
  • Evaluation of final submission

Community Bonding Period Report

During the Community Bonding Period I performed the following activities:

Introduction to Community
I wrote an introductory email to the SoC mailing list and grass-dev mailing list and gave a description about my project and shared my wiki page, public repository, and project proposal links.

Create Wiki page
I requested the write access to setup a project wiki page. Then, I created my wiki page detailing the project description, containing link to my GSoC application, a detailed timeline, link to my public repository where all my commits and progress can be followed.

Set up code repository
I have setup my code repository on github for tracking the applied changesets.

Set up development environment
I setup my development environment (Ubuntu 18.04) for two Python versions (Python 2.7.x and Python 3.6.x) for which I am using virtual environments. This was done because I need to make sure that when I update any code it should be compatible with both the versions.

Add links to community wiki pages
I added my project links to the OSGeo's Google Summer of Code 2018 Accepted students wiki page and trac wiki page: https://wiki.osgeo.org/wiki/Google_Summer_of_Code_2018_Accepted and https://trac.osgeo.org/grass/wiki/GSoC.

Discussion with community members and mentors about the design of the project
I got in touch with my mentors to discuss the right approach to test the code and submit files.

Get familiar with the testing framework
I followed the wiki page to get familiar with the testing framework(https://grasswiki.osgeo.org/wiki/GRASS_and_Python). I also followed the grass Python Scripting tutorials from this link: https://github.com/wenzeslaus/python-grass-addon

Update current tests of the python script library, adjust them to work with Python3
I updated the code in the python script library to make it work on Python3 and submitted the patch files for those. I used the standard North Carolina dataset that uses the basic version of the dataset. (https://grass.osgeo.org/download/sample-data/) I have looked through the summary reports for the current tests of GRASS which is going to be useful when I will update tests for the libraries in the system. (http://fatra.cnr.ncsu.edu/grassgistests/summary_report/)

Get familiar with the overall working of GRASS GIS and understand Python dependencies in the system
I went through the GRASS wiki pages to get familiar with the working of the system (https://grass.osgeo.org/grass75/manuals/libpython/) and looked through the source code. Also, I found the code dependencies that I will be working with throughout the coding period.

Read documentation
I read some documentation related to GSoC guidelines about working throughout the GSoC period. I also read GRASS GIS Python library documentation: (https://grass.osgeo.org/grass75/manuals/libpython/)

Practice fixing bugs
I wrote a bug fix related to wxPython(https://trac.osgeo.org/grass/ticket/3510) during Pre-bonding period and submitted the patch file.

Weekly reports