Skip to content
This repository has been archived by the owner on Dec 11, 2022. It is now read-only.

Prepare new release #49

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .JuliaFormatter.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
indent = 4
margin = 92
always_for_in = true
whitespace_typedefs = true
whitespace_ops_in_indices = true
remove_extra_newlines = true
import_to_using = false
pipe_to_function_call = false
short_to_long_function_def = false
long_to_short_function_def = false
always_use_return = true
whitespace_in_kwargs = true
annotate_untyped_fileds_with_any = true
format_docstrings = true
conditional_to_if = true
normalize_line_endings = "unix"
trailing_comma = true
join_lines_based_on_source = true
indent_submodule = true
separate_kwargs_with_semicolon = true
surround_whereop_typeparameters = true
overwrite = true
verbose = true
format_markdown = true
align_struct_field = true
align_pair_arrow = true
3 changes: 3 additions & 0 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ jobs:
- '1.3'
- '1.4'
- '1.5'
- '1.6'
- '1.7'
- '1.8'
os:
- ubuntu-latest
- macOS-latest
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/CompatHelper.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
julia-version: [1.4.0]
julia-version: [1.8.2]
julia-arch: [x86]
os: [ubuntu-latest]
steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/Documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
- uses: actions/checkout@v2
- uses: julia-actions/setup-julia@latest
with:
version: '1.5'
version: '1.8'
- name: Install dependencies
run: julia --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()'
- name: Build and deploy
Expand Down
161 changes: 83 additions & 78 deletions src/GBIF.jl
Original file line number Diff line number Diff line change
Expand Up @@ -7,88 +7,91 @@ using Requires

