kylebystrom / pawpyseed

Parallel C/Python package for numerical analysis of PAW DFT wavefunctions
BSD 3-Clause "New" or "Revised" License
31 stars 11 forks source link

Add pre-commit config and format files #19

Closed utf closed 3 years ago

utf commented 3 years ago

This PR adds a pre-commit config for formatting python files. To use pre-commit, make sure it is installed first and then install the config.

pip install pre-commit
pre-commit install

Now, any time you make a commit the code formatters will be run. Note that if any formatting is applied, you will need to re-add any changed files to the commit.

I also ran pyupgrade --py36-plus since pymatgen is python3.6+ anyway. This has fixed common python patterns that are no longer necessary for modern versions of python. See pyupgrade for more details.

@kylebystrom I've only included python code formatting but I can also add C code formatting using clang-format. If you're interested let me know. I've posted an example of the formatting below:

existing c code

void free_transform_spline_list(transform_spline_t* transforms, int num_transforms) {
    for (int i = 0; i < num_transforms; i++) {
        free(transforms[i].transform);
        free(transforms[i].spline[0]);
        free(transforms[i].spline[1]);
        free(transforms[i].spline[2]);
        free(transforms[i].spline);
    }
    free(transforms);
}

void free_density_ft_list(density_ft_t* densities, int total_projs) {
    int total_densities = total_projs * total_projs;
    for (int i = 0; i < total_densities; i++) {
        int num_transforms = (densities[i].l1 + densities[i].l2
                            - abs(densities[i].l1 - densities[i].l2)) / 2 + 1;
        free(densities[i].ks);
        free_transform_spline_list(densities[i].transforms, num_transforms);
    }
    free(densities);
}

void free_density_ft_elem_list(density_ft_elem_t* elems, int num_elems) {
    for (int i = 0; i < num_elems; i++) {
        free_density_ft_list(elems[i].densities, elems[i].total_projs);
    }
    free(elems);
}

Reformatted, style=llvm

void free_transform_spline_list(transform_spline_t *transforms,
                                int num_transforms) {
  for (int i = 0; i < num_transforms; i++) {
    free(transforms[i].transform);
    free(transforms[i].spline[0]);
    free(transforms[i].spline[1]);
    free(transforms[i].spline[2]);
    free(transforms[i].spline);
  }
  free(transforms);
}

void free_density_ft_list(density_ft_t *densities, int total_projs) {
  int total_densities = total_projs * total_projs;
  for (int i = 0; i < total_densities; i++) {
    int num_transforms = (densities[i].l1 + densities[i].l2 -
                          abs(densities[i].l1 - densities[i].l2)) /
                             2 +
                         1;
    free(densities[i].ks);
    free_transform_spline_list(densities[i].transforms, num_transforms);
  }
  free(densities);
}

void free_density_ft_elem_list(density_ft_elem_t *elems, int num_elems) {
  for (int i = 0; i < num_elems; i++) {
    free_density_ft_list(elems[i].densities, elems[i].total_projs);
  }
  free(elems);
}
kylebystrom commented 3 years ago

Hi @utf, this looks great, thank you so much! And yes, also having the C code formatting would be great.

utf commented 3 years ago

Ok cool, I've added the C formatting.

kylebystrom commented 3 years ago

Thank you! I appreciate the help getting the formatting cleaned up.