Name | daplapath JSON |
Version |
1.1.1
JSON |
| download |
home_page | None |
Summary | A pathlib.Path class for dapla |
upload_time | 2024-12-17 08:35:16 |
maintainer | None |
docs_url | None |
author | ort |
requires_python | <4,>=3.10 |
license | MIT |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# dapla-path
pathlib.Path for dapla
Opprettet av:
ort <ort@ssb.no>
---
# Path (dapla)
```python
import dapla as dp
import pandas as pd
from daplapath.path import Path
```
```python
folder = Path('ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data/2024')
folder
```
'ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data/2024'
## Fungerer som tekst
```python
folder.startswith("ssb")
```
True
```python
dp.FileClient.get_gcs_file_system().exists(folder)
```
True
## Med metoder og attributter ala pathlib.Path
```python
folder.exists()
```
True
```python
folder.is_dir()
```
True
```python
file = folder / "ABAS_kommune_utenhav_p2024_v1.parquet"
file
```
'ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data/2024/ABAS_kommune_utenhav_p2024_v1.parquet'
```python
file.parent
```
'ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data/2024'
## Og noen pandas attributter
Uten å lese filen
```python
file.columns
```
Index(['OBJTYPE', 'NAVN', 'KOMMUNENR', 'FYLKE', 'AREAL_GDB', 'SHAPE_Length',
'SHAPE_Area', 'geometry'],
dtype='object')
```python
file.dtypes
```
OBJTYPE string
NAVN string
KOMMUNENR string
FYLKE string
AREAL_GDB double
SHAPE_Length double
SHAPE_Area double
geometry binary
dtype: object
```python
file.shape
```
(481, 8)
## Versjonering
```python
file.version_number
```
1
```python
print(file.versions())
```
timestamp mb (int)
2024-05-19 12:31:02 941 .../ABAS_kommune_utenhav_p2024.parquet
2024-08-16 16:15:10 941 .../ABAS_kommune_utenhav_p2024_v1.parquet
Name: path, dtype: object
```python
file.latest_version()
```
'ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data/2024/ABAS_kommune_utenhav_p2024_v1.parquet'
```python
file.highest_numbered_version()
```
'ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data/2024/ABAS_kommune_utenhav_p2024_v1.parquet'
```python
# highest_numbered_version + 1
file.new_version()
```
'ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data/2024/ABAS_kommune_utenhav_p2024_v2.parquet'
```python
# alltid False
file.new_version().exists()
```
False
```python
# finner/fjerner versjonsnummer med regex-søk
file._version_pattern
```
'_v(\\d+)'
## Branch tree
Filtre med hyperlenke. Gjør at man kopierer stien når man klikker på den.
```python
print(
Path("ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data").tree()
)
```
ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data /
└──2000 /
└──SSB_tettsted_flate_p2000.parquet
└──SSB_tettsted_flate_p2000_v1.parquet
└──2002 /
└──SSB_tettsted_flate_p2002.parquet
└──SSB_tettsted_flate_p2002_v1.parquet
└──2003 /
└──SSB_tettsted_flate_p2003.parquet
└──SSB_tettsted_flate_p2003_v1.parquet
└──2004 /
└──SSB_tettsted_flate_p2004.parquet
└──SSB_tettsted_flate_p2004_v1.parquet
└──2005 /
└──SSB_tettsted_flate_p2005.parquet
└──SSB_tettsted_flate_p2005_v1.parquet
└──2006 /
└──SSB_tettsted_flate_p2006.parquet
└──SSB_tettsted_flate_p2006_v1.parquet
└──2007 /
└──SSB_tettsted_flate_p2007.parquet
└──SSB_tettsted_flate_p2007_v1.parquet
└──2008 /
└──SSB_tettsted_flate_p2008.parquet
└──SSB_tettsted_flate_p2008_v1.parquet
└──SSB_tettsted_ringbuffer_p2008.parquet
└──(...)
└──2009 /
└──SSB_tettsted_flate_p2009.parquet
└──SSB_tettsted_flate_p2009_v1.parquet
└──2010 /
└──SOL_arealressurs_flate_p2010.parquet
└──SOL_arealressurs_flate_p2010_v1.parquet
└──2011 /
└──SOL_Arstat_flate_p2011.parquet
└──SOL_Arstat_flate_p2011_v1.parquet
└──SSB_tettsted_flate_p2011.parquet
└──(...)
└──2012 /
└──ABAS_fylke_flate_p2012_v1.parquet
└──ABAS_fylke_linje_p2012_v1.parquet
└──ABAS_grunnkrets_flate_p2012_v1.parquet
└──(...)
└──2013 /
└──ABAS_fylke_flate_p2013_v1.parquet
└──ABAS_kommune_flate_p2013_v1.parquet
└──DEK_eiendom_flate_p2013_v1.parquet
└──(...)
└──2014 /
└──DEK_eiendom_flate_p2014_v1.parquet
└──FKB_anlegg_flate_p2014_v1.parquet
└──FKB_anlegg_linje_p2014_v1.parquet
└──(...)
└──2015 /
└──ABAS_grunnkrets_flate_p2015_v1.parquet
└──ABAS_grunnkrets_utenhav_p2015_v1.parquet
└──ABAS_kommune_flate_p2015_v1.parquet
└──(...)
└──2016 /
└──ABAS_fylke_flate_p2016_v1.parquet
└──ABAS_grunnkrets_flate_p2016_v1.parquet
└──ABAS_grunnkrets_utenhav_p2016_v1.parquet
└──(...)
└──2017 /
└──ABAS_fylke_flate_p2017_v1.parquet
└──ABAS_grunnkrets_flate_p2017_v1.parquet
└──ABAS_grunnkrets_utenhav_p2017_v1.parquet
└──(...)
└──2018 /
└──ABAS_fylke_flate_p2018_v1.parquet
└──ABAS_grunnkrets_flate_p2018_v1.parquet
└──ABAS_grunnkrets_utenhav_p2018_v1.parquet
└──(...)
└──2019 /
└──ABAS_fylke_flate_p2019_v1.parquet
└──ABAS_grunnkrets_flate_p2019_v1.parquet
└──ABAS_grunnkrets_utenhav_p2019_v1.parquet
└──(...)
└──2020 /
└──ABAS_fylke_flate_p2020_v1.parquet
└──ABAS_grunnkrets_flate_p2020_v1.parquet
└──ABAS_grunnkrets_utenhav_p2020_v1.parquet
└──(...)
└──2021 /
└──ABAS_fylke_flate_p2021_v1.parquet
└──ABAS_grunnkrets_flate_p2021_v1.parquet
└──ABAS_grunnkrets_utenhav_p2021_v1.parquet
└──(...)
└──2022 /
└──ABAS_fylke_flate_p2022_v1.parquet
└──ABAS_grunnkrets_flate_p2022_v1.parquet
└──ABAS_grunnkrets_utenhav_p2022_v1.parquet
└──(...)
└──2023 /
└──ABAS_KnrGamle_p2023_v1.parquet
└──ABAS_fylke_flate_p2023_v1.parquet
└──ABAS_grunnkrets_flate_p2023_v1.parquet
└──(...)
└──2024 /
└──ABAS_fylke_flate_p2024_v1.parquet
└──ABAS_grunnkrets_flate_p2024_v1.parquet
└──ABAS_grunnkrets_utenhav_p2024_v1.parquet
└──(...)
## ls - få filstier, timestamp og størrelse
Med stier som kopieres (som ctrl + c) når man klipper på stien.
```python
files_in_dir = file.parent.ls()
print(files_in_dir)
```
timestamp mb (int)
2024-04-19 11:44:12 11 .../ABAS_kommune_flate_p2024_v1.parquet
2024-04-19 11:45:47 0 .../N50_JernbaneStasjon_punkt_p2024.parquet
0 .../N50_JernbaneStasjon_punkt_p2024_v1.parquet
0 .../N50_lufthavn_punkt_p2024.parquet
0 .../N50_lufthavn_punkt_p2024_v1.parquet
...
2024-08-21 14:47:12 861 .../SSB_hav_flate_p2024.parquet
2024-08-23 14:59:30 152 .../SSB_tettsted_flate_p2024_v1.parquet
2024-08-23 14:59:36 152 .../SSB_tettsted_kommune_flate_p2024_v1.parquet
2024-08-23 15:34:21 1122 .../SSB_tettsted_kommune_ringbuffer_p2024_v1.parquet
2024-08-23 17:11:32 740 .../NVDB_veg_linje_p2024_v1.parquet
Name: path, Length: 127, dtype: object
```python
# subclass av pandas.Series
type(files_in_dir)
```
daplapath.path.PathSeries
```python
print(files_in_dir.loc[lambda x: x.gb > 10].keep_latest_versions())
```
timestamp mb (int)
2024-07-18 00:13:09 17646 .../FKB_arealressurs_flate_p2024_v1.parquet
2024-08-20 14:03:16 19717 .../FKB_gronnstruktur_flate_p2024_v1.parquet
Name: path, dtype: object
```python
# stiene er fortsatt Path
type(files_in_dir.iloc[0])
```
daplapath.path.Path
```python
# velg ut filene
print(folder.ls().files)
```
timestamp mb (int)
2024-04-19 11:44:12 11 .../ABAS_kommune_flate_p2024_v1.parquet
2024-04-19 11:45:47 0 .../N50_JernbaneStasjon_punkt_p2024.parquet
0 .../N50_JernbaneStasjon_punkt_p2024_v1.parquet
0 .../N50_lufthavn_punkt_p2024.parquet
0 .../N50_lufthavn_punkt_p2024_v1.parquet
...
2024-08-21 14:47:12 861 .../SSB_hav_flate_p2024.parquet
2024-08-23 14:59:30 152 .../SSB_tettsted_flate_p2024_v1.parquet
2024-08-23 14:59:36 152 .../SSB_tettsted_kommune_flate_p2024_v1.parquet
2024-08-23 15:34:21 1122 .../SSB_tettsted_kommune_ringbuffer_p2024_v1.parquet
2024-08-23 17:11:32 740 .../NVDB_veg_linje_p2024_v1.parquet
Name: path, Length: 127, dtype: object
```python
print(folder.ls().dirs)
```
Series([], Name: path, dtype: object)
```python
# samme som .loc med x.str.contains
print(folder.ls().containing("kommune"))
```
timestamp mb (int)
2024-04-19 11:44:12 11 .../ABAS_kommune_flate_p2024_v1.parquet
2024-05-19 12:31:02 941 .../ABAS_kommune_utenhav_p2024.parquet
2024-06-24 14:25:14 11 .../ABAS_kommune_flate_p2024.parquet
2024-08-16 16:15:10 941 .../ABAS_kommune_utenhav_p2024_v1.parquet
2024-08-23 14:59:36 152 .../SSB_tettsted_kommune_flate_p2024_v1.parquet
2024-08-23 15:34:21 1122 .../SSB_tettsted_kommune_ringbuffer_p2024_v1.parquet
Name: path, dtype: object
```python
print(file.parent.parent.ls(recursive=True).files)
```
timestamp mb (int)
2024-04-19 11:43:21 0 .../2022/N50_JernbaneStasjon_punkt_p2022_v1.parquet
2024-04-19 11:43:22 0 .../2022/N50_lufthavn_punkt_p2022_v1.parquet
2024-04-19 11:43:23 0 .../2022/NVE_Vindturbin_punkt_p2022_v1.parquet
0 .../2022/NVE_Trafostasjon_punkt_p2022_v1.parquet
2024-04-19 11:43:24 0 .../2022/S100_TekniskSit_flate_p2022_v1.parquet
...
2024-08-21 14:47:12 861 .../2024/SSB_hav_flate_p2024.parquet
2024-08-23 14:59:30 152 .../2024/SSB_tettsted_flate_p2024_v1.parquet
2024-08-23 14:59:36 152 .../2024/SSB_tettsted_kommune_flate_p2024_v1.parquet
2024-08-23 15:34:21 1122 .../2024/SSB_tettsted_kommune_ringbuffer_p2024_v1.parquet
2024-08-23 17:11:32 740 .../2024/NVDB_veg_linje_p2024_v1.parquet
Length: 1323, dtype: object
## Write to testpath
```python
testpath = Path('ssb-areal-data-produkt-prod/arealstat/temp/test_df_p2023_v1.parquet')
# delete files first
for version in testpath.versions():
version.rm_file()
testpath.exists()
```
False
```python
df = pd.DataFrame({"x": [1,2,3], "y": [*"abc"]})
dp.write_pandas(df, testpath)
testpath.exists()
```
True
```python
testpath.latest_version()
```
'ssb-areal-data-produkt-prod/arealstat/temp/test_df_p2023_v1.parquet'
```python
# highest_numbered_version + 1
testpath.new_version()
```
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[31], line 2
1 # highest_numbered_version + 1
----> 2 testpath.new_version()
File ~/daplapath/daplapath/path.py:805, in Path.new_version(self, timeout)
803 time_should_be_at_least = pd.Timestamp.now() - pd.Timedelta(minutes=timeout)
804 if timestamp[0] > time_should_be_at_least:
--> 805 raise ValueError(
806 f"Latest version of the file was updated {timestamp[0]}, which "
807 f"is less than the timeout period of {timeout} minutes. "
808 "Change the timeout argument, but be sure to not save new "
809 "versions in a loop."
810 )
812 return highest_numbered.add_to_version_number(1)
ValueError: Latest version of the file was updated 2024-08-28 15:09:47, which is less than the timeout period of 30 minutes. Change the timeout argument, but be sure to not save new versions in a loop.
```python
dp.write_pandas(df, testpath.new_version(timeout=0.01))
```
```python
print(testpath.versions())
```
timestamp mb (int)
2024-08-28 15:09:47 0 ssb-areal-data-produkt-prod/arealstat/temp/test_df_p2023_v1.parquet
2024-08-28 15:09:52 0 ssb-areal-data-produkt-prod/arealstat/temp/test_df_p2023_v2.parquet
dtype: object
```python
```
Raw data
{
"_id": null,
"home_page": null,
"name": "daplapath",
"maintainer": null,
"docs_url": null,
"requires_python": "<4,>=3.10",
"maintainer_email": null,
"keywords": null,
"author": "ort",
"author_email": "ort@ssb.no",
"download_url": "https://files.pythonhosted.org/packages/d5/60/ee636f456e9a46e619ceaa3924373070b07106e6ac8099b6bbbb97dc30ca/daplapath-1.1.1.tar.gz",
"platform": null,
"description": "# dapla-path\n\npathlib.Path for dapla\n\nOpprettet av:\nort <ort@ssb.no>\n\n---\n\n# Path (dapla)\n\n\n```python\nimport dapla as dp\nimport pandas as pd\n\nfrom daplapath.path import Path\n```\n\n\n```python\nfolder = Path('ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data/2024')\nfolder\n```\n\n\n\n\n 'ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data/2024'\n\n\n\n## Fungerer som tekst\n\n\n```python\nfolder.startswith(\"ssb\")\n```\n\n\n\n\n True\n\n\n\n\n```python\ndp.FileClient.get_gcs_file_system().exists(folder)\n```\n\n\n\n\n True\n\n\n\n## Med metoder og attributter ala pathlib.Path\n\n\n```python\nfolder.exists()\n```\n\n\n\n\n True\n\n\n\n\n```python\nfolder.is_dir()\n```\n\n\n\n\n True\n\n\n\n\n```python\nfile = folder / \"ABAS_kommune_utenhav_p2024_v1.parquet\"\nfile\n```\n\n\n\n\n 'ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data/2024/ABAS_kommune_utenhav_p2024_v1.parquet'\n\n\n\n\n```python\nfile.parent\n```\n\n\n\n\n 'ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data/2024'\n\n\n\n## Og noen pandas attributter\n\nUten \u00e5 lese filen\n\n\n```python\nfile.columns\n```\n\n\n\n\n Index(['OBJTYPE', 'NAVN', 'KOMMUNENR', 'FYLKE', 'AREAL_GDB', 'SHAPE_Length',\n 'SHAPE_Area', 'geometry'],\n dtype='object')\n\n\n\n\n```python\nfile.dtypes\n```\n\n\n\n\n OBJTYPE string\n NAVN string\n KOMMUNENR string\n FYLKE string\n AREAL_GDB double\n SHAPE_Length double\n SHAPE_Area double\n geometry binary\n dtype: object\n\n\n\n\n```python\nfile.shape\n```\n\n\n\n\n (481, 8)\n\n\n\n## Versjonering\n\n\n```python\nfile.version_number\n```\n\n\n\n\n 1\n\n\n\n\n```python\nprint(file.versions())\n```\n\n timestamp mb (int)\n 2024-05-19 12:31:02 941 .../ABAS_kommune_utenhav_p2024.parquet\n 2024-08-16 16:15:10 941 .../ABAS_kommune_utenhav_p2024_v1.parquet\n Name: path, dtype: object\n\n\n\n```python\nfile.latest_version()\n```\n\n\n\n\n 'ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data/2024/ABAS_kommune_utenhav_p2024_v1.parquet'\n\n\n\n\n```python\nfile.highest_numbered_version()\n```\n\n\n\n\n 'ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data/2024/ABAS_kommune_utenhav_p2024_v1.parquet'\n\n\n\n\n```python\n# highest_numbered_version + 1\nfile.new_version()\n```\n\n\n\n\n 'ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data/2024/ABAS_kommune_utenhav_p2024_v2.parquet'\n\n\n\n\n```python\n# alltid False\nfile.new_version().exists()\n```\n\n\n\n\n False\n\n\n\n\n```python\n# finner/fjerner versjonsnummer med regex-s\u00f8k\nfile._version_pattern\n```\n\n\n\n\n '_v(\\\\d+)'\n\n\n\n## Branch tree\n\nFiltre med hyperlenke. Gj\u00f8r at man kopierer stien n\u00e5r man klikker p\u00e5 den.\n\n\n```python\nprint(\n Path(\"ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data\").tree()\n)\n```\n\n ssb-kart-data-delt-geo-prod/analyse_data/klargjorte-data /\n \u2514\u2500\u25002000 /\n \u2514\u2500\u2500SSB_tettsted_flate_p2000.parquet\n \u2514\u2500\u2500SSB_tettsted_flate_p2000_v1.parquet\n \u2514\u2500\u25002002 /\n \u2514\u2500\u2500SSB_tettsted_flate_p2002.parquet\n \u2514\u2500\u2500SSB_tettsted_flate_p2002_v1.parquet\n \u2514\u2500\u25002003 /\n \u2514\u2500\u2500SSB_tettsted_flate_p2003.parquet\n \u2514\u2500\u2500SSB_tettsted_flate_p2003_v1.parquet\n \u2514\u2500\u25002004 /\n \u2514\u2500\u2500SSB_tettsted_flate_p2004.parquet\n \u2514\u2500\u2500SSB_tettsted_flate_p2004_v1.parquet\n \u2514\u2500\u25002005 /\n \u2514\u2500\u2500SSB_tettsted_flate_p2005.parquet\n \u2514\u2500\u2500SSB_tettsted_flate_p2005_v1.parquet\n \u2514\u2500\u25002006 /\n \u2514\u2500\u2500SSB_tettsted_flate_p2006.parquet\n \u2514\u2500\u2500SSB_tettsted_flate_p2006_v1.parquet\n \u2514\u2500\u25002007 /\n \u2514\u2500\u2500SSB_tettsted_flate_p2007.parquet\n \u2514\u2500\u2500SSB_tettsted_flate_p2007_v1.parquet\n \u2514\u2500\u25002008 /\n \u2514\u2500\u2500SSB_tettsted_flate_p2008.parquet\n \u2514\u2500\u2500SSB_tettsted_flate_p2008_v1.parquet\n \u2514\u2500\u2500SSB_tettsted_ringbuffer_p2008.parquet\n \u2514\u2500\u2500(...)\n \u2514\u2500\u25002009 /\n \u2514\u2500\u2500SSB_tettsted_flate_p2009.parquet\n \u2514\u2500\u2500SSB_tettsted_flate_p2009_v1.parquet\n \u2514\u2500\u25002010 /\n \u2514\u2500\u2500SOL_arealressurs_flate_p2010.parquet\n \u2514\u2500\u2500SOL_arealressurs_flate_p2010_v1.parquet\n \u2514\u2500\u25002011 /\n \u2514\u2500\u2500SOL_Arstat_flate_p2011.parquet\n \u2514\u2500\u2500SOL_Arstat_flate_p2011_v1.parquet\n \u2514\u2500\u2500SSB_tettsted_flate_p2011.parquet\n \u2514\u2500\u2500(...)\n \u2514\u2500\u25002012 /\n \u2514\u2500\u2500ABAS_fylke_flate_p2012_v1.parquet\n \u2514\u2500\u2500ABAS_fylke_linje_p2012_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_flate_p2012_v1.parquet\n \u2514\u2500\u2500(...)\n \u2514\u2500\u25002013 /\n \u2514\u2500\u2500ABAS_fylke_flate_p2013_v1.parquet\n \u2514\u2500\u2500ABAS_kommune_flate_p2013_v1.parquet\n \u2514\u2500\u2500DEK_eiendom_flate_p2013_v1.parquet\n \u2514\u2500\u2500(...)\n \u2514\u2500\u25002014 /\n \u2514\u2500\u2500DEK_eiendom_flate_p2014_v1.parquet\n \u2514\u2500\u2500FKB_anlegg_flate_p2014_v1.parquet\n \u2514\u2500\u2500FKB_anlegg_linje_p2014_v1.parquet\n \u2514\u2500\u2500(...)\n \u2514\u2500\u25002015 /\n \u2514\u2500\u2500ABAS_grunnkrets_flate_p2015_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_utenhav_p2015_v1.parquet\n \u2514\u2500\u2500ABAS_kommune_flate_p2015_v1.parquet\n \u2514\u2500\u2500(...)\n \u2514\u2500\u25002016 /\n \u2514\u2500\u2500ABAS_fylke_flate_p2016_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_flate_p2016_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_utenhav_p2016_v1.parquet\n \u2514\u2500\u2500(...)\n \u2514\u2500\u25002017 /\n \u2514\u2500\u2500ABAS_fylke_flate_p2017_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_flate_p2017_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_utenhav_p2017_v1.parquet\n \u2514\u2500\u2500(...)\n \u2514\u2500\u25002018 /\n \u2514\u2500\u2500ABAS_fylke_flate_p2018_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_flate_p2018_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_utenhav_p2018_v1.parquet\n \u2514\u2500\u2500(...)\n \u2514\u2500\u25002019 /\n \u2514\u2500\u2500ABAS_fylke_flate_p2019_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_flate_p2019_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_utenhav_p2019_v1.parquet\n \u2514\u2500\u2500(...)\n \u2514\u2500\u25002020 /\n \u2514\u2500\u2500ABAS_fylke_flate_p2020_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_flate_p2020_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_utenhav_p2020_v1.parquet\n \u2514\u2500\u2500(...)\n \u2514\u2500\u25002021 /\n \u2514\u2500\u2500ABAS_fylke_flate_p2021_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_flate_p2021_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_utenhav_p2021_v1.parquet\n \u2514\u2500\u2500(...)\n \u2514\u2500\u25002022 /\n \u2514\u2500\u2500ABAS_fylke_flate_p2022_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_flate_p2022_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_utenhav_p2022_v1.parquet\n \u2514\u2500\u2500(...)\n \u2514\u2500\u25002023 /\n \u2514\u2500\u2500ABAS_KnrGamle_p2023_v1.parquet\n \u2514\u2500\u2500ABAS_fylke_flate_p2023_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_flate_p2023_v1.parquet\n \u2514\u2500\u2500(...)\n \u2514\u2500\u25002024 /\n \u2514\u2500\u2500ABAS_fylke_flate_p2024_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_flate_p2024_v1.parquet\n \u2514\u2500\u2500ABAS_grunnkrets_utenhav_p2024_v1.parquet\n \u2514\u2500\u2500(...)\n\n\n## ls - f\u00e5 filstier, timestamp og st\u00f8rrelse\n\nMed stier som kopieres (som ctrl + c) n\u00e5r man klipper p\u00e5 stien.\n\n\n```python\nfiles_in_dir = file.parent.ls()\nprint(files_in_dir)\n```\n\n timestamp mb (int)\n 2024-04-19 11:44:12 11 .../ABAS_kommune_flate_p2024_v1.parquet\n 2024-04-19 11:45:47 0 .../N50_JernbaneStasjon_punkt_p2024.parquet\n 0 .../N50_JernbaneStasjon_punkt_p2024_v1.parquet\n 0 .../N50_lufthavn_punkt_p2024.parquet\n 0 .../N50_lufthavn_punkt_p2024_v1.parquet\n ... \n 2024-08-21 14:47:12 861 .../SSB_hav_flate_p2024.parquet\n 2024-08-23 14:59:30 152 .../SSB_tettsted_flate_p2024_v1.parquet\n 2024-08-23 14:59:36 152 .../SSB_tettsted_kommune_flate_p2024_v1.parquet\n 2024-08-23 15:34:21 1122 .../SSB_tettsted_kommune_ringbuffer_p2024_v1.parquet\n 2024-08-23 17:11:32 740 .../NVDB_veg_linje_p2024_v1.parquet\n Name: path, Length: 127, dtype: object\n\n\n\n```python\n# subclass av pandas.Series\ntype(files_in_dir)\n```\n\n\n\n\n daplapath.path.PathSeries\n\n\n\n\n```python\nprint(files_in_dir.loc[lambda x: x.gb > 10].keep_latest_versions())\n```\n\n timestamp mb (int)\n 2024-07-18 00:13:09 17646 .../FKB_arealressurs_flate_p2024_v1.parquet\n 2024-08-20 14:03:16 19717 .../FKB_gronnstruktur_flate_p2024_v1.parquet\n Name: path, dtype: object\n\n\n\n```python\n# stiene er fortsatt Path\ntype(files_in_dir.iloc[0])\n```\n\n\n\n\n daplapath.path.Path\n\n\n\n\n```python\n# velg ut filene\nprint(folder.ls().files)\n```\n\n timestamp mb (int)\n 2024-04-19 11:44:12 11 .../ABAS_kommune_flate_p2024_v1.parquet\n 2024-04-19 11:45:47 0 .../N50_JernbaneStasjon_punkt_p2024.parquet\n 0 .../N50_JernbaneStasjon_punkt_p2024_v1.parquet\n 0 .../N50_lufthavn_punkt_p2024.parquet\n 0 .../N50_lufthavn_punkt_p2024_v1.parquet\n ... \n 2024-08-21 14:47:12 861 .../SSB_hav_flate_p2024.parquet\n 2024-08-23 14:59:30 152 .../SSB_tettsted_flate_p2024_v1.parquet\n 2024-08-23 14:59:36 152 .../SSB_tettsted_kommune_flate_p2024_v1.parquet\n 2024-08-23 15:34:21 1122 .../SSB_tettsted_kommune_ringbuffer_p2024_v1.parquet\n 2024-08-23 17:11:32 740 .../NVDB_veg_linje_p2024_v1.parquet\n Name: path, Length: 127, dtype: object\n\n\n\n```python\nprint(folder.ls().dirs)\n```\n\n Series([], Name: path, dtype: object)\n\n\n\n```python\n# samme som .loc med x.str.contains\nprint(folder.ls().containing(\"kommune\"))\n```\n\n timestamp mb (int)\n 2024-04-19 11:44:12 11 .../ABAS_kommune_flate_p2024_v1.parquet\n 2024-05-19 12:31:02 941 .../ABAS_kommune_utenhav_p2024.parquet\n 2024-06-24 14:25:14 11 .../ABAS_kommune_flate_p2024.parquet\n 2024-08-16 16:15:10 941 .../ABAS_kommune_utenhav_p2024_v1.parquet\n 2024-08-23 14:59:36 152 .../SSB_tettsted_kommune_flate_p2024_v1.parquet\n 2024-08-23 15:34:21 1122 .../SSB_tettsted_kommune_ringbuffer_p2024_v1.parquet\n Name: path, dtype: object\n\n\n\n```python\nprint(file.parent.parent.ls(recursive=True).files)\n```\n\n timestamp mb (int)\n 2024-04-19 11:43:21 0 .../2022/N50_JernbaneStasjon_punkt_p2022_v1.parquet\n 2024-04-19 11:43:22 0 .../2022/N50_lufthavn_punkt_p2022_v1.parquet\n 2024-04-19 11:43:23 0 .../2022/NVE_Vindturbin_punkt_p2022_v1.parquet\n 0 .../2022/NVE_Trafostasjon_punkt_p2022_v1.parquet\n 2024-04-19 11:43:24 0 .../2022/S100_TekniskSit_flate_p2022_v1.parquet\n ... \n 2024-08-21 14:47:12 861 .../2024/SSB_hav_flate_p2024.parquet\n 2024-08-23 14:59:30 152 .../2024/SSB_tettsted_flate_p2024_v1.parquet\n 2024-08-23 14:59:36 152 .../2024/SSB_tettsted_kommune_flate_p2024_v1.parquet\n 2024-08-23 15:34:21 1122 .../2024/SSB_tettsted_kommune_ringbuffer_p2024_v1.parquet\n 2024-08-23 17:11:32 740 .../2024/NVDB_veg_linje_p2024_v1.parquet\n Length: 1323, dtype: object\n\n\n## Write to testpath\n\n\n```python\ntestpath = Path('ssb-areal-data-produkt-prod/arealstat/temp/test_df_p2023_v1.parquet')\n\n# delete files first\nfor version in testpath.versions():\n version.rm_file()\n\ntestpath.exists()\n```\n\n\n\n\n False\n\n\n\n\n```python\ndf = pd.DataFrame({\"x\": [1,2,3], \"y\": [*\"abc\"]})\n\ndp.write_pandas(df, testpath)\n\ntestpath.exists()\n```\n\n\n\n\n True\n\n\n\n\n```python\ntestpath.latest_version()\n```\n\n\n\n\n 'ssb-areal-data-produkt-prod/arealstat/temp/test_df_p2023_v1.parquet'\n\n\n\n\n```python\n# highest_numbered_version + 1\ntestpath.new_version()\n```\n\n\n ---------------------------------------------------------------------------\n\n ValueError Traceback (most recent call last)\n\n Cell In[31], line 2\n 1 # highest_numbered_version + 1\n ----> 2 testpath.new_version()\n\n\n File ~/daplapath/daplapath/path.py:805, in Path.new_version(self, timeout)\n 803 time_should_be_at_least = pd.Timestamp.now() - pd.Timedelta(minutes=timeout)\n 804 if timestamp[0] > time_should_be_at_least:\n --> 805 raise ValueError(\n 806 f\"Latest version of the file was updated {timestamp[0]}, which \"\n 807 f\"is less than the timeout period of {timeout} minutes. \"\n 808 \"Change the timeout argument, but be sure to not save new \"\n 809 \"versions in a loop.\"\n 810 )\n 812 return highest_numbered.add_to_version_number(1)\n\n\n ValueError: Latest version of the file was updated 2024-08-28 15:09:47, which is less than the timeout period of 30 minutes. Change the timeout argument, but be sure to not save new versions in a loop.\n\n\n\n```python\ndp.write_pandas(df, testpath.new_version(timeout=0.01))\n```\n\n\n```python\nprint(testpath.versions())\n```\n\n timestamp mb (int)\n 2024-08-28 15:09:47 0 ssb-areal-data-produkt-prod/arealstat/temp/test_df_p2023_v1.parquet\n 2024-08-28 15:09:52 0 ssb-areal-data-produkt-prod/arealstat/temp/test_df_p2023_v2.parquet\n dtype: object\n\n\n\n```python\n\n```\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A pathlib.Path class for dapla",
"version": "1.1.1",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b12ad0b9f1dc78c662c3dab424be932e962004c5fb8eb39aedae2e0e5e457fb7",
"md5": "8303fc75aad5fb345b3cab82749c0aad",
"sha256": "6edd4b91340b9e97c1e554888d56d52ccab9a4547b5dab28cf80e1b59f3fa663"
},
"downloads": -1,
"filename": "daplapath-1.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8303fc75aad5fb345b3cab82749c0aad",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4,>=3.10",
"size": 15648,
"upload_time": "2024-12-17T08:35:12",
"upload_time_iso_8601": "2024-12-17T08:35:12.034560Z",
"url": "https://files.pythonhosted.org/packages/b1/2a/d0b9f1dc78c662c3dab424be932e962004c5fb8eb39aedae2e0e5e457fb7/daplapath-1.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d560ee636f456e9a46e619ceaa3924373070b07106e6ac8099b6bbbb97dc30ca",
"md5": "605dd59320586b1d397f1c8ea13fe238",
"sha256": "9d672aa5e9623d274c6edcabc2c951fc05cd4ec9e1baf49d62abd057ef61303a"
},
"downloads": -1,
"filename": "daplapath-1.1.1.tar.gz",
"has_sig": false,
"md5_digest": "605dd59320586b1d397f1c8ea13fe238",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4,>=3.10",
"size": 17097,
"upload_time": "2024-12-17T08:35:16",
"upload_time_iso_8601": "2024-12-17T08:35:16.919734Z",
"url": "https://files.pythonhosted.org/packages/d5/60/ee636f456e9a46e619ceaa3924373070b07106e6ac8099b6bbbb97dc30ca/daplapath-1.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-17 08:35:16",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "daplapath"
}