• Stars
    star
    3
  • Rank 3,847,251 (Top 78 %)
  • Language
    Julia
  • License
    Other
  • Created over 8 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Julia package to simplify package development

EasyPkg

Build Status Build status

A Julia package to simplify package development. EasyPkg aims to reduce the boilerplate code typically found in a Julia project's "src/.jl" and "test/runtests.jl".

Package Source code

EasyPkg can include all Julia source files in your package automatically, or assist with manual source file handing.

Automatic source file handling

Use include_all_sources() to reduce the average Julia project's "src/.jl" to

__precompile__()

module <PrjName>

import EasyPkg
EasyPkg.include_all_sources()

function __init__()
    ...
end

end # module

For this to work, the structure of the sources files must not depend on a specific inclusion order - so the source files should not contain any initialization steps that depend on another source file. For precompiled packages, this shouldn't be an issue, as all initialization steps will reside in __init()__ anyhow.

Manual source file handling

If you need control over the order in which source files are included, you can use EasyPkg.include_sources(name...) to shorten your source inclusion code a little and handle subdirectories in a modular fashion.

Given a package structure like

  • src
    • foo/foo.jl
    • foo/xyz.jl
    • bar.jl

use

EasyPkg.include_sources(
    "foo",
    "bar.jl",
)

to include "foo/foo.jl" and "bar.jl". Obviously, "foo/foo.jl" will be responsible for including "foo/xyz.jl" and other files in the "foo" subdirectory (e.g using EasyPkg.include_sources again).

Note: The source file structure of EasyPkg itself is not necessarily a good template - it is a bit complicated and deeply nested on purpose, so that EasyPkg can tests it's own functionality.

Package Tests

Use EasyPkg.run_all_tests() to reduce "test/runtests.jl" for a typical Julia project to

import EasyPkg
EasyPkg.run_all_tests()

It will automatically find and include all your test source files (may reside in nested directories). They should look like this:

import EasyPkg
@EasyPkg.using_BaseTest

@testset "Some tests" begin
    @test ...
    @test ...
    ...
end

@testset "Some more tests" ...

More Repositories

1

blitzwave

blitzwave C++ wavelet mini-library
C++
36
star
2

ForwardDiffPullbacks.jl

ChainRulesCore compatible pullbacks using ForwardDiff
Julia
13
star
3

julia-course

Introductory Julia Course
Jupyter Notebook
13
star
4

ValueShapes.jl

Duality of view between named variables and flat vectors in Julia
Julia
12
star
5

EmpiricalDistributions.jl

Empirical probability distributions in Julia
Julia
11
star
6

ParallelProcessingTools.jl

Parallel processing tools for Julia
Julia
10
star
7

Why-Julia

Talk motivating using Julia in scientific contexts
Jupyter Notebook
10
star
8

swmod

Simple Software Module Management Tool
Shell
7
star
9

BitOperations.jl

Julia Bit Manipulation Functions
Julia
7
star
10

PropDicts.jl

Property dictionaries with support for deep merging
Julia
7
star
11

PropertyFunctions.jl

Julia package for easy access to and efficient broadcasting over properties
Julia
6
star
12

DistributionMeasures.jl

Conversions between Distributions.jl distributions and MeasureTheory.jl measures.
Julia
6
star
13

container-env

Virtual container environments with Singularity or Shifter
Shell
4
star
14

AffineMaps.jl

Affine affine transformations in Julia
Julia
3
star
15

FunctionChains.jl

Function chains in Julia
Julia
3
star
16

AutoDiffOperators.jl

Operators based on automatic differentiation in Julia
Julia
3
star
17

EncodedArrays.jl

Arrays with encoded/compressed internal data representation for Julia
Julia
3
star
18

HeterogeneousComputing.jl

Tools for heterogeneous computing in Julia
Julia
2
star
19

StruckVMEDevices.jl

[WIP] Julia Struck VME Digitizers Package
Julia
2
star
20

template-hep-project

C++ project template with CERN ROOT-System integration and GNU Autotools build system
M4
1
star
21

swmod-instmod-hep

Install Scripts for Particle Physics Software
Shell
1
star
22

singularity-utils

Singularity container management utilities
Python
1
star
23

pkg-inst-tools

Simple Software Package Install System
Python
1
star
24

froast

FROASt: Functional ROOT-oriented Analysis and Settings
C++
1
star
25

sigprocxx

SigProCxx: Signal Processing Classes for C++
C++
1
star
26

rad-spec-tools

Caution: Pre-pre alpha code
C++
1
star