geopic-tag-reader 1.0.5__tar.gz → 1.0.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/CHANGELOG.md +32 -15
  2. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/Makefile +1 -1
  3. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/PKG-INFO +7 -8
  4. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/docs/API_USAGE.md +1 -1
  5. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/docs/model.md +1 -3
  6. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/geopic_tag_reader/__init__.py +2 -1
  7. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/pyproject.toml +6 -8
  8. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/test_reader.py +2 -2
  9. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/.gitignore +0 -0
  10. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/.gitlab-ci.yml +0 -0
  11. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/.pre-commit-config.yaml +0 -0
  12. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/CODE_OF_CONDUCT.md +0 -0
  13. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/LICENSE +0 -0
  14. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/README.md +0 -0
  15. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/docs/.pages +0 -0
  16. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/docs/CLI_USAGE.md +0 -0
  17. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/docs/Develop.md +0 -0
  18. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/docs/Install.md +0 -0
  19. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/docs/camera.md +0 -0
  20. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/docs/reader.md +0 -0
  21. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/docs/writer.md +0 -0
  22. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/geopic_tag_reader/camera.py +0 -0
  23. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/geopic_tag_reader/main.py +0 -0
  24. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/geopic_tag_reader/model.py +0 -0
  25. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/geopic_tag_reader/py.typed +0 -0
  26. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/geopic_tag_reader/reader.py +0 -0
  27. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/geopic_tag_reader/writer.py +0 -0
  28. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/pytest.ini +0 -0
  29. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/__init__.py +0 -0
  30. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/conftest.py +0 -0
  31. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/1.jpg +0 -0
  32. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/IMG_20210720_144918.jpg +0 -0
  33. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/IMG_20210720_161352.jpg +0 -0
  34. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/a1.jpg +0 -0
  35. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/b1.jpg +0 -0
  36. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/broken_makernotes.jpg +0 -0
  37. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/c1.jpg +0 -0
  38. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/cropped.jpg +0 -0
  39. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/d1.jpg +0 -0
  40. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/datetime_ms_float.jpg +0 -0
  41. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/datetime_offset.jpg +0 -0
  42. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/e1.jpg +0 -0
  43. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/flat.jpg +0 -0
  44. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/gopromax_flat.jpg +0 -0
  45. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/gps_date_slash.jpg +0 -0
  46. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/gps_date_time_stamp.jpg +0 -0
  47. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/img_Ricoh_Theta.jpg +0 -0
  48. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/img_V4MPack.jpg +0 -0
  49. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/img_categorisee.jpg +0 -0
  50. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/img_datetimeoriginal.jpg +0 -0
  51. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/img_gps_date_string.jpg +0 -0
  52. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/img_gps_datestamp.jpg +0 -0
  53. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/img_gps_sotm.jpg +0 -0
  54. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/img_invalid_gps_date.jpg +0 -0
  55. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/img_without_coord.jpg +0 -0
  56. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/img_without_dt.jpg +0 -0
  57. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/img_without_exif_tags.jpg +0 -0
  58. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/insta360_date.jpg +0 -0
  59. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/int_long_tag.jpg +0 -0
  60. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/out_of_bounds_lat.jpg +0 -0
  61. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/out_of_bounds_lon.jpg +0 -0
  62. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/pic_with_float_lat.jpg +0 -0
  63. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/fixtures/ricoh_theta_no_projection.jpg +0 -0
  64. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/test_main.py +0 -0
  65. {geopic_tag_reader-1.0.5 → geopic_tag_reader-1.0.6}/tests/test_writer.py +0 -0
@@ -1,4 +1,5 @@
1
1
  # Changelog
2
+
2
3
  All notable changes to this project will be documented in this file.
3
4
 
4
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
@@ -6,137 +7,153 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
7
 
7
8
  ## [Unreleased]
8
9
 
