1. 08 Nov, 2019 6 commits
    • Christelle Zouein's avatar
      Issue response time analysis · 1e45b9ab
      Christelle Zouein authored
      In the response time analysis, response time variations over time are
      represented.
      Rolling window of 50 for smoothing.
      
      Displaying a bar chart in the response analysis that shows the rates of
      unanswered issues at each creation date.
      1e45b9ab
    • Christelle Zouein's avatar
      Centrality analysis for git issues · dd6dbcb6
      Christelle Zouein authored
      The centrality analysis's network is built according to the network
      analysis' network. It is heavily inspired by the git repositories'
      centrality analysis.
      dd6dbcb6
    • Christelle Zouein's avatar
      Network Analysis for issue discussions · 32cea33b
      Christelle Zouein authored
      The network analysis, when it comes to issues is based on the
      discussions that happen on the issue themselves.
      And so, we build a graph that connects the author of an issue to all
      those that commented on said issue.
      Not removing edges with a weight of 0 because simply, there
      aren't any, at least not with the way the edge_list is currently built.
      32cea33b
    • Christelle Zouein's avatar
      Issues teamsize analysis · a6ef1150
      Christelle Zouein authored
      Teamsize anaylsis based on the number of authors (per date) for teamsize
      and the number of issues (per date) for activity.
      
      Including commenter data in teamsize analysis
      a6ef1150
    • Christelle Zouein's avatar
      Activity analysis for issues · b597436d
      Christelle Zouein authored
      Analysing commenter as well as reporter activity
      b597436d
    • Christelle Zouein's avatar
      Parsing issues · dd5e4ba0
      Christelle Zouein authored
      Parsing issues either from a path to a directory with JSON files
      containing issues or a path to a JSON file containing issues.
      Ruleset finding, is_entry_acceptable and postprocessing available as
      well as preprocessing.
      dd5e4ba0
  2. 07 Nov, 2019 1 commit
    • Christelle Zouein's avatar
      Script for fetching git issues · 023389b6
      Christelle Zouein authored
      Using python-gitlab to fetch the issues of a project with a given
      project id.
      Adding a discussion field to the issue dictionary that stores the
      discussion around said issue. And thus it stores a list or threads,
      which are a list of comments... so a list of lists of dictionaries.
      Adding private access token as mandatory cli argument for gitlab
      instance authentication.
      Shifting to Pipfile, Requirements.txt removed
      023389b6
  3. 31 Oct, 2019 2 commits
  4. 07 Oct, 2019 2 commits
    • Christelle Zouein's avatar
      Centrality analysis for mailing lists · 4bfaae40
      Christelle Zouein authored
      Centrality analysis for mailing lists mimicking the git repositories'
      centrality analysis.
      But, I'm not skipping the first two values or size_df in this one.
      size and centrality also stop before activity.
      4bfaae40
    • Christelle Zouein's avatar
      Network analysis for mailing lists · c937e048
      Christelle Zouein authored
      Heavily inspired from the git repositories' netwrok analysis, it
      expresses how much a sender's message was referenced and how much they
      reference other messages.
      Instead of the intersection of the references lists of each user like in
      the git version, this version's edge list weights is the
      intersection of the list of message ids of all of the source's message
      and the references list of the target. It thus focuses on the sender
      being referenced instead of just the sender referencing.
      And thus we consider the phenomenon of being referenced since the former is
      be more meaningful as to the sender/person's value inside the mailing
      community should increase with the amount of time they are referenced.
      
      Moreover in the process of sending and receiving emails some people are
      mentioned and replied to and some others mention and reply, and since
      being mentioned many times is a more important indicator to someone's
      centrality than barely mentioning (because, really, anyone can mention
      others), I'm switching to a firected graph to represent the data.
      c937e048
  5. 02 Oct, 2019 4 commits
    • Christelle Zouein's avatar
      Team size analysis for mailing lists · 538f7ae5
      Christelle Zouein authored
      Team sixe analysis following the example of the git repositories' team size
      analysis.
      But is it really a team? More of a community?
      NOTE: Not substracting 3 days from each date contrary to the
      repositories' activity.py.
      538f7ae5
    • Christelle Zouein's avatar
      Activity analysis for mailing lists · 77a63bb1
      Christelle Zouein authored
      Activity analysing for mailing lists heavily inspired for its git
      counterpart.
      77a63bb1
    • Christelle Zouein's avatar
      Module created for ruleset finding · 737294c7
      Christelle Zouein authored
      The ruleset finding functions moved to their own file instead of
      gitparsing for easier use with mailparsing and because they really shouldn't
      be endemic to gitparsing.
      Additionally:
      filename argument added to the function that finds rulesets in
      directories to make it possible to find rulesets files with custom
      names.
      737294c7
    • Christelle Zouein's avatar
      Parsing mail archives in mbox format · 4ac1a95d
      Christelle Zouein authored
      Using python's mbox parser instead of a .txt format and a self implemented
      parser  since mailing lists in mbox format are now available to us.
      
      Messages with tree like structure (due to them being multipart) couldn't be
      parsed entirely with a simple for loop. Using get_content and iter_parts
      to handle multipart emails and formatting and decoding bodies.
      4ac1a95d
  6. 01 Oct, 2019 2 commits
    • Christelle Zouein's avatar
      Multiprocessing the work on entries in a repository · cca3c322
      Christelle Zouein authored
      Adopting an aproach where the analysis itself of each entry of a repository
      happens in parallel.
      Using apply or apply_async yielded longer execution times with
      multiprocessing. So, switching to a wrapper function (wrapper) that takes
      a path as its only argument and mapping it to self.__paths. This makes
      the execution time smaller than without multiprocessing and allows near
      maximum cpu usage.
      Modules not found errors due to multiprocessing fixed with adding
      directory paths to sys.path so even after forking, the system still
      recognizes the modules.
      Pickling issue encountered fixed with using pathos' multiprocess instead
      of the built-in multiprocessing.
      
      Requirements added to pipfile.
      
      As for pool parameters:
      After testing different execution times, a pool with 6 (cpu_count + 2)
      processes turned out to be the best option. In fact, since we're mainly
      IO bound, processes spend most of their times in a blocked state and a
      process in a blockd state lets others run, so having more processes
      running than cores makes sense in this case.
      
      Removal of the get_log_from_repositories function to remain faithful to
      the original API.
      cca3c322
    • Christelle Zouein's avatar
      Computing network in parallel · 51eb4895
      Christelle Zouein authored
      51eb4895
  7. 05 Sep, 2019 1 commit
    • Christelle Zouein's avatar
      Mapping rulesets to the corresponding repository · 31a10566
      Christelle Zouein authored
      Rulesets are now stored in a dictionary (key : path to repository, value :
      list of modules found ascendingly from repo).
      is_entry_acceptable and postprocess_entry are only applied on rulesets
      relevant to the repository in question.
      
      Mapping rulesets to the corresponding repo
      
      Actually mapping rulesets to the corresponding repository instead of to the
      directory in which they were found.
      In the posrprocess and is_entry_acceptable functions, looping on dict
      keys turned into a simple lookup.
      
      Lookup for rulesets moved one function call above
      
      Lookup for rulesets moved to the function call above postprocessing and
      is_entry_acceptable as well as some other adjustments (abs_path used as
      a key instead of repo name for dictionary, function renaming -> plural
      form and more efficient get statement replaced if)
      
      mod variable name changed to ruleset
      
      Returning false when entry isn't acceptable
      
      Added if statement in the for loop to return false when the entry isn't
      acceptable instead of wrongly just calling is_entry_acceptable.
      31a10566
  8. 03 Sep, 2019 2 commits
    • Christelle Zouein's avatar
      Ascending search for rulesets feature added · e584200f
      Christelle Zouein authored
      Looking for ruleset modules at first in project packages and then in the add
      repository function. Searching happens in an ascending manner where a
      ruleset with the filename "comdaan_ruleset.py" is searched for in the
      repository itself and every parent of it. An error message is displayed
      if the ruleset file is erroneous without stopping the execution.
      e584200f
    • Kevin Ottens's avatar
      Don't die on edge less graphs · 0ad95d7a
      Kevin Ottens authored
      If the number of contributors is too limited we might not be able to
      produce an edge list at all (typically 0 or 1 active contributor during
      the time window). In such a case, create a graph by hand containing only
      disconnected nodes based from the list of remaining authors.
      0ad95d7a
  9. 02 Sep, 2019 5 commits
  10. 29 Jul, 2019 1 commit
  11. 04 Jul, 2019 1 commit
  12. 13 Aug, 2018 2 commits
  13. 07 Jul, 2018 1 commit
  14. 30 Jun, 2018 1 commit
  15. 26 Jun, 2018 3 commits
  16. 25 Jun, 2018 3 commits
  17. 23 Jun, 2018 1 commit
  18. 22 Apr, 2018 2 commits