# Buildify API Library: The Ultimate Guide for Developers
## Overview
The **Buildify API Library** is a powerful Python package tailored for developers looking to seamlessly integrate with the **[Buildify API](https://www.getbuildify.com/)**. It simplifies the process of accessing, parsing, and processing data for **real estate projects**, making it an essential tool for those building applications in real estate analytics, property management, or related industries.
This library provides an end-to-end solution for developers, encompassing data extraction, normalization, and processing. With built-in utilities for handling associated project assets like floor plans and photos, the library bridges the gap between raw API data and actionable insights.
---
## Why Use Buildify API Library?
- **Simplified API Integration**: Automates the fetching of real estate project data directly from the Buildify API.
- **Data Processing Tools**: Handles deposit schedules, occupancy dates, and project structures effortlessly.
- **File Management**: Automates downloading and organizing project files such as images and floor plans.
- **Customizable**: Easily adaptable to meet the unique needs of your application.
Here's an improved version of the **Key Takeaways** block, with clear and concise points:
---
### Key Takeaways:
- **`ProjectDataReader`**: Dynamically scans the specified directory for project folders and identifies valid structures. It initializes `SchemaProject` instances for each folder, streamlining the processing pipeline.
- **`SchemaProject`**: Simplifies access to project-related data (e.g., `data.json`, `map.json`) by abstracting file-specific logic, ensuring developers can focus on higher-level workflows instead of low-level file handling.
- **`ProjectDataImporter`**: Demonstrates how `SchemaProject` can be utilized to build custom workflows. This class offers flexibility for extending the library's core functionality to meet unique project requirements.
- **Scalable Workflow**: The combination of `ProjectDataReader` and `SchemaProject` provides a modular, scalable way to parse and process real estate data, making the library suitable for projects of any size.
---
## Step-by-Step Workflow: Parse, Process, and Generate
---
## Installation
1. Install the package and its dependencies:
```bash
pip install buildify-api
```
2. Ensure you have an API key from [Buildify API](https://buildify.readme.io/reference/welcome-api) to access the data.
---
## Workflow
The library's workflow consists of multiple sequential steps. Below is a detailed explanation of each step:
### 1. Define API Key and Output Directory
Before starting, you need to specify your API key and the directory where the data will be stored.
```python
api_key = "YOUR_API_KEY"
output_directory = "./data/projects"
```
This directory will hold all processed files, including:
- **Raw project data**: Saved as `data.json`.
- **Associated files**: Photos, floor plans, etc., saved in `files/`.
---
### 2. Parse and Save Project Data
The `BuildifyApiParser` fetches project data from the API and saves it in a structured format. Each project is stored in its own folder, with raw data saved as `data.json`.
```python
from buildify_api import BuildifyApiParser
parser = BuildifyApiParser(
api_key=api_key,
provinces=['on', 'bc'], # Specify provinces to parse
page_start=0, # Starting page for API pagination
limit=None, # Maximum number of projects (None for no limit)
output_dir=output_directory,
clean_output_dir=True # Clear the directory before parsing
)
def process_project_callback(project_data):
print(f"Processed project: {project_data['name']}")
parser.parse(process_project_callback)
```
**Generated Files:**
- `data.json`: Raw project data fetched from the API.
---
### 3. Download and Process Related Files
Use the `DataDownloader` to download associated files, such as photos and floor plans. These are saved in organized directories with metadata stored in `map.json`.
```python
from buildify_api import DataDownloader
processor = DataDownloader(
output_directory=output_directory,
download_files=True # Set to True to download files
)
processor.process()
```
**Generated Files:**
- `files/`: Folder containing downloaded assets (e.g., photos, floor plans).
- `map.json`: Metadata file mapping assets to their respective projects.
---
### 4. Process Deposit Data
The `DepositParser` parses deposit structures from `data.json` and generates a `deposits.json` file with structured information.
```python
from buildify_api import DepositParser
processor = DepositParser(output_directory)
processor.process_all_object_folders()
```
**Generated Files:**
- `deposits.json`: Contains structured deposit data and original milestones.
---
### 5. Generate Deposits for Projects and Suites
Deposit schedules can be generated for both projects and individual suites using the `ProjectDepositsGenerator` and `SuiteDepositsGenerator`.
#### Project Deposits
```python
from buildify_api import ProjectDepositsGenerator
ProjectDepositsGenerator.test_method()
```
#### Suite Deposits
```python
from buildify_api import SuiteDepositsGenerator
SuiteDepositsGenerator.test_method()
```
**Generated Files:**
- `deposits_project.json`: Contains generated project-level deposit schedules.
- `deposits_suites.json`: Contains generated suite-level deposit schedules.
---
### 6. Parse Occupancy Dates
Normalize occupancy-related dates using `OccupancyDateParser`. Dates like `firstOccupancyDate` and `estimatedCompletionDate` are processed and saved as `parsed_date.json`.
```python
from buildify_api import OccupancyDateParser
occupancy_parser = OccupancyDateParser(output_directory)
occupancy_parser.parse()
```
**Generated Files:**
- `parsed_date.json`: Contains normalized occupancy dates.
---
### 7. Process Final Deposits
Consolidate all processed data, including deposit schedules and occupancy dates, into final deposit files for integration or reporting.
```python
from buildify_api import DepositsFinal
final_processor = DepositsFinal(output_directory)
final_processor.process()
```
**Generated Files:**
- `deposits_project.json`: Consolidated project-level deposit data.
- `deposits_suites.json`: Consolidated suite-level deposit data.
---
## File Structure
After completing the workflow, the output directory will look like this:
```
./data/projects/
├── PROJECT_ID/
│ ├── data.json # Raw project data
│ ├── deposits.json # Structured deposit data
│ ├── deposits_project.json # Project-level deposit schedules
│ ├── deposits_suites.json # Suite-level deposit schedules
│ ├── files/
│ │ ├── photos/ # Downloaded photos
│ │ └── floorPlans/ # Downloaded floor plans
│ ├── map.json # Metadata for associated files
│ └── parsed_date.json # Normalized occupancy dates
```
---
## Example Code
Here’s the full workflow combined:
```python
from buildify_api import (
BuildifyApiParser,
DataDownloader,
DepositParser,
ProjectDepositsGenerator,
SuiteDepositsGenerator,
OccupancyDateParser,
DepositsFinal
)
# Define API key and output directory
api_key = "YOUR_API_KEY"
output_directory = "./data/projects"
# Step 1: Parse project data
parser = BuildifyApiParser(
api_key=api_key,
provinces=['on', 'bc'],
output_dir=output_directory,
clean_output_dir=True
)
parser.parse(lambda project: print(f"Processed: {project['name']}"))
# Step 2: Download associated files
downloader = DataDownloader(output_directory, download_files=True)
downloader.process()
# Step 3: Parse deposit data
deposit_parser = DepositParser(output_directory)
deposit_parser.process_all_object_folders()
# Step 4: Generate deposits for projects and suites
ProjectDepositsGenerator.test_method()
SuiteDepositsGenerator.test_method()
# Step 5: Parse occupancy dates
occupancy_parser = OccupancyDateParser(output_directory)
occupancy_parser.parse()
# Step 6: Process final deposits
final_processor = DepositsFinal(output_directory)
final_processor.process()
```
---
### Output Example
Given a `data` directory structured like this:
```
data/
├── project_1/
│ ├── data.json
│ ├── deposits_project.json
│ ├── deposits_suites.json
│ ├── map.json
│ ├── parsed_date.json
├── project_2/
│ ├── data.json
│ ├── deposits_project.json
│ ├── map.json
│ ├── parsed_date.json
```
---
# Data Reader
The **Data Reader** module provides a streamlined way to parse, process, and load real estate project data stored in a directory structure. The workflow is built around two primary classes:
1. **`ProjectDataReader`**:
- Reads and validates project directories from the specified `data` folder.
- Returns a list of `SchemaProject` instances, each representing a single project's data.
2. **`SchemaProject`**:
- Provides methods to access key project files (e.g., `data.json`, `map.json`, etc.).
- Simplifies file handling by abstracting JSON file reads and error handling.
---
# ProjectDataReader
### 1. **ProjectDataReader**: Scanning the Data Directory
The `ProjectDataReader` initializes with the path to a `data` folder. It scans for subdirectories, each representing a project. For every valid project directory, a `SchemaProject` instance is created.
### 2. **SchemaProject**: Accessing Project Files
The `SchemaProject` class provides methods to retrieve data from key JSON files in a project folder, such as:
- `data.json`: General project information.
- `map.json`: Metadata for associated files like photos and floor plans.
- `deposits_project.json`: Deposit schedules at the project level.
- `parsed_date.json`: Normalized occupancy and completion dates.
---
## Example Usage
### Full Workflow Example
```python
import os
from buildify_api import ProjectDataReader, SchemaProject, get_logger
# Configure logger
logger = get_logger(__name__)
# Define ProjectDataImporter class
class ProjectDataImporter:
def __init__(self, project: SchemaProject):
"""
Initializes the ProjectDataImporter with the data extracted from a SchemaProject instance.
Args:
project (SchemaProject): An instance of SchemaProject containing project data.
"""
self.project_id = project.project_id
self.data = project.get_data()
self.parsed_date = project.get_parsed_date()
self.deposits_project = project.get_deposits_project()
self.deposits_suites = project.get_deposits_suites()
self.map_data = project.get_map()
def process(self):
"""
Processes and returns the data for the project.
"""
return {
"project_id": self.project_id,
"data": self.data,
"parsed_date": self.parsed_date,
"deposits_project": self.deposits_project,
"deposits_suites": self.deposits_suites,
"map_data": self.map_data,
}
# Define the main function
if __name__ == "__main__":
# Define the directory containing project data
base_dir = os.path.dirname(os.path.abspath(__file__))
data_directory = os.path.join(base_dir, "data")
# Initialize ProjectDataReader
reader = ProjectDataReader(data_directory)
projects = reader.process_projects()
# Process each project
processed_projects = []
for project in projects:
try:
importer = ProjectDataImporter(project)
processed_project = importer.process()
processed_projects.append(processed_project)
logger.info(f"Successfully processed project: {project.project_id}")
except Exception as e:
logger.error(f"Failed to process project {project.project_id}: {e}")
# Final summary
logger.info(f"Processed {len(processed_projects)} projects successfully.")
```
---
## About Developer
The **Buildify API Library** is developed by [Unrealos](https://unrealos.com) , a leading software development company specializing in **PaaS**, **SaaS**, and **web services**. Our expertise lies in integrating advanced AI solutions into business processes to create robust tools for real estate, finance, and other complex industries.
---
## License
This library is licensed under the MIT License. See [LICENSE](./LICENSE) for more details.
Raw data
{
"_id": null,
"home_page": "https://unrealos.com",
"name": "buildify-api",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "buildify, real-estate, api, data-processing, python-library",
"author": "Unrealos",
"author_email": "m@unrealos.com",
"download_url": "https://files.pythonhosted.org/packages/09/ce/939819b3fb0ad3746f3524cc89ed50b9a5f4902f702c4320300213659a60/buildify_api-1.0.2.tar.gz",
"platform": null,
"description": "# Buildify API Library: The Ultimate Guide for Developers\n\n## Overview\n\nThe **Buildify API Library** is a powerful Python package tailored for developers looking to seamlessly integrate with the **[Buildify API](https://www.getbuildify.com/)**. It simplifies the process of accessing, parsing, and processing data for **real estate projects**, making it an essential tool for those building applications in real estate analytics, property management, or related industries.\n\nThis library provides an end-to-end solution for developers, encompassing data extraction, normalization, and processing. With built-in utilities for handling associated project assets like floor plans and photos, the library bridges the gap between raw API data and actionable insights.\n\n---\n\n## Why Use Buildify API Library?\n\n- **Simplified API Integration**: Automates the fetching of real estate project data directly from the Buildify API. \n- **Data Processing Tools**: Handles deposit schedules, occupancy dates, and project structures effortlessly. \n- **File Management**: Automates downloading and organizing project files such as images and floor plans. \n- **Customizable**: Easily adaptable to meet the unique needs of your application.\n\nHere's an improved version of the **Key Takeaways** block, with clear and concise points:\n\n---\n\n### Key Takeaways:\n\n- **`ProjectDataReader`**: Dynamically scans the specified directory for project folders and identifies valid structures. It initializes `SchemaProject` instances for each folder, streamlining the processing pipeline. \n- **`SchemaProject`**: Simplifies access to project-related data (e.g., `data.json`, `map.json`) by abstracting file-specific logic, ensuring developers can focus on higher-level workflows instead of low-level file handling. \n- **`ProjectDataImporter`**: Demonstrates how `SchemaProject` can be utilized to build custom workflows. This class offers flexibility for extending the library's core functionality to meet unique project requirements. \n- **Scalable Workflow**: The combination of `ProjectDataReader` and `SchemaProject` provides a modular, scalable way to parse and process real estate data, making the library suitable for projects of any size. \n\n---\n\n## Step-by-Step Workflow: Parse, Process, and Generate\n\n---\n\n## Installation\n\n1. Install the package and its dependencies:\n ```bash\n pip install buildify-api\n ```\n\n2. Ensure you have an API key from [Buildify API](https://buildify.readme.io/reference/welcome-api) to access the data.\n\n---\n\n## Workflow\n\nThe library's workflow consists of multiple sequential steps. Below is a detailed explanation of each step:\n\n### 1. Define API Key and Output Directory\nBefore starting, you need to specify your API key and the directory where the data will be stored.\n\n```python\napi_key = \"YOUR_API_KEY\"\noutput_directory = \"./data/projects\"\n```\n\nThis directory will hold all processed files, including:\n- **Raw project data**: Saved as `data.json`.\n- **Associated files**: Photos, floor plans, etc., saved in `files/`.\n\n---\n\n### 2. Parse and Save Project Data\n\nThe `BuildifyApiParser` fetches project data from the API and saves it in a structured format. Each project is stored in its own folder, with raw data saved as `data.json`.\n\n```python\nfrom buildify_api import BuildifyApiParser\n\nparser = BuildifyApiParser(\n api_key=api_key,\n provinces=['on', 'bc'], # Specify provinces to parse\n page_start=0, # Starting page for API pagination\n limit=None, # Maximum number of projects (None for no limit)\n output_dir=output_directory,\n clean_output_dir=True # Clear the directory before parsing\n)\n\ndef process_project_callback(project_data):\n print(f\"Processed project: {project_data['name']}\")\n\nparser.parse(process_project_callback)\n```\n\n**Generated Files:**\n- `data.json`: Raw project data fetched from the API.\n\n---\n\n### 3. Download and Process Related Files\n\nUse the `DataDownloader` to download associated files, such as photos and floor plans. These are saved in organized directories with metadata stored in `map.json`.\n\n```python\nfrom buildify_api import DataDownloader\n\nprocessor = DataDownloader(\n output_directory=output_directory,\n download_files=True # Set to True to download files\n)\nprocessor.process()\n```\n\n**Generated Files:**\n- `files/`: Folder containing downloaded assets (e.g., photos, floor plans).\n- `map.json`: Metadata file mapping assets to their respective projects.\n\n---\n\n### 4. Process Deposit Data\n\nThe `DepositParser` parses deposit structures from `data.json` and generates a `deposits.json` file with structured information.\n\n```python\nfrom buildify_api import DepositParser\n\nprocessor = DepositParser(output_directory)\nprocessor.process_all_object_folders()\n```\n\n**Generated Files:**\n- `deposits.json`: Contains structured deposit data and original milestones.\n\n---\n\n### 5. Generate Deposits for Projects and Suites\n\nDeposit schedules can be generated for both projects and individual suites using the `ProjectDepositsGenerator` and `SuiteDepositsGenerator`.\n\n#### Project Deposits\n```python\nfrom buildify_api import ProjectDepositsGenerator\n\nProjectDepositsGenerator.test_method()\n```\n\n#### Suite Deposits\n```python\nfrom buildify_api import SuiteDepositsGenerator\n\nSuiteDepositsGenerator.test_method()\n```\n\n**Generated Files:**\n- `deposits_project.json`: Contains generated project-level deposit schedules.\n- `deposits_suites.json`: Contains generated suite-level deposit schedules.\n\n---\n\n### 6. Parse Occupancy Dates\n\nNormalize occupancy-related dates using `OccupancyDateParser`. Dates like `firstOccupancyDate` and `estimatedCompletionDate` are processed and saved as `parsed_date.json`.\n\n```python\nfrom buildify_api import OccupancyDateParser\n\noccupancy_parser = OccupancyDateParser(output_directory)\noccupancy_parser.parse()\n```\n\n**Generated Files:**\n- `parsed_date.json`: Contains normalized occupancy dates.\n\n---\n\n### 7. Process Final Deposits\n\nConsolidate all processed data, including deposit schedules and occupancy dates, into final deposit files for integration or reporting.\n\n```python\nfrom buildify_api import DepositsFinal\n\nfinal_processor = DepositsFinal(output_directory)\nfinal_processor.process()\n```\n\n**Generated Files:**\n- `deposits_project.json`: Consolidated project-level deposit data.\n- `deposits_suites.json`: Consolidated suite-level deposit data.\n\n---\n\n## File Structure\n\nAfter completing the workflow, the output directory will look like this:\n```\n./data/projects/\n\u251c\u2500\u2500 PROJECT_ID/\n\u2502 \u251c\u2500\u2500 data.json # Raw project data\n\u2502 \u251c\u2500\u2500 deposits.json # Structured deposit data\n\u2502 \u251c\u2500\u2500 deposits_project.json # Project-level deposit schedules\n\u2502 \u251c\u2500\u2500 deposits_suites.json # Suite-level deposit schedules\n\u2502 \u251c\u2500\u2500 files/\n\u2502 \u2502 \u251c\u2500\u2500 photos/ # Downloaded photos\n\u2502 \u2502 \u2514\u2500\u2500 floorPlans/ # Downloaded floor plans\n\u2502 \u251c\u2500\u2500 map.json # Metadata for associated files\n\u2502 \u2514\u2500\u2500 parsed_date.json # Normalized occupancy dates\n```\n\n---\n\n## Example Code\n\nHere\u2019s the full workflow combined:\n\n```python\nfrom buildify_api import (\n BuildifyApiParser,\n DataDownloader,\n DepositParser,\n ProjectDepositsGenerator,\n SuiteDepositsGenerator,\n OccupancyDateParser,\n DepositsFinal\n)\n\n# Define API key and output directory\napi_key = \"YOUR_API_KEY\"\noutput_directory = \"./data/projects\"\n\n# Step 1: Parse project data\nparser = BuildifyApiParser(\n api_key=api_key,\n provinces=['on', 'bc'],\n output_dir=output_directory,\n clean_output_dir=True\n)\nparser.parse(lambda project: print(f\"Processed: {project['name']}\"))\n\n# Step 2: Download associated files\ndownloader = DataDownloader(output_directory, download_files=True)\ndownloader.process()\n\n# Step 3: Parse deposit data\ndeposit_parser = DepositParser(output_directory)\ndeposit_parser.process_all_object_folders()\n\n# Step 4: Generate deposits for projects and suites\nProjectDepositsGenerator.test_method()\nSuiteDepositsGenerator.test_method()\n\n# Step 5: Parse occupancy dates\noccupancy_parser = OccupancyDateParser(output_directory)\noccupancy_parser.parse()\n\n# Step 6: Process final deposits\nfinal_processor = DepositsFinal(output_directory)\nfinal_processor.process()\n```\n\n---\n\n### Output Example\n\nGiven a `data` directory structured like this:\n```\ndata/\n\u251c\u2500\u2500 project_1/\n\u2502 \u251c\u2500\u2500 data.json\n\u2502 \u251c\u2500\u2500 deposits_project.json\n\u2502 \u251c\u2500\u2500 deposits_suites.json\n\u2502 \u251c\u2500\u2500 map.json\n\u2502 \u251c\u2500\u2500 parsed_date.json\n\u251c\u2500\u2500 project_2/\n\u2502 \u251c\u2500\u2500 data.json\n\u2502 \u251c\u2500\u2500 deposits_project.json\n\u2502 \u251c\u2500\u2500 map.json\n\u2502 \u251c\u2500\u2500 parsed_date.json\n```\n\n---\n\n# Data Reader\n\nThe **Data Reader** module provides a streamlined way to parse, process, and load real estate project data stored in a directory structure. The workflow is built around two primary classes:\n\n1. **`ProjectDataReader`**:\n - Reads and validates project directories from the specified `data` folder.\n - Returns a list of `SchemaProject` instances, each representing a single project's data.\n\n2. **`SchemaProject`**:\n - Provides methods to access key project files (e.g., `data.json`, `map.json`, etc.).\n - Simplifies file handling by abstracting JSON file reads and error handling.\n\n---\n\n# ProjectDataReader\n\n### 1. **ProjectDataReader**: Scanning the Data Directory\nThe `ProjectDataReader` initializes with the path to a `data` folder. It scans for subdirectories, each representing a project. For every valid project directory, a `SchemaProject` instance is created.\n\n### 2. **SchemaProject**: Accessing Project Files\nThe `SchemaProject` class provides methods to retrieve data from key JSON files in a project folder, such as:\n- `data.json`: General project information.\n- `map.json`: Metadata for associated files like photos and floor plans.\n- `deposits_project.json`: Deposit schedules at the project level.\n- `parsed_date.json`: Normalized occupancy and completion dates.\n\n---\n\n## Example Usage\n\n### Full Workflow Example\n\n```python\nimport os\nfrom buildify_api import ProjectDataReader, SchemaProject, get_logger\n\n# Configure logger\nlogger = get_logger(__name__)\n\n# Define ProjectDataImporter class\nclass ProjectDataImporter:\n def __init__(self, project: SchemaProject):\n \"\"\"\n Initializes the ProjectDataImporter with the data extracted from a SchemaProject instance.\n\n Args:\n project (SchemaProject): An instance of SchemaProject containing project data.\n \"\"\"\n self.project_id = project.project_id\n self.data = project.get_data()\n self.parsed_date = project.get_parsed_date()\n self.deposits_project = project.get_deposits_project()\n self.deposits_suites = project.get_deposits_suites()\n self.map_data = project.get_map()\n\n def process(self):\n \"\"\"\n Processes and returns the data for the project.\n \"\"\"\n return {\n \"project_id\": self.project_id,\n \"data\": self.data,\n \"parsed_date\": self.parsed_date,\n \"deposits_project\": self.deposits_project,\n \"deposits_suites\": self.deposits_suites,\n \"map_data\": self.map_data,\n }\n\n# Define the main function\nif __name__ == \"__main__\":\n # Define the directory containing project data\n base_dir = os.path.dirname(os.path.abspath(__file__))\n data_directory = os.path.join(base_dir, \"data\")\n\n # Initialize ProjectDataReader\n reader = ProjectDataReader(data_directory)\n projects = reader.process_projects()\n\n # Process each project\n processed_projects = []\n for project in projects:\n try:\n importer = ProjectDataImporter(project)\n processed_project = importer.process()\n processed_projects.append(processed_project)\n logger.info(f\"Successfully processed project: {project.project_id}\")\n except Exception as e:\n logger.error(f\"Failed to process project {project.project_id}: {e}\")\n\n # Final summary\n logger.info(f\"Processed {len(processed_projects)} projects successfully.\")\n```\n\n---\n\n## About Developer\n\nThe **Buildify API Library** is developed by [Unrealos](https://unrealos.com) , a leading software development company specializing in **PaaS**, **SaaS**, and **web services**. Our expertise lies in integrating advanced AI solutions into business processes to create robust tools for real estate, finance, and other complex industries.\n\n---\n\n## License\n\nThis library is licensed under the MIT License. See [LICENSE](./LICENSE) for more details.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Buildify API is a Python library for real estate data processing.",
"version": "1.0.2",
"project_urls": {
"Company": "https://unrealos.com",
"Homepage": "https://unrealos.com",
"Source": "https://github.com/markolofsen/buildify-api/",
"Tracker": "https://github.com/markolofsen/buildify-api/issues"
},
"split_keywords": [
"buildify",
" real-estate",
" api",
" data-processing",
" python-library"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "93f5a40be841d80b208f417aa889c7593b5ece8aca83d48f1179aa277acc6eae",
"md5": "ef3d5a422bc8fe10e795be68f22b935e",
"sha256": "c7ec16b96af8f162fc444341270063749adb600c98800df118fc8718ea3101c9"
},
"downloads": -1,
"filename": "buildify_api-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ef3d5a422bc8fe10e795be68f22b935e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 26391,
"upload_time": "2025-01-13T06:24:18",
"upload_time_iso_8601": "2025-01-13T06:24:18.576723Z",
"url": "https://files.pythonhosted.org/packages/93/f5/a40be841d80b208f417aa889c7593b5ece8aca83d48f1179aa277acc6eae/buildify_api-1.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "09ce939819b3fb0ad3746f3524cc89ed50b9a5f4902f702c4320300213659a60",
"md5": "83ee24233c11b31bedfe6cd4746c448c",
"sha256": "e1cbae5eddb17a3d59d08d99f1172823d27c2c78f605396113a8440e00ecb70a"
},
"downloads": -1,
"filename": "buildify_api-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "83ee24233c11b31bedfe6cd4746c448c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 24904,
"upload_time": "2025-01-13T06:24:20",
"upload_time_iso_8601": "2025-01-13T06:24:20.508010Z",
"url": "https://files.pythonhosted.org/packages/09/ce/939819b3fb0ad3746f3524cc89ed50b9a5f4902f702c4320300213659a60/buildify_api-1.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-13 06:24:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "markolofsen",
"github_project": "buildify-api",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "requests",
"specs": [
[
"==",
"2.32.3"
]
]
},
{
"name": "python-slugify",
"specs": [
[
"==",
"8.0.4"
]
]
},
{
"name": "python-dateutil",
"specs": [
[
"==",
"2.9.0.post0"
]
]
},
{
"name": "dateparser",
"specs": [
[
"==",
"1.2.0"
]
]
},
{
"name": "python-dotenv",
"specs": [
[
"==",
"0.19.1"
]
]
},
{
"name": "questionary",
"specs": []
},
{
"name": "build",
"specs": []
},
{
"name": "twine",
"specs": []
}
],
"lcname": "buildify-api"
}