const gbifurl = "http://api.gbif.org/v1/"
const gbifenums = Dict(
"basisOfRecord" => [
"FOSSIL_SPECIMEN",
"HUMAN_OBSERVATION",
"LITERATURE",
"LIVING_SPECIMEN",
"MACHINE_OBSERVATION",
"MATERIAL_SAMPLE",
"OBSERVATION",
"PRESERVED_SPECIMEN",
"UNKNOWN"
],
"continent" => [
"AFRICA",
"ANTARCTICA",
"ASIA",
"EUROPE",
"NORTH_AMERICA",
"OCEANIA",
"SOUTH_AMERICA"
],
"establishmentMeans" => [
"INTRODUCED",
"INVASIVE",
"MANAGED",
"NATIVE",
"NATURALISED",
"UNCERTAIN"
],
"issue" => [
"BASIS_OF_RECORD_INVALID",
"CONTINENT_COUNTRY_MISMATCH",
"CONTINENT_DERIVED_FROM_COORDINATES",
"CONTINENT_INVALID",
"COORDINATE_INVALID",
"COORDINATE_OUT_OF_RANGE",
"COORDINATE_PRECISION_INVALID",
"COORDINATE_REPROJECTED",
"COORDINATE_REPROJECTION_FAILED",
"COORDINATE_REPROJECTION_SUSPICIOUS",
"COORDINATE_ROUNDED",
"COORDINATE_UNCERTAINTY_METERS_INVALID",
"COUNTRY_COORDINATE_MISMATCH",
"COUNTRY_DERIVED_FROM_COORDINATES",
"COUNTRY_INVALID",
"COUNTRY_MISMATCH",
"DEPTH_MIN_MAX_SWAPPED",
"DEPTH_NON_NUMERIC",
"DEPTH_NOT_METRIC",
"DEPTH_UNLIKELY",
"ELEVATION_MIN_MAX_SWAPPED",
"ELEVATION_NON_NUMERIC",
"ELEVATION_NOT_METRIC",
"ELEVATION_UNLIKELY",
"GEODETIC_DATUM_ASSUMED_WGS84",
"GEODETIC_DATUM_INVALID",
"IDENTIFIED_DATE_INVALID",
"IDENTIFIED_DATE_UNLIKELY",
"INDIVIDUAL_COUNT_INVALID",
"INTERPRETATION_ERROR",
"MODIFIED_DATE_INVALID",
"MODIFIED_DATE_UNLIKELY",
"MULTIMEDIA_DATE_INVALID",
"MULTIMEDIA_URI_INVALID",
"PRESUMED_NEGATED_LATITUDE",
"PRESUMED_NEGATED_LONGITUDE",
"PRESUMED_SWAPPED_COORDINATE",
"RECORDED_DATE_INVALID",
"RECORDED_DATE_MISMATCH",
"RECORDED_DATE_UNLIKELY",
"REFERENCES_URI_INVALID",
"TAXON_MATCH_FUZZY",
"TAXON_MATCH_HIGHERRANK",
"TAXON_MATCH_NONE",
"TYPE_STATUS_INVALID",
"ZERO_COORDINATE"
]
)
"basisOfRecord" => [
"FOSSIL_SPECIMEN",
"HUMAN_OBSERVATION",
"LITERATURE",
"LIVING_SPECIMEN",
"MACHINE_OBSERVATION",
"MATERIAL_SAMPLE",
"OBSERVATION",
"PRESERVED_SPECIMEN",
"UNKNOWN",
],
"continent" => [
"AFRICA",
"ANTARCTICA",
"ASIA",
"EUROPE",
"NORTH_AMERICA",
"OCEANIA",
"SOUTH_AMERICA",
],
"establishmentMeans" => [
"INTRODUCED",
"INVASIVE",
"MANAGED",
"NATIVE",
"NATURALISED",
"UNCERTAIN",
],
"issue" => [
"BASIS_OF_RECORD_INVALID",
"CONTINENT_COUNTRY_MISMATCH",
"CONTINENT_DERIVED_FROM_COORDINATES",
"CONTINENT_INVALID",
"COORDINATE_INVALID",
"COORDINATE_OUT_OF_RANGE",
"COORDINATE_PRECISION_INVALID",
"COORDINATE_REPROJECTED",
"COORDINATE_REPROJECTION_FAILED",
"COORDINATE_REPROJECTION_SUSPICIOUS",
"COORDINATE_ROUNDED",
"COORDINATE_UNCERTAINTY_METERS_INVALID",
"COUNTRY_COORDINATE_MISMATCH",
"COUNTRY_DERIVED_FROM_COORDINATES",
"COUNTRY_INVALID",
"COUNTRY_MISMATCH",
"DEPTH_MIN_MAX_SWAPPED",
"DEPTH_NON_NUMERIC",
"DEPTH_NOT_METRIC",
"DEPTH_UNLIKELY",
"ELEVATION_MIN_MAX_SWAPPED",
"ELEVATION_NON_NUMERIC",
"ELEVATION_NOT_METRIC",
"ELEVATION_UNLIKELY",
"GEODETIC_DATUM_ASSUMED_WGS84",
"GEODETIC_DATUM_INVALID",
"IDENTIFIED_DATE_INVALID",
"IDENTIFIED_DATE_UNLIKELY",
"INDIVIDUAL_COUNT_INVALID",
"INTERPRETATION_ERROR",
"MODIFIED_DATE_INVALID",
"MODIFIED_DATE_UNLIKELY",
"MULTIMEDIA_DATE_INVALID",
"MULTIMEDIA_URI_INVALID",
"PRESUMED_NEGATED_LATITUDE",
"PRESUMED_NEGATED_LONGITUDE",
"PRESUMED_SWAPPED_COORDINATE",
"RECORDED_DATE_INVALID",
"RECORDED_DATE_MISMATCH",
"RECORDED_DATE_UNLIKELY",
"REFERENCES_URI_INVALID",
"TAXON_MATCH_FUZZY",
"TAXON_MATCH_HIGHERRANK",
"TAXON_MATCH_NONE",
"TYPE_STATUS_INVALID",
"ZERO_COORDINATE",
],
)

# Load the main functions

include("query.jl")

include("exceptions.jl")
export GBIFException, NoTaxonMatchedAtRank, OtherTaxonMatchingException, BadHTMLResponseCode

include("types/GBIFTaxon.jl")
export GBIFTaxon

Expand All @@ -108,7 +111,9 @@ export occurrences!

# Extends with DataFrames functionalities
function __init__()
@require DataFrames="a93c6f00-e57d-5684-b7b6-d8193f3e46c0" include("requires/dataframes.jl")
@require DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" include(
"requires/dataframes.jl",
)
end

end # module
25 changes: 25 additions & 0 deletions src/exceptions.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import Base: showerror

abstract type GBIFException <: Exception end

struct NoTaxonMatchedAtRank <: GBIFException
taxon::String
rank::String
end

struct OtherTaxonMatchingException <: GBIFException
taxon::String
rank::String
end

struct BadHTMLResponseCode <: GBIFException
taxon::String
rank::String
errorcode::Integer
end

function Base.showerror(io::IO, err::NoTaxonMatchedAtRank)
msg = "No match in the GBIF taxonomy for $(err.tax) at rank $(err.rank)\n"
msg *= "→ you can append `strict=false` to your query to have non-strict matching"
return print(io, msg)
end
Loading