10
+ ## [1.0.6] - 2024-04-02
11
+
12
+ ### Changed
13
+
14
+ - Bump some dependencies, the most important one being [typer](https://typer.tiangolo.com/) since it removes the need for typer-cli.
9
15
 
10
16
  ## [1.0.5] - 2024-03-06
11
17
 
12
18
  ### Fixed
19
+
13
20
  - Automatic detection of 360° pictures based on make and model also checks for image dimensions (to avoid false positive, when 360° camera can also take flat pictures).
14
21
  - Slash character in GPS date stamp was not correctly interpreted.
15
22
 
16
-
17
23
  ## [1.0.4] - 2024-02-12
18
24
 
19
25
  ### Changed
20
- - When using date/time not coming from GPS, offset time EXIF field are also read (`Exif.Photo.OffsetTimeOriginal` or `Exif.Photo.OffsetTime` depending on used date/time EXIF tag).
21
26
 
27
+ - When using date/time not coming from GPS, offset time EXIF field are also read (`Exif.Photo.OffsetTimeOriginal` or `Exif.Photo.OffsetTime` depending on used date/time EXIF tag).
22
28
 
23
29
  ## [1.0.3] - 2023-12-18
24
30
 
25
31
  ### Added
32
+
26
33
  - Support reading date from EXIF fields `Exif.Image.DateTime` and `Xmp.GPano.SourceImageCreateTime`.
27
34
  - Auto-detect if a picture is 360° based on make and model.
28
35
 
29
36
  ### Fixed
30
- - Avoid failures for pictures with invalid offset for maker notes (due to PyExiv2 log level).
31
37
 
38
+ - Avoid failures for pictures with invalid offset for maker notes (due to PyExiv2 log level).
32
39
 
33
40
  ## [1.0.2] - 2023-11-20
34
41
 
35
42
  ### Added
43
+
36
44
  - A warning is thrown when microseconds values between decimal seconds and sub-second time fields are not matching.
37
45
 
38
46
  ### Changed
39
- - Fraction values for date, time and GPS coordinates are supported.
40
47
 
48
+ - Fraction values for date, time and GPS coordinates are supported.
41
49
 
42
50
  ## [1.0.1] - 2023-11-17
43
51
 
44
52
  ### Fixed
45
- - `DateTimeOriginal` field wasn't correctly read when seconds value was decimal.
46
53
 
54
+ - `DateTimeOriginal` field wasn't correctly read when seconds value was decimal.
47
55
 
48
56
  ## [1.0.0] - 2023-10-18
49
57
 
50
58
  ### Added
59
+
51
60
  - Add subseconds to written metadata
52
61
  - Read altitude in metadata
53
62
  - Write direction and altitude metadata
54
63
  - Add `additional_exif` tags in `writePictureMetadata`
55
64
 
56
65
  ### Changed
57
- - EXIF list of tags now uses the [Exiv2](https://exiv2.org/metadata.html) notation (example `Exif.Image.Artist`) in returned data. To do this, pyexiv2 dependency is always necessary, and Pillow dependency has been removed. As a consequence, `readPictureMetadata` function __now takes in input `bytes`__ read from picture file instead of Pillow image. This is a breaking change.
58
- - Use overriden metadata is available to localize overriden capture_time
59
66
 
67
+ - EXIF list of tags now uses the [Exiv2](https://exiv2.org/metadata.html) notation (example `Exif.Image.Artist`) in returned data. To do this, pyexiv2 dependency is always necessary, and Pillow dependency has been removed. As a consequence, `readPictureMetadata` function **now takes in input `bytes`** read from picture file instead of Pillow image. This is a breaking change.
68
+ - Use overriden metadata is available to localize overriden capture_time
60
69
 
61
70
  ## [0.4.1] - 2023-09-08
62
71
 
63
72
  ### Added
64
- - Latitude and longitude values are checked to verify they fit into WGS84 projection bounds (-180, -90, 180, 90).
65
73
 
74
+ - Latitude and longitude values are checked to verify they fit into WGS84 projection bounds (-180, -90, 180, 90).
66
75
 
67
76
  ## [0.4.0] - 2023-09-01
68
77
 
69
78
  ### Added
79
+
70
80
  - When a picture does not contain a mandatory exif tag (coordinates or datetime), a `PartialExifException` is thrown containing some information about what has been parsed and what is missing.
71
81
 
72
82
  ## [0.3.1] - 2023-07-31
73
83
 
74
84
  ### Added
85
+
75
86
  - A way to write exif lon/lat and type tags.
76
87
 
77
88
  ## [0.3.0] - 2023-07-31
78
89
 
79
90
  ### Added
91
+
80
92
  - Support of any date/time separator for EXIF tag `DateTimeOriginal`
81
93
  - A way to write exif tags. To use this, you need to install this library with the extra `[write-exif]`.
82
94
 
83
-
84
95
  ## [0.2.0] - 2023-07-13
85
96
 
86
97
  ### Added
98
+
87
99
  - Support of cropped equirectangular panoramas
88
100
 
89
101
  ### Changed
102
+
90
103
  - Support python 3.8
91
104
 
92
105
  ## [0.1.3]
93
106
 
94
107
  ### Changed
108
+
95
109
  - Bump [Typer](typer.tiangolo.com/) version, and use fork of [Typer-cli](https://gitlab.com/geovisio/infra/typer-cli)
96
110
 
97
111
  ## [0.1.2]
98
112
 
99
113
  ### Added
100
- - Full typing support ([PEP 484](https://peps.python.org/pep-0484/) and [PEP 561](https://peps.python.org/pep-0561/))
101
114
 
115
+ - Full typing support ([PEP 484](https://peps.python.org/pep-0484/) and [PEP 561](https://peps.python.org/pep-0561/))
102
116
 
103
117
  ## [0.1.1]
104
118
 
105
119
  ### Added
106
- - Support of Mapillary tags stored in EXIF tag `ImageDescription`
107
120
 
121
+ - Support of Mapillary tags stored in EXIF tag `ImageDescription`
108
122
 
109
123
  ## [0.1.0]
110
124
 
111
125
  ### Added
126
+
112
127
  - If GPS Date or time can't be read, fallbacks to Original Date EXIF tag associated with a reader warning
113
128
  - New EXIF tags are supported: `GPSDateTime`
114
129
 
115
130
  ### Changed
131
+
116
132
  - `tag_reader:warning` property has been moved from EXIF, and is now available as a direct property named `tagreader_warnings` of `GeoPicTags` class
117
133
  - Reader now supports `GPSLatitude` and `GPSLongitude` stored as decimal values instead of tuple
118
134
  - Reader now supports reading `FocalLength` written in `NUMBER/NUMBER` format
119
135
  - If EXIF tags for heading `PoseHeadingDegrees` and `GPSImgDirection` have contradicting values, we use by default `GPSImgDirection` value and issue a warning, instead of raising an error
120
136
 
121
137
  ### Fixed
122
- - EXIF tag `SubsecTimeOriginal` was not correctly read due to a typo
123
138
 
139
+ - EXIF tag `SubsecTimeOriginal` was not correctly read due to a typo
124
140
 
125
141
  ## [0.0.2] - 2023-05-10
126
142
 
127
143
  ### Added
144
+
128
145
  - EXIF tag `UserComment` is now read and available in raw `exif` tags
129
146
  - If not set, `GPSLatitudeRef` defaults to North and `GPSLongitudeRef` defaults to East
130
147
  - A new `tag_reader:warning` property lists non-blocking warnings raised while reading EXIF tags
131
148
 
132
-
133
149
  ## [0.0.1] - 2023-03-31
134
150
 
135
151
  ### Added
136
- - EXIF tag reading methods extracted from [GeoVisio API](https://gitlab.com/geovisio/api)
137
152
 
153
+ - EXIF tag reading methods extracted from [GeoVisio API](https://gitlab.com/geovisio/api)
138
154
 
139
- [Unreleased]: https://gitlab.com/geovisio/geo-picture-tag-reader/-/compare/1.0.5...main
155
+ [Unreleased]: https://gitlab.com/geovisio/geo-picture-tag-reader/-/compare/1.0.6...main
156
+ [1.0.6]: https://gitlab.com/geovisio/geo-picture-tag-reader/-/compare/1.0.5...1.0.6
140
157
  [1.0.5]: https://gitlab.com/geovisio/geo-picture-tag-reader/-/compare/1.0.4...1.0.5
141
158
  [1.0.4]: https://gitlab.com/geovisio/geo-picture-tag-reader/-/compare/1.0.3...1.0.4
142
159
  [1.0.3]: https://gitlab.com/geovisio/geo-picture-tag-reader/-/compare/1.0.2...1.0.3
@@ -14,7 +14,7 @@ fmt: ## Format code
14
14
  ci: type-check fmt test ## Run all check like the ci
15
15
 
16
16
  docs: ## Generates documentation from Typer embedded docs
17
- python -m typer_cli ./geopic_tag_reader/main.py utils docs --name geopic-tag-reader --output docs/CLI_USAGE.md
17
+ python -m typer ./geopic_tag_reader/main.py utils docs --name geopic-tag-reader --output docs/CLI_USAGE.md
18
18
  lazydocs --overview-file API_USAGE.md --ignored-modules main --output-path docs/ geopic_tag_reader/
19
19
 
20
20
  help: ## Print this help message
@@ -1,22 +1,21 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geopic-tag-reader
3
- Version: 1.0.5
3
+ Version: 1.0.6
4
4
  Summary: GeoPicTagReader
5
5
  Author-email: Adrien PAVIE <panieravide@riseup.net>
6
6
  Requires-Python: >=3.8
7
7
  Description-Content-Type: text/markdown
8
8
  Classifier: License :: OSI Approved :: MIT License
9
- Requires-Dist: typer ~= 0.9.0
10
- Requires-Dist: xmltodict ~= 0.13.0
9
+ Requires-Dist: typer ~= 0.12
10
+ Requires-Dist: xmltodict ~= 0.13
11
11
  Requires-Dist: pyexiv2 == 2.8.3
12
12
  Requires-Dist: flit ~= 3.8.0 ; extra == "build"
13
- Requires-Dist: black ~= 22.8.0 ; extra == "dev"
14
- Requires-Dist: mypy ~= 1.0.0 ; extra == "dev"
13
+ Requires-Dist: black ~= 24.3 ; extra == "dev"
14
+ Requires-Dist: mypy ~= 1.9 ; extra == "dev"
15
15
  Requires-Dist: pytest ~= 7.2.0 ; extra == "dev"
16
- Requires-Dist: pytest-datafiles ~= 2.0.1 ; extra == "dev"
17
- Requires-Dist: typer-cli-forked ~= 0.0.14 ; extra == "dev"
16
+ Requires-Dist: pytest-datafiles ~= 3.0 ; extra == "dev"
18
17
  Requires-Dist: lazydocs ~= 0.4.8 ; extra == "dev"
19
- Requires-Dist: types-xmltodict ~= 0.13.0 ; extra == "dev"
18
+ Requires-Dist: types-xmltodict ~= 0.13 ; extra == "dev"
20
19
  Requires-Dist: pre-commit ~= 3.3.3 ; extra == "dev"
21
20
  Requires-Dist: timezonefinder == 6.2.0 ; extra == "write-exif"
22
21
  Requires-Dist: pytz ~= 2023.3 ; extra == "write-exif"
@@ -11,7 +11,7 @@
11
11
 
12
12
  ## Classes
13
13
 
14
- - [`model.PictureType`](./model.md#class-picturetype)
14
+ - [`model.PictureType`](./model.md#class-picturetype): An enumeration.
15
15
  - [`reader.CropValues`](./reader.md#class-cropvalues): Cropped equirectangular pictures metadata
16
16
  - [`reader.GeoPicTags`](./reader.md#class-geopictags): Tags associated to a geolocated picture
17
17
  - [`reader.InvalidExifException`](./reader.md#class-invalidexifexception): Exception for invalid EXIF information from image
@@ -14,9 +14,7 @@
14
14
  <a href="../geopic_tag_reader/model.py#L4"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
15
15
 
16
16
  ## <kbd>class</kbd> `PictureType`
17
-
18
-
19
-
17
+ An enumeration.
20
18
 
21
19
 
22
20
 
@@ -1,4 +1,5 @@
1
1
  """
2
2
  GeoPicTagReader
3
3
  """
4
- __version__ = "1.0.5"
4
+
5
+ __version__ = "1.0.6"
@@ -8,8 +8,8 @@ license = {file = "LICENSE"}
8
8
  classifiers = ["License :: OSI Approved :: MIT License"]
9
9
  dynamic = ["version", "description"]
10
10
  dependencies = [
11
- "typer ~= 0.9.0",
12
- "xmltodict ~= 0.13.0",
11
+ "typer ~= 0.12",
12
+ "xmltodict ~= 0.13",
13
13
  "pyexiv2 == 2.8.3",
14
14
  ]
15
15
  requires-python = ">=3.8"
@@ -22,14 +22,12 @@ geopic-tag-reader="geopic_tag_reader.main:app"
22
22
 
23
23
  [project.optional-dependencies]
24
24
  dev = [
25
- "black ~= 22.8.0",
26
- "mypy ~= 1.0.0",
25
+ "black ~= 24.3",
26
+ "mypy ~= 1.9",
27
27
  "pytest ~= 7.2.0",
28
- "pytest-datafiles ~= 2.0.1",
29
- "typer-cli-forked ~= 0.0.14", # fork dependency needed until https://github.com/tiangolo/typer-cli/pull/120 is merged.
30
- #"typer-cli ~= 0.0.13",
28
+ "pytest-datafiles ~= 3.0",
31
29
  "lazydocs ~= 0.4.8",
32
- "types-xmltodict ~= 0.13.0",
30
+ "types-xmltodict ~= 0.13",
33
31
  "pre-commit ~= 3.3.3",
34
32
  ]
35
33
  build = ["flit ~= 3.8.0"]
@@ -143,7 +143,7 @@ def test_readPictureMetadata_noHeading(datafiles):
143
143
 
144
144
  @pytest.mark.datafiles(os.path.join(FIXTURE_DIR, "img_Ricoh_Theta.jpg"))
145
145
  def test_readPictureMetadata_ricoh_theta(datafiles):
146
- for f in datafiles.listdir():
146
+ for f in datafiles.iterdir():
147
147
  result = reader.readPictureMetadata(openImg(str(f)))
148
148
  assertGeoPicTagsEquals(
149
149
  result,
@@ -162,7 +162,7 @@ def test_readPictureMetadata_ricoh_theta(datafiles):
162
162
 
163
163
  @pytest.mark.datafiles(os.path.join(FIXTURE_DIR, "img_V4MPack.jpg"))
164
164
  def test_readPictureMetadata_v4mpack(datafiles):
165
- for f in datafiles.listdir():
165
+ for f in datafiles.iterdir():
166
166
  result = reader.readPictureMetadata(openImg(str(f)))
167
167
  assertGeoPicTagsEquals(
168
168
  result,